|
|
@ -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]; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|