| ... | ... |
@@ -22,6 +22,7 @@ |
| 22 | 22 |
#include "libavutil/intreadwrite.h" |
| 23 | 23 |
#include "avcodec.h" |
| 24 | 24 |
#include "adx.h" |
| 25 |
+#include "put_bits.h" |
|
| 25 | 26 |
|
| 26 | 27 |
/** |
| 27 | 28 |
* @file |
| ... | ... |
@@ -37,6 +38,7 @@ |
| 37 | 37 |
static void adx_encode(ADXContext *c, unsigned char *adx, const short *wav, |
| 38 | 38 |
ADXChannelState *prev) |
| 39 | 39 |
{
|
| 40 |
+ PutBitContext pb; |
|
| 40 | 41 |
int scale; |
| 41 | 42 |
int i; |
| 42 | 43 |
int s0,s1,s2,d; |
| ... | ... |
@@ -72,9 +74,10 @@ static void adx_encode(ADXContext *c, unsigned char *adx, const short *wav, |
| 72 | 72 |
|
| 73 | 73 |
AV_WB16(adx, scale); |
| 74 | 74 |
|
| 75 |
- for(i=0;i<16;i++) {
|
|
| 76 |
- adx[i+2] = ((data[i*2]/scale)<<4) | ((data[i*2+1]/scale)&0xf); |
|
| 77 |
- } |
|
| 75 |
+ init_put_bits(&pb, adx + 2, 16); |
|
| 76 |
+ for (i = 0; i < 32; i++) |
|
| 77 |
+ put_sbits(&pb, 4, av_clip(data[i]/scale, -8, 7)); |
|
| 78 |
+ flush_put_bits(&pb); |
|
| 78 | 79 |
} |
| 79 | 80 |
|
| 80 | 81 |
static int adx_encode_header(AVCodecContext *avctx,unsigned char *buf,size_t bufsize) |