Método ICaptureGraphBuilder2::ControlStream (strmif.h)

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

El ControlStream método establece las horas de inicio y detención de uno o varios flujos de datos capturados.

Sintaxis

HRESULT ControlStream(
  [in] const GUID     *pCategory,
  [in] const GUID     *pType,
  [in] IBaseFilter    *pFilter,
  [in] REFERENCE_TIME *pstart,
  [in] REFERENCE_TIME *pstop,
  [in] WORD           wStartCookie,
  [in] WORD           wStopCookie
);

Parámetros

[in] pCategory

Puntero a un GUID que especifica una de las categorías de patillas enumeradas en Conjunto de propiedades de pin. El valor de este parámetro no puede ser NULL.

[in] pType

Puntero a un GUID de tipo principal que especifica el tipo de medio o NULL. Si este parámetro es NULL, establezca también el parámetro pFilter en NULL . De lo contrario, puede controlar el pin incorrecto y obtener resultados imprevisibles.

[in] pFilter

Puntero a una interfaz IBaseFilter que especifica qué filtro se va a controlar. Para controlar todos los filtros de captura del gráfico, establezca este parámetro en NULL.

[in] pstart

Puntero a una variable que contiene la hora de inicio. Si el valor es MAXLONGLONG (0x7FFFFFFFFFFFFFFF), el método cancela la solicitud de inicio anterior. Si el valor es NULL, el pin se inicia inmediatamente cuando se ejecuta el gráfico.

[in] pstop

Puntero a una variable que contiene la hora de detención. Si el valor es MAXLONGLONG, el método cancela cualquier solicitud de detención anterior. Si el valor es NULL, el pin se detiene inmediatamente.

[in] wStartCookie

Valor que se envía como segundo parámetro de la notificación de eventos EC_STREAM_CONTROL_STARTED . Vea Comentarios para obtener más información.

[in] wStopCookie

Valor que se envía como segundo parámetro de la notificación de eventos EC_STREAM_CONTROL_STOPPED . Vea Comentarios para obtener más información.

Valor devuelto

Devuelve un valor HRESULT . Estos son algunos de los valores posibles.

Código devuelto Descripción
S_FALSE
Al menos un representador de bajada no enviará una notificación de detención.
S_OK
Correcto.
E_FAIL
No se pudo encontrar un pin coincidente o el pin no admitía el control de secuencia.
E_POINTER
Argumento de puntero NULL.

Comentarios

Este método busca patillas de salida en filtros de captura mediante criterios de búsqueda que proporcione en la llamada al método. A continuación, llama a los métodos IAMStreamControl en esos patillas. Este método permite a una aplicación controlar secuencias sin necesidad de enumerar los filtros y patillas del gráfico.

Use este método para la captura precisa de fotogramas o para el control individual de la captura y la vista previa. Por ejemplo, puede detener la captura en el disco, pero dejar la vista previa del vídeo en ejecución.

Los tres primeros parámetros especifican qué patillas se van a controlar. Un gráfico de captura puede tener más de un filtro de captura. Por ejemplo, podría tener filtros para los datos de vídeo, audio y subtítulos. Además, un filtro de captura puede tener más de un pin de salida. Algunos filtros de captura tienen patillas independientes para vista previa y captura, o patillas independientes para datos de solo vídeo y datos intercalados de audio y vídeo. Para controlar la vista previa de vídeo, por ejemplo, especifique PIN_CATEGORY_PREVIEW para pCategory y MEDIATYPE_Video para pType.

Nota  

Si la categoría de patillas está PIN_CATEGORY_PREVIEW, no puede establecer tiempos de inicio y detención específicos, ya que los ejemplos entregados por un pin de vista previa no tienen marcas de tiempo (consulte Marcas de tiempo). En su lugar, use los valores NULL y MAXLONGLONG para iniciar y detener la patilla en los momentos deseados.

Además, este método no se admite para la versión preliminar si el dispositivo usa un pin de puerto de vídeo, ya que en ese caso el dispositivo está entregando los ejemplos de vista previa directamente a través del hardware.

 
Para controlar un pin, este método llama a los métodos IAMStreamControl::StartAt e IAMStreamControl::StopAt . Cada patilla envía una notificación de evento EC_STREAM_CONTROL_STARTED cuando se inicia. El segundo parámetro de la notificación de eventos es el valor proporcionado en wStartCookie. Cuando se detiene el pin, envía una notificación de evento EC_STREAM_CONTROL_STOPPED . El segundo parámetro de esa notificación de eventos es el valor especificado en wStopCookie.

Cuando este método localiza un pin coincidente, busca en el nivel inferior otro filtro que admita IAMStreamControl (normalmente un multiplexador). Si encuentra una, también establece las horas de inicio y detención en ese filtro. Esto genera dos pares de notificaciones de detención: una para el filtro de captura y otra para el filtro de bajada. Solo la notificación de detención del filtro de bajada usa el parámetro wStopCookie . Esperando este evento garantiza que el filtro de bajada recibe el último ejemplo.

Si ningún filtro de bajada admite IAMStreamControl, el método devuelve S_FALSE. En ese caso, es posible que reciba la notificación de detención antes de que se represente el último ejemplo.

MAXLONGLONG es el valor de REFERENCE_TIME más grande posible. En la biblioteca de clases base directShow, también se define como la constante MAX_TIME.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado strmif.h (incluye Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y éxito

ICaptureGraphBuilder2 (Interfaz)