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