]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - wmadec_filter.c
remove unused block_num field of struct private_wmadec_data.
[paraslash.git] / wmadec_filter.c
index 8298296df3cc5fc3f42006a09abe5d0569725138..0e2f6b8515773ac6c5c8ebb71fed620e7f25692e 100644 (file)
@@ -34,7 +34,7 @@
 #include "sched.h"
 #include "filter.h"
 #include "bitstream.h"
-#include "mdct.h"
+#include "imdct.h"
 #include "wma.h"
 #include "wmadata.h"
 
@@ -96,7 +96,6 @@ struct private_wmadec_data {
        int next_block_len_bits;        ///< log2 of next block length
        int prev_block_len_bits;        ///< log2 of prev block length
        int block_len;          ///< block length in samples
-       int block_num;          ///< block number in current frame
        int block_pos;          ///< current position in frame
        uint8_t ms_stereo;      ///< true if mid/side stereo mode
        uint8_t channel_coded[MAX_CHANNELS];    ///< true if channel is coded
@@ -138,7 +137,7 @@ static int wmadec_cleanup(struct private_wmadec_data *s)
        int i;
 
        for (i = 0; i < s->nb_block_sizes; i++)
-               mdct_end(s->mdct_ctx[i]);
+               imdct_end(s->mdct_ctx[i]);
 
        if (s->use_exp_vlc)
                free_vlc(&s->exp_vlc);
@@ -446,14 +445,13 @@ static int wma_decode_init(char *initial_buf, int len, struct private_wmadec_dat
        struct private_wmadec_data *s;
        int ret, i;
 
-       if (len < 18)
-               return 0;
-
        PARA_NOTICE_LOG("initial buf: %d bytes\n", len);
        s = para_calloc(sizeof(*s));
        ret = read_asf_header(initial_buf, len, &s->ahi);
-       if (ret < 0)
+       if (ret <= 0) {
+               free(s);
                return ret;
+       }
 
        s->use_exp_vlc = s->ahi.flags2 & 0x0001;
        s->use_bit_reservoir = s->ahi.flags2 & 0x0002;
@@ -464,7 +462,7 @@ static int wma_decode_init(char *initial_buf, int len, struct private_wmadec_dat
                return ret;
        /* init MDCT */
        for (i = 0; i < s->nb_block_sizes; i++) {
-               ret = mdct_init(s->frame_len_bits - i + 1, 1, &s->mdct_ctx[i]);
+               ret = imdct_init(s->frame_len_bits - i + 1, 1, &s->mdct_ctx[i]);
                if (ret < 0)
                        return ret;
        }
@@ -1099,7 +1097,6 @@ next:
        }
 
        /* update block number */
-       s->block_num++;
        s->block_pos += s->block_len;
        if (s->block_pos >= s->frame_len)
                return 1;
@@ -1130,7 +1127,6 @@ static int wma_decode_frame(struct private_wmadec_data *s, int16_t * samples)
        float *iptr;
 
        /* read each block */
-       s->block_num = 0;
        s->block_pos = 0;
        for (;;) {
                ret = wma_decode_block(s);
@@ -1286,6 +1282,8 @@ static ssize_t wmadec_convert(char *inbuffer, size_t len,
                if (ret <= 0)
                        return ret;
                fn->private_data = pwd;
+               fn->fc->channels = pwd->ahi.channels;
+               fn->fc->samplerate = pwd->ahi.sample_rate;
                return pwd->ahi.header_len;
        }
        /* skip 31 bytes */