[FFmpeg-cvslog] binkaudio: simplify frame_len_bits and frame_len calculation

Peter Ross git
Sat Feb 26 04:51:54 CET 2011


ffmpeg | branch: master | Peter Ross <pross at xvid.org> | Sun Feb 20 12:24:48 2011 +1100| [8d09fc1930aa3dddb7af8241835416c92e7c886b] | committer: Michael Niedermayer

binkaudio: simplify frame_len_bits and frame_len calculation

Signed-off-by: Ronald S. Bultje <rsbultje at gmail.com>
(cherry picked from commit 8a8c283edd0da5863eb729a31a94b70820400941)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8d09fc1930aa3dddb7af8241835416c92e7c886b
---

 libavcodec/binkaudio.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/libavcodec/binkaudio.c b/libavcodec/binkaudio.c
index b601a01..116bf5b 100644
--- a/libavcodec/binkaudio.c
+++ b/libavcodec/binkaudio.c
@@ -81,7 +81,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
     } else {
         frame_len_bits = 11;
     }
-    s->frame_len = 1 << frame_len_bits;
 
     if (avctx->channels > MAX_CHANNELS) {
         av_log(avctx, AV_LOG_ERROR, "too many channels: %d\n", avctx->channels);
@@ -91,14 +90,13 @@ static av_cold int decode_init(AVCodecContext *avctx)
     if (avctx->codec->id == CODEC_ID_BINKAUDIO_RDFT) {
         // audio is already interleaved for the RDFT format variant
         sample_rate  *= avctx->channels;
-        s->frame_len *= avctx->channels;
         s->channels = 1;
-        if (avctx->channels == 2)
-            frame_len_bits++;
+        frame_len_bits += av_log2(avctx->channels);
     } else {
         s->channels = avctx->channels;
     }
 
+    s->frame_len     = 1 << frame_len_bits;
     s->overlap_len   = s->frame_len / 16;
     s->block_size    = (s->frame_len - s->overlap_len) * s->channels;
     sample_rate_half = (sample_rate + 1) / 2;




More information about the ffmpeg-cvslog mailing list