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

vitor subversion
Mon Jun 30 20:36:45 CEST 2008


Author: vitor
Date: Mon Jun 30 20:36:45 2008
New Revision: 14038

Log:
Rewrite unpack() using the bitstream reader

Modified:
   trunk/libavcodec/ra288.c

Modified: trunk/libavcodec/ra288.c
==============================================================================
--- trunk/libavcodec/ra288.c	(original)
+++ trunk/libavcodec/ra288.c	Mon Jun 30 20:36:45 2008
@@ -20,6 +20,8 @@
  */
 
 #include "avcodec.h"
+#define ALT_BITSTREAM_READER_LE
+#include "bitstream.h"
 #include "ra288.h"
 
 typedef struct {
@@ -39,28 +41,15 @@ typedef struct {
 static void unpack(unsigned short *tgt, const unsigned char *src,
                    unsigned int len)
 {
-    int x, y, z;
-    int n, temp;
-    int buffer[len];
-
-    for (x=0; x < len; tgt[x++] = 0)
-        buffer[x] = 9 + (x & 1);
-
-    for (x=y=z=0; x < len/*was 38*/; x++) {
-        n = buffer[y] - z;
-        temp = src[x];
-
-        if (n < 8)
-            temp &= 255 >> (8 - n);
+    int i = 0;
+    GetBitContext gb;
 
-        tgt[y] += temp << z;
+    init_get_bits(&gb, src, len * 8);
 
-        if (n <= 8) {
-            tgt[++y] += src[x] >> n;
-            z = 8 - n;
-        } else
-            z += 8;
-  }
+    while (get_bits_count(&gb) + 9 + (i&1) <= len*8) {
+        tgt[i] = get_bits(&gb, 9 + (i&1));
+        i++;
+    }
 }
 
 /* Decode and produce output */




More information about the ffmpeg-cvslog mailing list