Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Videobeispielobjekt ist eine spezielle Implementierung der IMFSample-Schnittstelle zur Verwendung mit dem Enhanced Video Renderer (EVR). Um eine instance dieses Objekts zu erstellen, rufen Sie die MFCreateVideoSampleFromSurface-Funktion auf. Die Funktion nimmt einen Zeiger auf eine Direct3D-Oberfläche und gibt einen Zeiger auf die IMFSample-Schnittstelle zurück. Die folgenden Objekttypen sollten Beispiele mithilfe dieser Funktion zuordnen:
Benutzerdefinierte EVR-Referenten. Ein Referent ordnet Videobeispiele zu und sendet sie an die IMFTransform::P rocessOutput-Methode des Mixers . Weitere Informationen finden Sie unter Schreiben eines EVR-Referenten.
Videodecoder, die die Videobeschleunigung unterstützen. Weitere Informationen finden Sie unter Unterstützen von DXVA 2.0 in Media Foundation.
Das Videobeispielobjekt implementiert die folgenden Schnittstellen:
Wenn der pUnkSurface-Parameter von MFCreateVideoSampleFromSurface ungleich NULL ist, enthält das resultierende Videobeispiel einen einzelnen Medienpuffer, der die Direct3D-Oberfläche kapselt. Dieses Pufferobjekt verfügt über eingeschränkte Funktionen:
Die IMFMediaBuffer::Lock-Methode des Puffers gibt E_NOTIMPL zurück.
Der Puffer implementiert die IMF2DBuffer-Schnittstelle nicht.
Die einzige Möglichkeit, über den Puffer auf die Oberfläche zuzugreifen, besteht darin, IMFGetService::GetService mit dem Dienstbezeichner MR_BUFFER_SERVICE aufzurufen.
Wenn der pUnkSurface-ParameterNULL ist, wird das Videobeispiel mit null Medienpuffern erstellt. Gehen Sie wie folgt vor, um dem Beispiel einen Puffer hinzuzufügen:
Erstellen Sie eine Direct3D-Oberfläche.
Erstellen Sie einen Oberflächenpuffer, indem Sie MFCreateDXSurfaceBuffer aufrufen. Weitere Informationen finden Sie unter DirectX Surface Buffer.
Fügen Sie dem Beispiel den Puffer hinzu, indem Sie IMFSample::AddBuffer aufrufen.
Verwenden Sie diesen Ansatz, wenn Sie benötigen, dass der Oberflächenspeicher über die IMF2DBuffer-Schnittstelle zugänglich ist.
Zugehörige Themen