Index: libs/libmyth/audiooutputalsa.cpp
===================================================================
--- libs/libmyth/audiooutputalsa.cpp (revision 16437)
+++ libs/libmyth/audiooutputalsa.cpp (working copy)
@@ -129,7 +131,8 @@
// make us think that soundcard buffer is 4 fragments smaller than
// it really is
- audio_buffer_unused = soundcard_buffer_size - (fragment_size * 4);
+ //audio_buffer_unused = soundcard_buffer_size - (fragment_size * 4);
+ audio_buffer_unused = (fragment_size * 4);
if (internal_vol)
OpenMixer(set_initial_vol);
The only real use of audio_buffer_unused seems to be in
AudioOutputALSA::getSpaceOnSoundcard().
It looks odd without the above change, the space returned will always be too small?
inline int AudioOutputALSA::getSpaceOnSoundcard(void)
{
if (pcm_handle == NULL)
{
VERBOSE(VB_IMPORTANT, QString("getSpaceOnSoundcard() called with pcm_handle == NULL!"));
return 0;
}
snd_pcm_sframes_t avail, delay;
snd_pcm_state_t state = snd_pcm_state(pcm_handle);
if (state == SND_PCM_STATE_RUNNING ||
state == SND_PCM_STATE_DRAINING)
{
snd_pcm_delay(pcm_handle, &delay);
}
avail = snd_pcm_avail_update(pcm_handle);
if (avail < 0 ||
(snd_pcm_uframes_t)avail > (snd_pcm_uframes_t)soundcard_buffer_size)
avail = soundcard_buffer_size;
int space = (avail * audio_bytes_per_sample) - audio_buffer_unused;
if (space < 0)
space = 0;
return space;
}