summaryrefslogtreecommitdiffstats
path: root/libao2/ao_alsa.c
diff options
context:
space:
mode:
authorhenry <henry@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-06-11 15:20:49 +0000
committerhenry <henry@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-06-11 15:20:49 +0000
commitdf2e49d51cab067efabe963b965c83571494bc18 (patch)
tree5da265e8eef71c92a8252ecdb52374a87106802c /libao2/ao_alsa.c
parent767ba9392943d4f85e0bff56412af0e9ff90093c (diff)
downloadmpv-df2e49d51cab067efabe963b965c83571494bc18.tar.bz2
mpv-df2e49d51cab067efabe963b965c83571494bc18.tar.xz
additional formats - 8bit & float
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12571 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2/ao_alsa.c')
-rw-r--r--libao2/ao_alsa.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c
index 37ee750c6f..44b6fec022 100644
--- a/libao2/ao_alsa.c
+++ b/libao2/ao_alsa.c
@@ -275,6 +275,9 @@ static int init(int rate_hz, int channels, int format, int flags)
case AFMT_S32_BE:
alsa_format = SND_PCM_FORMAT_S32_BE;
break;
+ case AFMT_FLOAT:
+ alsa_format = SND_PCM_FORMAT_FLOAT_LE;
+ break;
default:
alsa_format = SND_PCM_FORMAT_MPEG; //? default should be -1
@@ -285,12 +288,17 @@ static int init(int rate_hz, int channels, int format, int flags)
//u16_le so 32bit is probably obsolet.
switch(alsa_format)
{
+ case SND_PCM_FORMAT_S8:
+ case SND_PCM_FORMAT_U8:
+ ao_data.bps *= 1;
+ break;
case SND_PCM_FORMAT_S16_LE:
case SND_PCM_FORMAT_U16_LE:
ao_data.bps *= 2;
break;
case SND_PCM_FORMAT_S32_LE:
case SND_PCM_FORMAT_S32_BE:
+ case SND_PCM_FORMAT_FLOAT_LE:
ao_data.bps *= 4;
break;
case -1:
@@ -364,12 +372,19 @@ static int init(int rate_hz, int channels, int format, int flags)
mp_msg(MSGT_AO,MSGL_V,"alsa-init: setup for 1/2 channel(s)\n");
break;
case 4:
- strcpy(devstr, "surround40");
+ if (alsa_format == SND_PCM_FORMAT_FLOAT_LE)
+ // hack - use the converter plugin
+ strcpy(devstr, "plug:surround40");
+ else
+ strcpy(devstr, "surround40");
alsa_device = devstr;
mp_msg(MSGT_AO,MSGL_V,"alsa-init: device set to surround40\n");
break;
case 6:
- strcpy(devstr, "surround51");
+ if (alsa_format == SND_PCM_FORMAT_FLOAT_LE)
+ strcpy(devstr, "plug:surround51");
+ else
+ strcpy(devstr, "surround51");
alsa_device = devstr;
mp_msg(MSGT_AO,MSGL_V,"alsa-init: device set to surround51\n");
break;