ffmpeg_filter: fix choose_pix_fmts() so it uses the correct encoding context
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
862120f980
commit
0949ff93c0
@ -102,18 +102,18 @@ static char *choose_pix_fmts(OutputStream *ost)
|
|||||||
AVDictionaryEntry *strict_dict = av_dict_get(ost->encoder_opts, "strict", NULL, 0);
|
AVDictionaryEntry *strict_dict = av_dict_get(ost->encoder_opts, "strict", NULL, 0);
|
||||||
if (strict_dict)
|
if (strict_dict)
|
||||||
// used by choose_pixel_fmt() and below
|
// used by choose_pixel_fmt() and below
|
||||||
av_opt_set(ost->st->codec, "strict", strict_dict->value, 0);
|
av_opt_set(ost->enc_ctx, "strict", strict_dict->value, 0);
|
||||||
|
|
||||||
if (ost->keep_pix_fmt) {
|
if (ost->keep_pix_fmt) {
|
||||||
if (ost->filter)
|
if (ost->filter)
|
||||||
avfilter_graph_set_auto_convert(ost->filter->graph->graph,
|
avfilter_graph_set_auto_convert(ost->filter->graph->graph,
|
||||||
AVFILTER_AUTO_CONVERT_NONE);
|
AVFILTER_AUTO_CONVERT_NONE);
|
||||||
if (ost->st->codec->pix_fmt == AV_PIX_FMT_NONE)
|
if (ost->enc_ctx->pix_fmt == AV_PIX_FMT_NONE)
|
||||||
return NULL;
|
return NULL;
|
||||||
return av_strdup(av_get_pix_fmt_name(ost->st->codec->pix_fmt));
|
return av_strdup(av_get_pix_fmt_name(ost->enc_ctx->pix_fmt));
|
||||||
}
|
}
|
||||||
if (ost->st->codec->pix_fmt != AV_PIX_FMT_NONE) {
|
if (ost->enc_ctx->pix_fmt != AV_PIX_FMT_NONE) {
|
||||||
return av_strdup(av_get_pix_fmt_name(choose_pixel_fmt(ost->st, ost->enc, ost->st->codec->pix_fmt)));
|
return av_strdup(av_get_pix_fmt_name(choose_pixel_fmt(ost->st, ost->enc, ost->enc_ctx->pix_fmt)));
|
||||||
} else if (ost->enc && ost->enc->pix_fmts) {
|
} else if (ost->enc && ost->enc->pix_fmts) {
|
||||||
const enum AVPixelFormat *p;
|
const enum AVPixelFormat *p;
|
||||||
AVIOContext *s = NULL;
|
AVIOContext *s = NULL;
|
||||||
@ -124,10 +124,10 @@ static char *choose_pix_fmts(OutputStream *ost)
|
|||||||
exit_program(1);
|
exit_program(1);
|
||||||
|
|
||||||
p = ost->enc->pix_fmts;
|
p = ost->enc->pix_fmts;
|
||||||
if (ost->st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
|
if (ost->enc_ctx->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
|
||||||
if (ost->st->codec->codec_id == AV_CODEC_ID_MJPEG) {
|
if (ost->enc_ctx->codec_id == AV_CODEC_ID_MJPEG) {
|
||||||
p = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_NONE };
|
p = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_NONE };
|
||||||
} else if (ost->st->codec->codec_id == AV_CODEC_ID_LJPEG) {
|
} else if (ost->enc_ctx->codec_id == AV_CODEC_ID_LJPEG) {
|
||||||
p = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUV420P,
|
p = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUV420P,
|
||||||
AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_BGRA, AV_PIX_FMT_NONE };
|
AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_BGRA, AV_PIX_FMT_NONE };
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user