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


Эффекты APO, разгруженные оборудованием

В Windows 10 версии 1511 и более поздних поддерживается разгрузка объектов обработки звука (APOs). Помимо возможного повышения производительности, существует значительное возможное снижение энергопотребления при использовании аппаратной разгрузки APOs.

Во время воспроизведения аппаратной разгрузки можно загрузить два типа APOs.

  1. Разгрузка потоковых эффектов (OSFX)
  2. Эффекты режима разгрузки (OMFX)

Общие сведения о эффектах APO для разгрузки оборудования

Аппаратное разгрузка обработки звука и аппаратной разгрузки API

В Windows 8 аудиоустройство было переработано для работы со звуковыми потоками, которые были разгружены на аппаратное устройство, которое отделяется от main аудиосистемы компьютера, но подключено к нему. Это называется аппаратной разгрузкой. Дополнительные сведения см. в разделе Аппаратно-разгруженная обработка звука.

Функция аппаратной разгрузки в основном ориентирована на сценарии с низким энергопотреблением с большими размерами буферов. Например, во время воспроизведения звука с низким энергопотреблением (LPA) в поддерживаемых системах размер звукового буфера или периодичность могут быть заданы в 1 секунду, чтобы ЦП не часто просыпался для обработки небольших буферов (например, каждые 10 миллисекунд).

Реализация аппаратной разгрузки API вместе с аппаратной разгрузкой обработки звука обеспечивает максимальную эффективность энергопотребления.

На следующей схеме показана архитектура объектов обработки звука. В правой части схемы показано приложение, взаимодействующее с аппаратными эффектами OSFX и OMFX.

Схема архитектуры аудиодрайвера с приложением, взаимодействующим с аппаратными эффектами OSFX и OMFX, драйверами и звуковым оборудованием.

Реализация эффектов APO с аппаратной разгрузкой

Объект APO, разгружаемый оборудованием, должен соответствовать тем же основным требованиям и принципам проектирования, которые описаны в разделах Архитектура объекта обработки звука и Реализация объектов обработки звука.

Рекомендации по реализации поддерживаемого аудиоформата

Для аппаратных разгружаемых API следует учитывать поддерживаемые форматы звука.

Каждое APO реализует метод IAudioProcessingObject::IsInputFormatSupported , который используется во время построения звукового графа для определения выходного аудиоформата и необходимости преобразования формата.

HRESULT IsInputFormatSupported(
  [in, optional]  IAudioMediaType *pOppositeFormat,
  [in, optional]  IAudioMediaType *pRequestedInputFormat,
  [out, optional] IAudioMediaType **ppSupportedInputFormat
);

Конечная точка отрисовки разгрузки может поддерживать различные форматы, включая формат по умолчанию, поддерживаемый отрисовкой узлов или системных контактов. Объект APO разгрузки должен поддерживать все эти форматы, чтобы потоки отрисовки (с поддерживаемыми форматами) не проходили дополнительное преобразование формата.

Разгрузка SFX может реализовывать преобразования форматов и принимать более широкий диапазон форматов. Например, если функция Offload SFX обеспечивает виртуализацию наушников (т. е. преобразование аудиокана 5.1 в стерео), она должна возвращать S_OK для соответствующей пары входных и выходных данных в этом методе.

SFX-файл разгрузки должен просматривать поддерживаемые форматы контактов разгрузки, а также поддерживать и расширять возможности вместе.

Функция разгрузки MFX не может изменить формат входного потока, но она по-прежнему должна поддерживать различные форматы, предлагаемые конечной точкой разгрузки, и исключить ненужные преобразования форматов.

Во время отрисовки в контакте разгрузки на нем активен только один поток, поэтому потоки не смешиваются. Таким образом, обработка звука как на уровне потока, так и на уровне режима не требуется. Таким образом, звуковые эффекты могут не включаться как эффект потока, так и эффект режима. Разгрузка конечных точек будет поддерживать больше потоков, и в зависимости от архитектуры обработки для системы может потребоваться учитывать обработку разгрузки в SFX/MFX.

Записи INF-файла

Реализуйте следующие записи INF-файла, чтобы определить эффекты, которые будут загружаться во время воспроизведения разгрузки. Ключ свойства INF-файла указывает построителю конечных точек звука задать идентификаторы CLSID для разгруженных APOs в хранилище свойств эффектов. Эти сведения используются для создания звукового графа, который будет использоваться для информирования приложений верхнего уровня о том, какие эффекты имеются.

Ключ свойства GUID
PKEY_FX_Offload_StreamEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},11
PKEY_FX_Offload_ModeEffectClsid {D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},12
PKEY_SFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},11
PKEY_MFX_Offload_ProcessingModes_Supported_For_Streaming {D3993A3F-99C2-4402-B5EC-A92A0367664B},12

Реализация объектов обработки звука
Объекты обработки звука Windows