Media Foundation: заставить устройство захвата предоставлять поверхности DirectX в топологии

контекст

Я написал MFT, который использует DXVA. Это требует, чтобы входные образцы имели IDirect3DSurface9 поверхность.

Я использую этот MFT в топологии из 3 узлов:

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

Я установил MF_TOPOLOGY_DXVA_MODE приписывать MFTOPOLOGY_DXVA_FULL а также MF_TOPOLOGY_HARDWARE_MODE в MFTOPOLOGY_HWMODE_USE_HARDWARE в топологии, и когда я начинаю сеанс мультимедиа, я получаю D3DDeviceManager изнутри моего MFT.

Эта проблема

Когда входные сэмплы поступают на MFT изнутри топологии, к ним не прикрепляется поверхность D3D (MFGetService с MR_BUFFER_SERVICE терпит неудачу).

Если я вообще не использую топологию и создаю Source Reader из того же источника мультимедиа с действительным MF_SOURCE_READER_D3D_MANAGER, тогда образцы, предоставленные Source Reader, имеют поверхность D3D.

Вопрос

Можно ли заставить исходный узел / источник медиа захвата в топологии создавать образцы с поверхностями D3D?

0 ответов

Другие вопросы по тегам