提交 b26847b7 编写于 作者: M Michael Niedermayer

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
上级 dc8465a9
...@@ -628,15 +628,18 @@ static void choose_pixel_fmt(AVStream *st, AVCodec *codec) ...@@ -628,15 +628,18 @@ static void choose_pixel_fmt(AVStream *st, AVCodec *codec)
{ {
if(codec && codec->pix_fmts){ if(codec && codec->pix_fmts){
const enum PixelFormat *p= codec->pix_fmts; const enum PixelFormat *p= codec->pix_fmts;
if(st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL){
if(st->codec->codec_id==CODEC_ID_MJPEG){
p= (const enum PixelFormat[]){PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE};
}else if(st->codec->codec_id==CODEC_ID_LJPEG){
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};
}
}
for(; *p!=-1; p++){ for(; *p!=-1; p++){
if(*p == st->codec->pix_fmt) if(*p == st->codec->pix_fmt)
break; break;
} }
if(*p == -1 if(*p == -1)
&& !( st->codec->codec_id==CODEC_ID_MJPEG
&& st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL
&& ( st->codec->pix_fmt == PIX_FMT_YUV420P
|| st->codec->pix_fmt == PIX_FMT_YUV422P)))
st->codec->pix_fmt = codec->pix_fmts[0]; st->codec->pix_fmt = codec->pix_fmts[0];
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册