UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
audio_filter.cpp
Go to the documentation of this file.
1
5/*
6 * Copyright (c) 2021-2022 CESNET, z. s. p. o.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, is permitted provided that the following conditions
11 * are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 *
20 * 3. Neither the name of CESNET nor the names of its contributors may be
21 * used to endorse or promote products derived from this software without
22 * specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
26 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
27 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
28 * EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
29 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
34 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
35 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 */
37
38#ifdef HAVE_CONFIG_H
39#include "config.h"
40#include "config_unix.h"
41#include "config_win32.h"
42#endif /* HAVE_CONFIG_H */
43
44#include "debug.h"
45
46#include <vector>
47
48#include "audio_filter.h"
49#include "lib_common.h"
50#include "module.h"
51#include "utils/color_out.h"
52
53af_result_code audio_filter_init(struct module *parent, const char *name, const char *cfg,
54 struct audio_filter *filter)
55{
58
59 for(const auto& i : filters){
60 auto funcs = static_cast<const audio_filter_info *>(i.second);
61 if(strcasecmp(i.first.c_str(), name) == 0){
62 filter->info = funcs;
63
64 af_result_code ret = funcs->init(parent, cfg, &filter->state);
65 if(ret == AF_FAILURE) {
66 log_msg(LOG_LEVEL_ERROR, "Unable to initialize filter: %s\n",
67 name);
68 }
69 return ret;
70 }
71 }
72
73 log_msg(LOG_LEVEL_ERROR, "Unable to find capture filter: %s\n", name);
74 return AF_FAILURE;
75}
76
78 if(!state->state)
79 return;
80
81 state->info->done(state->state);
82
83 state->info = {};
84 state->state = {};
85}
86
88 return state->info->filter(state->state, frame);
89}
90
92 int bps, int ch_count, int sample_rate)
93{
94 return state->info->configure(state->state, bps, ch_count, sample_rate);
95}
96
98 int *bps, int *ch_count, int *sample_rate)
99{
100 return state->info->get_configured_out(state->state, bps, ch_count, sample_rate);
101}
102
104 int *bps, int *ch_count, int *sample_rate)
105{
106 return state->info->get_configured_in(state->state, bps, ch_count, sample_rate);
107}
108
void ** state
int int int sample_rate
struct video_frame * frame
void audio_filter_get_configured_in(struct audio_filter *state, int *bps, int *ch_count, int *sample_rate)
af_result_code audio_filter_configure(struct audio_filter *state, int bps, int ch_count, int sample_rate)
void audio_filter_get_configured_out(struct audio_filter *state, int *bps, int *ch_count, int *sample_rate)
af_result_code audio_filter(struct audio_filter *state, struct audio_frame **frame)
void audio_filter_destroy(struct audio_filter *state)
af_result_code audio_filter_init(struct module *parent, const char *name, const char *cfg, struct audio_filter *filter)
#define AUDIO_FILTER_ABI_VERSION
af_result_code
@ AF_FAILURE
static af_result_code filter(void *state, struct audio_frame **frame)
void log_msg(int level, const char *format,...)
Definition debug.cpp:130
#define LOG_LEVEL_ERROR
general errors
Definition debug.h:59
map< string, const void * > get_libraries_for_class(enum library_class cls, int abi_version, bool include_hidden)
@ LIBRARY_CLASS_AUDIO_FILTER
Definition lib_common.h:85
const char * parent
Definition settings.cpp:198
const char * name
Definition settings.cpp:193
struct used to comunicate with audio capture/playback device
Definition types.h:99