@@ -460,9 +460,9 @@ int mlt_to_av_colorspace(mlt_colorspace colorspace, int height)
460460 case mlt_colorspace_bt709 :
461461 return AVCOL_SPC_BT709 ;
462462 case mlt_colorspace_unspecified :
463- return AVCOL_SPC_UNSPECIFIED ;
463+ break ; // use calculation at the end
464464 case mlt_colorspace_reserved :
465- return AVCOL_SPC_RESERVED ;
465+ break ; // use calculation at the end
466466 case mlt_colorspace_fcc :
467467 return AVCOL_SPC_FCC ;
468468 case mlt_colorspace_bt470bg :
@@ -480,11 +480,16 @@ int mlt_to_av_colorspace(mlt_colorspace colorspace, int height)
480480 case mlt_colorspace_smpte2085 :
481481 return AVCOL_SPC_SMPTE2085 ;
482482 case mlt_colorspace_bt601 :
483- return 576 % height ? AVCOL_SPC_SMPTE170M : AVCOL_SPC_BT470BG ;
483+ break ; // use calculation at the end
484484 case mlt_colorspace_invalid :
485- return mlt_colorspace_unspecified ;
485+ break ; // use calculation at the end
486+ }
487+ if (height > 576 ) {
488+ return AVCOL_SPC_BT709 ;
489+ } else if (height == 576 ) {
490+ return AVCOL_SPC_BT470BG ;
486491 }
487- return mlt_colorspace_unspecified ;
492+ return AVCOL_SPC_SMPTE170M ;
488493}
489494
490495mlt_colorspace av_to_mlt_colorspace (int colorspace , int width , int height )
@@ -582,62 +587,11 @@ mlt_color_primaries av_to_mlt_color_primaries(int primaries)
582587 return mlt_color_pri_none ;
583588}
584589
585- mlt_color_primaries mlt_color_primaries_from_colorspace (mlt_colorspace colorspace , int height )
586- {
587- switch (colorspace ) {
588- case mlt_colorspace_rgb : // sRGB
589- case mlt_colorspace_bt709 :
590- return mlt_color_pri_bt709 ;
591- case mlt_colorspace_bt470bg :
592- return mlt_color_pri_bt470bg ;
593- case mlt_colorspace_smpte240m :
594- return mlt_color_pri_smpte170m ;
595- case mlt_colorspace_bt601 :
596- return height == 576 ? mlt_color_pri_bt470bg : mlt_color_pri_smpte170m ;
597- case mlt_colorspace_smpte170m :
598- return mlt_color_pri_smpte170m ;
599- case mlt_colorspace_bt2020_ncl :
600- return mlt_color_pri_bt2020 ;
601- case mlt_colorspace_unspecified :
602- case mlt_colorspace_reserved :
603- case mlt_colorspace_fcc :
604- case mlt_colorspace_ycgco :
605- case mlt_colorspace_bt2020_cl :
606- case mlt_colorspace_smpte2085 :
607- case mlt_colorspace_invalid :
608- break ;
609- }
610- return mlt_color_pri_none ;
611- }
612-
613-
614590int mlt_to_av_color_range (int full_range )
615591{
616592 return full_range ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG ;
617593}
618594
619- mlt_color_trc mlt_color_trc_from_colorspace (mlt_colorspace colorspace )
620- {
621- switch (colorspace ) {
622- case mlt_colorspace_bt709 :
623- return mlt_color_trc_bt709 ;
624- case mlt_colorspace_bt470bg :
625- return mlt_color_trc_gamma28 ;
626- case mlt_colorspace_smpte240m :
627- return mlt_color_trc_smpte240m ;
628- case mlt_colorspace_rgb : // sRGB
629- return mlt_color_trc_iec61966_2_1 ;
630- case mlt_colorspace_bt601 :
631- case mlt_colorspace_smpte170m :
632- return mlt_color_trc_smpte170m ;
633- case mlt_colorspace_bt2020_ncl :
634- return mlt_color_trc_bt2020_10 ;
635- default :
636- break ;
637- }
638- return mlt_color_trc_none ;
639- }
640-
641595int av_to_mlt_full_range (int color_range )
642596{
643597 return color_range == AVCOL_RANGE_JPEG ;
0 commit comments