Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1628 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Directshow, graphes de filtres connectés "à la main" ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Directshow, graphes de filtres connectés "à la main" ...

n°608963
StatuFab
Posté le 12-01-2004 à 14:48:50  profilanswer
 

Voila, je réalise actuellement une application de traitement vidéo en C#. Je me suis donc tout naturellement porté vers DirectX et en particulier Directshow. J'ai étudié tout ca, j'ai decouvert les histoires de graphes de filtres et les autres joyeusetées du meme genre.
 
Maintenant passons à mon porblème. J'ai decouvert que pour les traitements que j'ai à effectuer il n'existe aucun filtre, j'ai donc l'intention de les réaliser moi-meme (jusque la aucun problème). Mon problème vient du fait qu'en C# je n'arrive pas a créer mon graphe de filtre "à la main". J'ai parfaitement compris la manoeuvre en C++ (récupération des PIN, détection de leur "sens de fonctionnement" et connection grace a la fonction connect de l'interface IGraphBuilder). Mais lorsque j'essaie de faire les memes operation en C# je me heurte à un probleme. En effet lorsque dans mon projet j'ajoute la référence à la bibliotheque COM quartz.dll (qui contient les interfaces et les fonctions que j'ai cité plus haut), visual studio réalise une conversion de cette bibliotheque (pour l'adapter au framework .NET), et à l'arrivée il me manque les 3/4 des interfaces dont j'ai besoin.
La seule chose que je parviens alors à faire dans cette configuration c'est faire afficher un fichier vidéo à l'aide de la méthode RenderFile (qui crée le graphe de filtre de manière automatique, ce qui s'avère bien pratique mais ne m'arrange nullement dans mon cas)
 
Est-ce que qq'un a une solution à me proposer ? Ou alors une méthode me permettant de contourner ce problème ?
 
 
Merci d'avance.


Message édité par StatuFab le 12-01-2004 à 15:21:25
mood
Publicité
Posté le 12-01-2004 à 14:48:50  profilanswer
 

n°610476
H4dd3R
Q2
Posté le 13-01-2004 à 15:26:20  profilanswer
 

C vrai que ds le sdk de dx managed, on trouve tout sauf dshow.. Bien dommage tt ça.. :\
J'apprécie la programmation dshow, mais pas en com.. C pour ça que j'attendais le skd managed.. Pas de bol c apparemment pas dedans.. :\


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°610603
StatuFab
Posté le 13-01-2004 à 16:41:40  profilanswer
 

Bah ouais ... sur le site de microsoft ils disent qu'ils n'ont "pas encore eu le temps" de faire passer directshow en code managé ... bref c la haine car moi j'en ai besoin tout de suite :cry:
 
Sinon j'ai trouve 2-3 bricoles qui ressemblent a ce que je cherche mais je n'arrive pas encore a me depatouiller avec. Je mets quand meme les liens au cas ou ca interesserait qq'un d'autre.
 
http://www.kohsuke.org/dotnet/directshowTypelib/
http://www.codetools.com/cs/media/directshownet.asp


Message édité par StatuFab le 13-01-2004 à 16:45:56
n°610763
H4dd3R
Q2
Posté le 13-01-2004 à 17:35:56  profilanswer
 

Ahhh alors c que ça va venir... :)
Désolé je peux pas t'aider sur le c++.


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°612567
StatuFab
Posté le 15-01-2004 à 14:51:25  profilanswer
 

Aller, un pti up au cas ou un boss de directshow passe dans le coin [:spamafote]

n°628409
ricil78
N'est pas pitou qui veut !
Posté le 02-02-2004 à 12:54:28  profilanswer
 

Bonjour,
je voulais savoir si quelqu'un parmi vous à de la documentation sur ces 3 DLL
- quartz.dll
- FSFWrap.dll
- CapStill.dll
 
Mon soucis est le suivant je souhaite pouvoir paramétrer le pal/sécam sur une carte d'acquisition avec directX à l'aide de ces DLL.
 
Merci pour votre aide
 
Voici mes liens si cela peut t'aider :
 
http://www.supinfo-projects.com/fr [...] efault.asp
 
http://www.gdcl.co.uk/vb.htm#streamformat

n°639446
Arlq1
Posté le 11-02-2004 à 20:50:07  profilanswer
 

StatuFab, le plus simple c'est de faire une lib en cpp manage que tu utilise dans ton application C#.


Message édité par Arlq1 le 11-02-2004 à 21:08:18
n°640345
StatuFab
Posté le 12-02-2004 à 13:56:21  profilanswer
 

Je sais, je suis dessus en ce moment meme :)
 
Merci quand meme pour le conseil.

n°640389
gilou
Modérateur
Modzilla
Posté le 12-02-2004 à 14:22:15  profilanswer
 

StatuFab a écrit :

Bah ouais ... sur le site de microsoft ils disent qu'ils n'ont "pas encore eu le temps" de faire passer directshow en code managé ... bref c la haine car moi j'en ai besoin tout de suite :cry:
 
Sinon j'ai trouve 2-3 bricoles qui ressemblent a ce que je cherche mais je n'arrive pas encore a me depatouiller avec. Je mets quand meme les liens au cas ou ca interesserait qq'un d'autre.
 
http://www.kohsuke.org/dotnet/directshowTypelib/
http://www.codetools.com/cs/media/directshownet.asp

Tu ne peux pas appeller directement les fonctions de la dll dont tu as besoin, si tu ne peux pas les utiliser en code managé??
tu definis les fonctions dont tu as besoins dans une classe avec les bons attributs. Par exemple:
 
using System.Runtime.InteropServices;
....................................
[DLLImport("user32.dll" )]
public static extern int ShowCaret(IntPtr hwnd);
// ou un autre exemple plus détaillé
[DllImport("KERNEL32.DLL", EntryPoint="MoveFileW",  SetLastError=true,
CharSet=CharSet.Unicode, ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern bool MoveFile(String src, String dst);
 
( http://msdn.microsoft.com/library/ [...] stopic.asp )
 
A+,


Message édité par gilou le 12-02-2004 à 14:35:31

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°640701
StatuFab
Posté le 12-02-2004 à 17:21:50  profilanswer
 

Merci gilou, mais ce n'est pas tout a fait aussi simple (du moins ca ne me semble pas aussi simple, je me plante peut-etre completement [:spamafote] ).
En effet je n'ai pas seulement besoin de qqes fonctions contenues dans cette dll, mais de quasiment toute l'infrastructure directshow en passant par des objets COM et un nombre assez important d'interfaces (une bonne vingtaine a vue de nez). Donc tout remettre dans une classe avec les bons attributs ... euh ... disons que je suis un peu feneant :whistle:
 
Bref je vais faire tout ce qui concerne directshow en C++ classique et je vais bisouiller qqch pour que cette partie communique avec le reste de mon appli en C# (en fait je n'ai pas beaucoup de communication a faire entre les deux, juste des trucs du genre ordre de debut/fin de capture, le flux a afficher et qq statistiques concernant le reseau pour adapter l'encodage)
 
 
Encore merci


Message édité par StatuFab le 12-02-2004 à 17:22:53
mood
Publicité
Posté le 12-02-2004 à 17:21:50  profilanswer
 

n°685603
letchidesl​andes
Posté le 27-03-2004 à 14:54:34  profilanswer
 

Alors les filles on bulle ? Un site qui va te sauver :
 
http://perso.wanadoo.fr/letchideslandes

n°686356
StatuFab
Posté le 29-03-2004 à 11:18:32  profilanswer
 

Merci c'est sympa  :wahoo:  
 
Mais c'est tout en VB  :cry: ...  :whistle:  
 
Nan, serieusement meme en VB ca explique pas mal de chose.
 
Par contre j'etudie deja depuis qq jours un equivalent de ce que tu as fait, mais en C#  :sol:  
 
C'est la : http://www.labo-dotnet.com/labo-do [...] cle&ID=200
 
 
Edit : oups je n'avais pas vu tes diverses interventions sur le site nommé ci-dessus  :sarcastic: . Je te trouve un petit peu mechant avec le pauvre auteur de l'article ... m'enfin c'est vrai que c'est pas mal buggé son truc ... et surtout les explications sont ... comment dire ...  :pt1cable:


Message édité par StatuFab le 29-03-2004 à 12:12:58
n°687495
letchidesl​andes
Posté le 30-03-2004 à 16:02:08  profilanswer
 

Ma critique vient du fait qu'il ne se prenne pas pour des blaireaux, vu l'entete, et que tous son contenu est une pale copie du source de codeproject. Je n'ai pas tout mis en ligne mais en gros, le wrappeur que j'ai écrit fonctionne à 100 % pour les fonctions que j'utilise. En gros, je debbugge à la demande. Pour ce qui est du VB, la traduction en C# est relativement facile sinon je peux te compiler un assembly séparé que t'utilise en mettant une référence dans ton projet C#. A tchao

n°689369
StatuFab
Posté le 01-04-2004 à 10:08:18  profilanswer
 

Pour la traduction en C#, c'est deja fait ;) , merci quand meme.
 
NB : j'ai encore qq petits bugs, mais sinon, si tu veux, des que ca marche je te l'envoie.


Message édité par StatuFab le 01-04-2004 à 12:49:03
n°695578
StatuFab
Posté le 08-04-2004 à 15:33:39  profilanswer
 

Bon, logiquement quasiment tout fonctionne dans ma version C#.
J'ai encore un souci avec GetVideoPosition(Source, Destination). En effet il ne me recupere absolument rien dans Source (les coordonnées et dimensions restent a 0).
J'ai donc repassé le VMR en mode Windowed et je colle la vidéo dans un panel (en passant par IVideoWindow). Ca ne me satisfait pas entierement mais en attendant de trouver mieux ca fonctionne.
 
NB : je me doute que ce que je raconte doit etre plutot incomprehensible pour ceux qui n'ont pas epluché le programme de notre ami letchideslandes et je m'en excuse platement.


Message édité par StatuFab le 08-04-2004 à 15:34:13

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Directshow, graphes de filtres connectés "à la main" ...

 

Sujets relatifs
Sessions / liste de connectésFiltre DirectShow: écrire du texte sur une vidéo
Afficher le nombre de connectés sur un siteproblème de capture son avec Directshow sous VC++6
[VBS] Besoin d un petit coup de mainException in thread "main" org.omg.CORBA.COMM_FAILURE
template, main, visual C++Mon prog ne rend plus la main
[vba autocad] fenetre ancrable et laisser la main a l'utilisateurSQL besoin d'un coup de main sur une requete svp (och).
Plus de sujets relatifs à : Directshow, graphes de filtres connectés "à la main" ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR