- }
-// ffmpeg files are side effected by color_model, affects colorspace,color_range
- if( asset && asset->format != FILE_FFMPEG )
- {
- file = renderengine->get_vcache()->check_out(asset,
- renderengine->get_edl());
-
- if(file)
- {
- colormodel = file->get_best_colormodel(driver);
+ if( asset ) {
+ File *file = renderengine->get_vcache()->check_out(asset, edl);
+ if( file ) {
+// damn the color range, full speed ahead
+ if( vconfig->driver == PLAYBACK_X11 && vconfig->use_direct_x11 &&
+ file->colormodel_supported(BC_BGR8888) == BC_BGR8888 )
+ colormodel = BC_BGR8888;
+ else {
+// file favorite colormodel may mismatch rgb/yuv
+ int vstream = playable_edit ? playable_edit->channel : -1;
+ int best_colormodel = file->get_best_colormodel(vconfig->driver, vstream);
+ if( BC_CModels::is_yuv(best_colormodel) == BC_CModels::is_yuv(colormodel) )
+ colormodel = best_colormodel;
+ }