Introduzione al supporto del codec hardware in AVStream
A partire da Windows 7, Windows Media Foundation rappresenta i componenti multimediali basati su AVStream come trasformazioni media Foundation in modalità utente (MFT).
Usando questa funzionalità, i fornitori possono presentare decodificatori, codificatori e processori video basati su hardware come processori multifunzione che possono a sua volta essere manipolati a livello di applicazione.
Il modello AVStream rimane invariato in Windows 7 e richiede solo alcune aggiunte al minidriver per abilitare questa funzionalità.
La topologia di transcoding è illustrata nel diagramma seguente:
Per ottenere prestazioni ottimali, l'elaborazione dei supporti visualizzata nella riga inferiore del diagramma deve verificarsi nell'hardware dedicato. In questo scenario, l'hardware transcode dedicato è noto come Decodificatore hardware protetto (SHED). SHED può essere in pacchetto come modulo plug-in per la scheda madre o come funzionalità integrata nella scheda di visualizzazione.
Windows 7 supporta ancora la transcodatura basata su software. Tuttavia, poiché il sistema esegue il lavoro di transcodatura sull'hardware dedicato anziché sulla CPU, una soluzione basata su SHED migliora significativamente l'esperienza utente rispetto a una soluzione basata su software.
Come illustrato nel diagramma precedente, i client in modalità utente possono accedere alle trasformazioni in modalità utente usando l'interfaccia FMTransform esposta in ogni MFT. FMTransform è disponibile in Vista e versioni successive di Windows, ma il meccanismo per esporre l'elaborazione di supporti basati su hardware alle applicazioni in modalità utente è disponibile solo a partire da Windows 7.
Il proxy del dispositivo fornito dal sistema o Devproxy funge dallo stesso ruolo di KSProxy nel modello di streaming DirectShow. Devproxy broker comunicazione tra Ks.sys in modalità kernel e componenti MFT in modalità utente.
La funzione di elaborazione dei supporti hardware con wrapping risultante è denominata MFT proxy dispositivo. Per sfruttare questo meccanismo, un minidriver AVStream deve eseguire le operazioni seguenti:
Esporre le funzioni di trasformazione come singoli filtri KS che fanno parte del minidriver AVStream. Ad esempio, se il dispositivo ha funzionalità di decodifica, codifica e elaborazione video, queste funzioni devono essere rappresentate come tre filtri KS distinti.
Codificatore: usato per convertire da un formato non compresso a un formato compresso.
Decodificatore: usato per convertire da un formato compresso a un formato non compresso, che deve includere NV12.
Processore video: usato per eseguire la scalabilità, l'interlacciamento/de-interlacciamento e la conversione del formato. Non includere il supporto per l'elaborazione video nel decodificatore o nel filtro del codificatore.
Microsoft consiglia vivamente che i fornitori forniscano supporto per la scalabilità basata su hardware. Tuttavia, se si sceglie di non fornire supporto per la scalabilità basata su hardware, è possibile usare L'elaborazione video fornita dal sistema MFT per eseguire operazioni di ridimensionamento a un livello ridotto di prestazioni. Se non si fornisce supporto per il ridimensionamento basato su hardware, il generatore di topologie Media Foundation inserisce automaticamente il ridimensionamento MFT fornito dal sistema nella topologia.
Registrare i filtri KS di elaborazione multimediale in una delle categorie KS seguenti, disponibili in Windows 7 e versioni successive di Windows:
Inoltre, le categorie seguenti sono definite anche per l'uso in altri scenari di transcodifica:
Le applicazioni di base multimediale possono quindi usare la funzione MFTEnumEx per enumerare i dispositivi registrati come MTS usando le categorie indicate in precedenza.