Método IGraphConfig::Reconnect (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 Reconnect
método realiza una reconexión dinámica entre dos patillas.
Sintaxis
HRESULT Reconnect(
[in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter,
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags
);
Parámetros
[in] pOutputPin
Puntero a la interfaz IPin de un pin de salida. Puede ser NULL, en cuyo caso pInputPin no debe ser NULL.
[in] pInputPin
Puntero a la interfaz IPin a un pin de entrada. Puede ser NULL, en cuyo caso pOutputPin no debe ser NULL.
[in] pmtFirstConnection
Puntero a una estructura de AM_MEDIA_TYPE que especifica el tipo de medio para la primera conexión de patilla realizada durante la reconexión. Si este parámetro es NULL, la primera conexión puede tener cualquier tipo de medio.
[in] pUsingFilter
Puntero a un filtro opcional que se va a usar en la reconexión. El filtro ya debe estar en el gráfico. Puede ser NULL.
[in] hAbortEvent
Identificador para un evento. Si el autor de la llamada es un filtro que llama a en uno de sus subprocesos de procesamiento de datos, este parámetro debe ser un identificador de un evento que se indicará cuando el filtro se coloque en un estado detenido. De lo contrario, este parámetro puede ser NULL. Para obtener más información, vea la sección Comentarios.
[in] dwFlags
Combinación de marcas de la enumeración AM_GRAPH_CONFIG_RECONNECT_FLAGS , especificando cómo realizar la reconexión.
Valor devuelto
Devuelve S_OK si se ejecuta correctamente. De lo contrario, devuelve un código de error que puede ser uno de los valores siguientes u otros no enumerados.
Código devuelto | Descripción |
---|---|
|
Argumento no válido. (Por ejemplo, pInputPin y pOutputPin son NULL). |
|
El pin de entrada no admite IPinConnection. |
|
No se puede conectar el filtro. |
|
El estado del filtro ha cambiado. No se puede completar la operación. |
Comentarios
Si especifica solo un pin, el método buscará el otro pin. Sin embargo, de forma predeterminada, se produce un error en la búsqueda si alcanza un filtro que se agregó al gráfico mediante el método IFilterGraph::AddFilter . Para invalidar este comportamiento, llame a IGraphConfig::SetFilterFlags y establezca la marca AM_FILTER_FLAGS_REMOVABLE en el filtro.
El proceso de reconexión implica varios pasos, la mayoría de ellos se controlan dentro de este método:
- En primer lugar, antes de llamar al método , asegúrese de bloquear el flujo de datos a lo largo de la ruta de acceso que se está reconfigurando. Las aplicaciones deben llamar al método IPinFlowControl::Block para hacerlo. Si el autor de la llamada es un filtro, en lugar de una aplicación, posiblemente el filtro pueda controlar el flujo de datos internamente.
- Las patillas de entrada y salida especificadas definen los puntos inicial y final para la reconexión. El pin de entrada debe admitir la interfaz IPinConnection . Si deja uno de estos patillas sin especificar (pasando un parámetro NULL ), el método busca en el gráfico de filtros un pin candidato para volver a conectarse. (Para buscar un pin de entrada, busca hacia abajo desde el pin de salida; para buscar un pin de salida, busca en la cadena ascendente desde el pin de entrada).
- El método inserta los datos pendientes a través del gráfico de filtros (mediante una llamada interna a IGraphConfig::P ushThroughData).
- Si ha especificado un filtro para insertar en el gráfico, el método conecta el pin de salida inicial al pin de entrada del filtro y conecta el pin de salida del filtro al pin de entrada final. Si no especifica un filtro, el método simplemente conecta el pin de salida al pin de entrada. En cualquier caso, el método inserta los filtros de transformación necesarios para completar las conexiones. (Sin embargo, puede invalidar este comportamiento estableciendo la marca adecuada; para obtener más información, consulte la descripción del parámetro dwFlags ).
- Por último, el método coloca los nuevos filtros en un estado en ejecución. Depende del autor de la llamada reiniciar el flujo de datos. Las aplicaciones pueden hacerlo llamando a IPinFlowControl::Block sin marcas.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | strmif.h (incluye Dshow.h) |
Library | Strmiids.lib |