X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=opusdec_filter.c;h=10ed394d295072d909441fe211fbcdc695ff62d0;hp=282229855d0d97519f886483c249d8e3f4b00b4f;hb=HEAD;hpb=073076f4e54b35ee96cfab0c4a47b40126f24213 diff --git a/opusdec_filter.c b/opusdec_filter.c index 28222985..f36990fa 100644 --- a/opusdec_filter.c +++ b/opusdec_filter.c @@ -4,7 +4,7 @@ * Copyright (c) 2007-2012 Xiph.Org Foundation * Copyright (C) 2012 Andre Noll * - * Licensed under the GPL v2. For licencing details see COPYING. + * Licensed under the GPL v2, see file COPYING. */ /** \file opusdec_filter.c The ogg/opus decoder. */ @@ -50,7 +50,6 @@ #include "para.h" #include "list.h" #include "sched.h" -#include "ggo.h" #include "buffer_tree.h" #include "filter.h" #include "error.h" @@ -87,7 +86,7 @@ static int opusdec_execute(struct btr_node *btrn, const char *cmd, static void opusdec_open(struct filter_node *fn) { - struct opusdec_context *ctx = para_calloc(sizeof(*ctx)); + struct opusdec_context *ctx = zalloc(sizeof(*ctx)); ogg_sync_init(&ctx->oy); fn->private_data = ctx; @@ -154,7 +153,7 @@ static void opusdec_add_output(short *pcm, int frames_available, if (tmp_skip > 0) { short *in = pcm + ctx->channels * tmp_skip; - short *out = para_malloc(bytes); + short *out = alloc(bytes); memcpy(out, in, bytes); free(pcm); pcm = out; @@ -194,7 +193,7 @@ static int decode_packet(struct opusdec_context *ctx, ogg_packet *op, /* don't care for anything except opus eos */ if (op->e_o_s && ctx->os.serialno == ctx->opus_serialno) ctx->eos = true; - output = para_malloc(sizeof(short) * MAX_FRAME_SIZE * ctx->channels); + output = arr_alloc(sizeof(short) * ctx->channels, MAX_FRAME_SIZE); ret = opus_multistream_decode(ctx->st, (unsigned char *)op->packet, op->bytes, output, MAX_FRAME_SIZE, 0); if (ret < 0) { @@ -208,7 +207,7 @@ static int decode_packet(struct opusdec_context *ctx, ogg_packet *op, #define OPUSDEC_MAX_OUTPUT_SIZE (1024 * 1024) -static int opusdec_post_select(__a_unused struct sched *s, void *context) +static int opusdec_post_monitor(__a_unused struct sched *s, void *context) { struct filter_node *fn = context; struct opusdec_context *ctx = fn->private_data; @@ -218,7 +217,7 @@ static int opusdec_post_select(__a_unused struct sched *s, void *context) ret = btr_node_status(btrn, fn->min_iqs, BTR_NT_INTERNAL); if (ret < 0) { - if (ret != -E_BTR_EOF) /* fatal error */ + if (ret != -E_EOF) /* fatal error */ goto out; if (!ctx->have_more) /* EOF */ goto out; @@ -270,7 +269,7 @@ out: return ret; } -static void opusdec_pre_select(struct sched *s, void *context) +static void opusdec_pre_monitor(struct sched *s, void *context) { struct filter_node *fn = context; struct opusdec_context *ctx = fn->private_data; @@ -284,18 +283,10 @@ static void opusdec_pre_select(struct sched *s, void *context) return sched_min_delay(s); } -/** - * The init function of the opusdec filter. - * - * \param f Pointer to the filter struct to initialize. - * - * \sa filter::init. - */ -void opusdec_filter_init(struct filter *f) -{ - f->open = opusdec_open; - f->close = opusdec_close; - f->pre_select = opusdec_pre_select; - f->post_select = opusdec_post_select; - f->execute = opusdec_execute; -} +const struct filter lsg_filter_cmd_com_opusdec_user_data = { + .open = opusdec_open, + .close = opusdec_close, + .pre_monitor = opusdec_pre_monitor, + .post_monitor = opusdec_post_monitor, + .execute = opusdec_execute, +};