Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Подсчет размера сэмпла для WAVE PCM


Автор: AndreySol 19.3.2010, 07:42
Подскажите, как подсчитать размер сэмпла для формата WAVE_FORMAT_PCM, имея все данные семпла из структуры WAVEFORMATEX ?

Автор: Alexeis 19.3.2010, 17:54
Если под сэмплом понимается одна выборка одного канала, то нужное поле wBitsPerSample. 

Автор: AndreySol 20.3.2010, 01:24
Не верно вопрос сформулировал.
К примеру для MP3 формата файл состоит из какого-то кол-ва семплов (или фреймов ?), а сам сэмпл (или фрейм) состоит из заголовка и кусочка данных - для WAVE PCM все по другому ?

Автор: Alexeis 20.3.2010, 10:49
Цитата(AndreySol @  20.3.2010,  00:24 Найти цитируемый пост)
для WAVE PCM все по другому ? 

  Если отбросить все заголовки, то аудио данные идут сплошным потоком. Фрейм содержит мгновенные амплитуды для всех каналов (сэмплы). Они идут по очереди. Например для 4х каналов left | center  | right  | surround . Размер фрейма определяется как wChannels * ((wBitsPerSample + 7) / 8) . Минимальный размер сэмпла в файле 1 байт, хотя реально звук может быть и 7ми битным и 12ти битным. В этом случае размер округляется до размера байта. Это и делает формула (wBitsPerSample + 7) / 8 . 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)