[FFmpeg-devel] [PATCH 4/5] binkaudio: simplify frame_len_bits and frame_len calculation
Kostya
kostya.shishkov
Wed Feb 23 13:26:52 CET 2011
On Sun, Feb 20, 2011 at 07:39:06AM +0100, Kostya wrote:
> On Sun, Feb 20, 2011 at 12:24:48PM +1100, Peter Ross wrote:
> > ---
> > 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;
> > --
> > 1.7.1
>
> How many channels are possible there?
> If just mono/stereo then ok, for non-power-of-two it may be just differently
> wrong.
Meanwhile I'm okay with the patch
More information about the ffmpeg-devel
mailing list