bitstream.c: Convert GET_DATA macro to inline function.
[paraslash.git] / bitstream.c
index fb638d0a83317568c89e00a56d6bd375e6326a41..1593b99ee5bda9fe6f7e47b6ab63c445a10ad529 100644 (file)
 
 /** \file bitstream.c Bitstream API for the wma decoder. */
 
-#include <stdlib.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <string.h>
 #include <regex.h>
 
 #include "para.h"
 #include "wma.h"
 #include "bitstream.h"
 
-/** Read an 8, 16, or 32 bit entity from a VLC table. */
-#define GET_DATA(v, table, i, size) \
-{\
-       const uint8_t *ptr = (const uint8_t *)table + i * size; \
-       switch (size) { \
-       case 1: \
-               v = *(const uint8_t *)ptr; \
-               break; \
-       case 2: \
-               v = *(const uint16_t *)ptr; \
-               break; \
-       default: \
-               v = *(const uint32_t *)ptr; \
-               break; \
-       } \
+static inline uint32_t get_data(const void *table, int i, int size)
+{
+       const uint8_t *ptr = (const uint8_t *)table + i * size;
+       uint32_t v;
+
+       switch (size) {
+       case 1:
+               v = *(const uint8_t *)ptr;
+               break;
+       case 2:
+               v = *(const uint16_t *)ptr;
+               break;
+       default:
+               v = *(const uint32_t *)ptr;
+               break;
+       }
+       return v;
 }
 
 static void alloc_table(struct vlc *vlc, int size)
@@ -72,12 +70,12 @@ static int build_table(struct vlc *vlc, int table_nb_bits, int nb_codes,
 
        /* map codes and compute auxiliary table sizes */
        for (i = 0; i < nb_codes; i++) {
-               GET_DATA(n, bits, i, 1);
+               n = get_data(bits, i, 1);
                /* we accept tables with holes */
                n -= n_prefix;
                if (n <= 0)
                        continue;
-               GET_DATA(code, codes, i, codes_size);
+               code = get_data(codes, i, codes_size);
                /* if code matches the prefix, it is in the table */
                if ((code >> n) != code_prefix)
                        continue;