ao_null: Make duration of "buffered" audio constant

Choose the "buffer size" for the amount of audio the driver accepts so
that it corresponds to about 0.2 seconds of playback based on the
number of channels, sample size and samplerate.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25222 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
uau 2007-12-01 01:39:39 +00:00
parent 32b9034e23
commit 7e5c327c5a
1 changed files with 5 additions and 5 deletions

View File

@ -50,14 +50,14 @@ static int control(int cmd,void *arg){
// return: 1=success 0=fail
static int init(int rate,int channels,int format,int flags){
ao_data.buffersize= 16384*channels;
ao_data.outburst=512*channels;
int samplesize = (format == AF_FORMAT_U8 || format == AF_FORMAT_S8) ? 1: 2;
ao_data.outburst = 256 * channels * samplesize;
// A "buffer" for about 0.2 seconds of audio
ao_data.buffersize = (int)(rate * 0.2 / 256 + 1) * ao_data.outburst;
ao_data.channels=channels;
ao_data.samplerate=rate;
ao_data.format=format;
ao_data.bps=channels*rate;
if (format != AF_FORMAT_U8 && format != AF_FORMAT_S8)
ao_data.bps*=2;
ao_data.bps=channels*rate*samplesize;
buffer=0;
gettimeofday(&last_tv, 0);