Condividi tramite


Metodo IMFMediaStream::RequestSample (mfidl.h)

Richiede un esempio dall'origine multimediale.

Sintassi

HRESULT RequestSample(
  [in] IUnknown *pToken
);

Parametri

[in] pToken

Puntatore all'interfaccia IUnknown a un oggetto usato come token per la richiesta. Il chiamante deve implementare questo oggetto. Questo parametro può essere NULL. Vedere la sezione Osservazioni.

Valore restituito

Il metodo restituisce un valore HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.

Codice restituito Descrizione
S_OK
Il metodo è riuscito.
MF_E_END_OF_STREAM
È stata raggiunta la fine del flusso.
MF_E_MEDIA_SOURCE_WRONGSTATE
L'origine multimediale viene arrestata.
MF_E_SHUTDOWN
È stato chiamato il metodo Shutdown dell'origine.

Commenti

Se pToken non è NULL, il flusso multimediale chiama AddRef in pToken e inserisce il token in una coda first-in-out.

Quando l'esempio successivo è disponibile, il flusso di flusso multimediale esegue le operazioni seguenti:

  1. Esegue il pull del primo token dalla coda.
  2. Imposta l'attributo MFSampleExtension_Token nell'esempio multimediale. I dati dell'attributo sono un puntatore all'oggetto token.
  3. Invia un evento MEMediaSample . I dati dell'evento sono un puntatore all'interfaccia IMFSample dell'esempio multimediale.
  4. Chiama Release sul token.
Se il flusso multimediale non può soddisfare la richiesta del chiamante per un esempio, rilascia semplicemente l'oggetto token e ignora i passaggi 2 e 3.

Il chiamante deve monitorare il conteggio dei riferimenti sul token di richiesta. Se il flusso multimediale invia un evento MEMediaSample , ottenere l'attributo MFSampleExtension_Token dall'esempio e associare il valore dell'attributo al token. Se il conteggio dei riferimenti del token scende a zero e non è stato ricevuto un evento MEMediaSample, significa che la richiesta è stata eliminata.

Poiché la pipeline di Media Foundation è multithreading, il metodo RequestSample dell'origine potrebbe essere chiamato dopo l'arresto dell'origine. Se l'origine multimediale viene arrestata, il metodo deve restituire MF_E_MEDIA_SOURCE_WRONGSTATE. La pipeline non considera questo codice restituito come condizione di errore. Se l'origine restituisce qualsiasi altro codice di errore, la pipeline lo considera come errore irreversibile e interrompe la sessione.

Nota Le versioni precedenti della documentazione elencano il codice di errore errato per questo caso.

 

Se l'origine multimediale è sospesa, il metodo ha esito positivo, ma il flusso non recapita l'esempio fino a quando l'origine non viene avviata nuovamente.

Se un'origine multimediale rileva un errore in modo asincrono durante l'elaborazione dei dati, deve segnalare l'errore in uno dei modi seguenti (ma non entrambi):

  • Restituisce un codice di errore dalla chiamata RequestSample successiva.
  • Inviare un evento MEError .

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione mfidl.h
Libreria Mfuuid.lib

Vedi anche

IMFMediaStream

Origini multimediali