A videojel rögzítése és képkocka feldolgozása a környezetben

A videojel rögzítése és képkocka feldolgozása a környezetben

AviCap32.dll könyvtár

  • capGetDriverDescriptionA [AviCap32.dll]
  • capCreateCaptureWindowA [AviCap32.dll]

A támogatott eszközök listájának és a rendelkezésre álló eszközvezérlők listájának lekéréséhez használja a capGetDriverDescriptionA módszert. A függvény visszaadja az eszközillesztő nevét és verziószámát a megadott indexben. Ezután válasszuk ki a megfelelő illesztőprogramot, akkor létre kell hoznunk egy ablakot, amelyen a jel fog lesz elfoglalva az eszközről. Mivel külön funkció kapjunk egyetlen keretet AviCap32 nem létezik, akkor a másik alternatíva az, hogy másolja a tartalmát a kívánt frekvencia ablakot létre a bittérkép objektumot. lehetőség van használja a visszahívás funkciót (visszahívási funkció), hogy meghatározzák, amikor a keret a rendelkezésre állás, szükséges, hogy küldjön egy üzenetet, hogy WM_CAP_SET_CALLBACK_FRAME létrehozott ablakot. Az ablak létrehozása után az eszközillesztőhöz való kapcsolódás inicializálásra kerül. A következő módszer ezt a feladatot végzi:

A vizsgált Connect módban több kulcsfontosságú pontot lehet hangsúlyozni:

A készülékkel végzett munka befejezése után le kell választani az ablakot a meghajtóról, és meg kell semmisíteni a rögzítéshez használt ablakot. Ehhez egy WM_CAP_DRIVER_DISCONNECT üzenet kerül elküldésre az ablakhoz. mivel a paraméter az eszközvezérlő azonosítóját jelzi, amelynek lekapcsolását ebből az üzenetből kérték. Ezután a DestroyWindow függvényt hívják.

A DirectShow keretrendszer

Az inicializálás utolsó lépése az elfogó ablak konfigurálása. A SetPreviewVisible módszerben ez az ablak a szimulációs ablakhoz kapcsolódik, amelyen a jel megjelenik. Ha akarod, elrejti az ablakot.

Most vegye figyelembe az ISampleGrabber felületet megvalósító speciális szűrő használatán alapuló módszert. Az eszközök listája ugyanúgy történik, mint a rögzítési ablak használatával. A SampleGrabber szűrő használatához egy keret létrehozásához olyan grafikát kell létrehoznia, amely három szűrőt tartalmaz:

A ConnectFilterToFilter módszer összekapcsolja az egyik szűrő kimeneti kapcsolatait a másik bemeneti kapcsolataival. A felcserélhető kapcsolatoknak támogatniuk kell a paraméterként továbbított médiainformáció típusát, ezt a feltételt a PinHasMediaType módszerrel kell ellenőrizni. A ConnectFilterToFilter metódus a forrásszűrő kapcsolatokon keresztül történik, és a kimeneti tűk ConnectPinToFilter csatlakozási módja végrehajtásra kerül. amely az összes bemeneti kapcsolaton keresztül megegyezik és kapcsolatot létesít a kapcsolatok között. Folytassuk az eszközillesztő kapcsolódásának inicializálását. Ez a következő módszerrel történik:

A Média Alapítvány keretrendszere

Média Alapítvány, valamint a DirectShow, célja alapján a Component Object Model (COM) - ezért van szükség a COM-együttműködéshez használni, ha a programozás C #. Ismételten a kézi munka egyszerűsítésénél a kész MediaFoundation .Net könyvtárat használhatjuk [5]. De érdemes megjegyezni, hogy egyes módszerek és interfészek a könyvtár a tesztelési fázisban, ezért nem szerepelnek a lefordított változatot - úgy, hogy végezze el a szükséges munkát kézzel összeállításához a könyvtár meghatározott kódot ALLOW_UNTESTED_INTERFACES zászló.

A Media Foundation használatának megkezdése előtt hívja meg az MFStartup módot a keret inicializálására, és ha befejezte, használja az MFShutdown alkalmazást.

Miután befejezte a MediaFoundation használatát, minden COM objektumot fel kell szabadítania a Marshal.ReleaseComObject módszerrel.

A videojel rögzítése és képkocka feldolgozása a környezetben

Ábra. 1. A vizsgált módszerek termelékenységének mérése

Teljesítménykritériumként két mutatót választottak ki: a hasznos teher és a kerethez való átlagos hozzáférési idő. A hagyományos egységekben kifejezett terhelésérték mutatja a fogadott kereten végrehajtott számítás maximális számát. A grafikon azt mutatja, hogy az AviCap32 2-szer kevesebb hasznos teret biztosít a többi módszerhez képest - ennek oka az Invoke módszerrel az űrlap keretén belüli frissítés során végrehajtott teljesítménycsökkenés. Ugyanakkor az AviCap32 keretéhez való hozzáférés átlagos időtartama összehasonlítható a DirectShow használatához szükséges hozzáférési idővel. Ez azt jelenti, hogy eltávolítja a hívásokat. a hasznos teher azonos értékét érheti el. A Media Foundation esetében ezzel ellentétben a kerethez való hozzáférés értéke magasabb, mint a többi. Ennek oka, hogy a keretek nem tárolódnak a Media Foundation oldalán, és amikor a következő keretet kérik, a várakozási idő elvész. Ha további keretet ad a gyorsítótárazási keretekhez, csökkentheti a kerethez való hozzáférés értékét.

Irodalom