Directshow на С# для Windows Mobile-стратегия?

Я пытаюсь понять, как добавить некоторые возможности DirectShow в приложение С# (.net cf 3.5, работающее на мобильных устройствах 6 и выше), и мне трудно понять, как преодолеть разрыв между использованием неуправляемого класса С++ (es) в управляемом C#.

Я уже написал необходимые мне функции на C++: по сути, у меня есть класс менеджера, который использует COM для доступа к необходимым функциям DirectShow. Краткий отказ от ответственности. Я новичок в COM и ОЧЕНЬ новичок в интеграции C++ с C#.

Я действительно надеюсь, что кто-то знающий может предложить мне базовую стратегию для дальнейшего исследования. Вот некоторые из них, которые я изучил, и проблемы, которые я обнаружил с ними:

  1. Создайте C++ DLL, а затем вызовите ее из C#.
    ПРОБЛЕМА. Поскольку я работаю на платформе смарт-устройств, создание управляемой C++ DLL не вариант, поэтому C#, к сожалению, победил не могу напрямую вызывать мою С++ dll. Является ли лучшим вариантом создание экземпляра моего неуправляемого класса C++ "dshow manager" из C# (через COM)?

  2. Создайте C++ DLL, а затем просто Pinvoke/DLLIимпортируйте необходимые методы.
    ПРОБЛЕМА. В моем решении есть прослушиватель событий и прочее, поэтому мне нужно поддерживать экземпляр класса менеджера (см. вариант 3), а не просто вызывать отдельные методы.

  3. Скопируйте класс C++ в C#, а затем просто вызовите методы dshow через COM из C#. ПРОБЛЕМА. Мне это кажется лучшим вариантом, но из того, что я нашел здесь MSDN, мне нужно сначала "создать управляемые определения com-интерфейсов и типов", и, к сожалению, я не удается найти файлы TLB directshow для импорта через TLBImp.exe. Все, что дает мне WM6 SDK, это dshow LIB, PDB и EXP. Я даже не могу найти файлы IDL для создания TLB, как предлагают некоторые сайты.

В нынешнем виде я все еще изучаю вещи, но сейчас как-то застрял. Какие-либо предложения? ЗАРАНЕЕ СПАСИБО!


person Community    schedule 23.06.2009    source источник


Ответы (1)


Возможно, вам стоит обратиться к библиотеке DShow.NET для рабочего стола в качестве руководства по переносу. недавний блог о воспроизведении аудио и видео с помощью DShow на WinMo также является хорошим ресурсом.

Редактировать: я думаю, я не ответил прямо на вопрос о стратегии. Да, № 3 - это путь. Оберните DShow и вызовите его, не добавляя еще один слой запутанной косвенности (COM уже достаточно запутан).

person ctacke    schedule 23.06.2009
comment
Эта статья Алекса Могуренко очень помогла, тем более, что он не пошел, похоже, ему не пришлось возиться со всей этой ерундой с файлами TLB, о которой я беспокоился. Я думаю, что это очень хорошая отправная точка для моей работы. СПАСИБО! - person ; 23.06.2009