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.
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 |
|
Biblioteca |
|