Método IMediaSeeking::SetRate (strmif.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 SetRate
método define a taxa de reprodução.
Sintaxe
HRESULT SetRate(
[in] double dRate
);
Parâmetros
[in] dRate
Taxa de reprodução. Não deve ser zero.
Retornar valor
Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
A taxa especificada era zero ou um valor negativo. (Consulte os comentários.) |
|
Não implementado. |
|
Argumento de ponteiro NULL. |
|
O dispositivo ou filtro de áudio não dá suporte a essa taxa. |
Comentários
A taxa de reprodução é expressa como uma taxa da velocidade normal. Assim, 1.0 é velocidade de reprodução normal, 0,5 é meia velocidade e 2,0 é duas vezes mais velocidade. Para fluxos de áudio, alterar a taxa também altera o tom.
Valores negativos indicam a reprodução inversa. A maioria dos filtros não dá suporte à reprodução negativa, mas retorna um código de erro se o parâmetro dRate for negativo.
Quando um aplicativo chama esse método no Gerenciador de Grafo de Filtro, o Gerenciador de Grafo de Filtros faz o seguinte:
- Chama o método IMediaSeeking::GetCurrentPosition . Essa chamada retorna a posição atual, conforme calculado pelo Gerenciador de Grafo de Filtro.
- Interrompe o grafo de filtro (se o grafo estiver em pausa ou em execução).
- Chama o método IMediaSeeking::SetPositions nos filtros, com a posição atual como a hora de início. Isso tem o efeito de redefinir o tempo de fluxo para zero.
- Chama o
SetRate
método nos filtros, com a nova taxa. - Retoma o grafo de filtro, se ele foi pausado ou em execução.
Os filtros devem responder às alterações de taxa da seguinte maneira:
Filtros de analisador e de origem: O filtro que origina os carimbos de data/hora responde à SetRate
chamada. Geralmente, esse é um filtro de analisador, como o Filtro de Divisor de AVI, mas pode ser um filtro de origem. Após qualquer busca ou alteração de taxa, o filtro deve chamar o método IPin::NewSegment com as novas configurações. Após uma alteração de taxa, ele deve ajustar seus carimbos de data/hora adequadamente. Como uma alteração de taxa é precedida por uma busca, os carimbos de data/hora são reiniciados de zero, portanto, o filtro pode simplesmente dividir pela taxa para calcular os novos carimbos de data/hora.
Filtros de decodificador: Os decodificadores não devem agir em SetRate
chamadas além de passá-las upstream. Em vez disso, eles devem responder à chamada NewSegment que o upstream problemas do analisador. Quando um filtro de decodificador recebe novas informações de segmento, ele deve armazenar os valores e passar a chamada NewSegment downstream. Alguns decodificadores precisam gerar carimbos de data/hora extras interpolando sua entrada; eles devem levar em conta as alterações de taxa ao fazê-lo.
Renderers: Normalmente, os renderizadores de vídeo podem ignorar as alterações de taxa, pois os quadros de entrada já têm o carimbo de data/hora correto. Os renderizadores de áudio devem modificar sua taxa de reprodução, pois os decodificadores de áudio normalmente não fazem conversões de alteração de taxa.
Requisitos
Requisito | Valor |
---|---|
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 | strmif.h (inclua Dshow.h) |
Biblioteca | Strmiids.lib |