mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Remove unpack() function, read the bitstream as needed
Originally committed as revision 14040 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
285ea3e30a
commit
6091357fc0
@ -37,23 +37,8 @@ typedef struct {
|
|||||||
float lhist[10];
|
float lhist[10];
|
||||||
} Real288_internal;
|
} Real288_internal;
|
||||||
|
|
||||||
/* initial decode */
|
|
||||||
static void unpack(unsigned short *tgt, const unsigned char *src,
|
|
||||||
unsigned int len)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
GetBitContext gb;
|
|
||||||
|
|
||||||
init_get_bits(&gb, src, len * 8);
|
|
||||||
|
|
||||||
while (get_bits_count(&gb) + 9 + (i&1) <= len*8) {
|
|
||||||
tgt[i] = get_bits(&gb, 9 + (i&1));
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Decode and produce output */
|
/* Decode and produce output */
|
||||||
static void decode(Real288_internal *glob, unsigned int input)
|
static void decode(Real288_internal *glob, int amp_coef, int cb_coef)
|
||||||
{
|
{
|
||||||
unsigned int x, y;
|
unsigned int x, y;
|
||||||
float f;
|
float f;
|
||||||
@ -72,8 +57,8 @@ static void decode(Real288_internal *glob, unsigned int input)
|
|||||||
glob->sb[x] = sum;
|
glob->sb[x] = sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
f = amptable[input & 7];
|
f = amptable[amp_coef];
|
||||||
table = codetable + (input >> 3) * 5;
|
table = codetable + cb_coef * 5;
|
||||||
|
|
||||||
/* convert log and do rms */
|
/* convert log and do rms */
|
||||||
for (sum=32, x=10; x--; sum -= glob->pr2[x] * glob->lhist[x]);
|
for (sum=32, x=10; x--; sum -= glob->pr2[x] * glob->lhist[x]);
|
||||||
@ -225,13 +210,15 @@ static void * decode_block(AVCodecContext * avctx, const unsigned char *in,
|
|||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
Real288_internal *glob = avctx->priv_data;
|
Real288_internal *glob = avctx->priv_data;
|
||||||
unsigned short int buffer[len];
|
GetBitContext gb;
|
||||||
|
|
||||||
unpack(buffer, in, len);
|
init_get_bits(&gb, in, len * 8);
|
||||||
|
|
||||||
for (x=0; x < 32; x++) {
|
for (x=0; x < 32; x++) {
|
||||||
|
int amp_coef = get_bits(&gb, 3);
|
||||||
|
int cb_coef = get_bits(&gb, 6 + (x&1));
|
||||||
glob->phasep = (glob->phase = x & 7) * 5;
|
glob->phasep = (glob->phase = x & 7) * 5;
|
||||||
decode(glob, buffer[x]);
|
decode(glob, amp_coef, cb_coef);
|
||||||
|
|
||||||
for (y=0; y<5; *(out++) = 8 * glob->output[glob->phasep+(y++)]);
|
for (y=0; y<5; *(out++) = 8 * glob->output[glob->phasep+(y++)]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user