23#ifndef LIBVLC_AOUT_INTERNAL_H
24# define LIBVLC_AOUT_INTERNAL_H 1
26# include <stdatomic.h>
32# include "../clock/clock.h"
35# define AOUT_MAX_INPUT_RATE (4)
37#define AOUT_RESTART_FILTERS 0x1
38#define AOUT_RESTART_OUTPUT (AOUT_RESTART_FILTERS|0x2)
39#define AOUT_RESTART_OUTPUT_DEC (AOUT_RESTART_OUTPUT|0x4)
94 return &instance->
owner;
103#define aout_volume_New(o, g) aout_volume_New(VLC_OBJECT(o), g)
112#define aout_New(a) aout_New(VLC_OBJECT(a))
148#define aout_FormatsPrint(o, t, a, b) \
149 aout_FormatsPrint(VLC_OBJECT(o), t, a, b)
152#define AOUT_DEC_SUCCESS 0
153#define AOUT_DEC_CHANGED 1
154#define AOUT_DEC_FAILED VLC_EGENERIC
192 static const uint32_t wave_channels[] = {
218 const char *type,
const char *
name,
static void aout_SetWavePhysicalChannels(audio_sample_format_t *fmt)
Definition aout_internal.h:190
void vlc_aout_stream_NotifyGain(vlc_aout_stream *stream, float gain)
Definition dec.c:1048
int vlc_aout_stream_Play(vlc_aout_stream *stream, block_t *block)
Definition dec.c:870
void aout_volume_SetVolume(aout_volume_t *, float)
Definition volume.c:117
void vlc_aout_stream_Flush(vlc_aout_stream *stream)
Definition dec.c:1035
void aout_FiltersSetClockDelay(aout_filters_t *filters, vlc_tick_t delay)
Definition filters.c:732
void aout_RemoveMeterPlugin(audio_output_t *aout, vlc_audio_meter_plugin *plugin)
Definition output.c:968
void vlc_aout_stream_RequestRetiming(vlc_aout_stream *stream, vlc_tick_t system_ts, vlc_tick_t audio_ts)
#define aout_volume_New(o, g)
Definition aout_internal.h:103
void vlc_aout_stream_ChangeDelay(vlc_aout_stream *stream, vlc_tick_t delay)
Definition dec.c:1030
void vlc_aout_stream_Drain(vlc_aout_stream *stream)
Definition dec.c:1068
aout_filters_t * aout_FiltersNewWithClock(vlc_object_t *, vlc_clock_t *, const audio_sample_format_t *, const audio_sample_format_t *, const aout_filters_cfg_t *cfg)
void aout_FiltersResetClock(aout_filters_t *filters)
Definition filters.c:711
void aout_OutputDelete(audio_output_t *p_aout)
Stops the audio output stream (undoes aout_OutputNew()).
Definition output.c:822
int aout_volume_SetFormat(aout_volume_t *, vlc_fourcc_t)
Selects the current sample format for software amplification.
Definition volume.c:82
#define aout_New(a)
Definition aout_internal.h:112
void vlc_aout_stream_RequestRestart(vlc_aout_stream *stream, unsigned)
Marks the audio output for restart, to update any parameter of the output plug-in (e....
Definition dec.c:556
bool vlc_aout_stream_IsDrained(vlc_aout_stream *stream)
Definition dec.c:1059
void aout_volume_Delete(aout_volume_t *)
Destroys a software amplifier.
Definition volume.c:106
int aout_volume_Amplify(aout_volume_t *, block_t *)
Applies replay gain and software volume to an audio buffer.
Definition volume.c:125
vlc_aout_stream * vlc_aout_stream_New(audio_output_t *p_aout, const struct vlc_aout_stream_cfg *cfg)
Creates an audio output.
Definition dec.c:342
void aout_InputRequestRestart(audio_output_t *aout)
Definition output.c:178
void vlc_aout_stream_GetResetStats(vlc_aout_stream *stream, unsigned *, unsigned *)
static aout_owner_t * aout_owner(audio_output_t *aout)
Definition aout_internal.h:91
@ AOUT_RESAMPLING_NONE
Definition aout_internal.h:42
@ AOUT_RESAMPLING_UP
Definition aout_internal.h:43
@ AOUT_RESAMPLING_DOWN
Definition aout_internal.h:44
#define aout_FormatsPrint(o, t, a, b)
Definition aout_internal.h:148
vlc_audio_meter_plugin * aout_AddMeterPlugin(audio_output_t *aout, const char *chain, const struct vlc_audio_meter_plugin_owner *owner)
Definition output.c:959
void vlc_aout_stream_Delete(vlc_aout_stream *)
Stops all plugins involved in the audio output.
Definition dec.c:451
void vlc_aout_stream_NotifyDrained(vlc_aout_stream *stream)
Definition dec.c:1054
bool aout_FiltersCanResample(aout_filters_t *filters)
Definition filters.c:770
void vlc_aout_stream_ChangePause(vlc_aout_stream *stream, bool b_paused, vlc_tick_t i_date)
Definition dec.c:977
void vlc_aout_stream_NotifyTiming(vlc_aout_stream *stream, vlc_tick_t system_ts, vlc_tick_t audio_ts)
Definition dec.c:816
void vlc_aout_stream_ChangeRate(vlc_aout_stream *stream, float rate)
Definition dec.c:1025
static aout_instance_t * aout_instance(audio_output_t *aout)
Definition aout_internal.h:86
int aout_OutputNew(audio_output_t *aout, vlc_aout_stream *stream, audio_sample_format_t *fmt, int input_profile, audio_sample_format_t *filter_fmt, aout_filters_cfg_t *filters_cfg)
Starts an audio output stream.
Definition output.c:697
filter_t * aout_filter_Create(vlc_object_t *obj, const filter_owner_t *restrict owner, const char *type, const char *name, const audio_sample_format_t *infmt, const audio_sample_format_t *outfmt, config_chain_t *cfg, bool const_fmt)
Definition filters.c:58
struct vlc_param ** list
Definition core.c:402
#define VLC_USED
Definition fourcc_gen.c:32
uint32_t vlc_fourcc_t
Definition fourcc_gen.c:33
const char name[16]
Definition httpd.c:1298
vlc_mutex_t lock
Definition rand.c:33
Definition vlc_aout.h:610
Definition aout_internal.h:81
audio_output_t output
Definition aout_internal.h:82
aout_owner_t owner
Definition aout_internal.h:83
Definition aout_internal.h:51
int requested_mix_mode
Requested mix mode set by the user.
Definition aout_internal.h:73
module_t *bool bitexact
< Output plugin (or NULL if inactive)
Definition aout_internal.h:54
vlc_mutex_t lock
Definition aout_internal.h:52
atomic_bool update
Definition aout_internal.h:67
vlc_viewpoint_t value
Definition aout_internal.h:69
vlc_aout_stream * main_stream
Definition aout_internal.h:56
vlc_atomic_rc_t rc
Definition aout_internal.h:77
int requested_stereo_mode
Requested stereo mode set by the user.
Definition aout_internal.h:72
unsigned count
Definition aout_internal.h:62
Audio output object.
Definition vlc_aout.h:155
Definition vlc_configuration.h:320
Definition vlc_filter.h:66
Structure describing a filter.
Definition vlc_filter.h:213
Internal module descriptor.
Definition modules.h:76
Definition aout_internal.h:157
struct vlc_clock_t * clock
Definition aout_internal.h:160
const audio_replay_gain_t * replay_gain
Definition aout_internal.h:162
const audio_sample_format_t * fmt
Definition aout_internal.h:158
const char * str_id
Definition aout_internal.h:161
int profile
Definition aout_internal.h:159
Definition vlc_atomic.h:48
Audio meter plugin owner structure.
Definition vlc_aout.h:712
Audio meter structure.
Definition vlc_aout.h:725
const audio_sample_format_t * fmt
Definition vlc_aout.h:728
vlc_clock_main_t * owner
Definition clock.c:107
vlc_tick_t delay
Definition clock.c:108
Definition vlc_frame.h:123
Doubly-linked list node.
Definition vlc_list.h:44
Mutex.
Definition vlc_threads.h:143
VLC object common members.
Definition vlc_objects.h:53
Viewpoints.
Definition vlc_viewpoint.h:41
Atomic operations do not require locking, but they are not very powerful.
#define container_of(ptr, type, member)
Definition vlc_common.h:1067
#define AOUT_CHAN_LFE
Definition vlc_es.h:126
#define AOUT_CHAN_REARCENTER
Definition vlc_es.h:121
#define AOUT_CHAN_REARLEFT
Definition vlc_es.h:122
#define AOUT_CHAN_MIDDLELEFT
Definition vlc_es.h:124
#define AOUT_CHAN_MIDDLERIGHT
Definition vlc_es.h:125
#define AOUT_CHAN_REARRIGHT
Definition vlc_es.h:123
#define AOUT_CHAN_MAX
Definition vlc_es.h:154
#define AOUT_CHAN_RIGHT
Definition vlc_es.h:120
#define AOUT_CHAN_CENTER
Definition vlc_es.h:118
#define AOUT_CHAN_LEFT
Definition vlc_es.h:119
Filter modules interface.
This provides convenience helpers for linked lists.
int64_t vlc_tick_t
High precision date or time interval.
Definition vlc_tick.h:48
Video and audio viewpoint struct and helpers.