Seguindo os conselhos em um post chamado Pulseaudio e Latency , tentei carregar module-alsa-sink
com especial% co_de Parâmetros% e fragments
para garantir baixa latência. No entanto, não tenho certeza do que exatamente isso está fazendo. A latência relatada por fragment_size
não tem uma correspondência óbvia com os valores que eu coloquei nesses parâmetros. Aqui está um pequeno script que escrevi para testar várias configurações:
pulseaudio &
# unload all sinks
pactl list sinks | grep "Owner Module" | \
cut -d : -f 2 | \
while read i; do
pactl unload-module $i;
done
# try different settings
patest () {
pactl load-module module-alsa-sink device=$DEV \
tsched=no \
fixed_latency_range=yes \
fragments=$F fragment_size=$FS > /tmp/modnum.out;
pactl list sinks | grep Latency;
pactl unload-module $(cat /tmp/modnum.out)
}
patest_nofix () {
pactl load-module module-alsa-sink device=$DEV > /tmp/modnum.out;
pactl list sinks | grep Latency;
pactl unload-module $(cat /tmp/modnum.out)
}
Agora posso testar várias configurações de pactl list sinks
(F) e fragments
(FS). Para o dispositivo de hardware "hw: 0", a latência é baixa, mas não consigo ver como corresponde aos dois parâmetros:
F=1; FS=15; DEV=hw:0; patest
# Latency: 2516 usec, configured 1451 usec
F=1; FS=30; DEV=hw:0; patest
# Latency: 2484 usec, configured 1451 usec
F=5; FS=15; DEV=hw:0; patest
# Latency: 2475 usec, configured 1451 usec
F=50; FS=200; DEV=hw:0; patest
# Latency: 57628 usec, configured 56689 usec
# (default minimum latency:)
DEV=hw:0; patest_nofix
# Latency: 1983968 usec, configured 2000000 usec
Para o dispositivo ALSA "dmix", ele é um pouco mais alto, não sei por que:
F=1; FS=15; DEV=dmix; patest
# Latency: 42752 usec, configured 42666 usec
# (default:)
DEV=dmix; patest_nofix
# Latency: 326596 usec, configured 341333 usec
No entanto, quando eu crio meu próprio dispositivo "dmix" para gerar a saída para hw: 0,
$ cat ~/.asoundrc
...
pcm.hw0mix {
type dmix
ipc_key 2498 # unique random number
slave {
pcm "hw:0,0"
channels 2
rate 48000
}
}
então eu posso ver que a latência é muito maior e parece ter sido fixada em 0,25 segundos:
F=1; FS=15; DEV=hw0mix; patest
# Latency: 251132 usec, configured 250000 usec
F=50; FS=200; DEV=hw0mix; patest
# Latency: 251126 usec, configured 250000 usec
# (default:)
DEV=hw0mix; patest_nofix
# Latency: 356292 usec, configured 375000 usec
Qual é a relação entre os parâmetros fragment_size
e fragments
e a "latência configurada" e como altero a latência mínima configurada para ser menor mesmo para dispositivos ALSA não hardware?
Tags pulseaudio alsa latency