IMF2DBuffer-Schnittstelle (mfobjects.h)
Stellt einen Puffer dar, der eine zweidimensionale Oberfläche enthält, z. B. einen Videoframe.
Vererbung
Die IMF2DBuffer-Schnittstelle erbt von der IUnknown-Schnittstelle . IMF2DBuffer verfügt auch über folgende Membertypen:
Methoden
Die IMF2DBuffer-Schnittstelle verfügt über diese Methoden.
IMF2DBuffer::ContiguousCopyFrom Kopiert Daten aus einem Puffer mit einem zusammenhängenden Format in diesen Puffer. |
IMF2DBuffer::ContiguousCopyTo Kopiert diesen Puffer in den Puffer des Aufrufers und konvertiert die Daten in ein zusammenhängendes Format. |
IMF2DBuffer::GetContiguousLength Ruft die Anzahl der Bytes ab, die zum Speichern des Pufferinhalts im zusammenhängenden Format erforderlich sind. |
IMF2DBuffer::GetScanline0AndPitch Ruft einen Zeiger auf den Pufferspeicher und den Oberflächenschritt ab. |
IMF2DBuffer::IsContiguousFormat Fragt ab, ob der Puffer im nativen Format zusammenhängend ist. |
IMF2DBuffer::Lock2D Gewährt dem Aufrufer Zugriff auf den Arbeitsspeicher im Puffer. (IMF2DBuffer.Lock2D) |
IMF2DBuffer::Unlock2D Entsperrt einen Puffer, der zuvor gesperrt war. Rufen Sie diese Methode einmal für jeden Aufruf von IMF2DBuffer::Lock2D auf. |
Hinweise
Um einen Zeiger auf diese Schnittstelle zu erhalten, rufen Sie QueryInterface für den Medienpuffer auf.
Um einen 2D-Puffer zu verwenden, ist es wichtig, den Schritt zu kennen, d. h. die Anzahl der Bytes, die benötigt werden, um von einer Zeile mit Pixeln zur nächsten zu wechseln. Der Schritt kann größer als die Bildbreite sein, da die Oberfläche nach jeder Zeile von Pixeln Auffüllungsbytes enthalten kann. Stride kann auch negativ sein, wenn die Pixel im Arbeitsspeicher von unten nach oben ausgerichtet sind. Weitere Informationen finden Sie unter Bildstride.
Jedes Videoformat definiert eine zusammenhängende oder gepackte Darstellung. Diese Darstellung ist mit dem Standardlayout einer DirectX-Oberfläche im Systemspeicher ohne zusätzlichen Abstand kompatibel. Bei RGB-Videos weist die zusammenhängende Darstellung eine Neigung auf, die der Bildbreite in Bytes entspricht und auf die nächste DWORD-Grenze aufgerundet wird. Bei YUV-Videos hängt das Layout der zusammenhängenden Darstellung vom YUV-Format ab. Bei planaren YUV-Formaten kann die Y-Ebene eine andere Tonhöhe aufweisen als die Ebenen "Sie" und "V".
Wenn ein Medienpuffer die IMF2DBuffer-Schnittstelle unterstützt, wird nicht garantiert, dass der zugrunde liegende Puffer über eine zusammenhängende Darstellung verfügt, da nach jeder Pixelzeile möglicherweise zusätzliche Auffüllungsbytes vorhanden sind. Wenn ein Puffer nicht zusammenhängend ist, weisen die Lock - und Lock2D-Methoden unterschiedliche Verhaltensweisen auf:
- Die Lock2D-Methode gibt einen Zeiger auf den zugrunde liegenden Puffer zurück. Der Puffer ist möglicherweise nicht zusammenhängend.
- Die Lock-Methode gibt einen Puffer zurück, der garantiert zusammenhängend ist. Wenn der zugrunde liegende Puffer nicht zusammenhängend ist, kopiert die Methode die Daten in einen neuen Puffer, und die Unlock-Methode kopiert sie wieder in den ursprünglichen Puffer.
Bei nicht komprimierten Bildern wird die Menge der gültigen Daten im Puffer durch die Breite, Höhe und das Pixellayout des Bilds bestimmt. Wenn Sie Lock2D aufrufen, um auf den Puffer zuzugreifen, verlassen Sie sich daher nicht auf die Werte, die von IMFMediaBuffer::GetCurrentLength oder IMFMediaBuffer::GetMaxLength zurückgegeben werden. Wenn Sie die Daten im Puffer ändern, müssen Sie auch nicht IMFMediaBuffer::SetCurrentLength aufrufen, um die Größe zu aktualisieren. Im Allgemeinen sollten Sie das Mischen von Aufrufen der METHODEN IMF2DBuffer und IMFMediaBuffer auf demselben Medienpuffer vermeiden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | mfobjects.h (include Mfidl.h) |