54#define max(a, b) (((a) > (b))? (a): (b))
55#define min(a, b) (((a) < (b))? (a): (b))
57#define BUF_LAST_UNDERRUN_MAX 1000000000
58#define BUF_LAST_UNDERRUN_THRESHOLD 10000
59#define BUF_LAST_OVERRUN_THRESHOLD 10000
60#define AGGRESSIVITY_MAX 4
61#define AGGRESSIVITY_STEP 100
127 if (ring_size < max_len) {
153 int remaining_bytes = ring_size - ret;
154 if (requested_latency_bytes < remaining_bytes) {
156 len_drop =
min(len_drop, remaining_bytes / 2);
158 char *tmp = alloca(len_drop);
161 log_msg(
LOG_LEVEL_VERBOSE,
"Dropped audio samples: req latency %d remaining %d dropped %d!\n", requested_latency_bytes, remaining_bytes, len_drop);
166 log_msg(
LOG_LEVEL_DEBUG,
"buf - in a. %d, out a. %d, occ. a. [%d,%d] last under/overrun %d, %d aggressivity %d\n", buf->
in_pkt_size, buf->
out_pkt_size, buf->
avg_occupancy[0],buf->
avg_occupancy[1], buf->
last_underrun, buf->
last_overrun, buf->
aggressivity);
This file contains definition of some common audio types.
#define BUF_LAST_UNDERRUN_THRESHOLD
#define AGGRESSIVITY_STEP
static const int occupacy_windows[]
#define BUF_LAST_OVERRUN_THRESHOLD
struct audio_buffer_api audio_buffer_fns
void audio_buffer_destroy(struct audio_buffer *buf)
#define BUF_LAST_UNDERRUN_MAX
struct audio_buffer * audio_buffer_init(int sample_rate, int bps, int ch_count, int suggested_latency_ms)
int audio_buffer_read(struct audio_buffer *buf, char *out, int max_len)
void audio_buffer_write(struct audio_buffer *buf, const char *in, int len)
void log_msg(int level, const char *format,...)
#define LOG_LEVEL_VERBOSE
int ring_get_current_size(struct ring_buffer *ring)
void ring_buffer_destroy(struct ring_buffer *ring)
struct ring_buffer * ring_buffer_init(int size)
int ring_buffer_read(struct ring_buffer *ring, char *out, int max_len)
void ring_buffer_write(struct ring_buffer *ring, const char *in, int len)
int last_aggressivity_change