X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=fecdec_filter.c;h=2f0a67467b88923d28d21225e936bfca3010848c;hp=fb2dba025d37806b2b70bd8f8002cae09e3e4db8;hb=75602d559d3dd57d704839b817377646722bfed8;hpb=d7b4aa3835197ee906f13f515040e1cda6385544 diff --git a/fecdec_filter.c b/fecdec_filter.c index fb2dba02..2f0a6746 100644 --- a/fecdec_filter.c +++ b/fecdec_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2011 Andre Noll + * Copyright (C) 2009-2013 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -7,7 +7,6 @@ /** \file fecdec_filter.c A filter that fec-decodes an audio stream. */ #include -#include #include "para.h" #include "error.h" @@ -291,7 +290,7 @@ static int decode_group(struct fecdec_group *fg, struct filter_node *fn) size_t written, need; struct private_fecdec_data *pfd = fn->private_data; enum fec_group_usability u = group_is_usable(fg, pfd); - char *buf = NULL, *p; + char *buf = NULL; if (u == FEC_GROUP_UNUSABLE) { PARA_INFO_LOG("dropping unusable group %d\n", fg->h.group_num); @@ -315,7 +314,6 @@ static int decode_group(struct fecdec_group *fg, struct filter_node *fn) if (need > btr_pool_unused(pfd->btrp)) return -E_FECDEC_OVERRUN; btr_pool_get_buffer(pfd->btrp, &buf); - p = buf; if (u == FEC_GROUP_USABLE_WITH_HEADER) { PARA_INFO_LOG("writing audio file header\n"); written = 0; @@ -328,7 +326,6 @@ static int decode_group(struct fecdec_group *fg, struct filter_node *fn) btr_copy(fg->data[i], n, pfd->btrp, fn->btrn); written += n; } - p += written; } written = 0; for (; i < fg->h.data_slices_per_group; i++) { @@ -338,7 +335,6 @@ static int decode_group(struct fecdec_group *fg, struct filter_node *fn) btr_copy(fg->data[i], n, pfd->btrp, fn->btrn); written += n; } - p += written; return 0; } @@ -440,7 +436,7 @@ static void fecdec_close(struct filter_node *fn) fn->private_data = NULL; } -static void fecdec_post_select(__a_unused struct sched *s, struct task *t) +static int fecdec_post_select(__a_unused struct sched *s, struct task *t) { struct filter_node *fn = container_of(t, struct filter_node, task); struct btr_node *btrn = fn->btrn; @@ -472,9 +468,9 @@ next_buffer: btr_consume(btrn, FEC_HEADER_SIZE + h.slice_bytes); goto next_buffer; out: - t->error = ret; if (ret < 0) - btr_remove_node(btrn); + btr_remove_node(&fn->btrn); + return ret; } static void fecdec_open(struct filter_node *fn)