Metodo IMFSourceReader::ReadSample (mfreadwrite.h)
Legge l'esempio successivo dall'origine multimediale.
Sintassi
HRESULT ReadSample(
[in] DWORD dwStreamIndex,
[in] DWORD dwControlFlags,
[out] DWORD *pdwActualStreamIndex,
[out] DWORD *pdwStreamFlags,
[out] LONGLONG *pllTimestamp,
[out] IMFSample **ppSample
);
Parametri
[in] dwStreamIndex
Flusso da cui eseguire il pull dei dati. Il valore può essere uno dei seguenti.
[in] dwControlFlags
Or bit per bit di zero o più flag dall'enumerazione MF_SOURCE_READER_CONTROL_FLAG.
[out] pdwActualStreamIndex
Riceve l'indice in base zero del flusso.
[out] pdwStreamFlags
Riceve un OR bit per bit pari a zero o più flag dall'enumerazione MF_SOURCE_READER_FLAG .
[out] pllTimestamp
Riceve il timestamp dell'esempio o l'ora dell'evento di flusso indicato in pdwStreamFlags. Il tempo viene assegnato in 100-nanosecondi.
[out] ppSample
Riceve un puntatore all'interfaccia FMSample o al valore NULL (vedere Osservazioni). Se questo parametro riceve un puntatore non NULL , il chiamante deve rilasciare l'interfaccia.
Valore restituito
Il metodo restituisce un HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Il metodo è riuscito. |
|
Richiesta non valida. |
|
Il parametro dwStreamIndex non è valido. |
|
Un'operazione di scaricamento è in sospeso. Vedere IMFSourceReader::Flush. |
|
Argomento non valido. Vedere la sezione Osservazioni. |
Commenti
Se il flusso richiesto non è selezionato, il codice restituito è MF_E_INVALIDREQUEST. Vedere FMSourceReader::SetStreamSelection.
Questo metodo può completare in modo sincrono o asincrono. Se si specifica un puntatore di callback quando si crea il lettore di origine, il metodo è asincrono. In caso contrario, il metodo è sincrono. Per altre informazioni sull'impostazione del puntatore di callback, vedere MF_SOURCE_READER_ASYNC_CALLBACK.
Modalità asincrona
In modalità asincrona:- Tutti i
[out]
parametri devono essere NULL. In caso contrario, il metodo restituisce E_INVALIDARG. - Il metodo restituisce immediatamente.
- Al termine dell'operazione, viene chiamato il metodo FMSourceReaderCallback::OnReadSample dell'applicazione.
- Se si verifica un errore, il metodo può non riuscire in modo sincrono o asincrono. Controllare il valore restituito di ReadSample e controllare anche il parametro hrStatus di FMSourceReaderCallback::OnReadSample.
Modalità sincrona
In modalità sincrona:- I parametri pdwStreamFlags e ppSample non possono essere NULL. In caso contrario, il metodo restituisce E_POINTER.
- I parametri pdwActualStreamIndex e pllTimestamp possono essere NULL.
- Il metodo blocca fino a quando non è disponibile l'esempio successivo.
Questo metodo può restituire flag nel parametro pdwStreamFlags senza restituire un esempio multimediale in ppSample. Pertanto, il parametro ppSample può ricevere un puntatore NULL anche quando il metodo ha esito positivo. Ad esempio, quando il lettore di origine raggiunge la fine del flusso, restituisce il flag MF_SOURCE_READERF_ENDOFSTREAM in pdwStreamFlags e imposta ppSample su NULL.
Se nel flusso è presente un gap, pdwStreamFlags riceve il flag di MF_SOURCE_READERF_STREAMTICK, ppSample è NULL e pllTimestamp indica l'ora in cui si è verificato il gap.
Questa interfaccia è disponibile in Windows Vista se è installato l'aggiornamento della piattaforma per Windows Vista.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supplemento per Windows 7, Windows Vista e Aggiornamento piattaforma per Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 R2 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | mfreadwrite.h |