Поделиться через


Метод 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

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

Ценность Meaning
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

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

[out] pllTimestamp

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

[out] ppSample

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

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

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

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

Замечания

Если запрошенный поток не выбран, код возврата MF_E_INVALIDREQUEST. См. раздел МВФSourceReader::SetStreamSelection.

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

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

В асинхронном режиме:
  • [out] Все параметры должны иметь значение NULL. В противном случае метод возвращает E_INVALIDARG.
  • Метод возвращается немедленно.
  • После завершения операции вызывается метод МВФSourceReaderCallback::OnReadSample приложения.
  • Если возникает ошибка, метод может завершиться синхронно или асинхронно. Проверьте возвращаемое значение ReadSample, а также проверьте параметр hrStatusМВФSourceReaderCallback::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]
целевая платформа Виндоус
Header mfreadwrite.h

См. также

МВФSourceReader

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