/*
- * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2010 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
OggVorbis_File *vf;
/** The number of bytes consumed from the input buffer. */
size_t converted;
- /** When to start producing output. */
- struct timeval stream_start;
/** The number of channels of the current stream. */
unsigned int channels;
/** Current sample rate in Hz. */
if (!strcmp(cmd, "samplerate")) {
if (pod->samplerate == 0)
- return -ERRNO_TO_PARA_ERROR(ENAVAIL);
+ return -E_BTR_NAVAIL;
*result = make_message("%u", pod->samplerate);
return 1;
}
if (!strcmp(cmd, "channels")) {
if (pod->channels == 0)
- return -ERRNO_TO_PARA_ERROR(ENAVAIL);
+ return -E_BTR_NAVAIL;
*result = make_message("%u", pod->channels);
return 1;
}
struct btr_node *btrn = fn->btrn;
int ret, oret;
size_t iqs;
- struct timeval delay = {0, 500 * 1000};
pod->vf = para_malloc(sizeof(struct OggVorbis_File));
PARA_NOTICE_LOG("iqs: %zu, min_iqs: %zu, opening ov callbacks\n",
pod->samplerate = ov_info(pod->vf, 0)->rate;
PARA_NOTICE_LOG("%d channels, %d Hz\n", pod->channels,
pod->samplerate);
- /* wait a bit to avoid buffer underruns */
- tv_add(now, &delay, &pod->stream_start);
ret = 1;
out:
if (ret <= 0) {
if (read_ret < 0)
goto out;
btr_add_output(out, read_ret, btrn);
- if (btr_node_status(btrn, fn->min_iqs, BTR_NT_INTERNAL) == 0)
+ if (btr_get_output_queue_size(btrn) > 640 * 1024)
return; /* enough data for the moment */
}
out: