begin process at 2012 05 27 18:24:56
  Trouver un code source :
 
dans
 

11 commentaire(s) de bigzooloo sur des sources sur cppfrance

Déposé sur Conteneur activex 100% api

Salut, désolé du retard...

1- ta déclaration de CLSID_IAxisMediaControl est fausse...
il faut que tu te réfères au CLSID de la classe et non au TypeLib dans OleView
(CLSID = 745395C8-D0E1-4227-8586-624CA9A10A8D)

2- lors de l'installation du SDK dans le lien que tu m'as donné, je n'ai pas ce fichier "AxMP4Dec.dll"... je dirai qu'il faut plutôt inclure "AxisMediaControl.dll" et utiliser l'interface IAxisMediaControl.

3- attention au copier-coller :-)
ca m'étonnerai que ta lib ait une fonction "GoHome()"

Voila, j'espère que ca t'aidera
Posté le : 10/06/2008 18:43:40

Déposé sur Conteneur activex 100% api

Salut,

Si tu m'envoi ta lib pour cette caméra, je veux bien essayer de résoudre ton pb !
Je te donnerai mon mail en MP si ca t'interesse.

A+
Posté le : 05/06/2008 22:12:37

Déposé sur Conteneur activex 100% api

Salut,
Franchement, je n'ai qu'une chose à dire : total respect !
Ca marche nikel du premier coup.
Ca mérite un 12/10 :-)
Posté le : 27/02/2006 14:57:13

Déposé sur Conteneur activex 100% api

C'est encore moi... :)
Effectivement, ca fonctionne (presque) comme je veux, j'arrive à obtenir mes 25 images par secondes.

Actuellement, j'utilise un timer (40 ms) pour effectuer une capture de la vidéo. Mais la synchronisation est un peu aléatoire. Si l'image de la caméra est prète au moment t, je la récupère entre le moment t et t+39 ms.

J'ai vu dans le SDK qu'il y avait un évènement (ou plutôt un CallBack) généré (ou appelé) à chaque nouvelle image. Ma question est (bien sur) : comment récupérer cet évènement sans MFC ?

un exemple avec MFC :

BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_EVENT(CMyDlg, IDC_VitaminCtrl, 9, OnNewVideoVitaminCtrl, VTS_BOOL VTS_BOOL VTS_PVARIANT)
END_EVENTSINK_MAP()

void CMyDlg::OnNewVideoVitaminCtrl(BOOL bSignal, BOOL bDecodedImg, VARIANT* vPiece)
{
   // CallBack appelé a chaque nouvelle image : parfait pour la synchronisation
}

Merci.
Posté le : 25/02/2006 17:55:54

Déposé sur Conteneur activex 100% api

Merci beaucoup, ca marche !
Il ne me reste plus qu'a utiliser les bonnes méthodes pour obtenir ce que je veux et voila.
Posté le : 22/02/2006 13:26:45

Déposé sur Conteneur activex 100% api

Voici ce que j'obtiens avec "OLE Viewer" :

Interface =
    {000D2C68-B46B-461C-B5EC-83AC5202FE2C} = IVitaminCtrl
        ProxyStubClsid = {00020424-0000-0000-C000-000000000046}
        ProxyStubClsid32 = {00020424-0000-0000-C000-000000000046}
        TypeLib [<no name>] = {9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
        TypeLib [Version] = 1.0
CLSID =
    {00020424-0000-0000-C000-000000000046} = PSOAInterface
        InprocServer = ole2disp.dll
        InprocServer32 [<no name>] = oleaut32.dll
        InprocServer32 [ThreadingModel] = Both
TypeLib =
    {9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
        1.0 = VitaminDecoder 1.0 Type Library
            0
                win32 = C:\Program Files\VitaminCtrl\lib\VitaminCtrl.dll
            FLAGS = 0
            HELPDIR = C:\Program Files\VitaminCtrl\lib


A partir de ces données, j'ai ce code source :

#import "C:/Program Files/VitaminCtrl/lib/VitaminCtrl.dll"

DEFINE_GUID(IID_IVitaminCtrl,
    0x000D2C68, 0xB46B, 0x461C, 0xB5, 0xEC, 0x83, 0xAC, 0x52, 0x02, 0xFE, 0x2C);
DEFINE_GUID(CLSID_IVitaminCtrl,
    0x00020424, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);

...
VITAMINDECODERLib::IVitaminCtrl *pVC;
CoCreateInstance(CLSID_IVitaminCtrl,0,CLSCTX_ALL,IID_IVitaminCtrl,(void**)&pVC);
ErrorExit("CoCreateInstance") ;
AtlAxAttachControl(pVC,conteneur,0);
pVC->get_ControlID(&val);
...

Ceci compile sans problème, je peux même ajouter que VC .net liste toutes les méthodes de l'interface en tapant pVC->. Donc, il a l'air de comprendre.

Mais à l'exécution, j'ai une erreur (avec la fonction ErrorExit) :
"CoCreateInstance failed with error 14007 : La clé de recherche requise n'a été trouvée dans aucun contexte d'activation actif."

Désolé de t'embetter encore mais j'en ai vraiment besoin.
Posté le : 21/02/2006 17:08:50

Déposé sur Conteneur activex 100% api

La directive #import ne provoque pas d'erreur à la compilation mais ne me donne rien de plus...

Lorsque j'inclu l'activeX dans un projet MFC, il crée automatiquement deux fichiers (.h et .cpp). Voici un extrait du .h :

#if !defined(AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_)
#define AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++

// NOTE: Do not modify the contents of this file.  If this class is regenerated by
//  Microsoft Visual C++, your modifications will be overwritten.

/////////////////////////////////////////////////////////////////////////////
// CVitaminCtrl wrapper class

class CVitaminCtrl : public CWnd
{
protected:
DECLARE_DYNCREATE(CVitaminCtrl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x70edcf63, 0xca7e, 0x4812, { 0x85, 0x28, 0xda, 0x1e, 0xa2, 0xfd, 0x53, 0xb6 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }

    BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }

// Attributes
public:

// Operations
public:
CString GetUrl();
...
... autres méthodes
...
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_)


Mais je ne peux pas le faire dans un projet non MFC.
Et si j'inclu les deux fichiers a la main dans le projet non MFC, j'ai enormement d'erreurs à la compilation : erreur à chaque ligne contenant CString ou CWnd

Je suis toujours bloqué.
Merci.
Posté le : 20/02/2006 17:14:25

Déposé sur Conteneur activex 100% api

Merci pour les encouragements...

Désolé, je crois avoir mal formuler ma question.

J'ai déjà utilisé des SDK de différents périphériques (carte d'acquisition et autres) mais ils étaient définies comme des classes C++ "normales". Ici, le problème n'est pas de savoir comment il fonctionne, mais plutôt comment le déclarer.

De plus, je me suis aperçu qu'il y avait un second SDK pour la même caméra IP. Celui-ci dispose de toutes les méthodes nécessaires pour récupérer la succession d'images et non le flux MPEG4.

L'ActiveX est déclaré dans "VitaminCtrl.dll". (J'imagine que tu ne connais pas non plus?)

Il me reste encore une dizaine de jours pour trouver la solution...

Posté le : 19/02/2006 13:29:11

Déposé sur Conteneur activex 100% api

Bonjour,

Je viens de me mettre (temporairement) à l'utilisation des ActiveX, mais je n'aime pas les MFC et autres ATL...

CPPFrance étant mon premier site de recherche, je suis facilement tomber sur ce code et je t'en remercie.

J'ai testé ton code dans mon programme et cela fonctionne très bien.
Cependant, j'aimerai utiliser un autre ActiveX qui permet de récupérer un flux vidéo (MPEG4) en provenance d'une caméra IP : mais je ne sais pas comment faire.

Autre précision, je ne veux pas le flux tel quel mais plutôt la succession d'images (à 25 img/sec) qui constituent le flux pour effectuer un traitement dessus et les enregistrer (dans un buffer ou autre).

J'ai à disposition :
- la documentation du SDK (en anglais) qui précise uniquement la marche à suivre avec les MFC.
- le fichier "MediaDBPlayback.dll" qui est l'ActiveX. (Du moins, d'après ce que j'ai compris).
- deux fichiers "mediaplayback.h" et "mediaplayback.cpp" qui contiennent l'implémentation de la classe "CMediaPlayBack : public CWnd"

Je peux vous envoyer les fichiers si besoin.

Quelqu'un peut m'aider ?

Merci.
Posté le : 14/02/2006 14:28:49

Déposé sur Début de raytracer

Salut,

si tu veux, j'ai de la doc sur le Bum-map... et plus généralement sur tout ce qui touche au texturage. (format pdf)
y a qu'a demander...

envoi ton adresse mail.
Posté le : 28/01/2005 19:47:01

1 2


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales