VLC
4.0.0-dev
|
Functions | |
static void | aout_Drain (audio_output_t *aout) |
int | aout_DecNew (audio_output_t *p_aout, const audio_sample_format_t *p_format, int profile, vlc_clock_t *clock, const audio_replay_gain_t *p_replay_gain) |
Creates an audio output. More... | |
void | aout_DecDelete (audio_output_t *aout) |
Stops all plugins involved in the audio output. More... | |
static int | aout_CheckReady (audio_output_t *aout) |
void | aout_RequestRestart (audio_output_t *aout, unsigned mode) |
Marks the audio output for restart, to update any parameter of the output plug-in (e.g. More... | |
static void | aout_StopResampling (audio_output_t *aout) |
static void | aout_DecSynchronize (audio_output_t *aout, vlc_tick_t system_now, vlc_tick_t dec_pts) |
static void | aout_DecSilence (audio_output_t *aout, vlc_tick_t length, vlc_tick_t pts) |
void | aout_RequestRetiming (audio_output_t *aout, vlc_tick_t system_ts, vlc_tick_t audio_ts) |
int | aout_DecPlay (audio_output_t *aout, block_t *block) |
void | aout_DecGetResetStats (audio_output_t *aout, unsigned *restrict lost, unsigned *restrict played) |
void | aout_DecChangePause (audio_output_t *aout, bool paused, vlc_tick_t date) |
void | aout_DecChangeRate (audio_output_t *aout, float rate) |
void | aout_DecChangeDelay (audio_output_t *aout, vlc_tick_t delay) |
void | aout_DecFlush (audio_output_t *aout) |
void | aout_DecDrain (audio_output_t *aout) |
|
static |
References AOUT_DEC_CHANGED, AOUT_DEC_FAILED, AOUT_DEC_SUCCESS, AOUT_FILTERS_CFG_INIT, aout_FiltersDelete, aout_FiltersNewWithClock(), aout_FiltersSetClockDelay(), aout_OutputDelete(), aout_OutputNew(), aout_owner(), AOUT_RESAMPLING_NONE, AOUT_RESTART_OUTPUT, aout_volume_SetFormat(), aout_owner_t::bitexact, aout_owner_t::clock, aout_owner_t::delay, aout_owner_t::filter_format, aout_owner_t::filters, aout_owner_t::filters_cfg, audio_format_t::i_format, aout_owner_t::input_format, aout_owner_t::mixer_format, msg_Dbg, aout_owner_t::resamp_type, aout_owner_t::restart, aout_owner_t::sync, unlikely, VLC_OBJECT, and aout_owner_t::volume.
Referenced by aout_DecPlay().
void aout_DecChangeDelay | ( | audio_output_t * | aout, |
vlc_tick_t | delay | ||
) |
References aout_owner(), aout_owner_t::request_delay, and aout_owner_t::sync.
Referenced by DecoderThread_ChangeDelay().
void aout_DecChangePause | ( | audio_output_t * | aout, |
bool | paused, | ||
vlc_tick_t | date | ||
) |
References aout_owner(), audio_output::flush, audio_format_t::i_format, aout_owner_t::mixer_format, and audio_output::pause.
Referenced by DecoderThread_ChangePause().
void aout_DecChangeRate | ( | audio_output_t * | aout, |
float | rate | ||
) |
References aout_owner(), aout_owner_t::rate, and aout_owner_t::sync.
Referenced by DecoderThread_ChangeRate().
void aout_DecDelete | ( | audio_output_t * | aout | ) |
Stops all plugins involved in the audio output.
References aout_DecFlush(), aout_FiltersDelete, aout_OutputDelete(), aout_owner(), aout_volume_Delete(), aout_owner_t::filters, audio_format_t::i_format, aout_owner_t::mixer_format, and aout_owner_t::volume.
Referenced by DecoderThread_Reload(), DeleteDecoder(), and ModuleThread_UpdateAudioFormat().
void aout_DecDrain | ( | audio_output_t * | aout | ) |
References aout_Drain(), aout_FiltersDrain(), aout_FiltersResetClock(), aout_owner(), aout_owner_t::clock, aout_owner_t::discontinuity, aout_owner_t::filters, audio_format_t::i_format, aout_owner_t::mixer_format, aout_owner_t::original_pts, audio_output::play, aout_owner_t::sync, vlc_clock_Reset(), VLC_TICK_INVALID, and vlc_tick_now().
Referenced by DecoderThread().
void aout_DecFlush | ( | audio_output_t * | aout | ) |
References aout_FiltersFlush(), aout_FiltersResetClock(), aout_FiltersSetClockDelay(), aout_owner(), aout_owner_t::clock, aout_owner_t::delay, aout_owner_t::discontinuity, aout_owner_t::filters, audio_output::flush, audio_format_t::i_format, aout_owner_t::mixer_format, aout_owner_t::original_pts, aout_owner_t::request_delay, aout_owner_t::sync, vlc_clock_Reset(), vlc_clock_SetDelay(), and VLC_TICK_INVALID.
Referenced by aout_DecDelete(), aout_RequestRetiming(), DecoderThread_Flush(), and ModuleThread_PlayAudio().
void aout_DecGetResetStats | ( | audio_output_t * | aout, |
unsigned *restrict | lost, | ||
unsigned *restrict | played | ||
) |
References aout_owner(), aout_owner_t::buffers_lost, and aout_owner_t::buffers_played.
int aout_DecNew | ( | audio_output_t * | p_aout, |
const audio_sample_format_t * | p_format, | ||
int | profile, | ||
vlc_clock_t * | clock, | ||
const audio_replay_gain_t * | p_replay_gain | ||
) |
Creates an audio output.
References AOUT_CHAN_MAX, AOUT_FILTERS_CFG_INIT, aout_FiltersNewWithClock(), aout_FormatNbChannels(), aout_OutputDelete(), aout_OutputNew(), aout_owner(), AOUT_RESAMPLING_NONE, aout_volume_Delete(), aout_volume_New, aout_volume_SetFormat(), aout_owner_t::bitexact, aout_owner_t::buffers_lost, aout_owner_t::buffers_played, aout_owner_t::clock, aout_owner_t::delay, aout_owner_t::discontinuity, aout_owner_t::filter_format, aout_owner_t::filters, aout_owner_t::filters_cfg, audio_format_t::i_bitspersample, audio_format_t::i_channels, audio_format_t::i_format, audio_format_t::i_rate, INPUT_CHAN_MAX, aout_owner_t::input_format, aout_owner_t::input_profile, aout_owner_t::mixer_format, msg_Err, aout_owner_t::original_pts, aout_owner_t::rate, aout_owner_t::request_delay, aout_owner_t::resamp_type, aout_owner_t::restart, aout_owner_t::sync, aout_owner_t::update, VLC_OBJECT, VLC_TICK_INVALID, aout_owner_t::volume, and aout_owner_t::vp.
Referenced by ModuleThread_UpdateAudioFormat().
int aout_DecPlay | ( | audio_output_t * | aout, |
block_t * | block | ||
) |
References aout_CheckReady(), AOUT_DEC_FAILED, aout_DecSilence(), aout_DecSynchronize(), aout_FiltersChangeViewpoint(), aout_FiltersPlay(), aout_FiltersSetClockDelay(), aout_owner(), aout_volume_Amplify(), BLOCK_FLAG_DISCONTINUITY, block_Release(), aout_owner_t::buffers_lost, aout_owner_t::buffers_played, aout_owner_t::clock, aout_owner_t::delay, aout_owner_t::discontinuity, aout_owner_t::filters, block_t::i_flags, block_t::i_length, block_t::i_nb_samples, block_t::i_pts, audio_format_t::i_rate, aout_owner_t::input_format, aout_owner_t::lock, aout_owner_t::original_pts, audio_output::play, aout_owner_t::rate, aout_owner_t::request_delay, aout_owner_t::sync, unlikely, aout_owner_t::update, aout_owner_t::value, vlc_clock_ConvertToSystem(), vlc_clock_SetDelay(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_tick_from_samples(), VLC_TICK_INVALID, vlc_tick_now(), aout_owner_t::volume, and aout_owner_t::vp.
Referenced by ModuleThread_PlayAudio().
|
static |
References aout_owner(), block_Alloc(), aout_owner_t::clock, block_t::i_buffer, audio_format_t::i_bytes_per_frame, block_t::i_dts, audio_format_t::i_frame_length, block_t::i_length, block_t::i_nb_samples, block_t::i_pts, audio_format_t::i_rate, aout_owner_t::mixer_format, msg_Dbg, block_t::p_buffer, audio_output::play, aout_owner_t::rate, samples_from_vlc_tick(), aout_owner_t::sync, unlikely, vlc_clock_ConvertToSystem(), and vlc_tick_now().
Referenced by aout_DecPlay(), aout_DecSynchronize(), and aout_RequestRetiming().
|
static |
Depending on the drift between the actual and intended playback times, the audio core may ignore the drift, trigger upsampling or downsampling, insert silence or even discard samples. Future VLC versions may instead adjust the input rate.
The audio output plugin is responsible for estimating its actual playback time, or rather the estimated time when the next sample will be played. (The actual playback time is always the current time, that is to say vlc_tick_now(). It is not an useful statistic.)
Most audio output plugins can estimate the delay until playback of the next sample to be written to the buffer, or equally the time until all samples in the buffer will have been played. Then: pts = vlc_tick_now() + delay
References aout_DecSilence(), aout_owner(), aout_RequestRetiming(), aout_owner_t::clock, aout_owner_t::discontinuity, aout_owner_t::rate, aout_owner_t::sync, audio_output::time_get, and vlc_clock_ConvertToSystem().
Referenced by aout_DecPlay(), and aout_StopResampling().
|
static |
References audio_output::drain, audio_output::time_get, and vlc_tick_sleep.
Referenced by aout_DecDrain().
void aout_RequestRestart | ( | audio_output_t * | aout, |
unsigned | mode | ||
) |
Marks the audio output for restart, to update any parameter of the output plug-in (e.g.
output device or channel mapping).
References aout_owner(), msg_Dbg, and aout_owner_t::restart.
Referenced by aout_InputRequestRestart(), and aout_RestartNotify().
void aout_RequestRetiming | ( | audio_output_t * | aout, |
vlc_tick_t | system_ts, | ||
vlc_tick_t | audio_ts | ||
) |
References aout_DecFlush(), aout_DecSilence(), aout_FiltersAdjustResampling(), aout_FiltersCanResample(), AOUT_MAX_PTS_ADVANCE, AOUT_MAX_PTS_DELAY, aout_owner(), AOUT_RESAMPLING_DOWN, AOUT_RESAMPLING_NONE, AOUT_RESAMPLING_UP, aout_StopResampling(), aout_owner_t::bitexact, aout_owner_t::clock, aout_owner_t::discontinuity, aout_owner_t::filters, msg_Dbg, msg_Warn, aout_owner_t::rate, aout_owner_t::resamp_start_drift, aout_owner_t::resamp_type, aout_owner_t::sync, unlikely, and vlc_clock_Update().
Referenced by aout_DecSynchronize(), and aout_TimingNotify().
|
static |
References aout_DecSynchronize(), aout_FiltersAdjustResampling(), aout_owner(), AOUT_RESAMPLING_NONE, aout_owner_t::filters, aout_owner_t::resamp_type, and aout_owner_t::sync.
Referenced by aout_RequestRetiming().