Commit c52ddc60 authored by Justin Ruggles's avatar Justin Ruggles

adx: simplify adx_decode() by using get_sbits() to read residual samples

parent ca9e4727
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "libavutil/intreadwrite.h" #include "libavutil/intreadwrite.h"
#include "avcodec.h" #include "avcodec.h"
#include "adx.h" #include "adx.h"
#include "get_bits.h"
/** /**
* @file * @file
...@@ -48,24 +49,16 @@ static av_cold int adx_decode_init(AVCodecContext *avctx) ...@@ -48,24 +49,16 @@ static av_cold int adx_decode_init(AVCodecContext *avctx)
static void adx_decode(ADXContext *c, int16_t *out, const uint8_t *in, int ch) static void adx_decode(ADXContext *c, int16_t *out, const uint8_t *in, int ch)
{ {
ADXChannelState *prev = &c->prev[ch]; ADXChannelState *prev = &c->prev[ch];
GetBitContext gb;
int scale = AV_RB16(in); int scale = AV_RB16(in);
int i; int i;
int s0, s1, s2, d; int s0, s1, s2, d;
in += 2; init_get_bits(&gb, in + 2, (18 - 2) * 8);
s1 = prev->s1; s1 = prev->s1;
s2 = prev->s2; s2 = prev->s2;
for (i = 0; i < 16; i++) { for (i = 0; i < 32; i++) {
d = in[i]; d = get_sbits(&gb, 4);
d = (signed char)d >> 4;
s0 = (BASEVOL * d * scale + SCALE1 * s1 - SCALE2 * s2) >> 14;
s2 = s1;
s1 = av_clip_int16(s0);
*out = s1;
out += c->channels;
d = in[i];
d = (signed char)(d << 4) >> 4;
s0 = (BASEVOL * d * scale + SCALE1 * s1 - SCALE2 * s2) >> 14; s0 = (BASEVOL * d * scale + SCALE1 * s1 - SCALE2 * s2) >> 14;
s2 = s1; s2 = s1;
s1 = av_clip_int16(s0); s1 = av_clip_int16(s0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment