структура MFT_OUTPUT_DATA_BUFFER (mftransform.h)

Содержит сведения о выходном буфере для преобразования Media Foundation. Эта структура используется в методе IMFTransform::P rocessOutput .

Синтаксис

typedef struct _MFT_OUTPUT_DATA_BUFFER {
  DWORD         dwStreamID;
  IMFSample     *pSample;
  DWORD         dwStatus;
  IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;

Члены

dwStreamID

Идентификатор выходного потока. Перед вызовом ProcessOutput задайте для этого элемента допустимый идентификатор потока.

Исключение. Если метод IMFTransform::GetStreamIDs возвращает E_NOTIMPL, MFT игнорирует этот элемент и использует индексы массива pOutputSamples в методе ProcessOutput в качестве идентификаторов потока. Другими словами, он использует первый элемент массива для потока 0, второй для потока 1 и т. д. В этом случае рекомендуется (но не обязательно), чтобы вызывающий объект установил значение dwStreamID , равное индексу массива.

pSample

Указатель на интерфейс IMFSample . Перед вызовом ProcessOutput установите для этого элемента значение допустимого указателя IMFSample или NULL. Дополнительные сведения см. в разделе "Примечания".

dwStatus

Перед вызовом ProcessOutput установите для этого элемента нулевое значение. При возврате метода MFT может задать элемент, равный значению из перечисления _MFT_OUTPUT_DATA_BUFFER_FLAGS . В противном случае MFT оставляет этот элемент равным нулю.

pEvents

Перед вызовом ProcessOutput задайте для этого элемента значение NULL. В выходных данных MFT может задать для этого элемента допустимый указатель интерфейса IMFCollection . Указатель представляет объект collecton, содержащий ноль или более событий. Чтобы получить каждое событие, вызовите IMFCollection::GetElement и запросите возвращенный указатель IUnknown для интерфейса IMFMediaEvent . При возврате метода ProcessOutput вызывающий объект отвечает за освобождение указателя IMFCollection , если указатель не равен NULL.

Комментарии

Необходимо указать структуру MFT_OUTPUT_DATA_BUFFER для каждого выбранного выходного потока.

MFT могут поддерживать две различные модели распределения для выходных примеров:

  • MFT выделяет выходной пример.
  • Клиент выделяет пример выходных данных.
Чтобы найти модель, которую MFT поддерживает для заданного потока вывода, вызовите IMFTransform::GetOutputStreamInfo и проверка значение dwFlags.
Flag Модель распределения
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES MFT выделяет выходные примеры для потока. Присвойте pSample значение NULL для этого потока.
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT поддерживает обе модели выделения.
Ни то, ни (по умолчанию) Клиент должен выделить выходные примеры для потока.
 

Поведение ProcessOutput зависит от начального значения pSample и значения параметра dwFlags в методе ProcessOutput .

  • Если pSample имеет значение NULL , а dwFlags содержит флаг MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT удаляет выходные данные.

    Ограничение. Этот выходной поток должен иметь флаг MFT_OUTPUT_STREAM_DISCARDABLE или MFT_OUTPUT_STREAM_LAZY_READ. (Чтобы получить флаги для потока вывода, вызовите метод IMFTransform::GetOutputStreamInfo .)

  • Если pSample имеет значение NULL и dwFlags не содержит MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT предоставляет пример выходных данных. MFT задает pSample , чтобы указать на образец, который он предоставляет. MFT может выделить новый пример или повторно использовать входной пример.

    Ограничение. Этот выходной поток должен иметь флаг MFT_OUTPUT_STREAM_PROVIDES_SAMPLES или MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES.

  • Если pSample не равно NULL, MFT использует пример, предоставленный вызывающим объектом.

    Ограничение. Этот выходной поток не должен иметь флаг MFT_OUTPUT_STREAM_PROVIDES_SAMPLES.

Любые другие сочетания недопустимы и приводят к тому , что ProcessOutput возвращает E_INVALIDARG.

Каждый вызов ProcessOutput может создавать ноль или несколько событий и до одной выборки для каждого выходного потока.

Требования

   
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Верхняя часть mftransform.h

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

IMFTransform::P rocessOutput

Структуры Media Foundation

Преобразования Media Foundation