|
|
|
@ -764,6 +764,8 @@ static void choose_pixel_fmt(AVStream *st, AVCodec *codec) |
|
|
|
|
{ |
|
|
|
|
if(codec && codec->pix_fmts){ |
|
|
|
|
const enum PixelFormat *p= codec->pix_fmts; |
|
|
|
|
int has_alpha= av_pix_fmt_descriptors[st->codec->pix_fmt].nb_components % 2 == 0; |
|
|
|
|
enum PixelFormat best= PIX_FMT_NONE; |
|
|
|
|
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}; |
|
|
|
@ -772,6 +774,7 @@ static void choose_pixel_fmt(AVStream *st, AVCodec *codec) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (; *p != PIX_FMT_NONE; p++) { |
|
|
|
|
best= avcodec_find_best_pix_fmt2(best, *p, st->codec->pix_fmt, has_alpha, NULL); |
|
|
|
|
if(*p == st->codec->pix_fmt) |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -781,8 +784,8 @@ static void choose_pixel_fmt(AVStream *st, AVCodec *codec) |
|
|
|
|
"Incompatible pixel format '%s' for codec '%s', auto-selecting format '%s'\n", |
|
|
|
|
av_pix_fmt_descriptors[st->codec->pix_fmt].name, |
|
|
|
|
codec->name, |
|
|
|
|
av_pix_fmt_descriptors[codec->pix_fmts[0]].name); |
|
|
|
|
st->codec->pix_fmt = codec->pix_fmts[0]; |
|
|
|
|
av_pix_fmt_descriptors[best].name); |
|
|
|
|
st->codec->pix_fmt = best; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|