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.

Wert Bedeutung
0–0xFFFFFFFB
Der nullbasierte Index eines Streams.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Der erste Videostream.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Der erste Audiostream.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
Rufen Sie das nächste verfügbare Beispiel ab, unabhängig vom Stream.

[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
S_OK
Die Methode wurde erfolgreich ausgeführt.
MF_E_INVALIDREQUEST
Ungültige Anforderung.
MF_E_INVALIDSTREAMNUMBER
Der dwStreamIndex-Parameter ist ungültig.
MF_E_NOTACCEPTING
Ein Löschvorgang steht aus. Siehe IMFSourceReader::Flush.
E_INVALIDARG
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.
Wenn der dwStreamIndex-Parameter im synchronen Modus MF_SOURCE_READER_ANY_STREAM ist, sollten Sie einen Nicht-NULL-Wert für pdwActualStreamIndex übergeben, damit Sie wissen, welcher Stream das Beispiel übermittelt hat.

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

Weitere Informationen

IMFSourceReader

Quellleser