Поделиться через


Преобразование данных из одного формата в другой

[Функция, связанная с этой страницей, Диспетчер сжатия аудио, является устаревшей функцией. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код не использовал эту функцию.]

ACM использует потоковые функции для поддержки преобразования формата данных. Преобразователи в ACM изменяют формат, но не тип данных. Например, модуль преобразователя может изменять 44-кГц, 16-разрядные данные на 44-кГц, 8-разрядные данные.

Следующие функции ACM поддерживают преобразование формата данных. Они перечислены в том порядке, в котором они обычно используются.

  • Функция acmStreamOpen открывает поток преобразования.
  • Функция acmStreamSize вычисляет соответствующий размер исходного или целевого буфера.
  • Функция acmStreamPrepareHeader подготавливает исходный и целевой буферы для использования при преобразовании.
  • Функция acmStreamConvert преобразует данные в исходном буфере в формат назначения, записывая преобразованные данные в буфер назначения.
  • Функция acmStreamUnprepareHeader очищает исходный и целевой буферы, подготовленные acmStreamPrepareHeader. Эту функцию необходимо вызвать перед освобождением исходного и целевого буферов.
  • Функция acmStreamClose закрывает поток преобразования.

При преобразовании данных сначала определите исходный формат, а затем выберите формат назначения. Самый простой способ сделать это — использовать функцию acmFormatChoose , которая отображает диалоговое окно выбора формата и возвращает выбранный пользователем формат.

Если вы знаете исходный и целевой форматы, вы можете использовать acmStreamOpen , чтобы открыть поток преобразования. Затем можно использовать функцию acmStreamSize для определения соответствующих размеров буфера.

Следующим шагом является подготовка буферов для использования при преобразовании с помощью acmStreamPrepareHeader.

Чтобы выполнить преобразование, используйте acmStreamConvert , пока не будут обработаны все буферы. После завершения преобразования используйте acmStreamUnprepareHeader для очистки буферов, а затем используйте acmStreamClose для закрытия потока преобразования.