Metodo IMediaSeeking::SetRate (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il SetRate metodo imposta la frequenza di riproduzione.

Sintassi

HRESULT SetRate(
  [in] double dRate
);

Parametri

[in] dRate

Velocità di riproduzione. Non deve essere zero.

Valore restituito

Restituisce un valore HRESULT . Di seguito sono indicati alcuni valori possibili.

Codice restituito Descrizione
S_OK
Operazione completata.
E_INVALIDARG
La frequenza specificata è zero o un valore negativo. (Vedere Note).
E_NOTIMPL
Non implementato.
E_POINTER
Argomento puntatore NULL.
VFW_E_UNSUPPORTED_AUDIO
Il dispositivo audio o il filtro non supporta questa frequenza.

Commenti

La velocità di riproduzione viene espressa come rapporto della velocità normale. Pertanto, 1,0 è normale velocità di riproduzione, 0,5 è metà velocità e 2,0 è due volte velocità. Per i flussi audio, la modifica della frequenza cambia anche l'inclinazione.

I valori negativi indicano la riproduzione inversa. La maggior parte dei filtri non supporta la riproduzione negativa, ma restituisce invece un codice di errore se il parametro dRate è negativo.

Quando un'applicazione chiama questo metodo in Filter Graph Manager, Filter Graph Manager esegue le operazioni seguenti:

  1. Chiama il metodo IMediaSeeking::GetCurrentPosition . Questa chiamata restituisce la posizione corrente calcolata da Filter Graph Manager.
  2. Arresta il grafico del filtro (se il grafico è in pausa o in esecuzione).
  3. Chiama il metodo IMediaSeeking::SetPositions sui filtri, con la posizione corrente come ora di inizio. Questo ha l'effetto di reimpostare il tempo di flusso su zero.
  4. Chiama il SetRate metodo sui filtri, con la nuova frequenza.
  5. Riprende il grafico del filtro, se è stato sospeso o in esecuzione.
Se si verifica un errore nel passaggio 4, Filter Graph Manager tenta di ripristinare la frequenza precedente.

I filtri devono rispondere alle modifiche alla frequenza come indicato di seguito:

Parser e filtri di origine: Il filtro che ha origine i timestamp risponde alla SetRate chiamata. Si tratta in genere di un filtro parser, ad esempio il filtro di divisione AVI, ma potrebbe trattarsi di un filtro di origine. Dopo qualsiasi modifica di ricerca o frequenza, il filtro deve chiamare il metodo IPin::NewSegment con le nuove impostazioni. Dopo una modifica della frequenza, deve modificare i timestamp di conseguenza. Poiché una modifica della frequenza è preceduta da una ricerca, i timestamp vengono riavviati da zero, quindi il filtro può semplicemente dividere per la frequenza per calcolare i nuovi timestamp.

Filtri del decodificatore: I decodificatori non devono agire sulle SetRate chiamate diverse da passarle a monte. Devono invece rispondere alla chiamata NewSegment che il parser upstream emette. Quando un filtro decodificatore riceve nuove informazioni sul segmento, deve archiviare i valori e passare la chiamata NewSegment downstream. Alcuni decodificatori devono generare timestamp aggiuntivi interpolando il proprio input; devono prendere in considerazione le modifiche al tasso in caso di tale operazione.

Renderer: I renderer video possono in genere ignorare le modifiche alla frequenza, perché i fotogrammi in ingresso hanno già il timestamp corretto. I renderer audio devono modificare la frequenza di riproduzione, perché i decodificatori audio in genere non apportano conversioni di modifica della frequenza.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione strmif.h (include Dshow.h)
Libreria Strmiids.lib

Vedi anche

Codici di errore e di esito positivo

Interfaccia IMediaSeeking