Go to the documentation of this file.
   38 #define AOUT_MAX_ADVANCE_TIME           (AOUT_MAX_PREPARE_TIME + CLOCK_FREQ) 
   42 #define AOUT_MAX_PREPARE_TIME           (2 * CLOCK_FREQ) 
   46 #define AOUT_MIN_PREPARE_TIME           AOUT_MAX_PTS_ADVANCE 
   51 #define AOUT_MAX_PTS_ADVANCE            (CLOCK_FREQ / 25) 
   55 #define AOUT_MAX_PTS_DELAY              (3 * CLOCK_FREQ / 50) 
   58 #define AOUT_MAX_RESAMPLING             10 
   62 #define AOUT_FMTS_IDENTICAL( p_first, p_second ) (                          \ 
   63     ((p_first)->i_format == (p_second)->i_format)                           \ 
   64       && AOUT_FMTS_SIMILAR(p_first, p_second) ) 
   67 #define AOUT_FMTS_SIMILAR( p_first, p_second ) (                            \ 
   68     ((p_first)->i_rate == (p_second)->i_rate)                               \ 
   69       && ((p_first)->channel_type == (p_second)->channel_type)            \ 
   70       && ((p_first)->i_physical_channels == (p_second)->i_physical_channels)\ 
   71       && ((p_first)->i_chan_mode == (p_second)->i_chan_mode) ) 
   73 #define AOUT_FMT_LINEAR( p_format ) \ 
   74     (aout_BitsPerSample((p_format)->i_format) != 0) 
   76 #define VLC_CODEC_SPDIFL VLC_FOURCC('s','p','d','i') 
   77 #define VLC_CODEC_SPDIFB VLC_FOURCC('s','p','d','b') 
   79 #define AOUT_FMT_SPDIF( p_format ) \ 
   80     ( ((p_format)->i_format == VLC_CODEC_SPDIFL)       \ 
   81        || ((p_format)->i_format == VLC_CODEC_SPDIFB)   \ 
   82        || ((p_format)->i_format == VLC_CODEC_A52)      \ 
   83        || ((p_format)->i_format == VLC_CODEC_DTS) ) 
   85 #define AOUT_FMT_HDMI( p_format )                   \ 
   86     ( (p_format)->i_format == VLC_CODEC_EAC3        \ 
   87     ||(p_format)->i_format == VLC_CODEC_TRUEHD      \ 
   88     ||(p_format)->i_format == VLC_CODEC_MLP         \ 
   92 #define AOUT_VAR_CHAN_UNSET         0  
   93 #define AOUT_VAR_CHAN_STEREO        1 
   94 #define AOUT_VAR_CHAN_RSTEREO       2 
   95 #define AOUT_VAR_CHAN_LEFT          3 
   96 #define AOUT_VAR_CHAN_RIGHT         4 
   97 #define AOUT_VAR_CHAN_DOLBYS        5 
   98 #define AOUT_VAR_CHAN_HEADPHONES    6 
   99 #define AOUT_VAR_CHAN_MONO          7 
  106 #define AOUT_SPDIF_SIZE 6144 
  109 #define A52_FRAME_NB 1536 
  207 #define AOUT_CHAN_REMAP_INIT { \ 
  209     AOUT_CHANIDX_RIGHT, \ 
  210     AOUT_CHANIDX_MIDDLELEFT, \ 
  211     AOUT_CHANIDX_MIDDLERIGHT, \ 
  212     AOUT_CHANIDX_REARLEFT, \ 
  213     AOUT_CHANIDX_REARRIGHT, \ 
  214     AOUT_CHANIDX_REARCENTER, \ 
  215     AOUT_CHANIDX_CENTER, \ 
  230 #define AOUT_RESTART_FILTERS        0x1 
  231 #define AOUT_RESTART_OUTPUT         (AOUT_RESTART_FILTERS|0x2) 
  232 #define AOUT_RESTART_STEREOMODE     (AOUT_RESTART_OUTPUT|0x4) 
  245                                            uint32_t mask, uint8_t *table );
 
  249                              unsigned samples, 
unsigned channels,
 
  279 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 );
 
  291 #define aout_FormatPrint(o, t, f) aout_FormatPrint(VLC_OBJECT(o), t, f) 
  294 #define AOUT_VOLUME_DEFAULT             256 
  295 #define AOUT_VOLUME_MAX                 512 
  345                                       const char *
id, 
const char *
name)
 
  381 #define AOUT_FILTERS_CFG_INIT (aout_filters_cfg_t) \ 
  382     { .remap = AOUT_CHAN_REMAP_INIT, \ 
  383       .headphones = false, \ 
  394 #define aout_FiltersNew(o,inf,outf,rv,remap) \ 
  395         aout_FiltersNew(VLC_OBJECT(o),inf,outf,rv,remap) 
  397 #define aout_FiltersDelete(o,f) \ 
  398         aout_FiltersDelete(VLC_OBJECT(o),f) 
  
#define AOUT_CHAN_RIGHT
Definition: vlc_es.h:120
#define AOUT_CHAN_MIDDLERIGHT
Definition: vlc_es.h:125
#define VLC_API
Definition: fourcc_gen.c:30
Definition: vlc_aout.h:200
static void aout_MuteReport(audio_output_t *aout, bool mute)
Report change of muted flag to the core and UI.
Definition: vlc_aout.h:315
#define VLC_COMMON_MEMBERS
Backward compatibility macro.
Definition: vlc_common.h:453
static unsigned aout_FormatNbChannels(const audio_sample_format_t *fmt)
Definition: vlc_aout.h:280
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:459
Definition: vlc_aout.h:191
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:307
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.
static void aout_HotplugReport(audio_output_t *aout, const char *id, const char *name)
Report a device hot-plug event.
Definition: vlc_aout.h:342
#define AOUT_CHAN_CENTER
Definition: vlc_es.h:118
int(* time_get)(audio_output_t *, mtime_t *delay)
Estimates playback buffer latency (optional, may be NULL).
Definition: vlc_aout.h:131
static int aout_GainRequest(audio_output_t *aout, float gain)
Request a change of software audio amplification.
Definition: vlc_aout.h:353
void aout_FormatPrepare(audio_sample_format_t *p_format)
Definition: common.c:86
Definition: aout_internal.h:39
#define AOUT_CHAN_REARCENTER
Definition: vlc_es.h:121
int(* gain_request)(audio_output_t *, float)
Definition: vlc_aout.h:184
static void aout_DeviceReport(audio_output_t *aout, const char *id)
Report change of output device.
Definition: vlc_aout.h:332
struct audio_output::@142 event
void aout_Deinterleave(void *dst, const void *src, unsigned samples, unsigned channels, vlc_fourcc_t fourcc)
void aout_FiltersChangeViewpoint(aout_filters_t *, const vlc_viewpoint_t *vp)
Definition: filters.c:777
Viewpoints.
Definition: vlc_viewpoint.h:44
vout_thread_t * aout_filter_RequestVout(filter_t *, vout_thread_t *p_vout, const video_format_t *p_fmt)
Definition: filters.c:383
Definition: vlc_aout.h:196
struct audio_output::@141 current_sink_info
Current sink informations set by the module from the start() function.
Definition: filters.c:344
Audio output object.
Definition: vlc_aout.h:114
static void aout_PolicyReport(audio_output_t *aout, bool cork)
Report audio policy status.
Definition: vlc_aout.h:324
#define AOUT_CHAN_MIDDLELEFT
Definition: vlc_es.h:124
void(* pause)(audio_output_t *, bool pause, mtime_t date)
Pauses or resumes playback (optional, may be NULL).
Definition: vlc_aout.h:142
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:441
#define AOUT_CHAN_LFE
Definition: vlc_es.h:126
float aout_VolumeGet(audio_output_t *)
Gets the volume of the audio output stream (independent of mute).
Definition: output.c:727
Structure describing a filter.
Definition: vlc_filter.h:65
Definition: vlc_aout.h:194
Definition: vlc_aout.h:197
void(* flush)(audio_output_t *, bool wait)
Flushes or drains the playback buffers (mandatory, cannot be NULL).
Definition: vlc_aout.h:148
bool headphones
Default to false, set it to true if the current sink is using headphones.
Definition: vlc_aout.h:173
int aout_MuteSet(audio_output_t *, bool)
Sets the audio output stream mute flag.
Definition: output.c:791
static void aout_RestartRequest(audio_output_t *aout, unsigned mode)
Definition: vlc_aout.h:358
vlc_chan_order_idx_t
Definition: vlc_aout.h:189
Definition: vlc_aout.h:199
int(* device_select)(audio_output_t *, const char *id)
Selects an audio output device (optional, may be NULL).
Definition: vlc_aout.h:165
void(* hotplug_report)(audio_output_t *, const char *, const char *)
Definition: vlc_aout.h:183
void(* play)(audio_output_t *, block_t *)
Queues a block of samples for playback (mandatory, cannot be NULL).
Definition: vlc_aout.h:138
#define AOUT_CHAN_MAX
Definition: vlc_es.h:154
const char * aout_FormatPrintChannels(const audio_sample_format_t *)
Definition: common.c:103
void(* stop)(audio_output_t *)
Stops the existing stream (optional, may be NULL).
Definition: vlc_aout.h:127
#define static_assert
Definition: vlc_fixups.h:367
#define AOUT_CHAN_REARRIGHT
Definition: vlc_es.h:123
block_t * aout_FiltersDrain(aout_filters_t *)
Definition: filters.c:737
#define AOUT_CHAN_LEFT
Definition: vlc_es.h:119
int(* volume_set)(audio_output_t *, float volume)
Changes playback volume (optional, may be NULL).
Definition: vlc_aout.h:154
#define aout_FiltersDelete(o, f)
Definition: vlc_aout.h:395
#define aout_FiltersNew(o, inf, outf, rv, remap)
Definition: vlc_aout.h:392
void(* restart_request)(audio_output_t *, unsigned)
Definition: vlc_aout.h:185
The main vlc_object_t structure.
Definition: vlc_objects.h:39
void(* policy_report)(audio_output_t *, bool)
Definition: vlc_aout.h:181
#define VLC_USED
Definition: fourcc_gen.c:31
Definition: vlc_aout.h:193
void(* mute_report)(audio_output_t *, bool)
Definition: vlc_aout.h:180
const char name[16]
Definition: httpd.c:1251
int aout_MuteGet(audio_output_t *)
Gets the audio output stream mute flag.
Definition: output.c:782
static const uint32_t pi_vlc_chan_order_wg4[]
It describes the audio channel order VLC expect.
Definition: vlc_aout.h:221
struct aout_sys_t * sys
Private data for callbacks.
Definition: vlc_aout.h:118
char * aout_DeviceGet(audio_output_t *)
Gets the currently selected device.
Definition: output.c:809
static unsigned() popcount(unsigned x)
Bit weight.
Definition: vlc_common.h:551
int(* mute_set)(audio_output_t *, bool mute)
Changes muting (optinal, may be NULL).
Definition: vlc_aout.h:160
int aout_DeviceSet(audio_output_t *, const char *)
Selects an audio output device.
Definition: output.c:819
bool aout_FiltersAdjustResampling(aout_filters_t *, int)
Definition: filters.c:687
unsigned int aout_BitsPerSample(vlc_fourcc_t i_format)
Definition: common.c:41
block_t * aout_FiltersPlay(aout_filters_t *, block_t *, int rate)
Definition: filters.c:699
void aout_FiltersFlush(aout_filters_t *)
Definition: filters.c:769
Definition: vlc_aout.h:198
void aout_Interleave(void *dst, const void *const *planes, unsigned samples, unsigned channels, vlc_fourcc_t fourcc)
Definition: vlc_aout.h:195
#define AOUT_CHAN_REARLEFT
Definition: vlc_es.h:122
int(* start)(audio_output_t *, audio_sample_format_t *fmt)
Starts a new stream (mandatory, cannot be NULL).
Definition: vlc_aout.h:120
struct aout_sys_t aout_sys_t
Definition: vlc_common.h:237
int64_t mtime_t
High precision date or time interval.
Definition: vlc_common.h:150
void(* volume_report)(audio_output_t *, float)
Definition: vlc_aout.h:179
Video output thread descriptor.
Definition: vlc_vout.h:70
int aout_VolumeSet(audio_output_t *, float)
Sets the volume of the audio output stream.
Definition: output.c:737
Definition: vlc_aout.h:365
void aout_ChannelReorder(void *, size_t, uint8_t, const uint8_t *, vlc_fourcc_t)
int aout_DevicesList(audio_output_t *, char ***, char ***)
Enumerates possible audio output devices.
Definition: output.c:853
Definition: vlc_aout.h:192
void(* device_report)(audio_output_t *, const char *)
Definition: vlc_aout.h:182
int aout_VolumeUpdate(audio_output_t *, int, float *)
Raises the volume.
Definition: output.c:756
Definition: vlc_block.h:111
Definition: vlc_aout.h:201
#define aout_FormatPrint(o, t, f)
Definition: vlc_aout.h:289
uint32_t vlc_fourcc_t
Definition: fourcc_gen.c:32