On 14.12.2016 11:16, Moritz Barsnick wrote: > On Wed, Dec 14, 2016 at 01:02:41 +0100, Andreas Cadhalpun wrote: >> On 13.12.2016 08:11, Paul B Mahol wrote: >>>> - st->codecpar->bit_rate = samplerate * framesize * 8 / 2048; >>>> + st->codecpar->bit_rate = samplerate * framesize / 256; >> >> Why multiply with 8 when dividing by a multiple of 8 directly afterwards? >> That's just a waste of computational resources. > > I can only explain the term with "readability" (e.g. "number of bytes > times 8 is number of bits, divided by 2048 is the rate"). If you > bracket the (8 / 2048), it would avoid the overflow, and the compiler > should evaluate the term to that constant 256 anyway, right? (Just if > anyone cares about the presumed readability.)
Well, (8 / 2048) = 0, but one can do "/ (2048 / 8)". Attached is a version doing it that way. Do you think that's better? Best regards, Andreas
>From 6bf8af5e8db1986ec1e30143a088b91041eb9ead Mon Sep 17 00:00:00 2001 From: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> Date: Tue, 13 Dec 2016 00:35:12 +0100 Subject: [PATCH] omadec: fix overflows during bit rate calculation Signed-off-by: Andreas Cadhalpun <andreas.cadhal...@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..757ae53 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 / (1024 / 8); /* 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 / (2048 / 8); avpriv_set_pts_info(st, 64, 1, samplerate); break; case OMA_CODECID_MP3: -- 2.10.2
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel