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.
[Składnik opisany na tej stronie, ulepszony program renderowania wideo, jest starszą funkcją. Został zastąpiony przez Simple Video Renderer (SVR) udostępniany za pośrednictwem komponentów MediaPlayer i IMFMediaEngine. Aby odtworzyć zawartość wideo, należy wysłać dane do jednego z tych składników i umożliwić im zainstancjonowanie nowego renderera wideo. Te składniki zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał interfejsów API MediaPlayer lub IMFMediaEngine o niższym poziomie do odtwarzania multimediów wideo w systemie Windows zamiast EVR, gdy jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Aby utworzyć rozszerzony filtr modułu renderowania wideo (EVR), wywołaj metodę CoCreateInstance. Identyfikator CLSID jest CLSID_EnhancedVideoRenderer zdefiniowany w uuids.h. Nie musisz wywoływać MFStartup ani MFShutdown, aby użyć filtru EVR.
Aby uzyskać więcej informacji na temat korzystania z filtru EVR w aplikacji DirectShow, zobacz odtwarzanie audio/wideo w programie DirectShow.
Filtr EVR rozpoczyna się od jednego pinu wejściowego, który odpowiada strumieniowi referencyjnemu. Aby dodać pinezki dla podstrumieni, wykonaj zapytanie o filtr interfejsu IEVRFilterConfig i wywołaj IEVRFilterConfig::SetNumberOfStreams. Wywołaj tę metodę przed nawiązaniem połączenia z dowolnymi pinami wejściowymi. Numer pin 0 jest zawsze strumieniem referencyjnym. Podłącz ten pin przed innymi pinami, ponieważ format strumienia referencyjnego może ograniczać dostępne formaty podstrumieni.
Przed rozpoczęciem wykresu ustaw okno wycinków wideo i prostokąt docelowy. Aby uzyskać więcej informacji, zobacz Using the Video Display Controls.
W przeciwieństwie do Renderera Mieszania Wideo (VMR), EVR nie posiada trybów operacyjnych (okienkowego, bezokienkowego i innych). W szczególności:
- Funkcja EVR nie obsługuje trybu okiennego. Aplikacja musi udostępnić okno wycinków.
- EVR nie ma trybu bez renderowania. Aby zastąpić domyślny prezenter, wywołaj IMFVideoRenderer::InitializeRenderer.
- EVR nie ma trybu mieszania. EVR zawsze tworzy mikser. Jeśli masz jeden strumień wejściowy, nie jest konieczne wywołanie SetNumberOfStreams w celu wymuszenia użycia miksera EVR.
Interfejsy filtru
Filtr EVR uwidacznia następujące interfejsy. Niektóre z tych interfejsów są udokumentowane w zestawie SDK DirectShow. Użyj QueryInterface, aby pobrać wskaźniki do następujących interfejsów:
- IAMCertifiedOutputProtection (DirectShow)
- IAMFilterMiscFlags (DirectShow)
- IBaseFilter (DirectShow)
- IEVRFilterConfig
- IKsPropertySet (DirectShow)
- IMediaEventSink (DirectShow)
- IMFGetService
- IMFVideoPositionMapper
- IMFVideoRenderer
- IPersistStream
- IQualityControl (DirectShow)
- IQualProp (DirectShow)
- ISpecifyPropertyPages
Interfejsy wejściowe pinów
Wyprowadzenia wejściowe filtru EVR uwidaczniają następujące interfejsy. Użyj QueryInterface, aby pobrać wskaźniki do następujących interfejsów:
- IEVRVideoStreamControl
- IMemInputPin (DirectShow)
- IMFGetService
- IPin (DirectShow)
- IQualityControl (DirectShow)
Ponadto można użyć interfejsu IMFGetService w celu pobrania następującego interfejsu:
Tematy pokrewne