?? vlc_aout.h
字號:
vout_thread_t *, video_format_t * ); void *p_private;} aout_request_vout_t;/** audio output filter */typedef struct aout_filter_owner_sys_t aout_filter_owner_sys_t;typedef struct aout_filter_sys_t aout_filter_sys_t;struct aout_filter_t{ VLC_COMMON_MEMBERS audio_sample_format_t input; audio_sample_format_t output; aout_alloc_t output_alloc; module_t * p_module; aout_filter_sys_t *p_sys; bool b_in_place; bool b_continuity; void (*pf_do_work)( aout_instance_t *, aout_filter_t *, aout_buffer_t *, aout_buffer_t * ); /* Owner fieldS * XXX You MUST not use them directly */ /* Vout callback * XXX use aout_filter_RequestVout */ aout_request_vout_t request_vout; /* Private structure for the owner of the filter */ aout_filter_owner_sys_t *p_owner;};#define AOUT_RESAMPLING_NONE 0#define AOUT_RESAMPLING_UP 1#define AOUT_RESAMPLING_DOWN 2/** 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; aout_fifo_t fifo; /* Mixer information */ uint8_t * p_first_byte_to_mix; audio_replay_gain_t replay_gain; float f_multiplier; /* 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; /* */ aout_request_vout_t request_vout; };/** an output stream for the audio output */typedef struct aout_output_t{ audio_sample_format_t output; /* Indicates whether the audio output is currently starving, to avoid * printing a 1,000 "output is starving" messages. */ bool b_starving; /* post-filters */ aout_filter_t * pp_filters[AOUT_MAX_FILTERS]; int i_nb_filters; aout_fifo_t fifo; struct module_t * p_module; struct aout_sys_t * p_sys; void (* pf_play)( aout_instance_t * ); int (* pf_volume_get )( aout_instance_t *, audio_volume_t * ); int (* pf_volume_set )( aout_instance_t *, audio_volume_t ); int (* pf_volume_infos )( aout_instance_t *, audio_volume_t * ); int i_nb_samples; /* Current volume for the output - it's just a placeholder, the plug-in * may or may not use it. */ audio_volume_t i_volume; /* If b_error == 1, there is no audio output pipeline. */ bool b_error;} aout_output_t;/** audio output thread descriptor */struct aout_instance_t{ VLC_COMMON_MEMBERS /* Locks : please note that if you need several of these locks, it is * mandatory (to avoid deadlocks) to take them in the following order : * mixer_lock, p_input->lock, output_fifo_lock, input_fifos_lock. * --Meuuh */ /* When input_fifos_lock is taken, none of the p_input->fifo structures * can be read or modified by a third-party thread. */ vlc_mutex_t input_fifos_lock; /* When mixer_lock is taken, all decoder threads willing to mix a * buffer must wait until it is released. The output pipeline cannot * be modified. No input stream can be added or removed. */ vlc_mutex_t mixer_lock; /* When output_fifo_lock is taken, the p_aout->output.fifo structure * cannot be read or written by a third-party thread. */ vlc_mutex_t output_fifo_lock; /* Input streams & pre-filters */ aout_input_t * pp_inputs[AOUT_MAX_INPUTS]; int i_nb_inputs; /* Mixer */ aout_mixer_t mixer; /* Output plug-in */ aout_output_t output;};/** * It describes the audio channel order VLC except. */static const uint32_t pi_vlc_chan_order_wg4[] ={ AOUT_CHAN_LEFT, AOUT_CHAN_RIGHT, AOUT_CHAN_MIDDLELEFT, AOUT_CHAN_MIDDLERIGHT, AOUT_CHAN_REARLEFT, AOUT_CHAN_REARRIGHT, AOUT_CHAN_REARCENTER, AOUT_CHAN_CENTER, AOUT_CHAN_LFE, 0};/***************************************************************************** * Prototypes *****************************************************************************//* From common.c : */VLC_EXPORT( void, aout_DateInit, ( audio_date_t *, uint32_t ) );VLC_EXPORT( void, aout_DateSet, ( audio_date_t *, mtime_t ) );VLC_EXPORT( void, aout_DateMove, ( audio_date_t *, mtime_t ) );VLC_EXPORT( mtime_t, aout_DateGet, ( const audio_date_t * ) LIBVLC_USED);VLC_EXPORT( mtime_t, aout_DateIncrement, ( audio_date_t *, uint32_t ) );VLC_EXPORT( aout_buffer_t *, aout_OutputNextBuffer, ( aout_instance_t *, mtime_t, bool ) LIBVLC_USED );/** * This function computes the reordering needed to go from pi_chan_order_in to * pi_chan_order_out. * If pi_chan_order_in or pi_chan_order_out is NULL, it will assume that vlc * internal (WG4) order is requested. */VLC_EXPORT( int, aout_CheckChannelReorder, ( const uint32_t *pi_chan_order_in, const uint32_t *pi_chan_order_out, uint32_t i_channel_mask, int i_channels, int *pi_chan_table ) );VLC_EXPORT( void, aout_ChannelReorder, ( uint8_t *, int, int, const int *, int ) );VLC_EXPORT( unsigned int, aout_FormatNbChannels, ( const audio_sample_format_t * p_format ) LIBVLC_USED );VLC_EXPORT( unsigned int, aout_BitsPerSample, ( vlc_fourcc_t i_format ) LIBVLC_USED );VLC_EXPORT( void, aout_FormatPrepare, ( audio_sample_format_t * p_format ) );VLC_EXPORT( void, aout_FormatPrint, ( aout_instance_t * p_aout, const char * psz_text, const audio_sample_format_t * p_format ) );VLC_EXPORT( const char *, aout_FormatPrintChannels, ( const audio_sample_format_t * ) LIBVLC_USED );VLC_EXPORT( mtime_t, aout_FifoFirstDate, ( aout_instance_t *, aout_fifo_t * ) LIBVLC_USED );VLC_EXPORT( aout_buffer_t *, aout_FifoPop, ( aout_instance_t * p_aout, aout_fifo_t * p_fifo ) LIBVLC_USED );/* From intf.c : */VLC_EXPORT( void, aout_VolumeSoftInit, ( aout_instance_t * ) );VLC_EXPORT( void, aout_VolumeNoneInit, ( aout_instance_t * ) );#define aout_VolumeGet(a, b) __aout_VolumeGet(VLC_OBJECT(a), b)VLC_EXPORT( int, __aout_VolumeGet, ( vlc_object_t *, audio_volume_t * ) );#define aout_VolumeSet(a, b) __aout_VolumeSet(VLC_OBJECT(a), b)VLC_EXPORT( int, __aout_VolumeSet, ( vlc_object_t *, audio_volume_t ) );#define aout_VolumeInfos(a, b) __aout_VolumeInfos(VLC_OBJECT(a), b)VLC_EXPORT( int, __aout_VolumeInfos, ( vlc_object_t *, audio_volume_t * ) );#define aout_VolumeUp(a, b, c) __aout_VolumeUp(VLC_OBJECT(a), b, c)VLC_EXPORT( int, __aout_VolumeUp, ( vlc_object_t *, int, audio_volume_t * ) );#define aout_VolumeDown(a, b, c) __aout_VolumeDown(VLC_OBJECT(a), b, c)VLC_EXPORT( int, __aout_VolumeDown, ( vlc_object_t *, int, audio_volume_t * ) );#define aout_VolumeMute(a, b) __aout_VolumeMute(VLC_OBJECT(a), b)VLC_EXPORT( int, __aout_VolumeMute, ( vlc_object_t *, audio_volume_t * ) );VLC_EXPORT( int, aout_FindAndRestart, ( vlc_object_t *, const char *, vlc_value_t, vlc_value_t, void * ) );VLC_EXPORT( int, aout_ChannelsRestart, ( vlc_object_t *, const char *, vlc_value_t, vlc_value_t, void * ) );VLC_EXPORT( void, aout_EnableFilter, (vlc_object_t *, const char *, bool ));#define aout_VisualNext(a) aout_VisualChange( VLC_OBJECT(a),1 )#define aout_VisualPrev(a) aout_VisualChange( VLC_OBJECT(a),-1 )VLC_EXPORT( char *, aout_VisualChange, (vlc_object_t *, int ) );/* */VLC_EXPORT( vout_thread_t *, aout_filter_RequestVout, ( aout_filter_t *, vout_thread_t *p_vout, video_format_t *p_fmt ) );# ifdef __cplusplus}# endif#endif /* _VLC_AOUT_H */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -