int i, ret;
struct private_mp3dec_data *pmd = fn->private_data;
struct btr_node *btrn = fn->btrn;
- size_t loaded = 0, len, iqs;
+ size_t loaded = 0, len;
char *inbuffer, *outbuffer;
next_buffer:
pmd->stream.error = 0;
- iqs = btr_get_input_queue_size(btrn);
ret = btr_node_status(btrn, fn->min_iqs, BTR_NT_INTERNAL);
if (ret < 0)
goto err;
if (ret < 0) {
mp3dec_consume(btrn, &pmd->stream, len);
if (pmd->stream.error == MAD_ERROR_BUFLEN) {
- if (len == iqs && btr_no_parent(btrn)) {
- ret = -E_MP3DEC_EOF;
+ if (fn->min_iqs > 0 && btr_no_parent(btrn)) {
+ ret = -E_EOF;
goto err;
}
fn->min_iqs += 100;
goto err;
mad_stream_sync(&pmd->stream);
if (pmd->stream.error == MAD_ERROR_BUFLEN) {
- ret = -E_MP3DEC_EOF;
- if (len == iqs && btr_no_parent(btrn))
+ ret = -E_EOF;
+ if (btr_no_parent(btrn))
goto err;
fn->min_iqs += 100;
ret = -E_MP3DEC_CORRUPT;
}
fn->min_iqs = 0;
mad_synth_frame(&pmd->synth, &pmd->frame);
- outbuffer = para_malloc(pmd->synth.pcm.length * 2 * pmd->channels);
+ outbuffer = arr_alloc(pmd->synth.pcm.length, 2 * pmd->channels);
loaded = 0;
for (i = 0; i < pmd->synth.pcm.length; i++) {
int sample = MAD_TO_SHORT(pmd->synth.pcm.samples[0][i]);
static void mp3dec_open(struct filter_node *fn)
{
- struct private_mp3dec_data *pmd = para_calloc(sizeof(*pmd));
+ struct private_mp3dec_data *pmd = zalloc(sizeof(*pmd));
fn->private_data = pmd;
mad_stream_init(&pmd->stream);
mad_stream_options(&pmd->stream, MAD_OPTION_IGNORECRC);
}
-static int mp3dec_execute(struct btr_node *btrn, const char *cmd, char **result)
+static int mp3dec_execute(const struct btr_node *btrn, const char *cmd,
+ char **result)
{
struct filter_node *fn = btr_context(btrn);
struct private_mp3dec_data *pmd = fn->private_data;