CPullPin (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 cpullpin

La CPullPin clase proporciona compatibilidad con patillas de entrada que extraen datos a través de la interfaz IAsyncReader . Use esta clase si va a implementar un filtro que use el modelo de extracción para solicitar datos del filtro ascendente. Para obtener más información, vea Data Flow en el gráfico de filtros y el modelo de extracción.

Esta clase no deriva de CBasePin ni implementa la interfaz IPin , y algunos de los nombres de método coinciden con IPin, por lo que se usa mejor como un objeto auxiliar dentro del pin. Para usar esta clase, haga lo siguiente:

  1. Derive una clase auxiliar de CPullPiny derive una clase pin de entrada de CBasePin. Declare una instancia del CPullPin objeto como una variable miembro de la clase pin.
  2. Invalide el método CBasePin::CheckConnect para llamar a CPullPin::Connect. Este método consulta el otro pin para IAsyncReader.
  3. Invalide el método CBasePin::BreakConnect para llamar a CPullPin::D isconnect.
  4. Invalide el método CBasePin::Active para llamar a CPullPin::Active. Este método inicia un subproceso de trabajo que extrae ejemplos del filtro ascendente. Cuando se conecten las patillas, puede especificar si desea que el subproceso de trabajo realice solicitudes de lectura asincrónicas o sincrónicas.
  5. Invalide el método CBasePin::Inactive para llamar a CPullPin::Inactive. Este método apaga el subproceso de trabajo.
  6. Implemente el método CPullPin::Receive virtual puro para procesar ejemplos entrantes y entregarlos de bajada.
  7. Para establecer las posiciones de detención e inicio, o para buscar la secuencia, llame al método CPullPin::Seek . Este método pausa el subproceso de trabajo y vacía el gráfico de filtros.
  8. Implemente los métodos CPullPin::EndOfStream, CPullPin::BeginFlush y CPullPin::EndFlush puros, como se describe en los comentarios de esos métodos.
  9. Implemente el método CPullPin::OnError virtual puro para controlar los errores de streaming.
Variables de miembro público Descripción
m_pAlloc Puntero a la interfaz IMemAllocator del asignador de memoria.
Métodos públicos Descripción
Activo Crea un subproceso de trabajo que extrae datos del pin de salida.
AlignDown Trunca un valor en un límite de alineación especificado.
AlignUp Redondea un valor hasta un límite de alineación especificado.
Conectar Completa una conexión con el pin de salida.
CPullPin Método constructor.
~CPullPin Método de destructor. Virtual.
DecideAllocator Negocia un asignador con el pin de salida. Virtual.
Desconectar Picos de la conexión con el pin de salida.
Duración Recupera la duración de la secuencia.
GetReader Devuelve un puntero a la interfaz IAsyncReader del pin de salida.
Inactivo Cierra el subproceso de trabajo que extrae datos del pin de salida.
Seek Establece las posiciones de inicio y detención de la secuencia.
Métodos virtuales puros Descripción
BeginFlush Informa al filtro propietario para vaciar los filtros de bajada.
EndFlush Informa al filtro propietario para finalizar una operación de vaciado.
EndOfStream Se llama después de que el objeto entregue el último ejemplo.
OnError Se llama si se produce un error durante el streaming.
Recepción Se llama cuando el objeto recibe un ejemplo multimedia del pin de salida.

Requisitos

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