Directshow в C # для Windows Mobile - стратегия? - PullRequest
1 голос
/ 23 июня 2009

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 23 июня 2009

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

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

...