MMF (Microsoft Media Foundation – Windows Vista SDK)

Örömteljes hírekkel szolgálhatok Nektek!

Egyik kedves ismerősöm, Bátorfi Zsolt felhívta a figyelmem, egy új technológiára, ami a Windows Vista SDK része, ez pedig a Microsoft Media Foundation (MMF). Napjainkban a multimédia területére egyre nagyobb hangsúly kezd helyeződni. A Microsoft Media Foundation a következő generációja a digitális média Világának. Ezidáig, azaz pontosabban a Windows Vista megjelenéséig persze erről hallgatás volt, s a poén, hogy a DirectShow SDK MSDN leírásában s ez javítva. De jó hír, megszülettek a következő generációs multimédia programozási koncepciók:

"Media Foundation is the next generation multimedia platform for Windows that enables developers, consumers, and content providers to embrace the new wave of premium content with enhanced robustness, unparalleled quality, and seamless interoperability.

  • DirectX Video Acceleration (DXVA) 2.0 offers more efficient video acceleration, compared with DXVA 1.0,,with more robust and streamlined video decoding and extended use of hardware in video processing. With DXVA 2.0, Windows can handle some of the most demanding high-definition content with high quality and improved glitch-resilience.

  • Color-space information is preserved throughout the video pipeline. Users can enjoy video content with full fidelity. Color information and interlaced images are now passed to hardware for single-pass compositions. Preserving color-space information also reduces unnecessary color space conversions, which frees more cycles to process demanding HD content.  

  • The enhanced video renderer (EVR) offers better timing support, enhanced video processing, and improved glitch-resilience. Full-screen playback support has been enhanced, and video tearing in windowed mode has been minimized.

  • Media Foundation uses the Multimedia Class Scheduler Service (MMCSS), a new system service in Windows Vista. MMCSS enables multimedia applications to ensure that their time-sensitive processing receives prioritized access to CPU resources."

Amiben nagyon erős lett a DirectShow-hoz képest, azok a tartalom-védelmi szolgáltatások. Ugyanis a DirectShow alapjaiban egy nagy hiányosságtól szenved, mégpedig ez a multimédiás tartalom-védelem. Mivel napjainkban egyre jobban összekapcsolásba kerül a multimédia az internet szolgáltatásaival a Microsoft ezzel a technológiával szeretné biztonságossá tenni az ezekhez történő hozzáférést.

Ez egy új COM alapú multimédia keretrendszer, amely a Windows Vista multimédiás új digitális technológiáinak kihasználására született. Kiváltja a DirectShow, Windows Media SDK, DirectX Media Objects (DMOs) és egyéb más multimédia API-k, mint pl. ACM és VFW szolgáltatásait. A Media Foundation korábbi op. rendszereken nem érhető el, csak a Windows Vista-n. Az új Windows Vista digitális média technológiával párhuzamban fejlődik a Direct3D 10 és a Windows Presentation Foundation (WPF). Emellett Windows Vista-n az új Windows MediaPlayer 11 is az új Media Foundation szolgáltatásait használja, továbbá a Media Foundation jobban kihasználja az adott hardver adottságait, mint a DirectShow és szorosabb összeköttetésben áll a többi Windows Vista technológiával.

A következőkben először használjuk a DirectShow-t, hogy az Win2000, WinXP felhasználók is hozzáférhessenek a digitális média Világhoz, utána majd elkezdünk ezzel is foglalkozni, mert az MF-ben már elég vakító dolgokat lehet csinálni. Addig is aki szeretné kipróbálni, töltse le a Windows Vista SDK-t. Jelenleg a Media Foundation a következő médiaformátumokat támogatja:

  • Windows Media Video
  • Windows Media Audio
  • MPEG Audio Layer-3 (MP3)

A Media Foundation médiaformátum támogatása is dinamikusan bővíthető.

Az egészben az a szép egyébként, hogy nincs többé x db SDK, meg minden az agyamat felforgató összevisszaság a rendszerben, hanem egy dolog létezik: Windows Vista SDK, hát nem szép! Én őszintén remélem, hogy egyre több ember vált, akár XP-ről is Windows Vista-ra, mert a kettő közt ég és Föld különbség van. Visszatérve a Media Foundation-re, nézzük át gyorsan nagyvonalakban az architektúrális koncepciókat:

A Media Foundation három rétegből tevődik össze:

  • A Control Layer (vezérlő réteg) felelős a médiaadatok áramlásának manageléséért.

    Tulajdonképpen az alkalmazásoknak ezt a réteget használniuk kell a vezérlés megvalósításához és a védett lejátszáshoz is ez szükséges. Ez a következőket tartalmazza: Media session, Topology, Presentation clock, Source resolver, Sequencer source.

  • A Core Layer (mag réteg) tartalmazza azokat a komponenseit a Media Foundation-nek, amelyekkel létre lehet hozni és manipulálni lehet az adatokat (akárcsak a DirectShow-ban). Tartalmaz média erőforrásokat, kódolókat, dekódolókat, szín átalakítókat.

    Ez további három részre bomlik: Media Sources, Media Foundation transforms (MFTs), Media Sinks.
    Gyorsan nagyvonalakban mik is ezek:
    Media Sources: Ez nyeri ki a nyers adatokat egy helyi fájl vagy URL által, akárcsak a DirectShow File Source filtere.
    MFTs: Ez manipulálja a médiaadatot. Az MFTs-nek van 0 vagy több bemenete és 0 vagy több kimenete. Általában van bemenetük és kimenetük is (ismerősen cseng a DirectShow Pin fogalma). Tulajdonképp az MFTs lényege, hogy a bemenő adatokat transzformálja át a kimenetnek megfelelő formátumra. Erre jó például szolgálhatnak a dekódolók, kódolók, illetve digitális jelfeldolgozók (DSPs).
    Media Sinks: Ezeknek a lényege, ami a DirectShow renderer szűrőinek, ki lehet a médiaadatokat menteni akár egy fájlba, vagy elküldhetők hálózaton keresztül is akár.

    Körülbelül ezek az átfedések figyelhetők meg:

    DirectShow: File Source Filter = Media Foundation: Media Sources
    DirectShow: Transformation filters = Media Foundation: Media Foundation transforms (MFTs)
    DirectShow: Renderer filters = Media Foundation: Media Sinks

  • Platform Layer (platform réteg) pedig további segédosztályokat tartalmaz. Nagyvonalakban leírom itt is, hogy mire jók ténylegesen ezek:

    Aszinkron hívástámogatás
    A Media Foundation szolgáltat egy következetes API-t az aszinkron visszahívási műveletek megvalósításához. A hosszú időigényes tevékenységek, mint pl. elemzés, dekódolás, vagy akár internetes erőforrások használata végezhető el ennek a rétegnek köszönhetően aszinkron módon.

    Esemény modell
    Ez az eseménymodell lehetővé teszi például az aszinkron hívási műveletek befejeződésének figyelését is, illetve az objektumok állapotának változásának nyomonkövetését.

    Work queues
    Ez az aszinkron műveletek szálakkal kapcsolatos végrehajtását hivatott leegyszerűsíteni.

Migráció:

Ez mindig nagy kérdés szokott lenni minden megjelenő új technológia esetében, vagyis hogyan tudjuk az eddigi alkalmazásainkat, amelyeket a DirectShow-ra építettünk a Media Foundation-re átvinni?

Itt megtaláljuk a választ minderre: Migrating from DirectShow to Media Foundation
Itt szépen táblázatszerűen felvannak sorolva a Media Foundation és a DirectShow szolgáltatásainak összehasonlítása. Ennél szebben már tényleg nem is lehetett volna ezt az egészet levezetni, csak ezt a DirectShow SDK-ba is ideje lenne átírni, mert biztos észre nem vettem volna, ráadásul keresni meg végképp nem kezdtem el, mivel még ráadásul az is van odaírva, hogy jelenleg nincs szádékukban átvinni, ehhez képest a helyzet a Windows Vista SDK óta teljesen más.

Ezek a Foundation kifejezések most már kezdenek ragájosak lenni , de jó nagyon. Imádom. Legalább most már minden valamilyen Foundation lesz és erre lehet építkezni. A neveket is könnyű lesz megjegyeznem.

Hozzászólás