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

Jon Toohill jtoohill at google.com
Wed Oct 5 20:42:13 EEST 2016


On Wed, Oct 5, 2016 at 10:40 AM, Jon Toohill <jtoohill at google.com> wrote:

> On Tue, Oct 4, 2016 at 7:19 AM, wm4 <nfxjfg at googlemail.com> wrote:
>
>> On Mon,  3 Oct 2016 17:45:08 -0700
>> Jon Toohill <jtoohill-at-google.com at ffmpeg.org> wrote:
>>
>> > Muxers can check AVCodecParameters.initial_padding for the
>> > encoder+decoder delay, and read the AV_PKT_DATA_SKIP_SAMPLES
>> > side data from the last packet for the encoder padding.
>> >
>> > This change also fixes the first_discard_sample calculation
>> > which erroneously included the decoder delay. Decoder delay
>> > is already accounted for in st->skip_samples. The affected
>> > FATE tests have been updated accordingly.
>> > ---
>> >  libavformat/mp3dec.c                 |  3 ++-
>> >  tests/ref/fate/audiomatch-square-mp3 |  2 +-
>> >  tests/ref/fate/gapless-mp3           | 10 +++++-----
>> >  3 files changed, 8 insertions(+), 7 deletions(-)
>> >
>> > diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c
>> > index 56c7f8c..e8b2428 100644
>> > --- a/libavformat/mp3dec.c
>> > +++ b/libavformat/mp3dec.c
>> > @@ -239,9 +239,10 @@ static void mp3_parse_info_tag(AVFormatContext
>> *s, AVStream *st,
>> >
>> >          mp3->start_pad = v>>12;
>> >          mp3->  end_pad = v&4095;
>> > +        st->codecpar->initial_padding = mp3->start_pad + 528 + 1;
>> >          st->start_skip_samples = mp3->start_pad + 528 + 1;
>> >          if (mp3->frames) {
>> > -            st->first_discard_sample = -mp3->end_pad + 528 + 1 +
>> mp3->frames * (int64_t)spf;
>> > +            st->first_discard_sample = -mp3->end_pad + mp3->frames *
>> (int64_t)spf;
>>
>> How does mixing these even make sense?
>>
>
> mp3enc.c already uses initial_padding for the encoder delay, and as you
> previously pointed out, mp3dec.c already uses AV_PKT_START_SKIP_SAMPLES for
> the encoder delay. I'm not attempting to solve the inconsistency in this
> patch set.
>

err, *mp3dec.c already uses AV_PKT_DATA_SKIP_SAMPLES for the encoder
padding. Sorry for the confusion.


>
>
>> >              st->last_discard_sample = mp3->frames * (int64_t)spf;
>> >          }
>> >          if (!st->start_time)
>> > diff --git a/tests/ref/fate/audiomatch-square-mp3
>> b/tests/ref/fate/audiomatch-square-mp3
>> > index 8de55c2..05176a0 100644
>> > --- a/tests/ref/fate/audiomatch-square-mp3
>> > +++ b/tests/ref/fate/audiomatch-square-mp3
>> > @@ -1 +1 @@
>> > -presig: 0 postsig:0 c: 0.9447 lenerr:0
>> > +presig: 0 postsig:-529 c: 0.9334 lenerr:-529
>> > diff --git a/tests/ref/fate/gapless-mp3 b/tests/ref/fate/gapless-mp3
>> > index ebe7bfa..8b80bfc 100644
>> > --- a/tests/ref/fate/gapless-mp3
>> > +++ b/tests/ref/fate/gapless-mp3
>> > @@ -1,5 +1,5 @@
>> > -37534a3bcc3ef306e8c5ebfcfedfc41c *tests/data/fate/gapless-mp3.out-1
>> > -c96c3ae7bd3300fd2f4debac222de5b7
>> > -0cd1cdbcfd5cdbf6270cd98219bf31cd *tests/data/fate/gapless-mp3.out-2
>> > -c96c3ae7bd3300fd2f4debac222de5b7
>> > -9d3d8ba8a61b534f2d02ee648d6a8229 *tests/data/fate/gapless-mp3.out-3
>> > +81695be427d45e8be4d527a6b2af2a85 *tests/data/fate/gapless-mp3.out-1
>> > +c7879a827ab017364774069268d9a267
>> > +62d074296f8c84a5f86a6afdd7bab459 *tests/data/fate/gapless-mp3.out-2
>> > +c7879a827ab017364774069268d9a267
>> > +e931f3fe1ba25e0d5eece4977c4061a9 *tests/data/fate/gapless-mp3.out-3
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>
>


More information about the ffmpeg-devel mailing list