[FFmpeg-devel] [FFmpeg-cvslog] avformat/mov: export the correct initial extratada from samples with multiple stsd

Michael Niedermayer michael at niedermayer.cc
Sat Aug 2 21:33:39 EEST 2025


Hi

This breaks:
./ffmpeg -i  'tickets//1666/avc-intra-panasonic-AG-HPX301E.mov' -f null -

after this patch theres a lot of errors:

...
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Error submitting packet to decoder: Invalid data found when processing input
[h264 @ 0x55837c768000] non-existing PPS 0 referenced
    Last message repeated 9 times
[h264 @ 0x55837c768000] no frame!
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Error submitting packet to decoder: Invalid data found when processing input
[h264 @ 0x55837b62d580] non-existing PPS 0 referenced
    Last message repeated 9 times
[h264 @ 0x55837b62d580] no frame!
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Error submitting packet to decoder: Invalid data found when processing input
[h264 @ 0x55837b6cf600] non-existing PPS 0 referenced
    Last message repeated 9 times
[h264 @ 0x55837b6cf600] no frame!
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Error submitting packet to decoder: Invalid data found when processing input
[h264 @ 0x55837b776bc0] non-existing PPS 0 referenced
    Last message repeated 9 times
[h264 @ 0x55837b776bc0] no frame!
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Decoding error: Invalid data found when processing input
    Last message repeated 14 times
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Decode error rate 1 exceeds maximum 0.666667
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Task finished with error code: -1145393733 (Error number -1145393733 occurred)
[vist#0:0/h264 @ 0x55837b5fd6c0] [dec:h264 @ 0x55837b62c6c0] Terminating thread with return code -1145393733 (Error number -1145393733 occurred)
[vf#0:0 @ 0x55837b5fe540] Cannot determine format of input 0:0 after EOF
[vf#0:0 @ 0x55837b5fe540] Task finished with error code: -1094995529 (Invalid data found when processing input)
[vf#0:0 @ 0x55837b5fe540] Terminating thread with return code -1094995529 (Invalid data found when processing input)
[vost#0:0/wrapped_avframe @ 0x55837b5ed680] [enc:wrapped_avframe @ 0x55837b62ad00] Could not open encoder before EOF
[vost#0:0/wrapped_avframe @ 0x55837b5ed680] Task finished with error code: -22 (Invalid argument)
[vost#0:0/wrapped_avframe @ 0x55837b5ed680] Terminating thread with return code -22 (Invalid argument)
[out#0/null @ 0x55837b632540] Nothing was written into output file, because at least one of its streams received no packets.




On Wed, Jul 30, 2025 at 08:54:22PM +0000, James Almer wrote:
> ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sun Jul 27 16:14:12 2025 -0300| [eefa6de7d505ecd80e4674146067b99d1b74ddbe] | committer: James Almer
> 
> avformat/mov: export the correct initial extratada from samples with multiple stsd
> 
> The first sample in the stsc box may not refer to the first stsd entry.
> This is the case in h264/thezerotheorem-cut.mp4, and as such the
> fate-h264_redundant_pps-side_data test is updated accordingly.
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> 
> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eefa6de7d505ecd80e4674146067b99d1b74ddbe
> ---
> 
>  libavformat/mov.c                           | 14 ++++++++++++++
>  tests/ref/fate/h264_redundant_pps-side_data |  8 ++++----
>  2 files changed, 18 insertions(+), 4 deletions(-)
> 
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index 8f1c5df3c9..55b0950b5e 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -10580,6 +10580,20 @@ static int mov_read_header(AVFormatContext *s)
>          MOVStreamContext *sc = st->priv_data;
>          uint32_t dvdsub_clut[FF_DVDCLUT_CLUT_LEN] = {0};
>          fix_timescale(mov, sc);
> +
> +        /* Set the primary extradata based on the first Sample. */
> +        if (sc->stsc_count && sc->extradata_size && !sc->iamf) {
> +            sc->last_stsd_index = sc->stsc_data[0].id - 1;
> +            av_freep(&st->codecpar->extradata);
> +            st->codecpar->extradata_size = sc->extradata_size[sc->last_stsd_index];
> +            if (sc->extradata_size[sc->last_stsd_index]) {
> +                st->codecpar->extradata = av_mallocz(sc->extradata_size[sc->last_stsd_index] + AV_INPUT_BUFFER_PADDING_SIZE);
> +                if (!st->codecpar->extradata)
> +                    return AVERROR(ENOMEM);
> +                memcpy(st->codecpar->extradata, sc->extradata[sc->last_stsd_index], sc->extradata_size[sc->last_stsd_index]);
> +            }
> +        }
> +
>          if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
>              st->codecpar->codec_id   == AV_CODEC_ID_AAC) {
>              sti->skip_samples = sc->start_pad;
> diff --git a/tests/ref/fate/h264_redundant_pps-side_data b/tests/ref/fate/h264_redundant_pps-side_data
> index 8633792d8f..1f4684bf5b 100644
> --- a/tests/ref/fate/h264_redundant_pps-side_data
> +++ b/tests/ref/fate/h264_redundant_pps-side_data
> @@ -1,12 +1,12 @@
> -a35cca13c3f91d1a279bf576b8264d05 *tests/data/fate/h264_redundant_pps-side_data.nut
> -596153 tests/data/fate/h264_redundant_pps-side_data.nut
> -#extradata 0:       34, 0x851f08e4
> +92fe70291f72acf94ba56b426bbaccb0 *tests/data/fate/h264_redundant_pps-side_data.nut
> +596100 tests/data/fate/h264_redundant_pps-side_data.nut
> +#extradata 0:       34, 0x850408e3
>  #tb 0: 1/48000
>  #media_type 0: video
>  #codec_id 0: h264
>  #dimensions 0: 1920x1080
>  #sar 0: 0/1
> -0,      -2002,          0,     2002,   247959, 0xdb721881, S=1, New Extradata,       34, 0x850408e3
> +0,      -2002,          0,     2002,   247959, 0xdb721881
>  0,          0,       4004,     2002,    43356, 0xa366eb79, F=0x0
>  0,       2002,       2002,     2002,    11423, 0x9c0a86fa, F=0x0
>  0,       4004,       8008,     2002,    50801, 0xfbfe860d, F=0x0
> 
> _______________________________________________
> ffmpeg-cvslog mailing list
> ffmpeg-cvslog at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
> 
> To unsubscribe, visit link above, or email
> ffmpeg-cvslog-request at ffmpeg.org with subject "unsubscribe".
> 

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20250802/1a5e4021/attachment.sig>


More information about the ffmpeg-devel mailing list