Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: "Tomas Härdin" <git@haerdin.se>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH 4/5] avformat/mxfdec: Check index_edit_rate
Date: Wed, 10 Apr 2024 13:18:49 +0200
Message-ID: <2b977cc9e951521046816b91ee635a9f33d09873.camel@haerdin.se> (raw)
In-Reply-To: <463e3887-3ec9-7ac9-31b7-f4977a66ea5d@passwd.hu>

tis 2024-04-09 klockan 22:58 +0200 skrev Marton Balint:
> 
> 
> On Tue, 9 Apr 2024, Tomas Härdin wrote:
> 
> > mån 2024-04-08 klockan 21:46 +0200 skrev Marton Balint:
> > > 
> > > 
> > > On Mon, 8 Apr 2024, Tomas Härdin wrote:
> > > 
> > > > tor 2024-04-04 klockan 00:51 +0200 skrev Michael Niedermayer:
> > > > > Fixes: Assertion b >=0 failed at libavutil/mathematics.c:62
> > > > > Fixes: 67811/clusterfuzz-testcase-minimized-
> > > > > ffmpeg_dem_MXF_fuzzer-
> > > > > 5108429687422976
> > > > > 
> > > > > Found-by: continuous fuzzing process
> > > > > https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> > > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> > > > > ---
> > > > >  libavformat/mxfdec.c | 3 +++
> > > > >  1 file changed, 3 insertions(+)
> > > > > 
> > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
> > > > > index 04de4c1d5e3..233d614f783 100644
> > > > > --- a/libavformat/mxfdec.c
> > > > > +++ b/libavformat/mxfdec.c
> > > > > @@ -1264,6 +1264,9 @@ static int
> > > > > mxf_read_index_table_segment(void
> > > > > *arg, AVIOContext *pb, int tag, int
> > > > >      case 0x3F0B:
> > > > >          segment->index_edit_rate.num = avio_rb32(pb);
> > > > >          segment->index_edit_rate.den = avio_rb32(pb);
> > > > > +        if (segment->index_edit_rate.num <= 0 ||
> > > > > +            segment->index_edit_rate.den <= 0)
> > > > > +            return AVERROR_INVALIDDATA;
> > > > 
> > > > mxf_compute_index_tables() has a check for index_edit_rate that
> > > > you
> > > > probably want to remove as well. It was introduced in c6fff3d,
> > > > but
> > > > the
> > > > files it supposedly fixes aren't in FATE. We shouldn't
> > > > encourage
> > > > broken
> > > > muxers.
> > > 
> > > I don't quite get what FATE has to do with it. And the samples
> > > mentioned 
> > > in the patch has valid index segment edit rates, only they are
> > > different 
> > > from the track edit rate, and the patch was intended to fix that
> > > case.
> > 
> > Then why does it check against 0/0?
> 
> Probably to avoid divison by zero.

I think it's safe to say that EditRates with zero in the numerator or
denominator are not allowed. We currently default to 25/1 in this case
for Tracks, but I am skeptical of this since it encourages broken
muxers.

As for IndexEditRate, here's what ST 377-1:2019 has to say:


> Edit Rate copied from the Essence Tracks of the
> Essence Container
> [Note: SMPTE RP 210 definition Specifies the
> indexing rate in hertz]

It's possible to encode a file that does not specify IndexEditRate, but
this is not allowed since the field is marked Required in Table 26.
mxfdec.c will default to 0/0 since the segment is calloc'd. Michael's
fix won't work if one changes the IndexEditRate local tag in the file
to something else, say FFFF instead of 3F0B.

In short, IndexEditRate MUST be set and it MUST equal the EditRate of
the associated Essence Track (confusingly called source_track in the
code). Section 11 is even more explicit:

> An Index Table shall be used to index a single Essence Container.
> Each Index Table shall index Edit Units
> stored Essence of the Essence Container. The Edit Unit rate of an
> Index Table is defined by the Edit Rate of the
> Essence Tracks of the Package that describes the Essence Container
> that the Index Table indexes.

EditRate MAY be different between MaterialPackage and FilePackage
however. This is a consequence of MXF's AAF heritage. MXF is really an
NLE format.

Section 11.6.2 "Look-up Algorithm for Conversion of Index Position to
Stream Offset" is also of relevance. It doesn't make use of
IndexEditRate at all.

/Tomas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  reply	other threads:[~2024-04-10 11:19 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-03 22:51 [FFmpeg-devel] [PATCH 1/5] avcodec/wavarc: fix signed integer overflow in block type 6/19 Michael Niedermayer
2024-04-03 22:51 ` [FFmpeg-devel] [PATCH 2/5] avformat/iamf_parse: Check sound_system Michael Niedermayer
2024-04-03 22:51 ` [FFmpeg-devel] [PATCH 3/5] swscale/utils: Fix xInc overflow Michael Niedermayer
2024-04-03 22:51 ` [FFmpeg-devel] [PATCH 4/5] avformat/mxfdec: Check index_edit_rate Michael Niedermayer
2024-04-08 10:39   ` Tomas Härdin
2024-04-08 19:46     ` Marton Balint
2024-04-09 19:21       ` Tomas Härdin
2024-04-09 20:58         ` Marton Balint
2024-04-10 11:18           ` Tomas Härdin [this message]
2024-04-14 20:55             ` Marton Balint
2024-04-15  9:02               ` Tomas Härdin
2024-04-15 17:52                 ` Marton Balint
2024-04-03 22:51 ` [FFmpeg-devel] [PATCH 5/5] avformat/pcm: Use 64bit in bitrate computation Michael Niedermayer
2024-04-04 17:12   ` Marton Balint
2024-04-04 17:17     ` Andreas Rheinhardt
2024-04-04 18:41     ` Michael Niedermayer
2024-04-04 16:47 ` [FFmpeg-devel] [PATCH 1/5] avcodec/wavarc: fix signed integer overflow in block type 6/19 Michael Niedermayer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2b977cc9e951521046816b91ee635a9f33d09873.camel@haerdin.se \
    --to=git@haerdin.se \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git