[FFmpeg-devel] [PATCH 4/4] lavf/mp3dec: read encoder delay/padding from Info tag

wm4 nfxjfg at googlemail.com
Tue Sep 27 12:38:27 EEST 2016

On Mon, 26 Sep 2016 16:04:26 -0700
Jon Toohill <jtoohill-at-google.com at ffmpeg.org> wrote:

> A similar concern was raised in a previous related patch:
> http://ffmpeg.org/pipermail/ffmpeg-devel/2016-May/194690.html
> I think the resolution at the time was to go ahead with using both, since
> both are used widely and serve slightly different purposes, although I do
> agree that it's confusing.
> I think I could use AV_PKT_DATA_SKIP_SAMPLES here, and change mp3enc to use
> that to fill out the Info tag. But that only seems worthwhile to me if
> there is a general consensus to move to just AV_PKT_DATA_SKIP_SAMPLES (and
> deprecate/remove initial_padding and trailing_padding). If there's a
> concrete case where knowing trailing_padding at the start of a stream is
> necessary, then that's not possible, but I'm pretty new to this and don't
> know of one. Thoughts?

AV_PKT_DATA_SKIP_SAMPLES is FFmpeg's own "recent" solution for handling
gapless, the codecpar padding fields are Libav's newer solution for the
same problem. Libav doesn't have AV_PKT_DATA_SKIP_SAMPLES. There's also
AVCodecContext.delay, which is an older solution for the initial
padding. We're entering a real mess here. So we should make a conscious
decision about what mechanism should be used in the future, rather than
making an ad-hoc decision for a single patch. (And then probably
changing our opinion later, all contributing to furthering the mess.)

So we need to decide a few things:
- which mechanism should be used?
- should the older mechanism(s) be deprecated?
- do they conflict? how should compatibility be kept?
- should decoding (i.e. in AVCodecContext) use the newer mechanism to
  change output data, like with AV_PKT_DATA_SKIP_SAMPLES?
- should this patch be held back until a decision was made?

(Unless I'm missing something, which is possible.)

And of course we need to know how to make a decision, since we
apparently don't have a process for this in this project.

More information about the ffmpeg-devel mailing list