diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-07-01 13:51:26 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-07-01 13:51:26 +0000 |
commit | 152d605773745cf59f89a3575ed0aed3c8bd5b2e (patch) | |
tree | c9aed4af04b8293b45ed770aba10a87641dc90c7 /src/xine-engine/audio_out.h | |
parent | cd0b9cf91b6b7f14c085c2fc9f564ccfb65203b0 (diff) | |
download | xine-lib-152d605773745cf59f89a3575ed0aed3c8bd5b2e.tar.gz xine-lib-152d605773745cf59f89a3575ed0aed3c8bd5b2e.tar.bz2 |
improved audio resampling for limited featured sound cards (like the ones found in
laptops, supporting only 16 bits, only stereo etc). as added bonus of new "stackable"
conversion scheme fixes resampling for 8 bit streams.
(thanks Damien Clermonté for discussion and ideas)
note1: alsa patch untested.
note2: pass-through untested.
CVS patchset: 2187
CVS date: 2002/07/01 13:51:26
Diffstat (limited to 'src/xine-engine/audio_out.h')
-rw-r--r-- | src/xine-engine/audio_out.h | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/xine-engine/audio_out.h b/src/xine-engine/audio_out.h index 1cb4baade..d7a345ac9 100644 --- a/src/xine-engine/audio_out.h +++ b/src/xine-engine/audio_out.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_out.h,v 1.30 2002/05/24 12:23:58 miguelfreitas Exp $ + * $Id: audio_out.h,v 1.31 2002/07/01 13:51:28 miguelfreitas Exp $ */ #ifndef HAVE_AUDIO_OUT_H #define HAVE_AUDIO_OUT_H @@ -148,6 +148,14 @@ struct audio_buffer_s { uint32_t first_access_unit; }; +typedef struct ao_format_s ao_format_t; + +struct ao_format_s { + uint32_t bits; + uint32_t rate; + int mode; +}; + typedef struct ao_instance_s ao_instance_t; struct ao_instance_s { @@ -207,20 +215,19 @@ struct ao_instance_s { int audio_step; /* pts per 32 768 samples (sample = #bytes/2) */ int32_t frames_per_kpts; /* frames per 1024/90000 sec */ - int32_t output_frame_rate, input_frame_rate; + + ao_format_t input, output; /* format conversion done at audio_out.c */ double frame_rate_factor; - uint32_t num_channels; - int64_t last_audio_vpts; + int resample_conf; int force_rate; /* force audio output rate to this value if non-zero */ int do_resample; - int mode; - int bits; int gap_tolerance; audio_fifo_t *free_fifo; audio_fifo_t *out_fifo; - uint16_t *frame_buffer; - uint32_t frame_buffer_size; + int64_t last_audio_vpts; + + audio_buffer_t *frame_buf[2]; /* two buffers for "stackable" conversions */ int16_t *zero_space; }; @@ -263,6 +270,7 @@ ao_instance_t *ao_new_instance (ao_driver_t *driver, xine_t *xine) ; #define AO_CAP_MIXER_VOL 0x00000080 /* driver supports mixer control */ #define AO_CAP_PCM_VOL 0x00000100 /* driver supports pcm control */ #define AO_CAP_MUTE_VOL 0x00000200 /* driver can mute volume */ +#define AO_CAP_8BITS 0x00000400 /* driver support 8-bit samples */ /* properties supported by get/set_property() */ #define AO_PROP_MIXER_VOL 0 |