CSource (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 clase CSource es una clase base para implementar filtros de origen. Un filtro derivado de CSource contiene uno o varios pines de salida derivados de la clase CSourceStream . Cada pin de salida crea un subproceso de trabajo que inserta muestras multimedia de bajada.
Nota:
La clase CSource está diseñada para admitir el modelo de inserción para el flujo de datos. Esta clase no se recomienda para crear filtros de lector de archivos. Los lectores de archivos deben admitir el modelo de extracción a través de la interfaz IAsyncReader . Para obtener más información, consulte Data Flow para desarrolladores de filtros.
Variables miembro protegidas | Descripción |
---|---|
m_iPins | Número de patillas del filtro. |
m_paStreams | Matriz de patillas. |
m_cStateLock | Objeto de sección crítico que protege el estado del filtro. |
Métodos públicos | Descripción |
CSource | Método constructor. |
~CSource | Método de destructor. |
GetPinCount | Recupera el número de patillas del filtro. |
GetPin | Recupera un pin. |
pStateLock | Recupera un puntero al objeto de sección crítica del filtro. |
AddPin | Agrega un nuevo pin de salida al filtro. |
RemovePin | Quita un pin especificado del filtro. |
FindPinNumber | Recupera el número de un pin especificado en el filtro. |
Métodos IBaseFilter | Descripción |
FindPin | Recupera el pin con el identificador especificado. |
Observaciones
Para implementar un pin de salida, haga lo siguiente:
- Derive una clase de CSourceStream.
- Invalide el método CSourceStream::GetMediaType y, posiblemente, el método CSourceStream::CheckMediaType , que valida los tipos de medios para el pin.
- Implemente el método CBaseOutputPin::D ecideBufferSize , que devuelve los requisitos del búfer del pin.
- Implemente el método CSourceStream::FillBuffer , que rellena un búfer de ejemplo multimedia con datos.
Para implementar el filtro, haga lo siguiente:
- Derive una clase de CSource.
- En el constructor, cree uno o varios pines de salida derivados de CSourceStream. Las patillas se agregan automáticamente al filtro en sus métodos de constructor y se quitan automáticamente en sus métodos de destructor.
Para sincronizar el estado del filtro entre varios subprocesos, llame al método CSource::p StateLock . Este método devuelve un puntero a la sección crítica de estado de filtro. Use la clase CAutoLock para contener la sección crítica. Desde un pin, puede acceder a pStateLock desde la variable miembro CBasePin::m_pFilter del pin, como se indica a continuación:
CAutoLock lock(m_pFilter->pStateLock());
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Biblioteca |
|