IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

[directx9 & c++]Sample Grabber Filter


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut [directx9 & c++]Sample Grabber Filter
    Bonjour,

    J'utilise le Sample Grabber Filter pour récupérer les frames.

    Je ne trouve pas comment récupérer le timestamp (en utilisant directshow), c'est à dire le temps écoulé entre "date de graph->run()" et "la date à laquelle la frame est crée" par le grabber filter.

    Actuellement je bidouille un truc moi meme, cest à dire que je calcul ce temps écoulé moi meme en attendant une solution plus propre.

    Quel directshow structure utiliser ? et quel filtre la fournie ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut
    Bon alors si ca peut aider qqn j'ai trouvé :

    il faut écrire une classe "MyCallBack" (par exemple) qui implémente l'interface "IUnknown" et l'interface "ISampleGrabberCB"
    http://msdn2.microsoft.com/EN-US/library/ms786685.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     HRESULT STDMETHODCALLTYPE SampleCB(double SampleTime, IMediaSample *pSample) ;
     
    STDMETHODIMP BufferCB(double SampleTime, BYTE *pBuffer, long BufferLen) { return E_NOTIMPL ; } ;
    IMediaSample::GetPointer permet de récupérer le data de la frame et IMediaSample::GetMediaType permet de récupérer la taille w et h de la frame.

    Hériter de "IUnknown" permet de pouvoir instancier "MyCallBack", il faut implémenter notemment QueryInterface

    Puis il faut instancier MyCallBack, puis ajouter le callback au Sample Grabber Filter avec la méthode SetCallback(myCallBack, 0) (0 pour utiliser ISampleGrabberCB::SampleCB)
    http://msdn2.microsoft.com/EN-US/library/ms786692.aspx

    Et il faut ISampleGrabberCB::SetBufferSamples(FALSE) pour utiliser dire au grabber filter d'utiliser le callback


    Voila, à noter "double SampleTime" vaut 0.04 (=1/fps) à 25 fps (1/fps)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [c++ & directshow]Perfs et Sample Grabber
    Par jhonnyBravo dans le forum API graphiques
    Réponses: 2
    Dernier message: 15/02/2008, 21h53
  2. XML sample can't be loaded...
    Par coca dans le forum XMLRAD
    Réponses: 2
    Dernier message: 03/11/2003, 13h11
  3. CFileDialog Filter
    Par Patrick Beaudoin dans le forum MFC
    Réponses: 4
    Dernier message: 07/09/2002, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo