CTransformFilter (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 CTransformFilter
clase es una clase base para implementar filtros de transformación. Esta clase está diseñada para implementar un filtro de transformación con un pin de entrada y un pin de salida. Usa asignadores independientes para el pin de entrada y el pin de salida. Para crear un filtro que procese los datos en su lugar, use la clase CTransInPlaceFilter .
Este filtro usa la clase CTransformInputPin para su pin de entrada y la clase CTransformOutputPin para su pin de salida. Normalmente, no es necesario invalidar estas clases de patillas. La mayoría de los métodos pin llaman a los métodos correspondientes en la CTransformFilter
clase , por lo que puede invalidar los métodos de filtro si es necesario. El filtro crea ambos pines en el método CTransformFilter::GetPin . Si invalida las clases de anclaje, debe invalidar GetPin para crear los pines personalizados.
Para usar esta clase, derive una nueva clase de CTransformFilter
e implemente los métodos siguientes:
- CTransformFilter::CheckInputType
- CTransformFilter::CheckTransform
- CTransformFilter::D ecideBufferSize
- CTransformFilter::GetMediaType
- CTransformFilter::Transform
Es posible que también tenga que invalidar otros métodos, en función de los requisitos del filtro.
Tipos de medios
El pin de entrada de este filtro no propone ningún tipo de medio; se basa en el filtro ascendente para proponer los tipos de medios para la conexión. El motivo de este diseño es que, en la mayoría de los casos, el filtro ascendente puede proporcionar más información sobre el formato. Por ejemplo, con formatos de vídeo, el filtro ascendente conoce las dimensiones de vídeo y la velocidad de fotogramas, mientras que el filtro de transformación no tiene forma de determinar esta información. Si desea cambiar este comportamiento, invalide el método GetMediaType del pin de entrada. Cuando el filtro ascendente propone un tipo de medio, el pin de entrada llama al método CheckInputType del filtro (virtual puro).
Hasta que se conecte el pin de entrada, el pin de salida rechaza todas las conexiones y no devuelve ningún tipo de medio preferido. Una vez conectado el pin de entrada, el pin de salida devuelve una lista de tipos preferidos mediante una llamada al método GetMediaType del filtro. Comprueba los tipos de salida de la conexión a través del método CheckTransform del filtro. (Ambos métodos son virtuales puros). Normalmente, el tipo de entrada determinará en parte los tipos de salida aceptables.
En función del filtro, es posible que desee registrar algunos de los tipos de medios admitidos del filtro para que el objeto Filter Mapper pueda localizar el filtro. Para obtener más información, vea Cómo registrar filtros directShow.
Streaming
Esta clase no pone en cola los datos de salida. Cada ejemplo de salida se entrega dentro del método IMemInputPin::Receive . El método Receive llama al método Transform del filtro (también virtual puro) para procesar los datos.
Para obtener más información sobre el uso de esta clase, vea Escribir filtros de transformación.
Variables miembro protegidas | Descripción |
---|---|
m_bEOSDelivered | Marca que indica si el filtro ha enviado una notificación de fin de secuencia. |
m_bSampleSkipped | Marca que indica si se quitó el ejemplo más reciente. |
m_bQualityChanged | Marca que indica si la calidad ha cambiado. |
m_csFilter | Sección crítica que protege el estado del filtro. |
m_csReceive | Sección crítica que protege el estado de streaming. |
m_pInput | Puntero al pin de entrada. |
m_pOutput | Puntero al pin de salida. |
Métodos públicos | Descripción |
CTransformFilter | Método constructor. |
~ CTransformFilter | Método de destructor. |
GetPinCount | Recupera el número de patillas del filtro. Virtual. |
GetPin | Recupera un pin. Virtual. |
Transform | Transforma un ejemplo de entrada para generar un ejemplo de salida. Virtual. |
StartStreaming | Se llama cuando el filtro cambia al estado en pausa. Virtual. |
StopStreaming | Se llama cuando el filtro cambia al estado detenido. Virtual. |
AlterQuality | Notifica al filtro que se solicita un cambio de calidad. Virtual. |
SetMediaType | Se llama cuando el tipo de medio se establece en una de las patillas del filtro. Virtual. |
CheckConnect | Determina si una conexión de patilla es adecuada. Virtual. |
BreakConnect | Libera un pin de una conexión. Virtual. |
CompleteConnect | Completa una conexión de patilla. Virtual. |
Recepción | Recibe un ejemplo multimedia, lo procesa y entrega un ejemplo de salida al filtro de bajada. Virtual. |
InitializeOutputSample | Recupera un nuevo ejemplo de salida y lo inicializa. |
EndOfStream | Notifica al filtro que no se espera ningún dato adicional desde el pin de entrada. Virtual. |
BeginFlush | Comienza una operación de vaciado. Virtual. |
EndFlush | Finaliza una operación de vaciado. Virtual. |
NewSegment | Notifica al filtro que los ejemplos multimedia recibidos después de esta llamada se agrupan como un segmento. Virtual. |
Métodos virtuales puros | Descripción |
CheckInputType | Comprueba si un tipo de medio especificado es aceptable para la entrada. |
CheckTransform | Comprueba si un tipo de medio de entrada es compatible con un tipo de medio de salida. |
DecideBufferSize | Establece los requisitos del búfer del pin de salida. |
GetMediaType | Recupera un tipo de medio preferido para el pin de salida. |
Métodos IMediaFilter | Descripción |
Stop | Detiene el filtro. |
Pausa | Pausa el filtro. |
Métodos IBaseFilter | Descripción |
FindPin | Recupera el pin con el identificador especificado. |
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Biblioteca |
|