VLC
4.0.0-dev
|
Go to the source code of this file.
Data Structures | |
struct | vlc_audio_output_events |
struct | audio_output |
Audio output object. More... | |
struct | aout_filters_cfg_t |
struct | vlc_audio_loudness |
Audio loudness measurement. More... | |
struct | vlc_audio_meter_cbs |
Audio meter callback. More... | |
struct | vlc_audio_meter_plugin_owner |
Audio meter plugin owner structure. More... | |
struct | vlc_audio_meter |
Audio meter structure. More... | |
Macros | |
#define | AOUT_MAX_ADVANCE_TIME (AOUT_MAX_PREPARE_TIME + VLC_TICK_FROM_SEC(1)) |
#define | AOUT_MAX_PREPARE_TIME VLC_TICK_FROM_SEC(2) |
#define | AOUT_MIN_PREPARE_TIME AOUT_MAX_PTS_ADVANCE |
#define | AOUT_MAX_PTS_ADVANCE VLC_TICK_FROM_MS(40) |
Maximum advance of actual audio playback time to coded PTS, above which downsampling will be performed. More... | |
#define | AOUT_MAX_PTS_DELAY VLC_TICK_FROM_MS(60) |
Maximum delay of actual audio playback time from coded PTS, above which upsampling will be performed. More... | |
#define | AOUT_MAX_RESAMPLING 10 |
#define | AOUT_FMTS_IDENTICAL(p_first, p_second) |
#define | AOUT_FMTS_SIMILAR(p_first, p_second) |
#define | AOUT_FMT_LINEAR(p_format) (aout_BitsPerSample((p_format)->i_format) != 0) |
#define | VLC_CODEC_SPDIFL VLC_FOURCC('s','p','d','i') |
#define | VLC_CODEC_SPDIFB VLC_FOURCC('s','p','d','b') |
#define | AOUT_FMT_SPDIF(p_format) |
#define | AOUT_FMT_HDMI(p_format) |
#define | AOUT_VAR_CHAN_UNSET 0 /* must be zero */ |
#define | AOUT_VAR_CHAN_STEREO 1 |
#define | AOUT_VAR_CHAN_RSTEREO 2 |
#define | AOUT_VAR_CHAN_LEFT 3 |
#define | AOUT_VAR_CHAN_RIGHT 4 |
#define | AOUT_VAR_CHAN_DOLBYS 5 |
#define | AOUT_VAR_CHAN_HEADPHONES 6 |
#define | AOUT_VAR_CHAN_MONO 7 |
#define | AOUT_SPDIF_SIZE 6144 |
#define | A52_FRAME_NB 1536 |
#define | AOUT_CHAN_REMAP_INIT |
#define | AOUT_RESTART_FILTERS 0x1 |
#define | AOUT_RESTART_OUTPUT (AOUT_RESTART_FILTERS|0x2) |
#define | AOUT_RESTART_STEREOMODE (AOUT_RESTART_OUTPUT|0x4) |
#define | aout_FormatPrint(o, t, f) aout_FormatPrint(VLC_OBJECT(o), t, f) |
#define | AOUT_VOLUME_DEFAULT 256 |
#define | AOUT_VOLUME_MAX 512 |
#define | AOUT_FILTERS_CFG_INIT |
#define | aout_FiltersNew(o, inf, outf, remap) aout_FiltersNew(VLC_OBJECT(o),inf,outf,remap) |
#define | aout_FiltersDelete(o, f) aout_FiltersDelete(VLC_OBJECT(o),f) |
#define | vlc_audio_meter_Init(a, b) vlc_audio_meter_Init(a, VLC_OBJECT(b)) |
Typedefs | |
typedef struct aout_filters | aout_filters_t |
typedef struct vlc_audio_meter_plugin | vlc_audio_meter_plugin |
Audio meter plugin opaque structure. More... | |
Functions | |
VLC_EXPORT unsigned | aout_CheckChannelReorder (const uint32_t *, const uint32_t *, uint32_t mask, uint8_t *table) |
This function computes the reordering needed to go from pi_chan_order_in to pi_chan_order_out. More... | |
VLC_EXPORT void | aout_ChannelReorder (void *, size_t, uint8_t, const uint8_t *, vlc_fourcc_t) |
VLC_EXPORT void | aout_Interleave (void *dst, const void *const *planes, unsigned samples, unsigned channels, vlc_fourcc_t fourcc) |
VLC_EXPORT void | aout_Deinterleave (void *dst, const void *src, unsigned samples, unsigned channels, vlc_fourcc_t fourcc) |
VLC_EXPORT bool | aout_CheckChannelExtraction (int *pi_selection, uint32_t *pi_layout, int *pi_channels, const uint32_t pi_order_dst[9], const uint32_t *pi_order_src, int i_channels) |
This function will compute the extraction parameter into pi_selection to go from i_channels with their type given by pi_order_src[] into the order describe by pi_order_dst. More... | |
VLC_EXPORT void | aout_ChannelExtract (void *p_dst, int i_dst_channels, const void *p_src, int i_src_channels, int i_sample_count, const int *pi_selection, int i_bits_per_sample) |
Do the actual channels extraction using the parameters created by aout_CheckChannelExtraction. More... | |
static unsigned | aout_FormatNbChannels (const audio_sample_format_t *fmt) |
VLC_EXPORT unsigned int | aout_BitsPerSample (vlc_fourcc_t i_format) |
VLC_EXPORT void | aout_FormatPrepare (audio_sample_format_t *p_format) |
VLC_EXPORT void | aout_FormatPrint (vlc_object_t *, const char *, const audio_sample_format_t *) |
Prints an audio sample format in a human-readable form. More... | |
const VLC_EXPORT char * | aout_FormatPrintChannels (const audio_sample_format_t *) |
VLC_EXPORT float | aout_VolumeGet (audio_output_t *) |
Gets the volume of the audio output stream (independent of mute). More... | |
VLC_EXPORT int | aout_VolumeSet (audio_output_t *, float) |
Sets the volume of the audio output stream. More... | |
VLC_EXPORT int | aout_VolumeUpdate (audio_output_t *, int, float *) |
Raises the volume. More... | |
VLC_EXPORT int | aout_MuteGet (audio_output_t *) |
Gets the audio output stream mute flag. More... | |
VLC_EXPORT int | aout_MuteSet (audio_output_t *, bool) |
Sets the audio output stream mute flag. More... | |
VLC_EXPORT char * | aout_DeviceGet (audio_output_t *) |
Gets the currently selected device. More... | |
VLC_EXPORT int | aout_DeviceSet (audio_output_t *, const char *) |
Selects an audio output device. More... | |
VLC_EXPORT int | aout_DevicesList (audio_output_t *, char ***, char ***) |
Enumerates possible audio output devices. More... | |
static void | aout_VolumeReport (audio_output_t *aout, float volume) |
Report change of configured audio volume to the core and UI. More... | |
static void | aout_MuteReport (audio_output_t *aout, bool mute) |
Report change of muted flag to the core and UI. More... | |
static void | aout_PolicyReport (audio_output_t *aout, bool cork) |
Report audio policy status. More... | |
static void | aout_DeviceReport (audio_output_t *aout, const char *id) |
Report change of output device. More... | |
static void | aout_HotplugReport (audio_output_t *aout, const char *id, const char *name) |
Report a device hot-plug event. More... | |
static int | aout_GainRequest (audio_output_t *aout, float gain) |
Request a change of software audio amplification. More... | |
static void | aout_RestartRequest (audio_output_t *aout, unsigned mode) |
static int | aout_TimeGetDefault (audio_output_t *aout, vlc_tick_t *restrict delay) |
Default implementation for audio_output_t.time_get. More... | |
static void | aout_PauseDefault (audio_output_t *aout, bool paused, vlc_tick_t date) |
Default implementation for audio_output_t.pause. More... | |
VLC_EXPORT int | aout_EnableFilter (audio_output_t *aout, const char *name, bool add) |
Enable or disable an audio filter ("audio-filter") More... | |
VLC_EXPORT aout_filters_t * | aout_FiltersNew (vlc_object_t *, const audio_sample_format_t *, const audio_sample_format_t *, const aout_filters_cfg_t *cfg) |
VLC_EXPORT void | aout_FiltersDelete (vlc_object_t *, aout_filters_t *) |
Destroys a chain of audio filters. More... | |
VLC_EXPORT bool | aout_FiltersAdjustResampling (aout_filters_t *, int) |
VLC_EXPORT block_t * | aout_FiltersPlay (aout_filters_t *, block_t *, float rate) |
VLC_EXPORT block_t * | aout_FiltersDrain (aout_filters_t *) |
VLC_EXPORT void | aout_FiltersFlush (aout_filters_t *) |
VLC_EXPORT void | aout_FiltersChangeViewpoint (aout_filters_t *, const vlc_viewpoint_t *vp) |
VLC_EXPORT vout_thread_t * | aout_filter_GetVout (filter_t *, const video_format_t *) |
static int | aout_TimeGet (audio_output_t *aout, vlc_tick_t *delay) |
VLC_EXPORT void | vlc_audio_meter_Init (struct vlc_audio_meter *meter, vlc_object_t *parent) |
Initialize the audio meter structure. More... | |
VLC_EXPORT void | vlc_audio_meter_Destroy (struct vlc_audio_meter *meter) |
Free allocated resource from the audio meter structure. More... | |
VLC_EXPORT int | vlc_audio_meter_Reset (struct vlc_audio_meter *meter, const audio_sample_format_t *fmt) |
Set or reset the audio format. More... | |
VLC_EXPORT vlc_audio_meter_plugin * | vlc_audio_meter_AddPlugin (struct vlc_audio_meter *meter, const char *chain, const struct vlc_audio_meter_plugin_owner *owner) |
Add an "audio meter" plugin. More... | |
VLC_EXPORT void | vlc_audio_meter_RemovePlugin (struct vlc_audio_meter *meter, vlc_audio_meter_plugin *plugin) |
Remove an "audio meter" plugin. More... | |
VLC_EXPORT void | vlc_audio_meter_Process (struct vlc_audio_meter *meter, block_t *block, vlc_tick_t date) |
Process an audio block. More... | |
VLC_EXPORT void | vlc_audio_meter_Flush (struct vlc_audio_meter *meter) |
Flush all "audio meter" plugins. More... | |
Variables | |
static const uint32_t | pi_vlc_chan_order_wg4 [] |
It describes the audio channel order VLC expect. More... | |
Audio output modules interface
#define vlc_audio_meter_Init | ( | a, | |
b | |||
) | vlc_audio_meter_Init(a, VLC_OBJECT(b)) |
typedef struct vlc_audio_meter_plugin vlc_audio_meter_plugin |
Audio meter plugin opaque structure.
This opaque structure is returned by vlc_audio_meter_AddPlugin().
VLC_EXPORT vlc_audio_meter_plugin* vlc_audio_meter_AddPlugin | ( | struct vlc_audio_meter * | meter, |
const char * | chain, | ||
const struct vlc_audio_meter_plugin_owner * | owner | ||
) |
Add an "audio meter" plugin.
The module to be loaded if meter->fmt is valid, otherwise, the module will be loaded from a next call to vlc_audio_meter_Reset()
meter | audio meter structure |
chain | name of the module, can contain specific module options using the following chain convention:"name{option1=a,option2=b}" |
cbs | pointer to a vlc_audio_meter_events structure, the structure must stay valid during the lifetime of the plugin |
cbs_data | opaque pointer used by the callbacks |
References vlc_audio_meter_plugin_owner::cbs, vlc_audio_meter_plugin::cfg, config_ChainCreate(), config_ChainDestroy(), vlc_filter_operations::drain_audio, vlc_audio_meter_plugin::filter, vlc_audio_meter::fmt, vlc_audio_meter_plugin::last_date, vlc_audio_meter::lock, vlc_audio_meter_plugin::name, vlc_audio_meter_plugin::node, filter_t::ops, vlc_audio_meter_plugin::owner, vlc_audio_meter::plugins, vlc_audio_meter_CreatePluginFilter(), vlc_list_append(), vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_TICK_INVALID.
Referenced by aout_AddMeterPlugin().
VLC_EXPORT void vlc_audio_meter_Destroy | ( | struct vlc_audio_meter * | meter | ) |
Free allocated resource from the audio meter structure.
meter | allocated audio meter structure |
Referenced by aout_Destroy().
VLC_EXPORT void vlc_audio_meter_Flush | ( | struct vlc_audio_meter * | meter | ) |
Flush all "audio meter" plugins.
vlc_audio_meter_events callbacks can be triggered from this function.
meter | audio meter structure |
References vlc_audio_meter_plugin::filter, filter_Flush(), vlc_audio_meter::lock, vlc_audio_meter::plugins, vlc_list_foreach, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by aout_DecFlush().
VLC_EXPORT void vlc_audio_meter_Init | ( | struct vlc_audio_meter * | meter, |
vlc_object_t * | parent | ||
) |
Initialize the audio meter structure.
meter | allocated audio meter structure |
parent | object that will be used to create audio filters |
References vlc_audio_meter::fmt, vlc_audio_meter::lock, vlc_audio_meter::parent, vlc_audio_meter::plugins, vlc_list_init(), and vlc_mutex_init().
VLC_EXPORT void vlc_audio_meter_Process | ( | struct vlc_audio_meter * | meter, |
block_t * | block, | ||
vlc_tick_t | date | ||
) |
Process an audio block.
vlc_audio_meter_events callbacks can be triggered from this function.
meter | audio meter structure |
block | pointer to a block, this block won't be released of modified from this function |
date | absolute date (likely in the future) when this block should be rendered |
References vlc_audio_meter_plugin::filter, vlc_filter_operations::filter_audio, block_t::i_length, vlc_audio_meter_plugin::last_date, vlc_audio_meter::lock, filter_t::ops, vlc_audio_meter::plugins, vlc_list_foreach, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by aout_DecPlay().
VLC_EXPORT void vlc_audio_meter_RemovePlugin | ( | struct vlc_audio_meter * | meter, |
vlc_audio_meter_plugin * | plugin | ||
) |
Remove an "audio meter" plugin.
meter | audio meter structure |
plugin | plugin returned by vlc_audio_meter_AddPlugin() |
References vlc_audio_meter_plugin::cfg, config_ChainDestroy(), vlc_audio_meter_plugin::filter, filter_Close(), vlc_audio_meter::lock, module_unneed, vlc_audio_meter_plugin::name, vlc_audio_meter_plugin::node, filter_t::p_module, vlc_list_remove(), vlc_mutex_lock(), vlc_mutex_unlock(), and vlc_object_delete.
Referenced by aout_RemoveMeterPlugin().
VLC_EXPORT int vlc_audio_meter_Reset | ( | struct vlc_audio_meter * | meter, |
const audio_sample_format_t * | fmt | ||
) |
Set or reset the audio format.
This will reload all plugins added with vlc_audio_meter_AddPlugin()
meter | audio meter structure |
fmt | NULL to unload all plugins or a valid pointer to an audio format, must stay valid during the lifetime of the audio meter (until vlc_audio_meter_Reset() or vlc_audio_meter_Destroy() are called) |
References vlc_audio_meter_plugin::filter, filter_Close(), vlc_audio_meter::fmt, vlc_audio_meter_plugin::last_date, vlc_audio_meter::lock, module_unneed, filter_t::p_module, vlc_audio_meter::plugins, vlc_audio_meter_CreatePluginFilter(), VLC_EGENERIC, vlc_list_foreach, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_object_delete, VLC_SUCCESS, and VLC_TICK_INVALID.
Referenced by aout_CheckReady(), and aout_DecNew().