Go to the documentation of this file.
39 #define AOUT_MAX_ADVANCE_TIME (AOUT_MAX_PREPARE_TIME + VLC_TICK_FROM_SEC(1))
43 #define AOUT_MAX_PREPARE_TIME VLC_TICK_FROM_SEC(2)
47 #define AOUT_MIN_PREPARE_TIME AOUT_MAX_PTS_ADVANCE
52 #define AOUT_MAX_PTS_ADVANCE VLC_TICK_FROM_MS(40)
56 #define AOUT_MAX_PTS_DELAY VLC_TICK_FROM_MS(60)
59 #define AOUT_MAX_RESAMPLING 10
63 #define AOUT_FMTS_IDENTICAL( p_first, p_second ) ( \
64 ((p_first)->i_format == (p_second)->i_format) \
65 && AOUT_FMTS_SIMILAR(p_first, p_second) )
68 #define AOUT_FMTS_SIMILAR( p_first, p_second ) ( \
69 ((p_first)->i_rate == (p_second)->i_rate) \
70 && ((p_first)->channel_type == (p_second)->channel_type) \
71 && ((p_first)->i_physical_channels == (p_second)->i_physical_channels)\
72 && ((p_first)->i_chan_mode == (p_second)->i_chan_mode) )
74 #define AOUT_FMT_LINEAR( p_format ) \
75 (aout_BitsPerSample((p_format)->i_format) != 0)
77 #define VLC_CODEC_SPDIFL VLC_FOURCC('s','p','d','i')
78 #define VLC_CODEC_SPDIFB VLC_FOURCC('s','p','d','b')
80 #define AOUT_FMT_SPDIF( p_format ) \
81 ( ((p_format)->i_format == VLC_CODEC_SPDIFL) \
82 || ((p_format)->i_format == VLC_CODEC_SPDIFB) \
83 || ((p_format)->i_format == VLC_CODEC_A52) \
84 || ((p_format)->i_format == VLC_CODEC_DTS) )
86 #define AOUT_FMT_HDMI( p_format ) \
87 ( (p_format)->i_format == VLC_CODEC_EAC3 \
88 ||(p_format)->i_format == VLC_CODEC_DTSHD \
89 ||(p_format)->i_format == VLC_CODEC_TRUEHD \
90 ||(p_format)->i_format == VLC_CODEC_MLP \
94 #define AOUT_VAR_CHAN_UNSET 0
95 #define AOUT_VAR_CHAN_STEREO 1
96 #define AOUT_VAR_CHAN_RSTEREO 2
97 #define AOUT_VAR_CHAN_LEFT 3
98 #define AOUT_VAR_CHAN_RIGHT 4
99 #define AOUT_VAR_CHAN_DOLBYS 5
100 #define AOUT_VAR_CHAN_HEADPHONES 6
101 #define AOUT_VAR_CHAN_MONO 7
108 #define AOUT_SPDIF_SIZE 6144
111 #define A52_FRAME_NB 1536
301 #define AOUT_CHAN_REMAP_INIT { \
303 AOUT_CHANIDX_RIGHT, \
304 AOUT_CHANIDX_MIDDLELEFT, \
305 AOUT_CHANIDX_MIDDLERIGHT, \
306 AOUT_CHANIDX_REARLEFT, \
307 AOUT_CHANIDX_REARRIGHT, \
308 AOUT_CHANIDX_REARCENTER, \
309 AOUT_CHANIDX_CENTER, \
324 #define AOUT_RESTART_FILTERS 0x1
325 #define AOUT_RESTART_OUTPUT (AOUT_RESTART_FILTERS|0x2)
326 #define AOUT_RESTART_STEREOMODE (AOUT_RESTART_OUTPUT|0x4)
339 uint32_t mask, uint8_t *table );
343 unsigned samples,
unsigned channels,
373 VLC_API 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 );
385 #define aout_FormatPrint(o, t, f) aout_FormatPrint(VLC_OBJECT(o), t, f)
388 #define AOUT_VOLUME_DEFAULT 256
389 #define AOUT_VOLUME_MAX 512
439 const char *
id,
const char *
name)
465 (void) aout; (void) delay;
510 #define AOUT_FILTERS_CFG_INIT (aout_filters_cfg_t) \
511 { .remap = AOUT_CHAN_REMAP_INIT, \
512 .headphones = false, \
521 #define aout_FiltersNew(o,inf,outf,remap) \
522 aout_FiltersNew(VLC_OBJECT(o),inf,outf,remap)
524 #define aout_FiltersDelete(o,f) \
525 aout_FiltersDelete(VLC_OBJECT(o),f)
623 #define vlc_audio_meter_Init(a,b) vlc_audio_meter_Init(a, VLC_OBJECT(b))
#define AOUT_CHAN_RIGHT
Definition: vlc_es.h:119
#define AOUT_CHAN_MIDDLERIGHT
Definition: vlc_es.h:124
#define VLC_API
Definition: fourcc_gen.c:31
@ AOUT_CHANIDX_LFE
Definition: vlc_aout.h:296
static void aout_MuteReport(audio_output_t *aout, bool mute)
Report change of muted flag to the core and UI.
Definition: vlc_aout.h:412
VLC_EXPORT unsigned int aout_BitsPerSample(vlc_fourcc_t i_format)
Definition: common.c:41
VLC_EXPORT int aout_DeviceSet(audio_output_t *, const char *)
Selects an audio output device.
Definition: output.c:732
struct audio_output::@181 current_sink_info
Current sink informations set by the module from the start() function.
static unsigned aout_FormatNbChannels(const audio_sample_format_t *fmt)
Definition: vlc_aout.h:377
VLC_EXPORT float aout_VolumeGet(audio_output_t *)
Gets the volume of the audio output stream (independent of mute).
Definition: output.c:645
@ AOUT_CHANIDX_DISABLE
Definition: vlc_aout.h:287
VLC_EXPORT void aout_FiltersChangeViewpoint(aout_filters_t *, const vlc_viewpoint_t *vp)
Definition: filters.c:802
static void aout_VolumeReport(audio_output_t *aout, float volume)
Report change of configured audio volume to the core and UI.
Definition: vlc_aout.h:404
static void aout_HotplugReport(audio_output_t *aout, const char *id, const char *name)
Report a device hot-plug event.
Definition: vlc_aout.h:439
vlc_object_t * parent
Definition: vlc_aout.h:610
VLC_EXPORT int vlc_audio_meter_Reset(struct vlc_audio_meter *meter, const audio_sample_format_t *fmt)
Set or reset the audio format.
Definition: meter.c:152
#define AOUT_CHAN_CENTER
Definition: vlc_es.h:117
static int aout_TimeGetDefault(audio_output_t *aout, vlc_tick_t *restrict delay)
Default implementation for audio_output_t.time_get.
Definition: vlc_aout.h:463
struct vlc_object_t obj
Definition: vlc_aout.h:143
static int aout_GainRequest(audio_output_t *aout, float gain)
Request a change of software audio amplification.
Definition: vlc_aout.h:450
#define AOUT_CHAN_REARCENTER
Definition: vlc_es.h:120
void(* play)(audio_output_t *, block_t *block, vlc_tick_t date)
Queues a block of samples for playback (mandatory, cannot be NULL).
Definition: vlc_aout.h:199
int(* gain_request)(audio_output_t *, float)
Definition: vlc_aout.h:125
VLC_EXPORT void aout_FiltersFlush(aout_filters_t *)
Definition: filters.c:794
static void aout_DeviceReport(audio_output_t *aout, const char *id)
Report change of output device.
Definition: vlc_aout.h:429
void(* mute_report)(audio_output_t *, bool)
Definition: vlc_aout.h:120
Definition: vlc_aout.h:117
VLC_EXPORT bool aout_FiltersAdjustResampling(aout_filters_t *, int)
Definition: filters.c:713
VLC_EXPORT void vlc_audio_meter_RemovePlugin(struct vlc_audio_meter *meter, vlc_audio_meter_plugin *plugin)
Remove an "audio meter" plugin.
Definition: meter.c:130
Viewpoints.
Definition: vlc_viewpoint.h:41
@ AOUT_CHANIDX_REARLEFT
Definition: vlc_aout.h:292
VLC_EXPORT block_t * aout_FiltersPlay(aout_filters_t *, block_t *, float rate)
Definition: filters.c:725
Audio meter plugin owner structure.
Definition: vlc_aout.h:594
Doubly-linked list node.
Definition: vlc_list.h:43
vlc_mutex_t lock
Definition: vlc_aout.h:609
Mutex.
Definition: vlc_threads.h:225
const audio_sample_format_t * fmt
Definition: vlc_aout.h:611
void(* volume_report)(audio_output_t *, float)
Definition: vlc_aout.h:119
double truepeak
True Peak, in dBTP.
Definition: vlc_aout.h:560
void(* pause)(audio_output_t *, bool pause, vlc_tick_t date)
Pauses or resumes playback (mandatory, cannot be NULL).
Definition: vlc_aout.h:214
VLC_EXPORT int aout_MuteSet(audio_output_t *, bool)
Sets the audio output stream mute flag.
Definition: output.c:706
VLC_EXPORT void aout_ChannelReorder(void *, size_t, uint8_t, const uint8_t *, vlc_fourcc_t)
Definition: filters.c:349
Audio output object.
Definition: vlc_aout.h:141
#define aout_FiltersNew(o, inf, outf, remap)
Definition: vlc_aout.h:522
static void aout_PolicyReport(audio_output_t *aout, bool cork)
Report audio policy status.
Definition: vlc_aout.h:421
VLC_EXPORT int aout_EnableFilter(audio_output_t *aout, const char *name, bool add)
Enable or disable an audio filter ("audio-filter")
Definition: common.c:539
const VLC_EXPORT char * aout_FormatPrintChannels(const audio_sample_format_t *)
Definition: common.c:105
double loudness_integrated
Integrated loudness (global), in LUFS.
Definition: vlc_aout.h:556
#define AOUT_CHAN_MIDDLELEFT
Definition: vlc_es.h:123
Audio meter structure.
Definition: vlc_aout.h:607
#define AOUT_CHAN_LFE
Definition: vlc_es.h:125
Structure describing a filter.
Definition: vlc_filter.h:215
void(* on_loudness)(vlc_tick_t date, const struct vlc_audio_loudness *loudness, void *data)
Called when new loudness measurements are available.
Definition: vlc_aout.h:577
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
@ AOUT_CHANIDX_MIDDLELEFT
Definition: vlc_aout.h:290
double loudness_range
Loudness range, in LU.
Definition: vlc_aout.h:558
@ AOUT_CHANIDX_REARRIGHT
Definition: vlc_aout.h:293
bool headphones
Default to false, set it to true if the current sink is using headphones.
Definition: vlc_aout.h:277
VLC_EXPORT void vlc_audio_meter_Process(struct vlc_audio_meter *meter, block_t *block, vlc_tick_t date)
Process an audio block.
Definition: meter.c:190
static void aout_RestartRequest(audio_output_t *aout, unsigned mode)
Definition: vlc_aout.h:455
vlc_chan_order_idx_t
Definition: vlc_aout.h:285
VLC_EXPORT vout_thread_t * aout_filter_GetVout(filter_t *, const video_format_t *)
Definition: filters.c:389
@ AOUT_CHANIDX_CENTER
Definition: vlc_aout.h:295
int(* device_select)(audio_output_t *, const char *id)
Selects an audio output device (optional, may be NULL).
Definition: vlc_aout.h:267
VLC_EXPORT void aout_Deinterleave(void *dst, const void *src, unsigned samples, unsigned channels, vlc_fourcc_t fourcc)
#define AOUT_CHAN_MAX
Definition: vlc_es.h:153
void * sys
Definition: vlc_aout.h:597
#define vlc_audio_meter_Init(a, b)
Definition: vlc_aout.h:624
bool headphones
If true, a filter will be inserted to add a headphones effect (like a binauralizer audio filter).
Definition: vlc_aout.h:508
VLC_EXPORT void aout_Interleave(void *dst, const void *const *planes, unsigned samples, unsigned channels, vlc_fourcc_t fourcc)
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.
Definition: common.c:445
void(* stop)(audio_output_t *)
Stops the existing stream (mandatory, cannot be NULL).
Definition: vlc_aout.h:164
void(* timing_report)(audio_output_t *, vlc_tick_t system_now, vlc_tick_t pts)
Definition: vlc_aout.h:118
#define static_assert
Definition: vlc_fixups.h:370
#define AOUT_CHAN_REARRIGHT
Definition: vlc_es.h:122
void(* hotplug_report)(audio_output_t *, const char *, const char *)
Definition: vlc_aout.h:123
#define AOUT_CHAN_LEFT
Definition: vlc_es.h:118
VLC_EXPORT void vlc_audio_meter_Flush(struct vlc_audio_meter *meter)
Flush all "audio meter" plugins.
Definition: meter.c:212
int(* volume_set)(audio_output_t *, float volume)
Changes playback volume (optional, may be NULL).
Definition: vlc_aout.h:246
static void aout_PauseDefault(audio_output_t *aout, bool paused, vlc_tick_t date)
Default implementation for audio_output_t.pause.
Definition: vlc_aout.h:477
const struct vlc_audio_output_events * events
Definition: vlc_aout.h:282
#define aout_FiltersDelete(o, f)
Definition: vlc_aout.h:525
void(* device_report)(audio_output_t *, const char *)
Definition: vlc_aout.h:122
void(* restart_request)(audio_output_t *, unsigned)
Definition: vlc_aout.h:124
VLC object common members.
Definition: vlc_objects.h:43
VLC_EXPORT int aout_VolumeSet(audio_output_t *, float)
Sets the volume of the audio output stream.
Definition: output.c:655
void(* drain)(audio_output_t *)
Drain the playback buffers (can be NULL).
Definition: vlc_aout.h:239
VLC_EXPORT int aout_MuteGet(audio_output_t *)
Gets the audio output stream mute flag.
Definition: output.c:697
void(* policy_report)(audio_output_t *, bool)
Definition: vlc_aout.h:121
#define VLC_USED
Definition: fourcc_gen.c:32
@ AOUT_CHANIDX_RIGHT
Definition: vlc_aout.h:289
const char name[16]
Definition: httpd.c:1268
double loudness_shortterm
Short term loudness (last 3seconds), in LUFS.
Definition: vlc_aout.h:554
static const uint32_t pi_vlc_chan_order_wg4[]
It describes the audio channel order VLC expect.
Definition: vlc_aout.h:317
VLC_EXPORT int aout_VolumeUpdate(audio_output_t *, int, float *)
Raises the volume.
Definition: output.c:671
Audio meter callback.
Definition: vlc_aout.h:568
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 thei...
Definition: common.c:463
VLC_EXPORT int aout_DevicesList(audio_output_t *, char ***, char ***)
Enumerates possible audio output devices.
Definition: output.c:754
VLC_EXPORT void aout_FormatPrepare(audio_sample_format_t *p_format)
Definition: common.c:87
static int aout_TimeGet(audio_output_t *aout, vlc_tick_t *delay)
Definition: vlc_aout.h:535
int(* mute_set)(audio_output_t *, bool mute)
Changes muting (optinal, may be NULL).
Definition: vlc_aout.h:260
double loudness_momentary
Momentary loudness (last 400 ms), in LUFS.
Definition: vlc_aout.h:552
@ AOUT_CHANIDX_REARCENTER
Definition: vlc_aout.h:294
const struct vlc_audio_meter_cbs * cbs
Definition: vlc_aout.h:596
int(* time_get)(audio_output_t *, vlc_tick_t *delay)
Estimates playback buffer latency (mandatory, cannot be NULL).
Definition: vlc_aout.h:173
VLC_EXPORT char * aout_DeviceGet(audio_output_t *)
Gets the currently selected device.
Definition: output.c:722
@ AOUT_CHANIDX_MIDDLERIGHT
Definition: vlc_aout.h:291
#define AOUT_CHAN_REARLEFT
Definition: vlc_es.h:121
VLC_EXPORT block_t * aout_FiltersDrain(aout_filters_t *)
Definition: filters.c:762
int(* start)(audio_output_t *, audio_sample_format_t *fmt)
Starts a new stream (mandatory, cannot be NULL).
Definition: vlc_aout.h:147
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.
Definition: meter.c:88
Video output thread descriptor.
Definition: vlc_vout.h:55
VLC_EXPORT void vlc_audio_meter_Destroy(struct vlc_audio_meter *meter)
Free allocated resource from the audio meter structure.
Definition: meter.c:54
Definition: vlc_aout.h:497
@ AOUT_CHANIDX_LEFT
Definition: vlc_aout.h:288
void(* flush)(audio_output_t *)
Flushes the playback buffers (mandatory, cannot be NULL).
Definition: vlc_aout.h:231
#define vlc_popcount(x)
Bit weight / population count.
Definition: vlc_common.h:734
void * sys
Private data for callbacks.
Definition: vlc_aout.h:145
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.
Definition: vlc_block.h:117
@ AOUT_CHANIDX_MAX
Definition: vlc_aout.h:297
#define aout_FormatPrint(o, t, f)
Definition: vlc_aout.h:386
struct vlc_list plugins
Definition: vlc_aout.h:613
Audio loudness measurement.
Definition: vlc_aout.h:549
uint32_t vlc_fourcc_t
Definition: fourcc_gen.c:33