[FFmpeg-devel] [PATCH 1/3] omadec: fix overflows during bit rate calculation

Hendrik Leppkes h.leppkes at gmail.com
Wed Dec 14 11:47:18 EET 2016


On Wed, Dec 14, 2016 at 1:02 AM, Andreas Cadhalpun
<andreas.cadhalpun at googlemail.com> wrote:
> On 13.12.2016 08:11, Paul B Mahol wrote:
>> On 12/13/16, Andreas Cadhalpun <andreas.cadhalpun at googlemail.com> wrote:
>>> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
>>> ---
>>>  libavformat/omadec.c | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/libavformat/omadec.c b/libavformat/omadec.c
>>> index 6e476db..e7751d0 100644
>>> --- a/libavformat/omadec.c
>>> +++ b/libavformat/omadec.c
>>> @@ -365,7 +365,7 @@ static int oma_read_header(AVFormatContext *s)
>>>          st->codecpar->channels    = 2;
>>>          st->codecpar->channel_layout = AV_CH_LAYOUT_STEREO;
>>>          st->codecpar->sample_rate = samplerate;
>>> -        st->codecpar->bit_rate    = st->codecpar->sample_rate * framesize *
>>> 8 / 1024;
>>> +        st->codecpar->bit_rate    = st->codecpar->sample_rate * framesize /
>>> 128;
>>>
>>>          /* fake the ATRAC3 extradata
>>>           * (wav format, makes stream copy to wav work) */
>>> @@ -398,7 +398,7 @@ static int oma_read_header(AVFormatContext *s)
>>>              return AVERROR_INVALIDDATA;
>>>          }
>>>          st->codecpar->sample_rate = samplerate;
>>> -        st->codecpar->bit_rate    = samplerate * framesize * 8 / 2048;
>>> +        st->codecpar->bit_rate    = samplerate * framesize / 256;
>>>          avpriv_set_pts_info(st, 64, 1, samplerate);
>>>          break;
>>>      case OMA_CODECID_MP3:
>>
>> Shouldn't using 8LL or similar be more future-proof?
>
> Why multiply with 8 when dividing by a multiple of 8 directly afterwards?
> That's just a waste of computational resources.
> If sample_rate and/or framesize get larger in the future, a cast can be added.
>

The compiler should be able to optimize such things out and it may add
clarity to what the code is doing.

- Hendrik


More information about the ffmpeg-devel mailing list