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.

Valore Significato
0-0xFFFFFFFB
Indice in base zero di un flusso.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Primo flusso video.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Il primo flusso audio.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
Ottenere l'esempio disponibile successivo, indipendentemente dal flusso.

[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
S_OK
Il metodo è riuscito.
MF_E_INVALIDREQUEST
Richiesta non valida.
MF_E_INVALIDSTREAMNUMBER
Il parametro dwStreamIndex non è valido.
MF_E_NOTACCEPTING
Un'operazione di scaricamento è in sospeso. Vedere IMFSourceReader::Flush.
E_INVALIDARG
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.
In modalità sincrona, se il parametro dwStreamIndex è MF_SOURCE_READER_ANY_STREAM, è necessario passare un valore non NULL per pdwActualStreamIndex, in modo da sapere quale flusso ha recapitato l'esempio.

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

Vedi anche

IMFSourceReader

Lettore di origine