X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Faudio_output.h;h=ae509b2ad90446f400070cbd64266d667d85b0cb;hb=7d1a488740c956a09631ada028556a0e7ca1b4af;hp=5e20a08660f4f6f5c6aaf8042171814ea483bfba;hpb=6ef66c8b5ea671979c02119cb88beb489dcc0519;p=vlc diff --git a/include/audio_output.h b/include/audio_output.h index 5e20a08660..ae509b2ad9 100644 --- a/include/audio_output.h +++ b/include/audio_output.h @@ -1,8 +1,8 @@ /***************************************************************************** * audio_output.h : audio output interface ***************************************************************************** - * Copyright (C) 2002 VideoLAN - * $Id: audio_output.h,v 1.76 2003/02/02 00:57:20 jobi Exp $ + * Copyright (C) 2002-2005 VideoLAN + * $Id$ * * Authors: Christophe Massiot * @@ -20,33 +20,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. *****************************************************************************/ +#ifndef _VLC_AUDIO_OUTPUT_H +#define _VLC_AUDIO_OUTPUT_H 1 -/***************************************************************************** - * audio_sample_format_t - ***************************************************************************** - * This structure defines a format for audio samples. - *****************************************************************************/ -struct audio_sample_format_t -{ - vlc_fourcc_t i_format; - unsigned int i_rate; - /* Describes the channels configuration of the samples (ie. number of - * channels which are available in the buffer, and positions). */ - uint32_t i_physical_channels; - /* Describes from which original channels, before downmixing, the - * buffer is derived. */ - uint32_t i_original_channels; - /* Optional - for A/52, SPDIF and DTS types : */ - /* Bytes used by one compressed frame, depends on bitrate. */ - unsigned int i_bytes_per_frame; - /* Number of sampleframes contained in one compressed frame. */ - unsigned int i_frame_length; - /* Please note that it may be completely arbitrary - buffers are not - * obliged to contain a integral number of so-called "frames". It's - * just here for the division : - * buffer_size = i_nb_samples * i_bytes_per_frame / i_frame_length - */ -}; +#include "vlc_es.h" #define AOUT_FMTS_IDENTICAL( p_first, p_second ) ( \ ((p_first)->i_format == (p_second)->i_format) \ @@ -63,14 +40,13 @@ struct audio_sample_format_t #ifdef WORDS_BIGENDIAN # define AOUT_FMT_S16_NE VLC_FOURCC('s','1','6','b') # define AOUT_FMT_U16_NE VLC_FOURCC('u','1','6','b') +# define AOUT_FMT_S24_NE VLC_FOURCC('s','2','4','b') #else # define AOUT_FMT_S16_NE VLC_FOURCC('s','1','6','l') # define AOUT_FMT_U16_NE VLC_FOURCC('u','1','6','l') +# define AOUT_FMT_S24_NE VLC_FOURCC('s','2','4','l') #endif -#define AFMT_S16_NE AOUT_FMT_S16_NE -#define AFMT_U16_NE AOUT_FMT_U16_NE - #define AOUT_FMT_NON_LINEAR( p_format ) \ ( ((p_format)->i_format == VLC_FOURCC('s','p','d','i')) \ || ((p_format)->i_format == VLC_FOURCC('a','5','2',' ')) \ @@ -114,7 +90,9 @@ typedef int32_t vlc_fixed_t; #define AOUT_CHAN_REARCENTER 0x10 #define AOUT_CHAN_REARLEFT 0x20 #define AOUT_CHAN_REARRIGHT 0x40 -#define AOUT_CHAN_LFE 0x100 +#define AOUT_CHAN_MIDDLELEFT 0x100 +#define AOUT_CHAN_MIDDLERIGHT 0x200 +#define AOUT_CHAN_LFE 0x1000 /* Values available for original channels only */ #define AOUT_CHAN_DOLBYSTEREO 0x10000 @@ -122,7 +100,23 @@ typedef int32_t vlc_fixed_t; #define AOUT_CHAN_REVERSESTEREO 0x40000 #define AOUT_CHAN_PHYSMASK 0xFFFF - +#define AOUT_CHAN_MAX 9 + +/* Values used for the audio-device and audio-channels object variables */ +#define AOUT_VAR_MONO 1 +#define AOUT_VAR_STEREO 2 +#define AOUT_VAR_2F2R 4 +#define AOUT_VAR_3F2R 5 +#define AOUT_VAR_5_1 6 +#define AOUT_VAR_6_1 7 +#define AOUT_VAR_7_1 8 +#define AOUT_VAR_SPDIF 10 + +#define AOUT_VAR_CHAN_STEREO 1 +#define AOUT_VAR_CHAN_RSTEREO 2 +#define AOUT_VAR_CHAN_LEFT 3 +#define AOUT_VAR_CHAN_RIGHT 4 +#define AOUT_VAR_CHAN_DOLBYS 5 /***************************************************************************** * aout_buffer_t : audio output buffer @@ -138,6 +132,13 @@ struct aout_buffer_t mtime_t start_date, end_date; struct aout_buffer_t * p_next; + + /** Private data (aout_buffer_t will disappear soon so no need for an + * aout_buffer_sys_t type) */ + void * p_sys; + + /** This way the release can be overloaded */ + void (*pf_release)( aout_buffer_t * ); }; /* Size of a frame for S/PDIF output. */ @@ -169,6 +170,9 @@ VLC_EXPORT( void, aout_DateMove, ( audio_date_t *, mtime_t ) ); VLC_EXPORT( mtime_t, aout_DateGet, ( const audio_date_t * ) ); VLC_EXPORT( mtime_t, aout_DateIncrement, ( audio_date_t *, uint32_t ) ); +VLC_EXPORT( int, aout_CheckChannelReorder, ( const uint32_t *, const uint32_t *, uint32_t, int, int * ) ); +VLC_EXPORT( void, aout_ChannelReorder, ( uint8_t *, int, int, const int *, int ) ); + /* From dec.c : */ #define aout_DecNew(a, b, c) __aout_DecNew(VLC_OBJECT(a), b, c) VLC_EXPORT( aout_input_t *, __aout_DecNew, ( vlc_object_t *, aout_instance_t **, audio_sample_format_t * ) ); @@ -178,13 +182,20 @@ VLC_EXPORT( void, aout_DecDeleteBuffer, ( aout_instance_t *, aout_input_t *, aou VLC_EXPORT( int, aout_DecPlay, ( aout_instance_t *, aout_input_t *, aout_buffer_t * ) ); /* From intf.c : */ -VLC_EXPORT( int, aout_VolumeGet, ( aout_instance_t *, audio_volume_t * ) ); -VLC_EXPORT( int, aout_VolumeSet, ( aout_instance_t *, audio_volume_t ) ); -VLC_EXPORT( int, aout_VolumeInfos, ( aout_instance_t *, audio_volume_t * ) ); -VLC_EXPORT( int, aout_VolumeUp, ( aout_instance_t *, int, audio_volume_t * ) ); -VLC_EXPORT( int, aout_VolumeDown, ( aout_instance_t *, int, audio_volume_t * ) ); -VLC_EXPORT( int, aout_VolumeMute, ( aout_instance_t *, audio_volume_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_Restart, ( aout_instance_t * p_aout ) ); -VLC_EXPORT( void, aout_FindAndRestart, ( vlc_object_t * p_this ) ); +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 * ) ); +#endif /* _VLC_AUDIO_OUTPUT_H */