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.
Llame al método Lock2D para acceder al búfer 2D en su formato nativo. Es posible que el formato nativo no sea contiguo. El método IMFMediaBuffer::Lock del búfer devuelve una representación contigua del búfer. Sin embargo, esto podría requerir una copia interna del formato nativo. Para los búferes 2D, por lo tanto, debe usar el método Lock2D y evitar el método Lock . Dado que el método Lock puede provocar hasta dos copias de búfer, el método Lock2D suele ser más eficaz y debe usarse cuando sea posible. Para averiguar si el búfer subyacente es contiguo, llame a IMF2DBuffer::IsContiguousFormat.

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)

Consulte también

Búferes multimedia

Interfaces de Media Foundation

Búferes de vídeo sin comprimir