summaryrefslogtreecommitdiffstats
path: root/libao2/ao_alsa.c
diff options
context:
space:
mode:
authorcladisch <cladisch@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-02-10 09:18:27 +0000
committercladisch <cladisch@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-02-10 09:18:27 +0000
commit7bb5f4e13874f62dc5dd1b51cbc81bd5062584b5 (patch)
treec1438c573ae0da480ffcc18e30f9e21c14f59b02 /libao2/ao_alsa.c
parent3f6e7ce5f5eb9d87f01eec90e0361b2b58c53a8b (diff)
downloadmpv-7bb5f4e13874f62dc5dd1b51cbc81bd5062584b5.tar.bz2
mpv-7bb5f4e13874f62dc5dd1b51cbc81bd5062584b5.tar.xz
This replaces the hardcoded numbers for the sample format widths with a
call to snd_pcm_format_physical_width(). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17571 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2/ao_alsa.c')
-rw-r--r--libao2/ao_alsa.c34
1 files changed, 3 insertions, 31 deletions
diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c
index 402f89264f..a541448721 100644
--- a/libao2/ao_alsa.c
+++ b/libao2/ao_alsa.c
@@ -545,37 +545,9 @@ static int init(int rate_hz, int channels, int format, int flags)
return(0);
}
- ao_data.bps = ao_data.channels * ao_data.samplerate;
-
- //setting bw according to the input-format. resolution seems to be always s16_le or
- //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:
- case SND_PCM_FORMAT_S16_BE:
- case SND_PCM_FORMAT_U16_BE:
- 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:
- mp_msg(MSGT_AO,MSGL_ERR,"alsa-init: invalid format (%s) requested - output disabled\n",af_fmt2str_short(format));
- return(0);
- break;
- default:
- ao_data.bps *= 2;
- mp_msg(MSGT_AO,MSGL_WARN,"alsa-init: couldn't convert to right format. setting bps to: %d", ao_data.bps);
- }
-
- bytes_per_sample = ao_data.bps / ao_data.samplerate;
+ bytes_per_sample = snd_pcm_format_physical_width(alsa_format) / 8;
+ bytes_per_sample *= ao_data.channels;
+ ao_data.bps = ao_data.samplerate * bytes_per_sample;
#ifdef BUFFERTIME
{