/** The number of channels of the current stream. */
unsigned int channels;
/** Current sample rate in Hz. */
- unsigned int samplerate;
struct timeval stream_start;
+ unsigned int sample_rate;
};
static size_t cb_read(void *buf, size_t size, size_t nmemb, void *datasource)
struct filter_node *fn = btr_context(btrn);
struct private_oggdec_data *pod = fn->private_data;
- if (!strcmp(cmd, "samplerate")) {
- if (pod->samplerate == 0)
- return -E_BTR_NAVAIL;
- *result = make_message("%u", pod->samplerate);
- return 1;
- }
- if (!strcmp(cmd, "channels")) {
- if (pod->channels == 0)
- return -E_BTR_NAVAIL;
- *result = make_message("%u", pod->channels);
- return 1;
- }
- return -ERRNO_TO_PARA_ERROR(ENOTSUP);
+ return decoder_execute(cmd, pod->sample_rate, pod->channels, result);
}
static int ogg_init(struct filter_node *fn)
if (oret < 0)
goto out;
pod->channels = ov_info(pod->vf, 0)->channels;
- pod->samplerate = ov_info(pod->vf, 0)->rate;
+ pod->sample_rate = ov_info(pod->vf, 0)->rate;
tv_add(now, &(struct timeval)EMBRACE(0, 300 * 1000), &pod->stream_start);
PARA_NOTICE_LOG("%d channels, %d Hz\n", pod->channels,
- pod->samplerate);
+ pod->sample_rate);
ret = 1;
out:
if (ret <= 0) {