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 |
---|---|
|
Al menos un representador de bajada no enviará una notificación de detención. |
|
Correcto. |
|
No se pudo encontrar un pin coincidente o el pin no admitía el control de secuencia. |
|
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.
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.
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 |