Метод 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
Поток для извлечения данных. Значением может быть любое из следующих значений.
[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. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.
Код возврата | Описание |
---|---|
|
Метод выполнен успешно. |
|
Недопустимый запрос. |
|
Недопустимый параметр dwStreamIndex . |
|
Операция очистки ожидается. См . статью IMFSourceReader::Flush. |
|
Недопустимый аргумент. См. заметки. |
Комментарии
Если запрошенный поток не выбран, код возврата 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.
- Метод блокируется, пока не будет доступен следующий пример.
Этот метод может возвращать флаги в параметре 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 |