57 struct Ring_buf_deleter{
75 std::unique_ptr<ring_buffer_t, Ring_buf_deleter>
ring;
79 printf(
"Delays audio:\n\n");
80 printf(
"delay usage:\n");
81 printf(
"\tdelay:<delay in milliseconds>\n\n");
86 if(tok.empty() || tok ==
"help"){
103 auto s = std::make_unique<state_delay>(
parent);
107 *
state = s.release();
126 int in_bps,
int in_ch_count,
int in_sample_rate)
131 s->ch_count = in_ch_count;
132 s->sample_rate = in_sample_rate;
135 int samples = (s->sample_rate / 1000) * s->req_delay;
153 if(bps) *bps = s->
bps;
154 if(ch_count) *ch_count = s->ch_count;
170 int samples = (s->sample_rate / 1000) * s->req_delay;
182 if(f->bps != s->bps || f->ch_count != s->ch_count){
192 if(f->data_len <= s->delay_size){
196 int excess_size = f->data_len - s->delay_size;
202 memmove(f->data + s->delay_size, f->data, excess_size);
struct video_frame * frame
This file contains definition of some common audio types.
#define AUDIO_FILTER_ABI_VERSION
void log_msg(int level, const char *format,...)
#define LOG_LEVEL_ERROR
general errors
static const struct audio_filter_info audio_filter_delay
static void set_delay_size(state_delay *s, int size)
static af_result_code filter(void *state, struct audio_frame **frame)
static void get_configured(void *state, int *bps, int *ch_count, int *sample_rate)
static af_result_code parse_cfg(state_delay *s, std::string_view cfg)
static af_result_code init(struct module *parent, const char *cfg, void **state)
static af_result_code configure(void *state, int in_bps, int in_ch_count, int in_sample_rate)
static void done(void *state)
@ LIBRARY_CLASS_AUDIO_FILTER
#define REGISTER_MODULE(name, info, lclass, abi)
Registers module to global modules' registry.
void free_message(struct message *msg, struct response *r)
struct response * new_response(int status, const char *text)
struct message * check_message(struct module *mod)
#define RESPONSE_BAD_REQUEST
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)
void ring_fill(struct ring_buffer *ring, int c, int size)
std::string_view tokenize(std::string_view &str, char delim, char quot)
Tokenizer for string_view.
bool parse_num(std::string_view sv, T &res, int base=10)
struct used to comunicate with audio capture/playback device
std::unique_ptr< ring_buffer_t, Ring_buf_deleter > ring
state_delay(struct module *mod)