On Fri, 26 Apr 2019, Tomas Härdin wrote:
ons 2019-04-24 klockan 22:31 +0200 skrev Marton Balint:
On Wed, 24 Apr 2019, Tomas Härdin wrote:
> mån 2019-04-22 klockan 19:15 +0200 skrev Marton Balint:
> > This affects the following samples:
> >
> > samples/ffmpeg-bugs/roundup/issue1775/av_seek_frame_failure.mxf
> > samples/ffmpeg-bugs/trac/ticket1957/16ch.mxf
> > samples/ffmpeg-bugs/trac/ticket5016/r0.mxf
> > samples/ffmpeg-bugs/trac/ticket5016/r1.mxf
> > samples/ffmpeg-bugs/trac/ticket5316/hq.MXF
> > samples/ffmpeg-bugs/trac/ticket5316/hqx.MXF
> >
> > Some AVPacket->pos values are changed because for frame wrapped tracks we point
> > to the KLV offset and not the data.
> >
> > > Signed-off-by: Marton Balint <c...@passwd.hu>
> >
> > ---
> > libavformat/mxfdec.c | 18 ++++++++++++++++++
> > 1 file changed, 18 insertions(+)
> >
> > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
> > index 2c44852062..034025bcaa 100644
> > --- a/libavformat/mxfdec.c
> > +++ b/libavformat/mxfdec.c
> > @@ -2553,6 +2553,24 @@ static int mxf_parse_structural_metadata(MXFContext
*mxf)
> > }
> > }
> >
> > + for (int i = 0; i < mxf->fc->nb_streams; i++) {
> > + MXFTrack *track1 = mxf->fc->streams[i]->priv_data;
> > + if (track1 && track1->body_sid) {
> > + for (int j = i + 1; j < mxf->fc->nb_streams; j++) {
> > + MXFTrack *track2 = mxf->fc->streams[j]->priv_data;
> > + if (track2 && track1->body_sid == track2->body_sid &&
track1->wrapping != track2->wrapping) {
> > + if (track1->wrapping == UnknownWrapped)
> > + track1->wrapping = track2->wrapping;
> > + else if (track2->wrapping == UnknownWrapped)
> > + track2->wrapping = track1->wrapping;
> > + else
> > + av_log(mxf->fc, AV_LOG_ERROR, "stream %d and stream %d
have the same BodySID (%d) "
> > + "with different
wrapping\n", i, j, track1->body_sid);
> > + }
> > + }
> > + }
> > + }
>
> Don't we have mxf_get_wrapping_by_body_sid() for this?
>
That is similar, yes, but in order to find and warn about every mismatch
between frame wrapped and clip wrapped as you suggested we cannot use it
here directly (mxf_get_wrapping_by_body_sid finds the first stream with a
known wrapping and a matching body sid).
Also we cannot warn in mxf_get_wrapping_by_body_sid because that is called
for each partition.
Ah, OK then :)
Thanks, applied.
Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".