Méthode IMFSourceReader ::ReadSample (mfreadwrite.h)

Lit l’exemple suivant à partir de la source multimédia.

Syntaxe

HRESULT ReadSample(
  [in]  DWORD     dwStreamIndex,
  [in]  DWORD     dwControlFlags,
  [out] DWORD     *pdwActualStreamIndex,
  [out] DWORD     *pdwStreamFlags,
  [out] LONGLONG  *pllTimestamp,
  [out] IMFSample **ppSample
);

Paramètres

[in] dwStreamIndex

Flux à partir duquel extraire des données. La valeur peut être l’une des suivantes.

Valeur Signification
0 à 0xFFFFFFFB
Index de base zéro d’un flux.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Premier flux vidéo.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Premier flux audio.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
Obtenez l’exemple disponible suivant, quel que soit le flux.

[in] dwControlFlags

OR au niveau du bit de zéro ou plusieurs indicateurs de l’énumération MF_SOURCE_READER_CONTROL_FLAG .

[out] pdwActualStreamIndex

Reçoit l’index de base zéro du flux.

[out] pdwStreamFlags

Reçoit un OR au niveau du bit de zéro ou plusieurs indicateurs de l’énumération MF_SOURCE_READER_FLAG .

[out] pllTimestamp

Reçoit l’horodatage de l’exemple ou l’heure de l’événement de flux indiqué dans pdwStreamFlags. Le temps est donné en unités de 100 nanosecondes.

[out] ppSample

Reçoit un pointeur vers l’interface IMFSample ou la valeur NULL (voir Remarques). Si ce paramètre reçoit un pointeur non NULL , l’appelant doit libérer l’interface.

Valeur retournée

Cette méthode retourne un code HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.

Code de retour Description
S_OK
S_OK
MF_E_INVALIDREQUEST
Demande non valide.
MF_E_INVALIDSTREAMNUMBER
Le paramètre dwStreamIndex n’est pas valide.
MF_E_NOTACCEPTING
Une opération de vidage est en attente. Consultez IMFSourceReader ::Flush.
E_INVALIDARG
Argument non valide. Consultez la section Notes.

Remarques

Si le flux demandé n’est pas sélectionné, le code de retour est MF_E_INVALIDREQUEST. Consultez IMFSourceReader ::SetStreamSelection.

Cette méthode peut être effectuée de manière synchrone ou asynchrone. Si vous fournissez un pointeur de rappel lorsque vous créez le lecteur source, la méthode est asynchrone. Sinon, la méthode est synchrone. Pour plus d’informations sur la définition du pointeur de rappel, consultez MF_SOURCE_READER_ASYNC_CALLBACK.

Mode asynchrone

En mode asynchrone :
  • Tous les paramètres doivent avoir la [out]valeur NULL. Sinon, la méthode retourne E_INVALIDARG.
  • La méthode retourne immédiatement.
  • Une fois l’opération terminée, la méthode IMFSourceReaderCallback ::OnReadSample de l’application est appelée.
  • Si une erreur se produit, la méthode peut échouer de manière synchrone ou asynchrone. Vérifiez la valeur de retour de ReadSample et case activée le paramètre hrStatus de IMFSourceReaderCallback ::OnReadSample.

Mode synchrone

En mode synchrone :
  • Les paramètres pdwStreamFlags et ppSample ne peuvent pas être NULL. Sinon, la méthode retourne E_POINTER.
  • Les paramètres pdwActualStreamIndex et pllTimestamp peuvent être NULL.
  • La méthode est bloquée jusqu’à ce que l’exemple suivant soit disponible.
En mode synchrone, si le paramètre dwStreamIndex est MF_SOURCE_READER_ANY_STREAM, vous devez passer une valeur non NULL pour pdwActualStreamIndex, afin de savoir quel flux a fourni l’exemple.

Cette méthode peut retourner des indicateurs dans le paramètre pdwStreamFlags sans renvoyer d’exemple multimédia dans ppSample. Par conséquent, le paramètre ppSample peut recevoir un pointeur NULL même lorsque la méthode réussit. Par exemple, lorsque le lecteur source atteint la fin du flux, il retourne l’indicateur MF_SOURCE_READERF_ENDOFSTREAM dans pdwStreamFlags et définit ppSample sur NULL.

S’il existe un écart dans le flux, pdwStreamFlags reçoit l’indicateur MF_SOURCE_READERF_STREAMTICK, ppSample a la valeur NULL et pllTimestamp indique l’heure à laquelle l’écart s’est produit.

Cette interface est disponible sur Windows Vista si le Supplément mise à jour de la plateforme pour Windows Vista est installé.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Supplément windows 7, Windows Vista et mise à jour de la plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête mfreadwrite.h

Voir aussi

IMFSourceReader

Lecteur source