Метод IMFSourceReader::ReadSample (mfreadwrite.h)

Считывает следующий пример из источника мультимедиа.

Синтаксис

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

Параметры

[in] dwStreamIndex

Поток для извлечения данных. Значением может быть любое из следующих значений.

Значение Значение
0–0xFFFFFFFB
Отсчитываемый от нуля индекс потока.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Первый видеопоток.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Первый аудиопоток.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
Получите следующий доступный пример, независимо от потока.

[in] dwControlFlags

Побитовое ЗНАЧЕНИЕ ИЛИ , равное нулю или более флагам из перечисления MF_SOURCE_READER_CONTROL_FLAG .

[out] pdwActualStreamIndex

Получает отсчитываемый от нуля индекс потока.

[out] pdwStreamFlags

Получает побитовое значение OR , равное нулю или более флагам из перечисления MF_SOURCE_READER_FLAG .

[out] pllTimestamp

Получает метку времени образца или время события потока, указанное в pdwStreamFlags. Время задается в 100-наносекундных единицах.

[out] ppSample

Получает указатель на интерфейс IMFSample или значение NULL (см. примечания). Если этот параметр получает указатель, отличный от NULL , вызывающий объект должен освободить интерфейс.

Возвращаемое значение

Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.

Код возврата Описание
S_OK
Метод выполнен успешно.
MF_E_INVALIDREQUEST
Недопустимый запрос.
MF_E_INVALIDSTREAMNUMBER
Недопустимый параметр dwStreamIndex .
MF_E_NOTACCEPTING
Операция очистки ожидается. См . статью IMFSourceReader::Flush.
E_INVALIDARG
Недопустимый аргумент. См. заметки.

Комментарии

Если запрошенный поток не выбран, код возврата MF_E_INVALIDREQUEST. См . статью IMFSourceReader::SetStreamSelection.

Этот метод может выполняться синхронно или асинхронно. Если при создании исходного средства чтения указан указатель обратного вызова, метод будет асинхронным. В противном случае метод является синхронным. Дополнительные сведения о настройке указателя обратного вызова см. в разделе MF_SOURCE_READER_ASYNC_CALLBACK.

Асинхронный режим

В асинхронном режиме:
  • [out] Все параметры должны иметь значение NULL. В противном случае метод возвращает E_INVALIDARG.
  • Метод возвращает немедленно.
  • После завершения операции вызывается метод ПРИЛОЖЕНИЯ IMFSourceReaderCallback::OnReadSample .
  • При возникновении ошибки метод может завершиться синхронным или асинхронным сбоем. Проверьте возвращаемое значение ReadSample, а также проверка параметр hrStatusпараметра IMFSourceReaderCallback::OnReadSample.

Синхронный режим

В синхронном режиме:
  • Параметры pdwStreamFlags и ppSample не могут иметь значение NULL. В противном случае метод возвращает E_POINTER.
  • Параметры pdwActualStreamIndex и pllTimestamp могут иметь значение NULL.
  • Метод блокируется, пока не будет доступен следующий пример.
В синхронном режиме, если параметр dwStreamIndexMF_SOURCE_READER_ANY_STREAM, необходимо передать значение, отличное от NULL , для pdwActualStreamIndex, чтобы узнать, какой поток доставлял пример.

Этот метод может возвращать флаги в параметре pdwStreamFlags , не возвращая пример носителя в ppSample. Поэтому параметр ppSample может получить указатель NULL даже при успешном выполнении метода. Например, когда средство чтения исходного кода достигает конца потока, оно возвращает флаг MF_SOURCE_READERF_ENDOFSTREAM в pdwStreamFlags и задает ppSampleзначение NULL.

Если в потоке есть пробел, pdwStreamFlags получает флаг MF_SOURCE_READERF_STREAMTICK, ppSample имеет значение NULL, а pllTimestamp указывает время возникновения разрыва.

Этот интерфейс доступен в Windows Vista, если установлено дополнение к обновлению платформы для Windows Vista.

Требования

Требование Значение
Минимальная версия клиента Дополнение к Windows 7, Windows Vista и обновлению платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header mfreadwrite.h

См. также раздел

IMFSourceReader

Средство чтения исходного кода