Re: [PR] avcodec/h264_parser: align field_order default with the decoder (PR #24128)

Kieran Kunhya via ffmpeg-devel <[email protected]>
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <CABGuwEkujzTD9TDvGO==otYF8JJTmQ3D4hXWt7gawnF-TmqQjw@mail.gmail.com>
On Thu, 13 Aug 2026, 16:37 ngaullier via ffmpeg-devel, <
[email protected]> wrote:

> PR #24128 opened by ngaullier
> URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24128
> Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24128.patch
>
> Use case: interlaced AVC Intra is typically missing the required
> information
> for proper tff detection.
> Currently, the decoder defaults to tff, but the parser defaults to
> progressive.
>
> ./ffmpeg -f lavfi -i testsrc=1920x1080 -codec libx264 -pix_fmt yuv422p10le
> \
>     -x264-params avcintra-class=100:tff=1 -frames 1 tff.h264
> ./ffprobe tff.h264 -of flat -show_entries
> stream=field_order:frame=interlaced_frame,top_field_first
>
> Before:
> frames.frame.0.interlaced_frame=1
> frames.frame.0.top_field_first=1
> streams.stream.0.field_order="progressive"
>
> After:
> frames.frame.0.interlaced_frame=1
> frames.frame.0.top_field_first=1
> streams.stream.0.field_order="tt"
>
> Issue since field_order setting in 3f1a7ceb2c604deff.
>
>
> >From 9e94cff9dcd4d5f4abfd483a6d39d263a73007b6 Mon Sep 17 00:00:00 2001
> From: Nicolas Gaullier <[email protected]>
> Date: Thu, 13 Aug 2026 17:00:42 +0200
> Subject: [PATCH] avcodec/h264_parser: align field_order default with the
>  decoder
>
> Use case: interlaced AVC Intra is typically missing the required
> information
> for proper tff detection.
> Currently, the decoder defaults to tff, but the parser defaults to
> progressive.
>
> ./ffmpeg -f lavfi -i testsrc=1920x1080 -codec libx264 -pix_fmt yuv422p10le
> \
>     -x264-params avcintra-class=100:tff=1 -frames 1 tff.h264
> ./ffprobe tff.h264 -of flat -show_entries
> stream=field_order:frame=interlaced_frame,top_field_first
>
> Before:
> frames.frame.0.interlaced_frame=1
> frames.frame.0.top_field_first=1
> streams.stream.0.field_order="progressive"
>
> After:
> frames.frame.0.interlaced_frame=1
> frames.frame.0.top_field_first=1
> streams.stream.0.field_order="tt"
>
> Issue since field_order setting in 3f1a7ceb2c604deff.
>
> Signed-off-by: Nicolas Gaullier <[email protected]>
> ---
>  libavcodec/h264_parser.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
> index 9d64fc603f..af43cad609 100644
> --- a/libavcodec/h264_parser.c
> +++ b/libavcodec/h264_parser.c
> @@ -423,6 +423,7 @@ static inline int parse_nal_units(AVCodecParserContext
> *s,
>
>              if (sps->frame_mbs_only_flag) {
>                  p->picture_structure = PICT_FRAME;
> +                s->field_order = AV_FIELD_PROGRESSIVE;
>              } else {
>                  if (get_bits1(&nal.gb)) { // field_pic_flag
>                      p->picture_structure = PICT_TOP_FIELD + get_bits1(&
> nal.gb); // bottom_field_flag
> @@ -541,8 +542,11 @@ static inline int
> parse_nal_units(AVCodecParserContext *s,
>                          s->field_order = AV_FIELD_TT;
>                      else if (field_poc[0] > field_poc[1])
>                          s->field_order = AV_FIELD_BB;
> -                    else
> -                        s->field_order = AV_FIELD_PROGRESSIVE;
> +                    else if (sps->mb_aff) {
> +                        /* Default to top field first
> +                         * This is the same as what the decoder does */
> +                        s->field_order = AV_FIELD_TT;
> +                    }
>                  }
>              } else {
>                  if (p->picture_structure == PICT_TOP_FIELD)
> --
> 2.52.0
>
> _______________________________________________
> ffmpeg-devel mailing list -- [email protected]
> To unsubscribe send an email to [email protected]


LGTM

>
>
_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.