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


Управление графами фильтров с помощью C

[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Его заменили MediaPlayer, IMFMediaEngineи Аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Компания Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и захват аудио и видео в Media Foundation вместо DirectShow, если это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Если вы пишете приложение DirectShow в C (а не C++), необходимо использовать указатель vtable для вызова методов. В следующем примере показано, как вызвать метод IUnknown::QueryInterface из приложения, написанного на языке C:

pGraph->lpVtbl->QueryInterface(pGraph, &IID_IMediaEvent, (void **)&pEvent);

Ниже показан эквивалентный вызов в C++:

pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

В C com-интерфейсы определяются как структуры. Элемент lpVtbl является указателем на таблицу методов интерфейса (vtable). Все методы принимают дополнительный параметр, который является указателем на интерфейс.

Приложения