Komma igång med stöd för maskinvarukod i AVStream
Från och med Windows 7 representerar Windows Media Foundation AVStream-baserade mediekomponenter som Media Foundation Transforms (MFT) i användarläge.
Med den här funktionen kan leverantörer presentera maskinvarubaserade avkodare, kodare och videoprocessorer som MFI som i sin tur kan manipuleras på programnivå.
AVStream-modellen förblir oförändrad i Windows 7 och kräver bara några tillägg till minidrivrutinen för att möjliggöra denna funktionalitet.
Omkodningstopologin visas i följande diagram:
För bästa prestanda bör mediebearbetningen som visas på den nedre raden i diagrammet ske i dedikerad maskinvara. I det här scenariot kallas dedikerad kodmaskinvara för säker maskinvarukodare (SHED). SHED kan paketeras antingen som en plugin-modul för moderkortet eller som en integrerad funktion på bildskärmsadaptern.
Windows 7 stöder fortfarande programvarubaserad omkodning. Men eftersom systemet utför omkodningsarbetet på dedikerad maskinvara i stället för processorn, förbättrar en SHED-baserad lösning användarupplevelsen avsevärt jämfört med en programvarubaserad lösning.
Som du ser i föregående diagram kan klienter i användarläge komma åt transformeringar i användarläge med hjälp av IMFTransform-gränssnittet som exponeras på varje MFT. IMFTransform är tillgängligt i Vista och senare versioner av Windows, men mekanismen för att exponera maskinvarubaserad mediebearbetning för användarlägesprogram är endast tillgänglig från och med Windows 7.
Modulen enhetsproxy som tillhandahålls av systemet, eller Devproxy, har samma roll som KSProxy i DirectShow-strömningsmodellen. Devproxy förmedlar kommunikation mellan Ks.sys i kernelläge och MFT-komponenter i användarläge.
Den resulterande omslutna hårdvarumediebearbetningsfunktionen kallas enhetsproxy-MFT. För att dra nytta av den här mekanismen bör en AVStream-minidrivrutin göra följande:
Exponera transformeringsfunktioner som enskilda KS-filter som ingår i AVStream-minidrivrutinen. Om enheten till exempel har avkodnings-, kodnings- och videobearbetningsfunktioner bör dessa funktioner representeras som tre distinkta KS-filter.
Kodare: används för att konvertera från ett okomprimerat format till ett komprimerat format.
Avkodare: används för att konvertera från ett komprimerat format till ett okomprimerat format, som måste innehålla NV12.
Videoprocessor: används för att utföra skalning, sammanflätning/de-sammanflätning och formatkonvertering. Inkludera inte stöd för videobearbetning i avkodaren eller kodarfiltret.
Microsoft rekommenderar starkt att leverantörer tillhandahåller maskinvarubaserad skalningssupport. Men om du väljer att inte tillhandahålla maskinvarubaserat skalningsstöd kan du använda den systemspecifika videobearbetnings-MFT:en för att utföra skalningsåtgärder på en lägre prestandanivå. Om du inte tillhandahåller maskinvarubaserat skalningsstöd infogar Media Foundation-topologiverktyget automatiskt den systembaserade skalnings-MFT i topologin.
Registrera sina KS-filter för mediebearbetning under någon av följande KS-kategorier, som är tillgängliga i Windows 7 och senare versioner av Windows:
Dessutom definieras följande kategorier för användning i andra omkodningsscenarier:
Media Foundation-program kan sedan använda funktionen MFTEnumEx för att räkna upp de enheter som är registrerade som MMFT:er med hjälp av de kategorier som nämnts tidigare.