On Thu, 14 Jun 2018, Tomas Härdin wrote:

[...]

> > +        } else {
> > +            int64_t op1a_essence_offset =
> > +                p->this_partition +
> > +                round_to_kag(p->pack_length,       p->kag_size) +
> > +                round_to_kag(p->header_byte_count, p->kag_size) +
> > +                round_to_kag(p->index_byte_count,  p->kag_size);
> > Is this really always the case? I guess with OP1a it isn't a huge
> concern since the demuxer will find the next essence packet anyway. But
> still..
> > I'm also fairly sure this is my code originally so.. :)

I think this tends to work well, if kag_size is not guessed. However, if 
it _is_ guessed, then there might be problems, and having a 0 kagsize is 
valid (only means an unknown KAG). So I am inclined to simply 
use p->first_essence_klv.offset unconditionally, as you suggested in

http://ffmpeg.org/pipermail/ffmpeg-devel/2018-February/225629.html

Yes, past me seems to have the right idea :)

See the attached patch.

I think we should still parse kag_size even if we don't end up using it
for much. Especially since there's special cases for Sony files in
there. Did we have a sample for that? I forget.

fate-suite/mxf/C0023S01.mxf


Are there cases where we might not run across an essence KLV during
scanning but where there would be one anyway? I suspect not, not even
if we're reading an unseekable file

No, I don't think so either.

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to