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

header for audio controls More...

Go to the source code of this file.

Typedefs

typedef void(* obs_fader_changed_t) (void *param, float db)
 
typedef void(* obs_volmeter_updated_t) (void *param, float level, float magnitude, float peak, float muted)
 

Enumerations

enum  obs_fader_type { OBS_FADER_CUBIC, OBS_FADER_IEC, OBS_FADER_LOG }
 Fader types. More...
 

Functions

EXPORT obs_fader_tobs_fader_create (enum obs_fader_type type)
 Create a fader. More...
 
EXPORT void obs_fader_destroy (obs_fader_t *fader)
 Destroy a fader. More...
 
EXPORT bool obs_fader_set_db (obs_fader_t *fader, const float db)
 Set the fader dB value. More...
 
EXPORT float obs_fader_get_db (obs_fader_t *fader)
 Get the current fader dB value. More...
 
EXPORT bool obs_fader_set_deflection (obs_fader_t *fader, const float def)
 Set the fader value from deflection. More...
 
EXPORT float obs_fader_get_deflection (obs_fader_t *fader)
 Get the current fader deflection. More...
 
EXPORT bool obs_fader_set_mul (obs_fader_t *fader, const float mul)
 Set the fader value from multiplier. More...
 
EXPORT float obs_fader_get_mul (obs_fader_t *fader)
 Get the current fader multiplier value. More...
 
EXPORT bool obs_fader_attach_source (obs_fader_t *fader, obs_source_t *source)
 Attach the fader to a source. More...
 
EXPORT void obs_fader_detach_source (obs_fader_t *fader)
 Detach the fader from the currently attached source. More...
 
EXPORT void obs_fader_add_callback (obs_fader_t *fader, obs_fader_changed_t callback, void *param)
 
EXPORT void obs_fader_remove_callback (obs_fader_t *fader, obs_fader_changed_t callback, void *param)
 
EXPORT obs_volmeter_tobs_volmeter_create (enum obs_fader_type type)
 Create a volume meter. More...
 
EXPORT void obs_volmeter_destroy (obs_volmeter_t *volmeter)
 Destroy a volume meter. More...
 
EXPORT bool obs_volmeter_attach_source (obs_volmeter_t *volmeter, obs_source_t *source)
 Attach the volume meter to a source. More...
 
EXPORT void obs_volmeter_detach_source (obs_volmeter_t *volmeter)
 Detach the volume meter from the currently attached source. More...
 
EXPORT signal_handler_tobs_volmeter_get_signal_handler (obs_volmeter_t *volmeter)
 Get signal handler for the volume meter object. More...
 
EXPORT void obs_volmeter_set_update_interval (obs_volmeter_t *volmeter, const unsigned int ms)
 Set the update interval for the volume meter. More...
 
EXPORT unsigned int obs_volmeter_get_update_interval (obs_volmeter_t *volmeter)
 Get the update interval currently used for the volume meter. More...
 
EXPORT void obs_volmeter_set_peak_hold (obs_volmeter_t *volmeter, const unsigned int ms)
 Set the peak hold time for the volume meter. More...
 
EXPORT unsigned int obs_volmeter_get_peak_hold (obs_volmeter_t *volmeter)
 Get the peak hold time for the volume meter. More...
 
EXPORT void obs_volmeter_add_callback (obs_volmeter_t *volmeter, obs_volmeter_updated_t callback, void *param)
 
EXPORT void obs_volmeter_remove_callback (obs_volmeter_t *volmeter, obs_volmeter_updated_t callback, void *param)
 

Detailed Description

header for audio controls

Audio controls for use in GUIs

Typedef Documentation

typedef void(* obs_fader_changed_t) (void *param, float db)
typedef void(* obs_volmeter_updated_t) (void *param, float level, float magnitude, float peak, float muted)

Enumeration Type Documentation

Fader types.

Enumerator
OBS_FADER_CUBIC 

A simple cubic fader for controlling audio levels.

This is a very common type of software fader since it yields good results while being quite performant. The input value is mapped to mul values with the simple formula x^3.

OBS_FADER_IEC 

A fader compliant to IEC 60-268-18.

This type of fader has several segments with different slopes that map deflection linearly to dB values. The segments are defined as in the following table:

1 Deflection | Volume
2 ------------------------------------------
3 [ 100 %, 75 % ] | [ 0 dB, -9 dB ]
4 [ 75 %, 50 % ] | [ -9 dB, -20 dB ]
5 [ 50 %, 30 % ] | [ -20 dB, -30 dB ]
6 [ 30 %, 15 % ] | [ -30 dB, -40 dB ]
7 [ 15 %, 7.5 % ] | [ -40 dB, -50 dB ]
8 [ 7.5 %, 2.5 % ] | [ -50 dB, -60 dB ]
9 [ 2.5 %, 0 % ] | [ -60 dB, -inf dB ]
OBS_FADER_LOG 

Logarithmic fader.

Function Documentation

EXPORT void obs_fader_add_callback ( obs_fader_t fader,
obs_fader_changed_t  callback,
void *  param 
)
EXPORT bool obs_fader_attach_source ( obs_fader_t fader,
obs_source_t source 
)

Attach the fader to a source.

Parameters
faderpointer to the fader object
sourcepointer to the source object
Returns
true on success

When the fader is attached to a source it will automatically sync it's state to the volume of the source.

EXPORT obs_fader_t* obs_fader_create ( enum obs_fader_type  type)

Create a fader.

Parameters
typethe type of the fader
Returns
pointer to the fader object

A fader object is used to map input values from a gui element to dB and subsequently multiplier values used by libobs to mix audio. The current "position" of the fader is internally stored as dB value.

EXPORT void obs_fader_destroy ( obs_fader_t fader)

Destroy a fader.

Parameters
faderpointer to the fader object

Destroy the fader and free all related data

EXPORT void obs_fader_detach_source ( obs_fader_t fader)

Detach the fader from the currently attached source.

Parameters
faderpointer to the fader object
EXPORT float obs_fader_get_db ( obs_fader_t fader)

Get the current fader dB value.

Parameters
faderpointer to the fader object
Returns
current fader dB value
EXPORT float obs_fader_get_deflection ( obs_fader_t fader)

Get the current fader deflection.

Parameters
faderpointer to the fader object
Returns
current fader deflection
EXPORT float obs_fader_get_mul ( obs_fader_t fader)

Get the current fader multiplier value.

Parameters
faderpointer to the fader object
Returns
current fader multiplier
EXPORT void obs_fader_remove_callback ( obs_fader_t fader,
obs_fader_changed_t  callback,
void *  param 
)
EXPORT bool obs_fader_set_db ( obs_fader_t fader,
const float  db 
)

Set the fader dB value.

Parameters
faderpointer to the fader object
dbnew dB value
Returns
true if value was set without clamping
EXPORT bool obs_fader_set_deflection ( obs_fader_t fader,
const float  def 
)

Set the fader value from deflection.

Parameters
faderpointer to the fader object
defnew deflection
Returns
true if value was set without clamping

This sets the new fader value from the supplied deflection, in case the resulting value was clamped due to limits this function will return false. The deflection is typically in the range [0.0, 1.0] but may be higher in order to provide some amplification. In order for this to work the high dB limit has to be set.

EXPORT bool obs_fader_set_mul ( obs_fader_t fader,
const float  mul 
)

Set the fader value from multiplier.

Parameters
faderpointer to the fader object
Returns
true if the value was set without clamping
EXPORT void obs_volmeter_add_callback ( obs_volmeter_t volmeter,
obs_volmeter_updated_t  callback,
void *  param 
)
EXPORT bool obs_volmeter_attach_source ( obs_volmeter_t volmeter,
obs_source_t source 
)

Attach the volume meter to a source.

Parameters
volmeterpointer to the volume meter object
sourcepointer to the source object
Returns
true on success

When the volume meter is attached to a source it will start to listen to volume updates on the source and after preparing the data emit its own signal.

EXPORT obs_volmeter_t* obs_volmeter_create ( enum obs_fader_type  type)

Create a volume meter.

Parameters
typethe mapping type to use for the volume meter
Returns
pointer to the volume meter object

A volume meter object is used to prepare the sound levels reported by audio sources for display in a GUI. It will automatically take source volume into account and map the levels to a range [0.0f, 1.0f].

EXPORT void obs_volmeter_destroy ( obs_volmeter_t volmeter)

Destroy a volume meter.

Parameters
volmeterpointer to the volmeter object

Destroy the volume meter and free all related data

EXPORT void obs_volmeter_detach_source ( obs_volmeter_t volmeter)

Detach the volume meter from the currently attached source.

Parameters
volmeterpointer to the volume meter object
EXPORT unsigned int obs_volmeter_get_peak_hold ( obs_volmeter_t volmeter)

Get the peak hold time for the volume meter.

Parameters
volmeterpointer to the volume meter object
Returns
the peak hold time in ms
EXPORT signal_handler_t* obs_volmeter_get_signal_handler ( obs_volmeter_t volmeter)

Get signal handler for the volume meter object.

Parameters
volmeterpointer to the volume meter object
Returns
signal handler
EXPORT unsigned int obs_volmeter_get_update_interval ( obs_volmeter_t volmeter)

Get the update interval currently used for the volume meter.

Parameters
volmeterpointer to the volume meter object
Returns
update interval in ms
EXPORT void obs_volmeter_remove_callback ( obs_volmeter_t volmeter,
obs_volmeter_updated_t  callback,
void *  param 
)
EXPORT void obs_volmeter_set_peak_hold ( obs_volmeter_t volmeter,
const unsigned int  ms 
)

Set the peak hold time for the volume meter.

Parameters
volmeterpointer to the volume meter object
mspeak hold time in ms
EXPORT void obs_volmeter_set_update_interval ( obs_volmeter_t volmeter,
const unsigned int  ms 
)

Set the update interval for the volume meter.

Parameters
volmeterpointer to the volume meter object
msupdate interval in ms

This sets the update interval in milliseconds that should be processed before the resulting values are emitted by the levels_updated signal. The resulting number of audio samples is rounded to an integer.

Please note that due to way obs does receive audio data from the sources this is no hard guarantee for the timing of the signal itself. When the volume meter receives a chunk of data that is multiple the size of the sample interval, all data will be sampled and the values updated accordingly, but only the signal for the last segment is actually emitted. On the other hand data might be received in a way that will cause the signal to be emitted in shorter intervals than specified here under some circumstances.