]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
wmadec: Simplify get_vlc().
authorAndre Noll <maan@tuebingen.mpg.de>
Sat, 6 Feb 2016 06:07:10 +0000 (07:07 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Sun, 6 Mar 2016 20:29:06 +0000 (21:29 +0100)
The last parameter is always bigger than 2, which is all the function
needs to know. Hence we may remove the parameter and get rid of some
macros that were only used to compute it.

bitstream.c
bitstream.h
wmadec_filter.c

index 1593b99ee5bda9fe6f7e47b6ab63c445a10ad529..638d19a3579b02053bd281e29e7f39d2bf54495c 100644 (file)
@@ -166,29 +166,26 @@ void free_vlc(struct vlc *vlc)
  * \param gbc The getbit context structure.
  * \param table The vlc tables to use.
  * \param bits The number of bits which will be read at once.
- * \param max_depth The number of times \a bits bits must be read to completely
- * read the longest vlc code = (max_vlc_length + bits - 1) / bits.
  *
  * The \a bits parameter must be identical to the \a nb_bits value supplied to
  * \ref init_vlc().
  *
  * \return The vlc code.
  */
-int get_vlc(struct getbit_context *gbc, VLC_TYPE(*table)[2], int bits,
-               int max_depth)
+int get_vlc(struct getbit_context *gbc, VLC_TYPE(*table)[2], int bits)
 {
        int n, idx, nb_bits, code;
 
        idx = show_bits(gbc, bits);
        code = table[idx][0];
        n = table[idx][1];
-       if (max_depth > 1 && n < 0) {
+       if (n < 0) {
                skip_bits(gbc, bits);
                nb_bits = -n;
                idx = show_bits(gbc, nb_bits) + code;
                code = table[idx][0];
                n = table[idx][1];
-               if (max_depth > 2 && n < 0) {
+               if (n < 0) {
                        skip_bits(gbc, nb_bits);
                        nb_bits = -n;
                        idx = show_bits(gbc, nb_bits) + code;
index 5890d08c89d4033f7fefb9a19be525860a701d77..ee32667eabc22ffc039b999ad9adfb3d495ce79f 100644 (file)
@@ -88,5 +88,4 @@ static inline void init_get_bits(struct getbit_context *gbc,
 void init_vlc(struct vlc *vlc, int nb_bits, int nb_codes, const void *bits,
                const void *codes, int codes_size);
 void free_vlc(struct vlc *vlc);
-int get_vlc(struct getbit_context *gbc, VLC_TYPE(*table)[2], int bits,
-               int max_depth);
+int get_vlc(struct getbit_context *gbc, VLC_TYPE(*table)[2], int bits);
index 6b7251ee06338d1c1b50b4cd5eb674a6958ee0c0..c1f0c302960999704658c89560c1d1d7631808e4 100644 (file)
@@ -131,13 +131,8 @@ struct private_wmadec_data {
 };
 
 #define EXPVLCBITS 8
-#define EXPMAX DIV_ROUND_UP(19, EXPVLCBITS)
-
 #define HGAINVLCBITS 9
-#define HGAINMAX DIV_ROUND_UP(13, HGAINVLCBITS)
-
 #define VLCBITS 9
-#define VLCMAX DIV_ROUND_UP(22, VLCBITS)
 
 /** \cond sine_winows */
 
@@ -586,7 +581,7 @@ static int decode_exp_vlc(struct private_wmadec_data *pwd, int ch)
        last_exp = 36;
 
        while (q < q_end) {
-               code = get_vlc(&pwd->gb, pwd->exp_vlc.table, EXPVLCBITS, EXPMAX);
+               code = get_vlc(&pwd->gb, pwd->exp_vlc.table, EXPVLCBITS);
                if (code < 0)
                        return code;
                /* NOTE: this offset is the same as MPEG4 AAC ! */
@@ -714,8 +709,7 @@ static int compute_high_band_values(struct private_wmadec_data *pwd,
                                val = get_bits(&pwd->gb, 7) - 19;
                        else {
                                int code = get_vlc(&pwd->gb,
-                                       pwd->hgain_vlc.table, HGAINVLCBITS,
-                                       HGAINMAX);
+                                       pwd->hgain_vlc.table, HGAINVLCBITS);
                                if (code < 0)
                                        return code;
                                val += code - 18;
@@ -946,8 +940,7 @@ static int wma_decode_block(struct private_wmadec_data *pwd)
                eptr = ptr + nb_coefs[ch];
                memset(ptr, 0, pwd->block_len * sizeof(int16_t));
                for (;;) {
-                       code = get_vlc(&pwd->gb, coef_vlc->table,
-                               VLCBITS, VLCMAX);
+                       code = get_vlc(&pwd->gb, coef_vlc->table, VLCBITS);
                        if (code < 0)
                                return code;
                        if (code == 1) /* EOB */