X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Faudio_output%2Faout_internal.h;h=d18929a234ba5362d7a0a80dcefda5be46d01851;hb=9f700867b29ee5c137c7c1b118eae35b7784c1fd;hp=9ac424275532afa8dc0b7bdbf1293d92a325351c;hpb=20aa3c15801a8639070a87b5bbe3958e1d6654aa;p=vlc diff --git a/src/audio_output/aout_internal.h b/src/audio_output/aout_internal.h index 9ac4242755..d18929a234 100644 --- a/src/audio_output/aout_internal.h +++ b/src/audio_output/aout_internal.h @@ -81,11 +81,71 @@ /* else printf("%s:%d\n", __FILE__, __LINE__); */ \ } +struct aout_filter_owner_sys_t +{ + aout_instance_t *p_aout; + aout_input_t *p_input; +}; + +/** an input stream for the audio output */ +struct aout_input_t +{ + /* When this lock is taken, the pipeline cannot be changed by a + * third-party. */ + vlc_mutex_t lock; + + audio_sample_format_t input; + aout_alloc_t input_alloc; + + /* pre-filters */ + aout_filter_t * pp_filters[AOUT_MAX_FILTERS]; + int i_nb_filters; + + aout_filter_t * p_playback_rate_filter; + + /* resamplers */ + aout_filter_t * pp_resamplers[AOUT_MAX_FILTERS]; + int i_nb_resamplers; + int i_resampling_type; + mtime_t i_resamp_start_date; + int i_resamp_start_drift; + + /* Mixer information */ + audio_replay_gain_t replay_gain; + + /* If b_restart == 1, the input pipeline will be re-created. */ + bool b_restart; + + /* If b_error == 1, there is no input pipeline. */ + bool b_error; + + /* Did we just change the output format? (expect buffer inconsistencies) */ + bool b_changed; + + /* last rate from input */ + int i_last_input_rate; + + /* */ + int i_buffer_lost; + + /* */ + bool b_paused; + mtime_t i_pause_date; + + /* */ + bool b_recycle_vout; + aout_request_vout_t request_vout; + + /* */ + aout_mixer_input_t mixer; + }; + /**************************************************************************** * Prototypes *****************************************************************************/ + /* From input.c : */ -int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input ); +int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input, const aout_request_vout_t * ); int aout_InputDelete( aout_instance_t * p_aout, aout_input_t * p_input ); int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input, aout_buffer_t * p_buffer, int i_input_rate ); @@ -133,8 +193,10 @@ int aout_VolumeNoneSet( aout_instance_t *, audio_volume_t ); int aout_VolumeNoneInfos( aout_instance_t *, audio_volume_t * ); /* From dec.c */ -#define aout_DecNew(a, b, c, d) __aout_DecNew(VLC_OBJECT(a), b, c, d) -aout_input_t * __aout_DecNew( vlc_object_t *, aout_instance_t **, audio_sample_format_t *, audio_replay_gain_t * ); +#define aout_DecNew(a, b, c, d, e) __aout_DecNew(VLC_OBJECT(a), b, c, d, e) +aout_input_t * __aout_DecNew( vlc_object_t *, aout_instance_t **, + audio_sample_format_t *, const audio_replay_gain_t *, + const aout_request_vout_t * ); int aout_DecDelete ( aout_instance_t *, aout_input_t * ); aout_buffer_t * aout_DecNewBuffer( aout_input_t *, size_t ); void aout_DecDeleteBuffer( aout_instance_t *, aout_input_t *, aout_buffer_t * );