[FFmpeg-devel] [PATCH] ffmpeg: fix order between field order autodetection and override
Jan Ekström
jeebjp at gmail.com
Sat Jul 24 21:47:49 EEST 2021
On Wed, Jul 21, 2021 at 8:29 PM Jan Ekström <jeebjp at gmail.com> wrote:
>
> Somehow I missed this in fbb44bc51a647862eb05ae3f9d7d49a0be9bed57 ,
> even though the lines were within the context. Probably the code
> originally being after the this logic had something to do with it,
> but previously it only touched the avformat context's codecpar,
> which did not affect the encoder codec context whatsoever.
>
> Fixes #9320
> Fixes #9339
> ---
> fftools/ffmpeg.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
> index 40e8010096..b0ce7c7c32 100644
> --- a/fftools/ffmpeg.c
> +++ b/fftools/ffmpeg.c
> @@ -3483,12 +3483,7 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
> enc_ctx->bits_per_raw_sample = frame_bits_per_raw_sample;
> }
>
> - if (ost->top_field_first == 0) {
> - enc_ctx->field_order = AV_FIELD_BB;
> - } else if (ost->top_field_first == 1) {
> - enc_ctx->field_order = AV_FIELD_TT;
> - }
> -
> + // Field order: autodetection
> if (frame) {
> if (enc_ctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) &&
> ost->top_field_first >= 0)
> @@ -3503,6 +3498,13 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
> enc_ctx->field_order = AV_FIELD_PROGRESSIVE;
> }
>
> + // Field order: override
> + if (ost->top_field_first == 0) {
> + enc_ctx->field_order = AV_FIELD_BB;
> + } else if (ost->top_field_first == 1) {
> + enc_ctx->field_order = AV_FIELD_TT;
> + }
> +
> if (ost->forced_keyframes) {
> if (!strncmp(ost->forced_keyframes, "expr:", 5)) {
> ret = av_expr_parse(&ost->forced_keyframes_pexpr, ost->forced_keyframes+5,
> --
> 2.31.1
>
Ping.
More information about the ffmpeg-devel
mailing list