yuv colorspace/range + prefs, ffmpeg colorrange probe, x11 direct force colormodel...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / fileffmpeg.C
index f3f535681234e3bbefe1a17d841eae4443458c55..4d797431eeb9e57151d13c6afca9469a7cae19eb 100644 (file)
@@ -335,13 +335,28 @@ int FileFFMPEG::colormodel_supported(int colormodel)
        return colormodel;
 }
 
+
+int FileFFMPEG::get_best_colormodel(int driver, int vstream)
+{
+       if( vstream < 0 ) vstream = 0;
+       int is_mpeg = !ff ? 0 : ff->ff_video_mpeg_color_range(vstream);
+
+       switch(driver) {
+       case PLAYBACK_X11: return is_mpeg ? BC_YUV888 : BC_RGB888;
+       case PLAYBACK_X11_XV: return BC_YUV420P;
+       case PLAYBACK_X11_GL: return BC_RGB_FLOAT;
+       }
+
+       return BC_RGB888;
+}
+
 int FileFFMPEG::get_best_colormodel(Asset *asset, int driver)
 {
        switch(driver) {
 // the direct X11 color model requires scaling in the codec
-       case PLAYBACK_X11: return BC_BGR8888;
-//     case PLAYBACK_X11: return BC_RGB888;
-       case PLAYBACK_X11_GL: return BC_RGB888;
+       case PLAYBACK_X11: return BC_RGB888;
+       case PLAYBACK_X11_XV: return BC_YUV420P;
+       case PLAYBACK_X11_GL: return BC_RGB_FLOAT;
        }
 
        return BC_YUV420P;