1. lépés. Alaposztály kiválasztása
[A laphoz társított funkció, DirectShowegy régi funkció. MediaPlayer, IMFMediaEngineés Audio/Video Capture a Media Foundation. Ezek a funkciók Windows 10-hez és Windows 11-hez lettek optimalizálva. A Microsoft határozottan javasolja, hogy az új kód, ha lehetséges, a MediaPlayer, IMFMediaEngine és a Audio/Video Capture a Media Foundation használja a DirectShowhelyett. A Microsoft javasolja, hogy az örökölt API-kat használó meglévő kódot át kell írni az új API-k használatára, ha lehetséges.]
Ez az útmutató 1. lépése Transzformációs szűrők írása.
Feltételezve, hogy úgy dönt, hogy nem DMO-t, hanem szűrőt ír, az első lépés a használni kívánt alaposztály kiválasztása. Az átalakító szűrőkhöz a következő osztályok használhatók:
CTransformFilter különálló bemeneti és kimeneti puffereket használó átalakító szűrőkhöz készült. Ezt a szűrőt néha másolás-átalakítás szűrőnek is nevezik. Amikor egy másolás-átalakítás szűrő bemeneti mintát kap, új adatokat ír egy kimeneti mintába, és a kimeneti mintát a következő szűrőhöz továbbítja.
CTransInPlaceFilter olyan szűrőkhöz készült, amelyek az eredeti pufferben módosítják az adatokat, más néven helyközi szűrők. Amikor egy helyszíni szűrő mintát kap, megváltoztatja a mintán belüli adatokat, és ugyanazt a mintát szolgáltatja lefelé. A szűrő bemeneti és kimeneti pin-kódja mindig egyező médiatípusokkal csatlakozik.
CVideoTransformFilter elsősorban videó dekóderekhez készült. Az CTransformFilterszármazéka, de tartalmazza a képkockák eldobásának funkcióját is, ha a kimeneti renderelő lemarad.
CBaseFilter egy általános szűrőosztály. A lista többi osztálya a CBaseFilter-ből származik. Ha egyik sem megfelelő, hagyatkozhat erre az osztályra. Ehhez az osztályhoz azonban a legtöbb munka is szükséges.
![Fontos]
A helyszíni videóátalakítások komoly hatással lehetnek a renderelési teljesítményre. A helyszíni átalakítások olvasási-módosítási-írási műveleteket igényelnek a pufferen. Ha a memória grafikus kártyán található, az olvasási műveletek jelentősen lassabbak. Sőt, még a másolás átalakítása is eredményezhet nem szándékos olvasási műveleteket, ha nem implementálja gondosan. Ezért mindig végezze el a teljesítménytesztelést, ha videóátalakítást készít.
A példa RLE kódoló esetében a legjobb választás CTransformFilter vagy CVideoTransformFilter. Valójában a köztük lévő különbségek nagyrészt belsőek, így könnyen átalakítható egyikről a másikra. Mivel a médiatípusoknak eltérőnek kell lenniük a két csapon, a CTransInPlaceFilter osztály nem megfelelő ehhez a szűrőhöz. Ez a példa CTransformFilterfog használni.
Következő: 2. lépés. Deklarálja a szűrőosztály.
Kapcsolódó témakörök