On Fri, 21 Oct 2016 16:59:14 +0100
Derek Buitenhuis <derek.buitenh...@gmail.com> wrote:

> On 10/21/2016 4:32 PM, Derek Buitenhuis wrote:
> >     * Audio packets. Especially audio packets with a large number of 
> > samples.
> >       It's extremely likely that edits will not fall on packet boundaries, 
> > and
> >       depending on the number of samples per packet, audio sync issues can 
> > and
> >       will occur, even with smaller packets of e.g. 1024 samples, if there 
> > are
> >       a large number of entries in the edit list. Gradual loss of sync will
> >       occur.  
> 
> Apologies, I do see skip_samples is used, but it's unclear if it is correct
> or how to use it.
> 
> i.e. skip_samples is documented as:
> 
>     "Number of samples to skip at the start of the frame decoded from the 
> next packet."
> 
> It's extremely vague, doesn't really say *when* to discard samples. After
> start? After a seek? Every packet? Does skip_samples get updated mid-demux?
> 
> I've been told it's after every reset (i.e. call to av_codec_flush), but the 
> docs
> sure don't seem to say this...

In practice, it seems skip_samples is a counter that can affect all
decoded frames after it has been set. This can be by the user along
with a av_codec_flush call, or by a packet due to packet side data like
AV_PKT_DATA_SKIP_SAMPLES (or with the new edit list code, the discard
flag). I think logically, the side data sets skip_samples _before_ the
output of the corresponding packet is decoded, but _after_ the previous
packet is decoded.

Once skip_samples has reached 0, it has no effect on any decoded data
anymore.

(What annoys me here is that not all decoders do 1:1 packet in/out, but
may do arbitrary things like variable buffering of packets. All this
means that avctx->internal->pkt can be set to a random packet, while
this edit list logic requires that it's the "current" packet.)

> Also a friendly reminder that users may not be using libavcodec, but their own
> decoder.

Indeed, this would mean all those users have to replicate the hacks in
libavcodec/utils.c to get not garbage with libavformat-demuxed mp4s
containing edit lists.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to