IMFSourceReader::ReadSample-Methode (mfreadwrite.h)
Liest das nächste Beispiel aus der Medienquelle.
Syntax
HRESULT ReadSample(
[in] DWORD dwStreamIndex,
[in] DWORD dwControlFlags,
[out] DWORD *pdwActualStreamIndex,
[out] DWORD *pdwStreamFlags,
[out] LONGLONG *pllTimestamp,
[out] IMFSample **ppSample
);
Parameter
[in] dwStreamIndex
Der Datenstrom, aus dem Daten abgerufen werden sollen. Der Wert kann einer der folgenden Werte sein.
[in] dwControlFlags
Ein bitweiser OR mit null oder mehr Flags aus der MF_SOURCE_READER_CONTROL_FLAG-Enumeration .
[out] pdwActualStreamIndex
Empfängt den nullbasierten Index des Streams.
[out] pdwStreamFlags
Empfängt ein bitweises OR mit null oder mehr Flags von der MF_SOURCE_READER_FLAG-Enumeration .
[out] pllTimestamp
Empfängt den Zeitstempel des Beispiels oder die Zeit des in pdwStreamFlags angegebenen Streamereignisses. Die Zeit wird in 100 Nanosekundeneinheiten angegeben.
[out] ppSample
Empfängt einen Zeiger auf die IMFSample-Schnittstelle oder den Wert NULL (siehe Hinweise). Wenn dieser Parameter einen Nicht-NULL-Zeiger empfängt, muss der Aufrufer die Schnittstelle freigeben.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.
Rückgabecode | Beschreibung |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Ungültige Anforderung. |
|
Der dwStreamIndex-Parameter ist ungültig. |
|
Ein Löschvorgang steht aus. Siehe IMFSourceReader::Flush. |
|
Ungültiges Argument. Siehe Hinweise. |
Hinweise
Wenn der angeforderte Stream nicht ausgewählt ist, wird der Rückgabecode MF_E_INVALIDREQUEST. Siehe IMFSourceReader::SetStreamSelection.
Diese Methode kann synchron oder asynchron abgeschlossen werden. Wenn Sie beim Erstellen des Quelllesers einen Rückrufzeiger bereitstellen, ist die Methode asynchron. Andernfalls ist die Methode synchron. Weitere Informationen zum Festlegen des Rückrufzeigers finden Sie unter MF_SOURCE_READER_ASYNC_CALLBACK.
Asynchroner Modus
Im asynchronen Modus:[out]
Alle Parameter müssen NULL sein. Andernfalls gibt die Methode E_INVALIDARG zurück.- Die -Methode gibt sofort zurück.
- Nach Abschluss des Vorgangs wird die IMFSourceReaderCallback::OnReadSample-Methode der Anwendung aufgerufen.
- Wenn ein Fehler auftritt, kann die Methode entweder synchron oder asynchron fehlschlagen. Überprüfen Sie den Rückgabewert von ReadSample, und überprüfen Sie auch den hrStatus-Parameter von IMFSourceReaderCallback::OnReadSample.
Synchroner Modus
Im synchronen Modus:- Die Parameter pdwStreamFlags und ppSample dürfen nicht NULL sein. Andernfalls gibt die Methode E_POINTER zurück.
- Die Parameter pdwActualStreamIndex und pllTimestamp können NULL sein.
- Die -Methode blockiert, bis das nächste Beispiel verfügbar ist.
Diese Methode kann Flags im pdwStreamFlags-Parameter zurückgeben, ohne ein Medienbeispiel in ppSample zurückzugeben. Daher kann der ppSample-Parameter einen NULL-Zeiger empfangen, auch wenn die Methode erfolgreich ist. Wenn der Quellleser beispielsweise das Ende des Datenstroms erreicht, gibt er das MF_SOURCE_READERF_ENDOFSTREAM-Flag in pdwStreamFlags zurück und legt ppSample auf NULL fest.
Wenn im Stream eine Lücke vorhanden ist, empfängt pdwStreamFlags das flag MF_SOURCE_READERF_STREAMTICK, ppSample ist NULL, und pllTimestamp gibt den Zeitpunkt an, zu dem die Lücke aufgetreten ist.
Diese Schnittstelle ist unter Windows Vista verfügbar, wenn die Plattformupdateergänzung für Windows Vista installiert ist.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7, Windows Vista und Plattform-Update-Ergänzung für Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | mfreadwrite.h |