Метод IMFSourceReaderEx::AddTransformForStream (mfreadwrite.h)

Добавляет преобразование, например звуковой эффект или эффект видео, в поток.

Синтаксис

HRESULT AddTransformForStream(
  [in] DWORD    dwStreamIndex,
  [in] IUnknown *pTransformOrActivate
);

Параметры

[in] dwStreamIndex

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

Ценность Meaning
0–0xFFFFFFFB
Отсчитываемый от нуля индекс потока.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Первый видеопоток.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Первый аудиопоток.

[in] pTransformOrActivate

Указатель на одно из следующих элементов:

  • Преобразование Media Foundation (MFT), которое предоставляет интерфейс МВФTransform .
  • Объект активации MFT, предоставляющий интерфейс IMFActivate .

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

Этот метод может возвращать одно из этих значений.

Код возврата Description
S_OK
Успех.
MF_E_INVALIDMEDIATYPE
Преобразование не поддерживает текущий формат потока, и преобразование невозможно. Дополнительные сведения см. в разделе Примечания.
MF_E_INVALIDREQUEST
Недопустимый запрос.
MF_E_INVALIDSTREAMNUMBER
Недопустимый параметр dwStreamIndex .

Замечания

Этот метод пытается добавить преобразование в конце текущей цепочки обработки.

Чтобы использовать этот метод, выполните следующую последовательность вызовов:

  1. ВызовИТЕ МВФSourceReader::SetCurrentMediaType, чтобы задать тип вывода, который требуется для потока. На этом шаге можно указать тип носителя, содержащий только основные типы и идентификаторы GUID подтипов. Например, чтобы получить 32-разрядные выходные данные RGB, задайте основной тип MFMediaType_Video и подтип MFVideoFormat_RGB32. (Дополнительные сведения см. в разделе "Идентификаторы GUID типа мультимедиа".)
  2. Вызов AddTransformForStream. Если средство чтения источника успешно подключает преобразование, он задает тип выходных данных для преобразования.
  3. Вызовите МВФSourceReader::GetCurrentMediaType, чтобы получить тип выходных данных из преобразования. Этот метод возвращает тип носителя с полным описанием формата.
  4. При необходимости, если вы хотите изменить тип вывода, вызовите МВФSourceReader::SetCurrentMediaType еще раз, чтобы задать полный тип носителя для преобразования.
Метод AddTransformForStream не вставляет декодировщик в цепочку обработки. Если собственный формат потока закодирован и преобразование требует несжатого формата, вызовите SetCurrentMediaType , чтобы задать несжатый формат (шаг 1 в предыдущем списке). Однако при необходимости метод вставляет видеопроцессор для преобразования между форматами RGB и YUV.

Метод завершается ошибкой, если средство чтения источника было настроено с помощью атрибутов MF_READWRITE_DISABLE_CONVERTERS или MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING .

В асинхронном режиме метод также завершается ошибкой, если ожидается пример запроса. В этом случае дождитесь вызова OnReadSample перед вызовом метода. Дополнительные сведения об использовании средства чтения источника в асинхронном режиме см. в разделе МВФSourceReader::ReadSample.

Преобразование можно добавить в любое время во время потоковой передачи. Однако метод не очищает или не сбрасывает конвейер перед вставой преобразования. Таким образом, если данные уже в конвейере, следующий пример не гарантирует применение преобразования.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 8 [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2012 [классические приложения | Приложения UWP]
целевая платформа Виндоус
Header mfreadwrite.h

См. также

МВФSourceReaderEx

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