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 |
---|---|
|
Il metodo è riuscito. |
|
È stata raggiunta la fine del flusso. |
|
L'origine multimediale viene arrestata. |
|
È 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:
- Esegue il pull del primo token dalla coda.
- Imposta l'attributo MFSampleExtension_Token nell'esempio multimediale. I dati dell'attributo sono un puntatore all'oggetto token.
- Invia un evento MEMediaSample . I dati dell'evento sono un puntatore all'interfaccia IMFSample dell'esempio multimediale.
- Chiama Release sul token.
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.
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 |