Open Broadcaster Software
Free, open source software for live streaming and recording
audio-io.h File Reference

Go to the source code of this file.

Data Structures

struct  audio_data
 
struct  audio_output_data
 
struct  audio_output_info
 
struct  audio_convert_info
 

Macros

#define MAX_AUDIO_MIXES   6
 
#define MAX_AUDIO_CHANNELS   8
 
#define AUDIO_OUTPUT_FRAMES   1024
 
#define TOTAL_AUDIO_SIZE
 
#define AUDIO_OUTPUT_SUCCESS   0
 
#define AUDIO_OUTPUT_INVALIDPARAM   -1
 
#define AUDIO_OUTPUT_FAIL   -2
 

Typedefs

typedef struct audio_output audio_t
 
typedef bool(* audio_input_callback_t) (void *param, uint64_t start_ts, uint64_t end_ts, uint64_t *new_ts, uint32_t active_mixers, struct audio_output_data *mixes)
 
typedef void(* audio_output_callback_t) (void *param, size_t mix_idx, struct audio_data *data)
 

Enumerations

enum  audio_format {
  AUDIO_FORMAT_UNKNOWN, AUDIO_FORMAT_U8BIT, AUDIO_FORMAT_16BIT, AUDIO_FORMAT_32BIT,
  AUDIO_FORMAT_FLOAT, AUDIO_FORMAT_U8BIT_PLANAR, AUDIO_FORMAT_16BIT_PLANAR, AUDIO_FORMAT_32BIT_PLANAR,
  AUDIO_FORMAT_FLOAT_PLANAR
}
 
enum  speaker_layout {
  SPEAKERS_UNKNOWN, SPEAKERS_MONO, SPEAKERS_STEREO, SPEAKERS_2POINT1,
  SPEAKERS_4POINT0, SPEAKERS_4POINT1, SPEAKERS_5POINT1, SPEAKERS_7POINT1 =8
}
 

Functions

EXPORT int audio_output_open (audio_t **audio, struct audio_output_info *info)
 
EXPORT void audio_output_close (audio_t *audio)
 
EXPORT bool audio_output_connect (audio_t *video, size_t mix_idx, const struct audio_convert_info *conversion, audio_output_callback_t callback, void *param)
 
EXPORT void audio_output_disconnect (audio_t *video, size_t mix_idx, audio_output_callback_t callback, void *param)
 
EXPORT bool audio_output_active (const audio_t *audio)
 
EXPORT size_t audio_output_get_block_size (const audio_t *audio)
 
EXPORT size_t audio_output_get_planes (const audio_t *audio)
 
EXPORT size_t audio_output_get_channels (const audio_t *audio)
 
EXPORT uint32_t audio_output_get_sample_rate (const audio_t *audio)
 
EXPORT const struct audio_output_infoaudio_output_get_info (const audio_t *audio)
 

Macro Definition Documentation

◆ AUDIO_OUTPUT_FAIL

#define AUDIO_OUTPUT_FAIL   -2

◆ AUDIO_OUTPUT_FRAMES

#define AUDIO_OUTPUT_FRAMES   1024

◆ AUDIO_OUTPUT_INVALIDPARAM

#define AUDIO_OUTPUT_INVALIDPARAM   -1

◆ AUDIO_OUTPUT_SUCCESS

#define AUDIO_OUTPUT_SUCCESS   0

◆ MAX_AUDIO_CHANNELS

#define MAX_AUDIO_CHANNELS   8

◆ MAX_AUDIO_MIXES

#define MAX_AUDIO_MIXES   6

◆ TOTAL_AUDIO_SIZE

#define TOTAL_AUDIO_SIZE
Value:
AUDIO_OUTPUT_FRAMES * sizeof(float))
#define MAX_AUDIO_CHANNELS
Definition: audio-io.h:29
#define MAX_AUDIO_MIXES
Definition: audio-io.h:28

Typedef Documentation

◆ audio_input_callback_t

typedef bool(* audio_input_callback_t) (void *param, uint64_t start_ts, uint64_t end_ts, uint64_t *new_ts, uint32_t active_mixers, struct audio_output_data *mixes)

◆ audio_output_callback_t

typedef void(* audio_output_callback_t) (void *param, size_t mix_idx, struct audio_data *data)

◆ audio_t

typedef struct audio_output audio_t

Enumeration Type Documentation

◆ audio_format

Enumerator
AUDIO_FORMAT_UNKNOWN 
AUDIO_FORMAT_U8BIT 
AUDIO_FORMAT_16BIT 
AUDIO_FORMAT_32BIT 
AUDIO_FORMAT_FLOAT 
AUDIO_FORMAT_U8BIT_PLANAR 
AUDIO_FORMAT_16BIT_PLANAR 
AUDIO_FORMAT_32BIT_PLANAR 
AUDIO_FORMAT_FLOAT_PLANAR 

◆ speaker_layout

The speaker layout describes where the speakers are located in the room. For OBS it dictates:

  • how many channels are available and
  • which channels are used for which speakers.

Standard channel layouts where retrieved from ffmpeg documentation at: https://trac.ffmpeg.org/wiki/AudioChannelManipulation

Enumerator
SPEAKERS_UNKNOWN 

Unknown setting, fallback is stereo.

SPEAKERS_MONO 

Channels: MONO

SPEAKERS_STEREO 

Channels: FL, FR

SPEAKERS_2POINT1 

Channels: FL, FR, LFE

SPEAKERS_4POINT0 

Channels: FL, FR, FC, RC

SPEAKERS_4POINT1 

Channels: FL, FR, FC, LFE, RC

SPEAKERS_5POINT1 

Channels: FL, FR, FC, LFE, RL, RR

SPEAKERS_7POINT1 

Channels: FL, FR, FC, LFE, RL, RR, SL, SR

Function Documentation

◆ audio_output_active()

EXPORT bool audio_output_active ( const audio_t audio)

◆ audio_output_close()

EXPORT void audio_output_close ( audio_t audio)

◆ audio_output_connect()

EXPORT bool audio_output_connect ( audio_t video,
size_t  mix_idx,
const struct audio_convert_info conversion,
audio_output_callback_t  callback,
void *  param 
)

◆ audio_output_disconnect()

EXPORT void audio_output_disconnect ( audio_t video,
size_t  mix_idx,
audio_output_callback_t  callback,
void *  param 
)

◆ audio_output_get_block_size()

EXPORT size_t audio_output_get_block_size ( const audio_t audio)

◆ audio_output_get_channels()

EXPORT size_t audio_output_get_channels ( const audio_t audio)

◆ audio_output_get_info()

EXPORT const struct audio_output_info* audio_output_get_info ( const audio_t audio)

◆ audio_output_get_planes()

EXPORT size_t audio_output_get_planes ( const audio_t audio)

◆ audio_output_get_sample_rate()

EXPORT uint32_t audio_output_get_sample_rate ( const audio_t audio)

◆ audio_output_open()

EXPORT int audio_output_open ( audio_t **  audio,
struct audio_output_info info 
)