CMediaSample (clase)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Jerarquía de clases de cmediasample

La CMediaSample clase define un ejemplo multimedia que admite la interfaz IMediaSample2 . El ejemplo multimedia contiene un puntero a un búfer de memoria y varias propiedades almacenadas como variables miembro protegidas.

Los ejemplos multimedia se crean mediante asignadores, que se derivan de la clase CBaseAllocator . El CMediaSample constructor recibe un puntero a un búfer asignado, junto con el tamaño del búfer. Otras propiedades se establecen y recuperan normalmente a través de métodos de interfaz IMediaSample .

El ciclo de vida de un ejemplo multimedia difiere del de la mayoría de los objetos COM:

  • El asignador contiene una lista de ejemplos gratuitos. Cuando un filtro necesita un nuevo ejemplo, llama al método IMemAllocator::GetBuffer del asignador. El asignador recupera un ejemplo de su lista libre, incrementa el recuento de referencias del ejemplo y devuelve un puntero al ejemplo.
  • Una vez que el filtro se realiza con el ejemplo, llama al método IUnknown::Release en el ejemplo. A diferencia de la mayoría de los objetos, el ejemplo no se elimina a sí mismo cuando su recuento de referencias alcanza cero. En su lugar, llama al método IMemAllocator::ReleaseBuffer en el asignador y el asignador devuelve el ejemplo a su lista gratuita.
  • El asignador no destruye las muestras hasta que se llama al método IMemAllocator::D ecommit .
Variables miembro protegidas Descripción
m_dwFlags Marcas de propiedad de ejemplo.
m_dwTypeSpecificFlags Marcas específicas del tipo.
m_pBuffer Puntero al búfer de memoria que contiene los datos multimedia.
m_lActual Longitud de los datos válidos en el búfer, en bytes.
m_cbBuffer Tamaño del búfer, en bytes.
m_pAllocator Puntero al asignador que creó este ejemplo.
m_pNext Puntero al siguiente ejemplo en la lista de ejemplos del asignador.
m_Start Hora de inicio de ejemplo.
m_End Hora de finalización de ejemplo.
m_MediaStart Hora de inicio del medio.
m_MediaEnd Tiempo de detención de medios.
m_pMediaType Puntero al tipo de medio, si el tipo ha cambiado del ejemplo anterior en el flujo de datos.
m_dwStreamId Identificador de flujo.
Variables de miembro público Descripción
m_cRef Recuento de referencias.
Métodos públicos Descripción
CMediaSample Método constructor.
~ CMediaSample Método de destructor. Virtual.
SetPointer Establece el puntero en el búfer de memoria.
Métodos de IMediaSample Descripción
GetPointer Recupera un puntero de lectura y escritura al búfer.
GetSize Recupera el tamaño del búfer.
ConocerHora Recupera los tiempos de secuencia en los que debe comenzar y finalizar este ejemplo.
SetTime Establece los tiempos de transmisión en los que este ejemplo debe comenzar y finalizar.
IsSyncPoint Determina si el principio del ejemplo es un punto de sincronización.
SetSyncPoint Especifica si el principio de este ejemplo es un punto de sincronización.
IsPreroll Determina si este ejemplo es un ejemplo de inscripción previa.
SetPreroll Especifica si este ejemplo es un ejemplo de inscripción previa.
GetActualDataLength Recupera la longitud de los datos válidos en el búfer.
SetActualDataLength Establece la longitud de los datos válidos en el búfer.
GetMediaType Recupera el tipo de medio, si el tipo de medio difiere del ejemplo anterior.
SetMediaType Establece el tipo de medio para el ejemplo.
IsDiscontinuity Determina si este ejemplo representa un salto en el flujo de datos.
SetDiscontinuity Especifica si este ejemplo representa un salto en el flujo de datos.
GetMediaTime Recupera los tiempos multimedia de este ejemplo.
SetMediaTime Establece los tiempos multimedia de este ejemplo.
Métodos IMediaSample2 Descripción
GetProperties Recupera las propiedades del ejemplo.
SetProperties Establece las propiedades del ejemplo.

Requisitos

Requisito Value
Encabezado
Amfilter.h (include Streams.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)