Browse Source

Merge pull request #18215 from marcelofg55/pulseaudio_latency

Fixed high cpu usage with PulseAudio
Rémi Verschelde 7 years ago
parent
commit
3d12d38d16
1 changed files with 5 additions and 1 deletions
  1. 5 1
      drivers/pulseaudio/audio_driver_pulseaudio.cpp

+ 5 - 1
drivers/pulseaudio/audio_driver_pulseaudio.cpp

@@ -177,7 +177,11 @@ Error AudioDriverPulseAudio::init_device() {
 
 
 	pa_buffer_attr attr;
 	pa_buffer_attr attr;
 	// set to appropriate buffer length (in bytes) from global settings
 	// set to appropriate buffer length (in bytes) from global settings
-	attr.tlength = pa_buffer_size * sizeof(int16_t);
+	// Note: PulseAudio defaults to 4 fragments, which means that the actual
+	// latency is tlength / fragments. It seems that the PulseAudio has no way
+	// to get the fragments number so we're hardcoding this to the default of 4
+	const int fragments = 4;
+	attr.tlength = pa_buffer_size * sizeof(int16_t) * fragments;
 	// set them to be automatically chosen
 	// set them to be automatically chosen
 	attr.prebuf = (uint32_t)-1;
 	attr.prebuf = (uint32_t)-1;
 	attr.maxlength = (uint32_t)-1;
 	attr.maxlength = (uint32_t)-1;