Зависимость между форматом волновых данных и размером входного буфера - PullRequest
0 голосов
/ 08 марта 2019

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

pic1

Как видите, это 1 байт для семпла и 1 канал. 11025 байт в секунду. Но callBack получает другую сумму o байтов, пожалуйста, см. Рис. pic 2

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

1 Ответ

0 голосов
/ 14 апреля 2019

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]
...
...