X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write_common.c;h=7131a94042dae3b989a73ee5a1b8cd4c84bf2b02;hp=b92c5f1ca64f04328a482f9105d9280968e7877a;hb=e908ea4515b36e37f70bfffde83f43ffc26d9009;hpb=9609fd30e0d3db45ede3ab5c6bc3a77c15b6aef8 diff --git a/write_common.c b/write_common.c index b92c5f1c..7131a940 100644 --- a/write_common.c +++ b/write_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2009 Andre Noll + * Copyright (C) 2006-2010 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -147,30 +147,57 @@ void print_writer_helps(int detailed) } } -static int get_btr_value(struct btr_node *btrn, const char *key, int32_t *result) +static void get_btr_value(struct btr_node *btrn, const char *cmd, + int32_t *result) { char *buf = NULL; - int ret = btr_exec_up(btrn, key, &buf); - - if (ret < 0) - return ret; + int ret = btr_exec_up(btrn, cmd, &buf); + + if (ret < 0) { + /* + * This really should not happen. It means one of our parent + * nodes died unexpectedly. Proceed with fingers crossed. + */ + PARA_CRIT_LOG("cmd %s: %s\n", cmd, para_strerror(-ret)); + *result = 0; + return; + } ret = para_atoi32(buf, result); + assert(ret >= 0); free(buf); - return ret; } -/* - * Ask parent btr nodes for the samplerate of the current stream. +/** + * Ask parent btr nodes for the sample rate of the current stream. + * + * \param btrn Where to start the search. + * \param result Filled in by this function. + * + * This function is assumed to succeed and terminates on errors. */ -int get_btr_samplerate(struct btr_node *btrn, int32_t *result) +void get_btr_sample_rate(struct btr_node *btrn, int32_t *result) { - return get_btr_value(btrn, "samplerate", result); + get_btr_value(btrn, "sample_rate", result); } -/* +/** * Ask parent btr nodes for the channel count of the current stream. + * + * \param btrn See \ref get_btr_sample_rate. + * \param result See \ref get_btr_sample_rate. + */ +void get_btr_channels(struct btr_node *btrn, int32_t *result) +{ + get_btr_value(btrn, "channels", result); +} + +/** + * Ask parent btr nodes for the number of bits per sample and the byte sex. + * + * \param btrn See \ref get_btr_sample_rate. + * \param result Contains the sample format as an enum sample_format type. */ -int get_btr_channels(struct btr_node *btrn, int32_t *result) +void get_btr_sample_format(struct btr_node *btrn, int32_t *result) { - return get_btr_value(btrn, "channels", result); + get_btr_value(btrn, "sample_format", result); }