mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	protocol-native: Lower default minreq in low-latency scenarios
If minreq is not explicitly specified, it was always initialized to 20 ms (DEFAULT_PROCESS_MSEC). However when the total latency is not much higher than 20 ms, this is way too high. Instead use tlength/4 as a measure: this will give a decent sink_usec in all modes (both traditional, adjust latency and early request modes). This greatly improves PulseAudio's ability to ask for data in time in low-latency scenarios. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
This commit is contained in:
		
							parent
							
								
									2026c41be6
								
							
						
					
					
						commit
						5f326b705d
					
				
					 1 changed files with 8 additions and 2 deletions
				
			
		| 
						 | 
					@ -939,8 +939,14 @@ static void fix_playback_buffer_attr(playback_stream *s) {
 | 
				
			||||||
    if (s->buffer_attr.tlength > s->buffer_attr.maxlength)
 | 
					    if (s->buffer_attr.tlength > s->buffer_attr.maxlength)
 | 
				
			||||||
        s->buffer_attr.tlength = s->buffer_attr.maxlength;
 | 
					        s->buffer_attr.tlength = s->buffer_attr.maxlength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (s->buffer_attr.minreq == (uint32_t) -1)
 | 
					    if (s->buffer_attr.minreq == (uint32_t) -1) {
 | 
				
			||||||
        s->buffer_attr.minreq = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_PROCESS_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec);
 | 
					        uint32_t process = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_PROCESS_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec);
 | 
				
			||||||
 | 
					        /* With low-latency, tlength/4 gives a decent default in all of traditional, adjust latency and early request modes. */
 | 
				
			||||||
 | 
					        uint32_t m = s->buffer_attr.tlength / 4;
 | 
				
			||||||
 | 
					        if (frame_size)
 | 
				
			||||||
 | 
					            m -= m % frame_size;
 | 
				
			||||||
 | 
					        s->buffer_attr.minreq = PA_MIN(process, m);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    if (s->buffer_attr.minreq <= 0)
 | 
					    if (s->buffer_attr.minreq <= 0)
 | 
				
			||||||
        s->buffer_attr.minreq = (uint32_t) frame_size;
 | 
					        s->buffer_attr.minreq = (uint32_t) frame_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue