Udostępnij przez


Optymalizowanie wydajności mieszania przy użyciu decymacji

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEngineoraz Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli 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.]

Ważny

Optymalizacja opisana w tej sekcji jest bardzo zależna od bazowego sprzętu. Jeśli nie możesz zagwarantować, jakiego typu sprzęt graficzny będzie używany z aplikacją, może poważnie obniżyć wygląd obrazu wideo.

 

HDTV wymaga dużej mocy obliczeniowej, która w nowszych systemach jest realizowana głównie przez kartę graficzną. Ale nawet jeśli karta graficzna i dekoder mogą obsługiwać rozdzielczości 1920x1080, użytkownik może nie zawsze mieć monitor ustawiony na tę rozdzielczość. W takim przypadku chip graficzny musi utworzyć obraz 1920 x 1080, a następnie zmniejszyć rozdzielczość, aż do przesłania go do buforu ramki.

Ponieważ jest to strata mocy obliczeniowej, VMR (Video Mixing Renderer) zapewnia sposób zmniejszenia obrazu w momencie renderowania go na powierzchni DirectDraw. Eliminuje to dodatkową kopię pamięci wymaganą w przypadku konieczności zmiany rozmiaru obrazu po jego renderowaniu.

VMR-7: Aby włączyć dekodację, wywołaj IVMRMixerControl::SetMixingPrefs flagą MixerPref_DecimateOutput.

VMR-9: Aby włączyć decymację, wywołaj IVMRMixerControl9::SetMixingPrefs z flagą MixerPref9_DecimateOutput.

Przed połączeniem VMR należy wywołać metodę SetMixingPrefs. Nie można zmienić flag preferencji mieszania po uruchomieniu grafu.

przy użyciu trybu mieszania VMR