2009-12-30 7 views
0

Nous avons un filtre pour DS. Cela fonctionne - utilise la norme win dll.Comment convertir un filtre DirectShow en C++ C#?

Nous souhaitons convertir ce filtre en un type de programme ne reposant pas sur l'utilisation de DS. Nous voulons qu'il appelle les DLLs dans le bon ordre, fasse tout ce que DS fait mais ne soit en aucun cas fiable sur DS - seulement sur les DLL de filtre.

Alors ... Comment convertir DirectShow Filter en C++ \ C#?

Répondre

1

Une meilleure solution consiste à utiliser le filtre dans un graphique à usage unique, dans lequel vous avez une source personnalisée alimentant le filtre de l'application, et un récepteur personnalisé recevant la sortie et la livrant à l'application. Il y a un exemple de ceci sur www.gdcl.co.uk. Je sais que ce n'est pas tout à fait ce que vous demandez, mais vos dépendances sur dshow sont très limitées, et il est difficile de voir un environnement dans lequel le binaire de filtre fonctionne mais les bases de dshow ne sont pas disponibles.

G

0

Il est possible d'utiliser des filtres DirectShow sans utiliser DirectShow, mais vous devrez écrire votre propre implémentation de Graph. Cela signifie que vous devrez implémenter les interfaces IFilterGraph, IMemInputPin et IMemOutputPin pour que le filtre DirectShow pense qu'il s'exécute dans son environnement natif.

Pour passer des tampons à travers le filtre, vous devrez peut-être mettre en œuvre IMemAllocator et IMediaSample

Le passage tampon, en particulier ne peut se faire dans le code managé. Vous pourriez être capable de le faire avec interop, mais je pense que ce serait plus facile à faire en C++ qu'en C#. Je l'ai fait une fois il y a plusieurs années. Cela a pris environ 3 mois.

Questions connexes