Compartilhar via


Método IMediaControl::Run (control.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O Run método executa todos os filtros no grafo de filtro. Enquanto o grafo está em execução, os dados se movem pelo grafo e são renderizados.

Sintaxe

HRESULT Run();

Retornar valor

Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.

Código de retorno Descrição
S_FALSE
O grafo está se preparando para ser executado, mas alguns filtros não concluíram a transição para um estado em execução.
S_OK
Todos os filtros no grafo concluíram a transição para um estado em execução.

Comentários

Se o grafo de filtro for interrompido, esse método pausará o grafo antes de ser executado. Se o grafo já estiver em execução, o método retornará S_OK mas não terá efeito.

O grafo é executado até que o aplicativo chame o método IMediaControl::P ause ou IMediaControl::Stop . Quando a reprodução atinge o final do fluxo, o grafo continua a ser executado, mas os filtros não transmitem mais dados. Nesse ponto, o aplicativo pode pausar ou parar o grafo. Para obter informações sobre o evento de fim do fluxo, consulte IMediaControl::P ause e EC_COMPLETE.

Esse método não busca o início do fluxo. Portanto, se você executar o grafo, pausar e executá-lo novamente, a reprodução será retomada da posição pausada. Se você executar o grafo depois que ele chegar ao final do fluxo, nada será renderizado. Para buscar o grafo, use a interface IMediaSeeking .

Se o método retornar S_FALSE, isso significa que o método retornou antes que todos os filtros alternassem para um estado em execução. Os filtros concluirão a transição após o retorno do método. Opcionalmente, você pode aguardar a conclusão da transição chamando o método IMediaControl::GetState com um valor de tempo limite. No entanto, isso não é obrigatório.

Se o método Run retornar um código de erro, isso significa que um ou mais filtros não foram executados. No entanto, alguns filtros podem estar em um estado em execução. Em um grafo multistream, fluxos inteiros podem estar sendo reproduzidos com êxito. Normalmente, o aplicativo derrubaria o grafo e relataria um erro nesse caso.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho control.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IMediaControl Interface