Зависимость между форматом данных wave и размером входного буфера

#wave #vfw

#wave #vfw

Вопрос:

Я делаю быстрое решение, используя VFW. На этапе подготовки к приему аудиоданных я прошу VFW предоставить мне формат данных wave по умолчанию для подключенной веб-камеры. Он возвращает мне структуру WAVEFORMATEX, пожалуйста, смотрите рисунок.

рис. 1

Как вы можете видеть, это 1 байт для выборки и 1 канал .. 11025 байт в секунду. Но обратный вызов получает другое количество байт, пожалуйста, смотрите рисунок рис. 2

И вопрос в том, какова корреляция и зависимость между этими значениями to? Как разделить данные в таком случае, если есть 2 канала?

Ответ №1:

dwBufferLength это размер буфера, а не количество захваченных байтов. Вас интересует другой участник: dwBytesRecorded .

В случае стерео WAVEFORMATEX будет иметь значение 2 в nChannels , а затем nBlockAlign , nAvgBytesPerSec будет скорректировано соответственно. Байты в буферах будут иметь следующую упаковку:

 0000: [sample 0, channel 0]
0001: [sample 0, channel 1]
0002: [sample 1, channel 0]
0003: [sample 1, channel 1]
...