int ret, converted = 0;
struct private_wmadec_data *pwd = fn->private_data;
struct btr_node *btrn = fn->btrn;
- size_t len, min_len;
+ size_t len;
char *in;
- min_len = pwd? WMA_FRAME_SKIP + pwd->ahi.block_align : 8192;
next_buffer:
t->error = 0;
- ret = prepare_filter_node(btrn, min_len);
+ ret = prepare_filter_node(btrn, fn->min_iqs);
if (ret < 0)
goto err;
if (ret == 0)
return;
len = btr_next_buffer(btrn, (char **)&in);
ret = -E_WMADEC_EOF;
- if (len < min_len)
+ if (len < fn->min_iqs)
goto err;
if (!pwd) {
ret = wma_decode_init(in, len, &pwd);
if (ret < 0)
goto err;
if (ret == 0) {
- min_len += 4096;
+ fn->min_iqs += 4096;
goto next_buffer;
}
+ fn->min_iqs = WMA_FRAME_SKIP + pwd->ahi.block_align;
fn->private_data = pwd;
converted = pwd->ahi.header_len;
goto success;
fn->buf = para_malloc(fn->bufsize);
fn->private_data = NULL;
fn->loaded = 0;
+ fn->min_iqs = 4096;
}
/**