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


Метод IMFTransform::GetStreamIDs (mftransform.h)

Возвращает идентификаторы потоков для входных и выходных потоков в этом преобразовании Media Foundation (MFT).

Синтаксис

HRESULT GetStreamIDs(
  [in]  DWORD dwInputIDArraySize,
  [out] DWORD *pdwInputIDs,
  [in]  DWORD dwOutputIDArraySize,
  [out] DWORD *pdwOutputIDs
);

Параметры

[in] dwInputIDArraySize

Число элементов в массиве pdwInputIDs .

[out] pdwInputIDs

Указатель на массив, выделенный вызывающим объектом. Метод заполняет массив идентификаторами входного потока. Размер массива должен быть по крайней мере равен количеству входных потоков. Чтобы получить количество входных потоков, вызовите IMFTransform::GetStreamCount.

Если вызывающий объект передает массив, превышающий количество входных потоков, MFT не должен записывать значения в дополнительные записи массива.

[in] dwOutputIDArraySize

Количество элементов в массиве pdwOutputIDs .

[out] pdwOutputIDs

Указатель на массив, выделенный вызывающим объектом. Метод заполняет массив идентификаторами выходного потока. Размер массива должен быть по крайней мере равен количеству потоков вывода. Чтобы получить количество потоков вывода, вызовите GetStreamCount.

Если вызывающий объект передает массив, превышающий число потоков вывода, MFT не должен записывать значения в дополнительные записи массива.

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

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

Код возврата Описание
S_OK
Метод выполнен успешно.
E_NOTIMPL
Не реализован. См. заметки.
MF_E_BUFFERTOOSMALL
Один или оба массива слишком малы.

Комментарии

Идентификаторы потоков необходимы, так как некоторые MFT могут добавлять или удалять потоки, поэтому индекс потока может быть не уникальным. Поэтому методы IMFTransform , работающие с потоками, принимают идентификаторы потоков.

Этот метод может возвращать E_NOTIMPL , если выполняются оба следующих условия:

  • Преобразование имеет фиксированное количество потоков.
  • Потоки нумеруются последовательно от 0 до n –1, где n — это количество входных или выходных потоков. Другими словами, первый входной поток равен 0, второй — 1 и т. д. и первый выходной поток равен 0, второй — 1 и т. д.
Этот метод необходимо реализовать, если выполняется одно из следующих условий:
  • MFT может добавлять или удалять потоки вывода.
  • MFT позволяет клиенту добавлять или удалять входные потоки.
  • Идентификаторы потока не являются последовательными.
Все идентификаторы входных потоков должны быть уникальными в пределах MFT, а все идентификаторы выходного потока должны быть уникальными. Однако входной и выходной поток могут использовать один и тот же идентификатор.

Если клиент добавляет входной поток, он назначает идентификатор, поэтому MFT должен разрешать произвольные идентификаторы, если они являются уникальными. Если MFT создает выходной поток, MFT назначает идентификатор.

По соглашению, если MFT имеет только один фиксированный входной поток и один фиксированный выходной поток, он должен назначить идентификатор 0 обоим потокам.

Если MFT_UNIQUE_METHOD_NAMES определен перед включением mftransform.h, этот метод переименован в MFTGetStreamIDs. См. раздел Создание гибридных объектов DMO/MFT.

Требования

   
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header mftransform.h
Библиотека Mfuuid.lib

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

IMFTransform

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