[FFmpeg-cvslog] r14040 - trunk/libavcodec/ra288.c

vitor subversion
Mon Jun 30 21:09:00 CEST 2008


Author: vitor
Date: Mon Jun 30 21:09:00 2008
New Revision: 14040

Log:
Remove unpack() function, read the bitstream as needed

Modified:
   trunk/libavcodec/ra288.c

Modified: trunk/libavcodec/ra288.c
==============================================================================
--- trunk/libavcodec/ra288.c	(original)
+++ trunk/libavcodec/ra288.c	Mon Jun 30 21:09:00 2008
@@ -37,23 +37,8 @@ typedef struct {
     float lhist[10];
 } 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 */
-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;
     float f;
@@ -72,8 +57,8 @@ static void decode(Real288_internal *glo
         glob->sb[x] = sum;
     }
 
-    f = amptable[input & 7];
-    table = codetable + (input >> 3) * 5;
+    f = amptable[amp_coef];
+    table = codetable + cb_coef * 5;
 
     /* convert log and do rms */
     for (sum=32, x=10; x--; sum -= glob->pr2[x] * glob->lhist[x]);
@@ -225,13 +210,15 @@ static void * decode_block(AVCodecContex
 {
     int x, y;
     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++) {
+        int amp_coef = get_bits(&gb, 3);
+        int cb_coef = get_bits(&gb, 6 + (x&1));
         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++)]);
 




More information about the ffmpeg-cvslog mailing list