[FFmpeg-devel] [PATCH] avcodec/utils: Add case for mp3 to av_get_audio_frame_duration()

Hendrik Leppkes h.leppkes at gmail.com
Fri Jan 1 19:33:58 CET 2016


On Fri, Jan 1, 2016 at 7:29 PM, Ronald S. Bultje <rsbultje at gmail.com> wrote:
> Hi,
>
> On Fri, Jan 1, 2016 at 11:43 AM, Michael Niedermayer <michaelni at gmx.at>
> wrote:
>
>> From: Michael Niedermayer <michael at niedermayer.cc>
>>
>> This is not guranteed to be correct but only the encoder or the packet
>> headers
>> can really provide the correct value. And before the first packet there is
>> no alternative to receiving the value from the encoder by some means
>>
>> other codecs like AAC are still missing and are left for voluteers
>>
>> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
>> ---
>>  libavcodec/utils.c |    6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
>> index 4b4aea0..6ed47ef 100644
>> --- a/libavcodec/utils.c
>> +++ b/libavcodec/utils.c
>> @@ -3042,6 +3042,12 @@ int av_get_audio_frame_duration(AVCodecContext
>> *avctx, int frame_bytes)
>>          if (id == AV_CODEC_ID_TTA)
>>              return 256 * sr / 245;
>>
>> +        // When frame_bytes is set then the headers can be parsed to find
>> the
>> +        // frame size
>> +        if (id == AV_CODEC_ID_MP3 && !frame_bytes) {
>> +            return sr <= 24000 ? 576 : 1152;
>> +        }
>> +
>>          if (ch > 0) {
>>              /* calc from sample rate and channels */
>>              if (id == AV_CODEC_ID_BINKAUDIO_DCT)
>> --
>> 1.7.9.5
>
>
> Please, no more codec-specific hacks in generic code.
>

This whole function is codec specific crazy.


More information about the ffmpeg-devel mailing list