Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Gdy aplikacja inicjuje przetwarzanie audio, konstruktor grafu konfiguruje obiekty sAPO w grafie audio, a także je inicjuje. Następnie usługa audio negocjuje z LFX sAPO, aby ustalić format danych audio na wejściu i wyjściu sAPO. Ten proces negocjacji jest nazywany negocjowaniem formatu.
Wszystkie sAPOs, które zapewniają efekty systemów audio dla systemu Windows Vista, muszą mieć pewne interfejsy i metody. Metody używane przez obiekt sAPO i aparat audio do negocjowania formatu danych to: metoda IsInputFormatSupported interfejsu IAudioProcessingObject oraz metody LockForProcess i UnlockForProcess interfejsu IAudioProcessingObjectConfiguration.
Aby zainicjować negocjacje formatu, usługa audio najpierw ustawia dane wyjściowe obiektu SAPO LFX na domyślny format float32. Następnie usługa audio wywołuje metodę IAudioProcessingObject::IsInputFormatSupported obiektu SAPO LFX, sugeruje format domyślny i monitoruje odpowiedź HRESULT tej metody. Jeśli obiekt SAPO LFX może obsługiwać sugerowany format, zwraca S_OK wraz z odwołaniem do obsługiwanego formatu. Jeśli obiekt SAPO LFX nie może obsługiwać sugerowanego formatu, zwraca S_FALSE wraz z odwołaniem do formatu, który jest najbliżej sugerowanego formatu. Jeśli LFX sAPO nie może obsługiwać sugerowanego formatu i nie ma bliskiego dopasowania, zwraca kod błędu APOERR_FORMAT_NOT_SUPPORTED. Obiekt SAPO GFX współdziała z formatem wyjściowym obiektu SAPO LFX. W związku z tym obiekt SAPO GFX nie jest zaangażowany w proces negocjacji formatu.
Po wybraniu formatu danych w celu przetworzenia danych dźwiękowych konstruktor grafu przetwarzania dźwięku wywołuje metodę IAudioProcessingObjectConfiguration::LockForProcess obiektów sAPOs, powodując sfinalizowanie zaznaczenia formatu.
Jeśli sAPO systemu Windows Vista zwraca błąd do opakowującego niestandardowego sAPO w odpowiedzi na wywołanie metody LockForProcess, niestandardowy sAPO musi obsługiwać błąd tak samo, jak obsługuje błąd z CoCreateInstance przy niepowodzeniu próby utworzenia instancji sAPO. Zapoznaj się z plikiem Spkrfill.cpp, aby uzyskać szczegółowe informacje na temat zastępowania metody LockForProcess dostarczonej przez system.
Ze względu na sposób działania usługi audio LFX i GFX sAPOs muszą być w stanie niezależnie odpowiadać na zapytania z usługi audio dotyczące formatów danych.
Ważny Podczas implementowania niestandardowego obiektu SAPO, który opakowuje obiekt SAPO systemu Windows Vista LFX, nie należy określać flagi APO_FLAG_FRAMESPERSECOND_MUST_MATCH we właściwościach rejestracji niestandardowego obiektu SAPO. Jeśli określisz tę flagę, obiekt SAPO systemu Windows Vista LFX nie będzie mógł wykonać wypełnienia głośnika, wirtualizacji słuchawek lub wirtualnego otaczania. Ponadto niestandardowy obiekt SAPO nie będzie mógł mieszać żadnych strumieni audio. Na przykład niestandardowy procesor SAPO nie będzie mógł zredukować strumienia audio 5.1 do dwukanałowego strumienia audio stereo.