diff options
author | henry <henry@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-06-11 15:20:49 +0000 |
---|---|---|
committer | henry <henry@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-06-11 15:20:49 +0000 |
commit | df2e49d51cab067efabe963b965c83571494bc18 (patch) | |
tree | 5da265e8eef71c92a8252ecdb52374a87106802c /libao2/ao_alsa.c | |
parent | 767ba9392943d4f85e0bff56412af0e9ff90093c (diff) | |
download | mpv-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.c | 19 |
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; |