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.
[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 |
|
Demande non valide. |
|
Le paramètre dwStreamIndex n’est pas valide. |
|
Une opération de vidage est en attente. Consultez IMFSourceReader ::Flush. |
|
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.
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 |