summaryrefslogtreecommitdiff
path: root/libavcodec/adxenc.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-11-20 16:49:13 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2011-11-26 16:25:07 -0500
commit994238536a8ec8b970a16d153bee72c96ede0cc3 (patch)
tree5c6cdc1c5e0d33b077c3e927797991a4d84b00d2 /libavcodec/adxenc.c
parentb237248e297760648307356efa5fcbfe16844829 (diff)
adx: simplify encoding by using put_sbits()
Diffstat (limited to 'libavcodec/adxenc.c')
-rw-r--r--libavcodec/adxenc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/adxenc.c b/libavcodec/adxenc.c
index b85a70d7b2..ae4b9f7da2 100644
--- a/libavcodec/adxenc.c
+++ b/libavcodec/adxenc.c
@@ -22,6 +22,7 @@
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "adx.h"
+#include "put_bits.h"
/**
* @file
@@ -37,6 +38,7 @@
static void adx_encode(ADXContext *c, unsigned char *adx, const short *wav,
ADXChannelState *prev)
{
+ PutBitContext pb;
int scale;
int i;
int s0,s1,s2,d;
@@ -72,9 +74,10 @@ static void adx_encode(ADXContext *c, unsigned char *adx, const short *wav,
AV_WB16(adx, scale);
- for(i=0;i<16;i++) {
- adx[i+2] = ((data[i*2]/scale)<<4) | ((data[i*2+1]/scale)&0xf);
- }
+ init_put_bits(&pb, adx + 2, 16);
+ for (i = 0; i < 32; i++)
+ put_sbits(&pb, 4, av_clip(data[i]/scale, -8, 7));
+ flush_put_bits(&pb);
}
static int adx_encode_header(AVCodecContext *avctx,unsigned char *buf,size_t bufsize)