#define AOUT_FMTS_IDENTICAL( p_first, p_second ) ( \
((p_first)->i_format == (p_second)->i_format) \
- && ((p_first)->i_rate == (p_second)->i_rate) \
- && ((p_first)->i_physical_channels == (p_second)->i_physical_channels)\
- && ((p_first)->i_original_channels == (p_second)->i_original_channels) )
+ && AOUT_FMTS_SIMILAR(p_first, p_second) )
/* Check if i_rate == i_rate and i_channels == i_channels */
#define AOUT_FMTS_SIMILAR( p_first, p_second ) ( \
* Main audio output structures
*****************************************************************************/
-/** audio output buffer */
-struct aout_buffer_t
-{
- uint8_t * p_buffer;
- /* i_size is the real size of the buffer (used for debug ONLY), i_nb_bytes
- * is the number of significative bytes in it. */
- size_t i_size, i_nb_bytes;
- unsigned int i_nb_samples;
- uint32_t i_flags;
- mtime_t i_pts, i_length;
-
- struct aout_buffer_t * p_next;
- void *p_sys;
-};
-
-static inline void aout_BufferFree( aout_buffer_t *buffer )
-{
- free( buffer );
-}
+#define aout_BufferFree( buffer ) block_Release( buffer )
/* Size of a frame for S/PDIF output. */
#define AOUT_SPDIF_SIZE 6144
/* FIXME to remove once aout.h is cleaned a bit more */
#include <vlc_aout_mixer.h>
-
-/* */
-typedef struct
-{
- vout_thread_t *(*pf_request_vout)( void *,
- vout_thread_t *, video_format_t *, bool b_recycle );
- void *p_private;
-} aout_request_vout_t;
+#include <vlc_block.h>
/** audio output filter */
typedef struct aout_filter_owner_sys_t aout_filter_owner_sys_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;
+ es_format_t fmt_in;
+ es_format_t fmt_out;
+
+ aout_alloc_t output_alloc;
+
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;
};
bool b_starving;
/* post-filters */
- aout_filter_t * pp_filters[AOUT_MAX_FILTERS];
+ filter_t * pp_filters[AOUT_MAX_FILTERS];
int i_nb_filters;
aout_fifo_t fifo;
/* 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;
+ /* volume_vars_lock is taken */
+ vlc_mutex_t volume_vars_lock;
/* Input streams & pre-filters */
aout_input_t * pp_inputs[AOUT_MAX_INPUTS];
};
/**
- * It describes the audio channel order VLC except.
+ * It describes the audio channel order VLC expect.
*/
static const uint32_t pi_vlc_chan_order_wg4[] =
{
/* 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_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_ToggleMute(a, b) __aout_ToggleMute(VLC_OBJECT(a), b)
-VLC_EXPORT( int, __aout_ToggleMute, ( vlc_object_t *, audio_volume_t * ) );
+VLC_EXPORT( int, aout_VolumeGet, ( vlc_object_t *, audio_volume_t * ) );
+#define aout_VolumeGet(a, b) aout_VolumeGet(VLC_OBJECT(a), b)
+VLC_EXPORT( int, aout_VolumeSet, ( vlc_object_t *, audio_volume_t ) );
+#define aout_VolumeSet(a, b) aout_VolumeSet(VLC_OBJECT(a), b)
+VLC_EXPORT( int, aout_VolumeUp, ( vlc_object_t *, int, audio_volume_t * ) );
+#define aout_VolumeUp(a, b, c) aout_VolumeUp(VLC_OBJECT(a), b, c)
+VLC_EXPORT( int, aout_VolumeDown, ( vlc_object_t *, int, audio_volume_t * ) );
+#define aout_VolumeDown(a, b, c) aout_VolumeDown(VLC_OBJECT(a), b, c)
+VLC_EXPORT( int, aout_ToggleMute, ( vlc_object_t *, audio_volume_t * ) );
+#define aout_ToggleMute(a, b) aout_ToggleMute(VLC_OBJECT(a), b)
+VLC_EXPORT( int, aout_SetMute, ( vlc_object_t *, audio_volume_t *, bool ) );
+VLC_EXPORT( bool, aout_IsMuted, ( vlc_object_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 * ) );
aout_EnableFilter( VLC_OBJECT(o), n, b )
/* */
-VLC_EXPORT( vout_thread_t *, aout_filter_RequestVout, ( aout_filter_t *, vout_thread_t *p_vout, video_format_t *p_fmt ) );
+VLC_EXPORT( vout_thread_t *, aout_filter_RequestVout, ( filter_t *, vout_thread_t *p_vout, video_format_t *p_fmt ) LIBVLC_USED );
# ifdef __cplusplus
}