Изменить period_size для dmix
Эмулятор игровых консолей mednafen показывает следующее:
Инициализация звука...
Используется аудио-драйвер «ALSA», устройство «sexyal-literal-default»:
Format: 16 bits(signed, 2 bytes, little-endian)
Rate: 48000
Channels: 2
Buffer size: 2048 sample frames(42.666667 ms)
Latency: 2048 sample frames(42.666667 ms)
Period size: 1024 sample frames(21.333333 ms)
Warning: Period time is too large(it should be <= ~5.333ms). Video will appear very jerky.
Хочу изменить period_size для dmix, в исходниках alsa нащёл конфиг.
pcm.!dmix {
@args [ CARD DEV SUBDEV FORMAT RATE CHANNELS ]
@args.CARD {
type string
default {
@func refer
name defaults.pcm.dmix.card
}
}
@args.DEV {
type integer
default {
@func refer
name defaults.pcm.dmix.device
}
}
@args.SUBDEV {
type integer
default 0
}
@args.FORMAT {
type string
default {
@func refer
name defaults.pcm.dmix.format
}
}
@args.RATE {
type integer
default {
@func refer
name defaults.pcm.dmix.rate
}
}
@args.CHANNELS {
type integer
default {
@func refer
name defaults.pcm.dmix.channels
}
}
type dmix
ipc_key {
@func refer
name defaults.pcm.ipc_key
}
ipc_gid {
@func refer
name defaults.pcm.ipc_gid
}
ipc_perm {
@func refer
name defaults.pcm.ipc_perm
}
slave {
pcm {
type hw
card $CARD
device $DEV
subdevice $SUBDEV
}
format $FORMAT
rate $RATE
channels $CHANNELS
period_size {
@func refer
name {
@func concat
strings [
"defaults.dmix."
{
@func card_driver
card $CARD
}
".period_size"
]
}
default 1024
}
period_time {
@func refer
name {
@func concat
strings [
"defaults.dmix."
{
@func card_driver
card $CARD
}
".period_time"
]
}
default -1
}
periods {
@func refer
name {
@func concat
strings [
"defaults.dmix."
{
@func card_driver
card $CARD
}
".periods"
]
}
default 16
}
}
hint {
show {
@func refer
name defaults.namehint.extended
}
description "Direct sample mixing device"
device_output $DEV
}
}
Изменил default 1024 на default 128
И поместил его в /etc/alsa/conf.d/99-default.conf
Работает!
Инициализация звука...
Используется аудио-драйвер «ALSA», устройство «sexyal-literal-default»:
Format: 16 bits(signed, 2 bytes, little-endian)
Rate: 48000
Channels: 2
Buffer size: 1792 sample frames(37.333333 ms)
Latency: 1792 sample frames(37.333333 ms)
Period size: 128 sample frames(2.666667 ms)
Но мне кажется тут слишком много строк для изменения одного парематра!
1 Как сократить этот конфиг?
2 Чем черевато уменьшение этого параметра?
3 Нужно ли ещё что-нибудь изменить вместе с period_size?