Преобразование данных из одного формата в другой
[Функция, связанная с этой страницей, Диспетчер сжатия аудио, является устаревшей функцией. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код не использовал эту функцию.]
ACM использует потоковые функции для поддержки преобразования формата данных. Преобразователи в ACM изменяют формат, но не тип данных. Например, модуль преобразователя может изменять 44-кГц, 16-разрядные данные на 44-кГц, 8-разрядные данные.
Следующие функции ACM поддерживают преобразование формата данных. Они перечислены в том порядке, в котором они обычно используются.
- Функция acmStreamOpen открывает поток преобразования.
- Функция acmStreamSize вычисляет соответствующий размер исходного или целевого буфера.
- Функция acmStreamPrepareHeader подготавливает исходный и целевой буферы для использования при преобразовании.
- Функция acmStreamConvert преобразует данные в исходном буфере в формат назначения, записывая преобразованные данные в буфер назначения.
- Функция acmStreamUnprepareHeader очищает исходный и целевой буферы, подготовленные acmStreamPrepareHeader. Эту функцию необходимо вызвать перед освобождением исходного и целевого буферов.
- Функция acmStreamClose закрывает поток преобразования.
При преобразовании данных сначала определите исходный формат, а затем выберите формат назначения. Самый простой способ сделать это — использовать функцию acmFormatChoose , которая отображает диалоговое окно выбора формата и возвращает выбранный пользователем формат.
Если вы знаете исходный и целевой форматы, вы можете использовать acmStreamOpen , чтобы открыть поток преобразования. Затем можно использовать функцию acmStreamSize для определения соответствующих размеров буфера.
Следующим шагом является подготовка буферов для использования при преобразовании с помощью acmStreamPrepareHeader.
Чтобы выполнить преобразование, используйте acmStreamConvert , пока не будут обработаны все буферы. После завершения преобразования используйте acmStreamUnprepareHeader для очистки буферов, а затем используйте acmStreamClose для закрытия потока преобразования.