UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
audio_capture.c File Reference
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "debug.h"
#include "host.h"
#include "audio/audio_capture.h"
#include "audio/capture/sdi.h"
#include "audio/types.h"
#include "video_capture.h"
#include "lib_common.h"
Include dependency graph for audio_capture.c:

Go to the source code of this file.

Classes

struct  state_audio_capture
 

Functions

void audio_capture_done (struct state_audio_capture *s)
 
const char * audio_capture_get_driver_name (struct state_audio_capture *s)
 
void * audio_capture_get_state_pointer (struct state_audio_capture *s)
 
unsigned int audio_capture_get_vidcap_flags (const char *const_device_name)
 
int audio_capture_get_vidcap_index (const char *const_device_name)
 
int audio_capture_init (struct module *parent, const char *driver, const char *cfg, struct state_audio_capture **state)
 
struct state_audio_capture * audio_capture_init_null_device ()
 
void audio_capture_print_help (bool full)
 
struct audio_frame * audio_capture_read (struct state_audio_capture *s)
 

Detailed Description

Author
Martin Pulec pulec.nosp@m.@ces.nosp@m.net.c.nosp@m.z

Definition in file audio_capture.c.

Function Documentation

◆ audio_capture_done()

void audio_capture_done ( struct state_audio_capture * s)

Definition at line 118 of file audio_capture.c.

119{
120 if(s) {
121 s->funcs->done(s->state);
122
123 free(s);
124 }
125}
void(* done)(void *state)
const struct audio_capture_info * funcs

References audio_capture_info::done, state_audio_capture::funcs, and state_audio_capture::state.

Referenced by audio_done().

◆ audio_capture_get_driver_name()

const char * audio_capture_get_driver_name ( struct state_audio_capture * s)

Definition at line 188 of file audio_capture.c.

189{
190 return s->name;
191}

References state_audio_capture::name.

Referenced by audio_sdi_send().

◆ audio_capture_get_state_pointer()

void * audio_capture_get_state_pointer ( struct state_audio_capture * s)

returns directly state of audio capture device. Little bit silly, but it is needed for SDI (embedded sound).

Definition at line 193 of file audio_capture.c.

194{
195 return s->state;
196}

References state_audio_capture::state.

Referenced by audio_sdi_send().

◆ audio_capture_get_vidcap_flags()

unsigned int audio_capture_get_vidcap_flags ( const char * const_device_name)
Returns
vidcap flags if audio should be taken from video capture device.

Definition at line 140 of file audio_capture.c.

141{
142 char *tmp = strdup(const_device_name);
143 assert(tmp != NULL);
144 char *save_ptr = NULL;
145 char *device_name = strtok_r(tmp, ":", &save_ptr);
146 assert(device_name != NULL);
147 unsigned int ret;
148
149 if(strcasecmp(device_name, "embedded") == 0) {
151 } else if(strcasecmp(device_name, "AESEBU") == 0) {
153 } else if(strcasecmp(device_name, "analog") == 0) {
155 } else {
156 ret = 0u;
157 }
158
159 free(tmp);
160 return ret;
161}
#define VIDCAP_FLAG_AUDIO_AESEBU
AES/EBU audio.
#define VIDCAP_FLAG_AUDIO_ANALOG
(balanced) analog audio
#define VIDCAP_FLAG_AUDIO_EMBEDDED
HD-SDI embedded audio.

References VIDCAP_FLAG_AUDIO_AESEBU, VIDCAP_FLAG_AUDIO_ANALOG, and VIDCAP_FLAG_AUDIO_EMBEDDED.

Referenced by audio_sdi_send(), and parse_audio_capture().

◆ audio_capture_get_vidcap_index()

int audio_capture_get_vidcap_index ( const char * const_device_name)
Returns
optional index to video capture device to which should be audio flags passed.
See also
audio_capture_get_vidcap_flags

Definition at line 168 of file audio_capture.c.

169{
170 char *tmp = strdup(const_device_name);
171 assert(tmp != NULL);
172 char *save_ptr = NULL;
173 unsigned int ret;
174
175 strtok_r(tmp, ":", &save_ptr);
176 char *vidcap_index_str = strtok_r(NULL, ":", &save_ptr);
177
178 if (vidcap_index_str == NULL) {
179 ret = -1;
180 } else {
181 ret = atoi(vidcap_index_str);
182 }
183
184 free(tmp);
185 return ret;
186}

◆ audio_capture_init()

int audio_capture_init ( struct module * parent,
const char * driver,
const char * cfg,
struct state_audio_capture ** state )
See also
display_init

Definition at line 67 of file audio_capture.c.

68{
69 assert(cfg != NULL);
70 struct state_audio_capture *s = calloc(1, sizeof(struct state_audio_capture));
71 assert(s != NULL);
72
74
75 if (s->funcs == NULL) {
76 log_msg(LOG_LEVEL_ERROR, "Unknown audio capture driver: %s\n", driver);
77 goto error;
78 }
79
80 strncpy(s->name, driver, sizeof s->name - 1);
81
82 s->state = s->funcs->init(parent, cfg);
83
84 if(!s->state) {
85 log_msg(LOG_LEVEL_ERROR, "Error initializing audio capture.\n");
86 goto error;
87 }
88
89 if(s->state == INIT_NOERR) {
90 free(s);
91 return 1;
92 }
93
94 *state = s;
95 return 0;
96
97error:
98 free(s);
99 return -1;
100}
void ** state
#define AUDIO_CAPTURE_ABI_VERSION
void log_msg(int level, const char *format,...)
Definition debug.cpp:130
#define LOG_LEVEL_ERROR
general errors
Definition debug.h:59
#define INIT_NOERR
Definition host.h:73
const void * load_library(const char *name, enum library_class cls, int abi_version)
@ LIBRARY_CLASS_AUDIO_CAPTURE
Definition lib_common.h:76
const char * parent
Definition settings.cpp:198
void *(* init)(struct module *parent, const char *cfg)

References AUDIO_CAPTURE_ABI_VERSION, state_audio_capture::funcs, audio_capture_info::init, INIT_NOERR, LIBRARY_CLASS_AUDIO_CAPTURE, load_library(), LOG_LEVEL_ERROR, log_msg(), state_audio_capture::name, parent, state, and state_audio_capture::state.

Referenced by audio_capture_init_null_device(), and audio_init().

Here is the call graph for this function:

◆ audio_capture_init_null_device()

struct state_audio_capture * audio_capture_init_null_device ( void )

Definition at line 102 of file audio_capture.c.

103{
104 struct state_audio_capture *device = NULL;
105 int ret = audio_capture_init(NULL, "none", "", &device);
106 if (ret != 0) {
107 log_msg(LOG_LEVEL_ERROR, "Unable to initialize null audio capture: %d\n", ret);
108 }
109 return device;
110}
int audio_capture_init(struct module *parent, const char *driver, const char *cfg, struct state_audio_capture **state)

References audio_capture_init(), LOG_LEVEL_ERROR, and log_msg().

Referenced by audio_init().

Here is the call graph for this function:

◆ audio_capture_print_help()

void audio_capture_print_help ( bool full)

Definition at line 112 of file audio_capture.c.

113{
114 printf("Available audio capture devices:\n");
116}
void list_modules(enum library_class cls, int abi_version, bool full)

References AUDIO_CAPTURE_ABI_VERSION, LIBRARY_CLASS_AUDIO_CAPTURE, and list_modules().

Referenced by parse_audio_capture().

Here is the call graph for this function:

◆ audio_capture_read()

struct audio_frame * audio_capture_read ( struct state_audio_capture * s)

Definition at line 127 of file audio_capture.c.

128{
129 if(s) {
130 return s->funcs->read(s->state);
131 } else {
132 return NULL;
133 }
134}
struct audio_frame *(* read)(void *state)

References state_audio_capture::funcs, audio_capture_info::read, and state_audio_capture::state.

Referenced by audio_sender_thread().