Mercurial > mplayer.hg
comparison libmpcodecs/ad_imaadpcm.c @ 27121:237e683b7480
Half size for adpcm_index
author | reimar |
---|---|
date | Sun, 29 Jun 2008 09:14:26 +0000 |
parents | ea18c012330a |
children | f8e189f9e119 |
comparison
equal
deleted
inserted
replaced
27120:ea18c012330a | 27121:237e683b7480 |
---|---|
48 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, | 48 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, |
49 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, | 49 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, |
50 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 | 50 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 |
51 }; | 51 }; |
52 | 52 |
53 static const int8_t adpcm_index[16] = | 53 static const int8_t adpcm_index[8] = |
54 { | 54 { |
55 -1, -1, -1, -1, 2, 4, 6, 8, | 55 -1, -1, -1, -1, 2, 4, 6, 8, |
56 -1, -1, -1, -1, 2, 4, 6, 8 | |
57 }; | 56 }; |
58 | 57 |
59 // useful macros | 58 // useful macros |
60 // clamp a number between 0 and 88 | 59 // clamp a number between 0 and 88 |
61 #define CLAMP_0_TO_88(x) x = av_clip(x, 0, 88); | 60 #define CLAMP_0_TO_88(x) x = av_clip(x, 0, 88); |
142 step[1] = adpcm_step[index[1]]; | 141 step[1] = adpcm_step[index[1]]; |
143 | 142 |
144 for (i = 0; i < output_size; i++) | 143 for (i = 0; i < output_size; i++) |
145 { | 144 { |
146 delta = output[i]; | 145 delta = output[i]; |
146 sign = delta & 8; | |
147 delta = delta & 7; | |
147 | 148 |
148 index[channel_number] += adpcm_index[delta]; | 149 index[channel_number] += adpcm_index[delta]; |
149 CLAMP_0_TO_88(index[channel_number]); | 150 CLAMP_0_TO_88(index[channel_number]); |
150 | 151 |
151 sign = delta & 8; | |
152 delta = delta & 7; | |
153 delta = 2 * delta + 1; | 152 delta = 2 * delta + 1; |
154 if (sign) delta = -delta; | 153 if (sign) delta = -delta; |
155 | 154 |
156 predictor[channel_number] += (delta * step[channel_number]) >> 3; | 155 predictor[channel_number] += (delta * step[channel_number]) >> 3; |
157 | 156 |