summaryrefslogtreecommitdiff
path: root/src/audio_out/audio_oss_out.c
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-07-01 13:51:26 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-07-01 13:51:26 +0000
commit152d605773745cf59f89a3575ed0aed3c8bd5b2e (patch)
treec9aed4af04b8293b45ed770aba10a87641dc90c7 /src/audio_out/audio_oss_out.c
parentcd0b9cf91b6b7f14c085c2fc9f564ccfb65203b0 (diff)
downloadxine-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/audio_out/audio_oss_out.c')
-rw-r--r--src/audio_out/audio_oss_out.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/audio_out/audio_oss_out.c b/src/audio_out/audio_oss_out.c
index dedff1aa4..af1264a7a 100644
--- a/src/audio_out/audio_oss_out.c
+++ b/src/audio_out/audio_oss_out.c
@@ -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_oss_out.c,v 1.69 2002/06/13 18:36:26 tmattern Exp $
+ * $Id: audio_oss_out.c,v 1.70 2002/07/01 13:51:27 miguelfreitas Exp $
*
* 20-8-2001 First implementation of Audio sync and Audio driver separation.
* Copyright (C) 2001 James Courtier-Dutton James@superbug.demon.co.uk
@@ -622,7 +622,7 @@ ao_driver_t *init_audio_out_plugin (config_values_t *config) {
int rate ;
int devnum;
int audio_fd;
- int num_channels, status, arg;
+ int num_channels, bits, status, arg;
static char *sync_methods[] = {"auto", "getodelay", "getoptr", "softsync", "probebuffer", NULL};
this = (oss_driver_t *) malloc (sizeof (oss_driver_t));
@@ -775,7 +775,11 @@ ao_driver_t *init_audio_out_plugin (config_values_t *config) {
NULL, NULL);
this->capabilities = 0;
-
+
+ bits = 8;
+ if( ioctl(audio_fd, SNDCTL_DSP_SAMPLESIZE,&bits) != -1 )
+ this->capabilities |= AO_CAP_8BITS;
+
printf ("audio_oss_out : supported modes are ");
num_channels = 1;
status = ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &num_channels);