X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=play.c;h=ca584b9992b63ab46c5f1c9cde87618b7281055d;hp=330c8b212049123ee1a53de285e2d3b2c6ebd3d6;hb=4adde8dae3317fa83b81e7a860c9ed9133e99bb0;hpb=44779382f0699be6b8daeeb25e7e1a2c40116d4b;ds=sidebyside diff --git a/play.c b/play.c index 330c8b21..ca584b99 100644 --- a/play.c +++ b/play.c @@ -296,7 +296,7 @@ static int get_playback_error(struct play_task *pt) static int eof_cleanup(struct play_task *pt) { struct writer *w = writers + DEFAULT_WRITER; - const struct filter *decoder = filter_get(pt->fn.filter_num); + const struct filter *decoder; int ret; ret = get_playback_error(pt); @@ -309,6 +309,7 @@ static int eof_cleanup(struct play_task *pt) w->free_config(pt->wn.conf); memset(&pt->wn, 0, sizeof(struct writer_node)); + decoder = filter_get(pt->fn.filter_num); task_reap(&pt->fn.task); if (decoder->close) decoder->close(&pt->fn); @@ -410,6 +411,7 @@ static int load_file(struct play_task *pt) char *tmp, buf[20]; int ret; const struct filter *decoder; + static struct lls_parse_result *filter_lpr; btr_remove_node(&pt->rn.btrn); if (!pt->rn.receiver || pt->next_file != pt->current_file) { @@ -429,16 +431,17 @@ static int load_file(struct play_task *pt) /* set up decoding filter */ af = audio_format_name(pt->audio_format_num); tmp = make_message("%sdec", af); - PARA_INFO_LOG("decoder: %s\n", tmp); - ret = check_filter_arg(tmp, &pt->fn.conf); + ret = filter_setup(tmp, &pt->fn.conf, &filter_lpr); freep(&tmp); if (ret < 0) goto fail; pt->fn.filter_num = ret; + pt->fn.lpr = filter_lpr; decoder = filter_get(ret); pt->fn.btrn = btr_new_node(&(struct btr_node_description) - EMBRACE(.name = decoder->name, .parent = pt->rn.btrn, - .handler = decoder->execute, .context = &pt->fn)); + EMBRACE(.name = filter_name(pt->fn.filter_num), + .parent = pt->rn.btrn, .handler = decoder->execute, + .context = &pt->fn)); if (decoder->open) decoder->open(&pt->fn); PARA_INFO_LOG("buffer tree:\n"); @@ -1313,7 +1316,6 @@ int main(int argc, char *argv[]) /* needed this early to make help work */ recv_init(); - filter_init(); writer_init(); sched.default_timeout.tv_sec = 5;