Воспроизведение и запись звука в программе, goalsa/alsa-lib

Воспользовался библиотекой goalsa (обертка над alsa-lib), задача решена, но есть пара вопросов:

  1. Чем ограничено количество семплов, которые будут воспроизводиться?

    out, _ := alsa.NewPlaybackDevice(
           "hw:0,0",
           2, // количество каналов
           alsa.FormatS16LE,
           44100,
           alsa.BufferParams{},
       )
    defer out.Close()
    
    samples := make([]int16, 2)
    // получения семпла
    _, err := out.Write(samples)
    

    Если размер слайса samples будет 1, то воспроизводиться не будет, но и ошибки тоже не возвращается, это обусловлено количеством каналов?

  2. Чем ограничено количество считываемых семплов?

    in, _ := alsa.NewCaptureDevice(
            "hw:0,0",
            2, // количество каналов
            alsa.FormatS16LE,
            44100,
            alsa.BufferParams{},
    )
    defer in.Close()
    
    samples := make([]int16, 2)
    for {
            _, err := in.Read(samples)
    }
    

Если размер слайса samples 2 то, почти сразу возникает ошибка overrun, почему так может происходить?


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