Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
После того как приложение инициирует обработку звука, построитель графа настраивает sAPOs в звуковой граф и инициализирует sAPOs. Звуковая служба затем договаривается с LFX sAPO, чтобы установить формат аудиоданных на входе и выходе sAPO. Этот процесс переговоров называется согласованием формата.
Все sAPOs, предоставляющие эффекты аудиосистем для Windows Vista, должны иметь определенные интерфейсы и методы. Методы, используемые sAPO и звуковой подсистемой для согласования формата данных: метод IsInputFormatSupported интерфейса IAudioProcessingObject и методы LockForProcess и UnlockForProcess интерфейса IAudioProcessingObjectConfiguration .
Чтобы инициировать согласование формата, аудиослужба сначала устанавливает выходной формат LFX SAPO на формат по умолчанию float32. Затем звуковая служба вызывает метод IAudioProcessingObject::IsInputFormatSupported LFX sAPO, предлагает формат по умолчанию и отслеживает ответ HRESULT метода. Если SAPO LFX может поддерживать предлагаемый формат, он возвращает S_OK вместе со ссылкой на поддерживаемый формат. Если SAPO LFX не поддерживает предлагаемый формат, он возвращает S_FALSE вместе со ссылкой на формат, который является ближайшим совпадением с предлагаемым. Если LFX sAPO не поддерживает предлагаемый формат и не имеет близкого совпадения, возвращается ошибка APOERR_FORMAT_NOT_SUPPORTED. GFX sAPO работает с форматом выходных данных SAPO LFX. Поэтому GFX sAPO не участвует в процессе согласования формата.
После выбора формата данных для обработки звуковых данных построитель графов обработки звука вызывает метод IAudioProcessingObjectConfiguration::LockForProcess для объектов SAPOs, что приводит к завершению выбора формата.
Если sAPO Windows Vista возвращает ошибку пользовательскому sAPO в ответ на вызов метода LockForProcess, пользовательский sAPO должен обрабатывать ошибку так же, как ошибку от CoCreateInstance при попытке создать экземпляр sAPO. Дополнительные сведения о перезаписи предоставленного системой метода LockForProcess см. в файле Spkrfill.cpp.
Из-за того, как работает звуковая служба, LFX и GFX sAPOs должны иметь возможность реагировать независимо друг от друга на запросы от аудиослужбы относительно форматов данных.
Важно При реализации пользовательского сАПО, который упаковывает сАПО Windows Vista LFX, не указывайте флаг APO_FLAG_FRAMESPERSECOND_MUST_MATCH в свойствах регистрации пользовательского сАПО. Если указать этот флаг, Windows Vista LFX sAPO не сможет выполнять заполнение колонок, виртуализацию наушников или виртуальное окружающее звучание. Кроме того, пользовательское sAPO не сможет смешивать аудиопотоки. Например, ваш пользовательский SAPO не сможет преобразовать аудиопоток 5.1 в стереофонический аудиопоток с двумя каналами.