Interfaz IMF2DBuffer (mfobjects.h)
Representa un búfer que contiene una superficie bidimensional, como un fotograma de vídeo.
Herencia
La interfaz IMF2DBuffer hereda de la interfaz IUnknown . IMF2DBuffer también tiene estos tipos de miembros:
Métodos
La interfaz IMF2DBuffer tiene estos métodos.
IMF2DBuffer::ContiguousCopyFrom Copia datos en este búfer desde un búfer que tiene un formato contiguo. |
IMF2DBuffer::ContiguousCopyTo Copia este búfer en el búfer del autor de la llamada, convirtiendo los datos en formato contiguo. |
IMF2DBuffer::GetContiguousLength Recupera el número de bytes necesarios para almacenar el contenido del búfer en formato contiguo. |
IMF2DBuffer::GetScanline0AndPitch Recupera un puntero a la memoria del búfer y al intervalo de superficie. |
IMF2DBuffer::IsContiguousFormat Consulta si el búfer es contiguo en su formato nativo. |
IMF2DBuffer::Lock2D Proporciona al autor de la llamada acceso a la memoria del búfer. (IMF2DBuffer.Lock2D) |
IMF2DBuffer::Unlock2D Desbloquea un búfer que se bloqueó anteriormente. Llame a este método una vez para cada llamada a IMF2DBuffer::Lock2D. |
Comentarios
Para obtener un puntero a esta interfaz, llame a QueryInterface en el búfer multimedia.
Para usar un búfer 2D, es importante conocer el intervalo, que es el número de bytes necesarios para pasar de una fila de píxeles a la siguiente. El paso puede ser mayor que el ancho de la imagen, ya que la superficie puede contener bytes de relleno después de cada fila de píxeles. El paso también puede ser negativo, si los píxeles están orientados hacia abajo en la memoria. Para obtener más información, consulte Image Stride.
Cada formato de vídeo define una representación contigua o empaquetada . Esta representación es compatible con el diseño estándar de una superficie directX en la memoria del sistema, sin relleno adicional. En el caso del vídeo RGB, la representación contigua tiene un tono igual al ancho de la imagen en bytes, redondeado hasta el límite DWORD más cercano. Para el vídeo YUV, el diseño de la representación contigua depende del formato YUV. En el caso de los formatos YUV planar, el plano Y podría tener un tono diferente al de los planos you y V.
Si un búfer multimedia admite la interfaz IMF2DBuffer , no se garantiza que el búfer subyacente tenga una representación contigua, ya que puede haber bytes de relleno adicionales después de cada fila de píxeles. Cuando un búfer no es contiguo, los métodos Lock y Lock2D tienen comportamientos diferentes:
- El método Lock2D devuelve un puntero al búfer subyacente. Es posible que el búfer no sea contiguo.
- El método Lock devuelve un búfer que se garantiza que es contiguo. Si el búfer subyacente no es contiguo, el método copia los datos en un nuevo búfer y el método Unlock lo copia de nuevo en el búfer original.
Para las imágenes sin comprimir, la cantidad de datos válidos en el búfer viene determinada por el ancho, el alto y el diseño de píxeles de la imagen. Por este motivo, si llama a Lock2D para acceder al búfer, no confíe en los valores devueltos por IMFMediaBuffer::GetCurrentLength o IMFMediaBuffer::GetMaxLength. Del mismo modo, si modifica los datos en el búfer, no tiene que llamar a IMFMediaBuffer::SetCurrentLength para actualizar el tamaño. Por lo general, debe evitar mezclar llamadas a métodos IMF2DBuffer y IMFMediaBuffer en el mismo búfer multimedia.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | mfobjects.h (include Mfidl.h) |