X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write_common.c;h=9af8d682075ccf91de2bff3ff7625ab7d9f0a598;hp=7c0d952108cdec23a43c3c01cfe33b9b6f37b77b;hb=10079828feee9a5b45937a7b9615c926a286782b;hpb=885700289d2c7ab64c3bc5a5ab8f6aba14e27632 diff --git a/write_common.c b/write_common.c index 7c0d9521..9af8d682 100644 --- a/write_common.c +++ b/write_common.c @@ -257,7 +257,7 @@ struct writer_node *setup_writer_node(const char *arg, struct btr_node *parent) { struct writer_node *wn = para_calloc(sizeof(*wn)); struct writer *w; - const char *name; + char *name; if (arg) wn->conf = check_writer_arg(arg, &wn->writer_num); @@ -270,9 +270,10 @@ struct writer_node *setup_writer_node(const char *arg, struct btr_node *parent) return NULL; } w = writers + wn->writer_num; - name = writer_names[wn->writer_num]; + name = make_message("%s writer", writer_names[wn->writer_num]); wn->btrn = btr_new_node(name, parent, w->execute, wn); - sprintf(wn->task.status, "%s", name); + strcpy(wn->task.status, name); + free(name); w->open(wn); wn->task.post_select = w->post_select_btr; wn->task.pre_select = w->pre_select_btr; @@ -303,3 +304,31 @@ void print_writer_helps(int detailed) ggo_print_help(&w->help, detailed); } } + +static int get_btr_value(struct btr_node *btrn, const char *key, int32_t *result) +{ + char *buf = NULL; + int ret = btr_exec_up(btrn, key, &buf); + + if (ret < 0) + return ret; + ret = para_atoi32(buf, result); + free(buf); + return ret; +} + +/* + * Ask parent btr nodes for the samplerate of the current stream. + */ +int get_btr_samplerate(struct btr_node *btrn, int32_t *result) +{ + return get_btr_value(btrn, "samplerate", result); +} + +/* + * Ask parent btr nodes for the channel count of the current stream. + */ +int get_btr_channels(struct btr_node *btrn, int32_t *result) +{ + return get_btr_value(btrn, "channels", result); +}