Изменить 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?


Ответы (0 шт):