Browse code

Fix/cleanup m/ljpeg encoding pix fmt selection code in ffmpeg.c. Better ideas are welcome ...

Originally committed as revision 26219 to svn://svn.ffmpeg.org/ffmpeg/trunk

Michael Niedermayer authored on 2011/01/05 13:52:32
Showing 1 changed files
... ...
@@ -628,15 +628,18 @@ static void choose_pixel_fmt(AVStream *st, AVCodec *codec)
628 628
 {
629 629
     if(codec && codec->pix_fmts){
630 630
         const enum PixelFormat *p= codec->pix_fmts;
631
+        if(st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL){
632
+            if(st->codec->codec_id==CODEC_ID_MJPEG){
633
+                p= (const enum PixelFormat[]){PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE};
634
+            }else if(st->codec->codec_id==CODEC_ID_LJPEG){
635
+                p= (const enum PixelFormat[]){PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ444P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_YUV444P, PIX_FMT_BGRA, PIX_FMT_NONE};
636
+            }
637
+        }
631 638
         for(; *p!=-1; p++){
632 639
             if(*p == st->codec->pix_fmt)
633 640
                 break;
634 641
         }
635
-        if(*p == -1
636
-           && !(   st->codec->codec_id==CODEC_ID_MJPEG
637
-                && st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL
638
-                && (   st->codec->pix_fmt == PIX_FMT_YUV420P
639
-                    || st->codec->pix_fmt == PIX_FMT_YUV422P)))
642
+        if(*p == -1)
640 643
             st->codec->pix_fmt = codec->pix_fmts[0];
641 644
     }
642 645
 }