Compartir a través de


Método IMediaControl::GetState (control.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 GetState método recupera el estado del gráfico de filtro, en pausa, en ejecución o detenido.

Las transiciones de estado no son necesariamente sincrónicas. Por lo tanto, al llamar a este método, el gráfico de filtros podría estar en transición a un nuevo estado. En ese caso, el método se bloquea hasta que finalice la transición o hasta que transcurra el tiempo de espera especificado.

Sintaxis

HRESULT GetState(
  [in]  LONG          msTimeout,
  [out] OAFilterState *pfs
);

Parámetros

[in] msTimeout

Duración del tiempo de espera, en milisegundos, o INFINITE para especificar un tiempo de espera infinito.

[out] pfs

Recibe un miembro de la enumeración FILTER_STATE .

Valor devuelto

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

Código devuelto Descripción
S_OK
Correcto.
VFW_S_STATE_INTERMEDIATE
El gráfico de filtros todavía está en transición al estado indicado.
VFW_S_CANT_CUE
El gráfico de filtro está en pausa, pero no puede hacer referencia a los datos.
E_FAIL
Error.

Comentarios

Las aplicaciones pueden usar este método para determinar si la reproducción se ha iniciado después de una llamada a IMediaControl::Run. Por lo general, las aplicaciones deben tener su propio mecanismo para realizar el seguimiento del estado en el que han colocado el gráfico de filtro. Las aplicaciones suelen usar el estado actual para determinar qué controles de interfaz de usuario están habilitados o deshabilitados. Por ejemplo, una vez que el gráfico entra en estado de ejecución, la aplicación podría deshabilitar un botón "Reproducir" y habilitar los botones "Detener" y "Pausar".

Si el gráfico de filtro está en una transición a un nuevo estado, el estado devuelto es el nuevo, no el estado anterior.

Este método devuelve un error si hay una llamada en otro subproceso para cambiar el estado mientras este método está bloqueado.

Evite especificar un tiempo de espera de INFINITE, ya que los subprocesos no pueden procesar mensajes mientras esperan en GetState. Si llama GetState desde el subproceso que procesa los mensajes de Windows, especifique tiempos de espera pequeños en la llamada para seguir respondiendo a la entrada del usuario. Esto es especialmente importante cuando el origen se transmite a través de una red o desde Internet porque las transiciones de estado en estos entornos pueden tardar mucho más tiempo en completarse.

Enumeración FILTER_STATE . Puede convertir la variable de la siguiente manera:


FILTER_STATE fs;
hr = pControl->GetState(msTimeOut, (OAFilterState*)&fs);

Para obtener más información sobre los estados del gráfico de filtro, vea Estados de filtro.

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 control.h (incluir Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y éxito

IMediaControl (interfaz)