X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Ffileffmpeg.C;fp=cinelerra-5.1%2Fcinelerra%2Ffileffmpeg.C;h=4d797431eeb9e57151d13c6afca9469a7cae19eb;hb=243336668c89096732786c6b3f3c5918aa2eff26;hp=f3f535681234e3bbefe1a17d841eae4443458c55;hpb=564227981f9c1b021445fa0352b75c7670172912;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/fileffmpeg.C b/cinelerra-5.1/cinelerra/fileffmpeg.C index f3f53568..4d797431 100644 --- a/cinelerra-5.1/cinelerra/fileffmpeg.C +++ b/cinelerra-5.1/cinelerra/fileffmpeg.C @@ -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;