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 :

[Filtre source DirecShow] Remplissage avec FillBuffer()


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut [Filtre source DirecShow] Remplissage avec FillBuffer()
    Bonjour à tous,

    je travaille actuellement sur un filtre source DirectShow permettant de se connecter à une caméra qui envoie ses données dans des paquets RTP ,et de transmettre ces données au reste du graphe qui comprendra un décodeur et un "video renderer". Pour l'instant, la caméra envoie du MPEG4, par la suite j'étendrais le programme à du H264.

    J'initialise la connection, traite les messages RTSP (DESCRIBE,PLAY,PLAY ...), et reçois bien les paquets RTP dans mon filtre.

    Mon problème est alors de savoir quelles données sont à envoyer au reste du graphe : j'envoie directement les données reçues ou j'attends d'avoir une frame complète ?

    Lorsque j'envoie les paquets directement au graphe, la vidéo rendue est une espèce de ligne "arc-en-ciel", bref, de la bouse ! (en utilisant comme filtre décoder le ffdshow raw video filter ).

    Si je veux envoyer des frames, j'utilise la libavcodec avec les fonctions avcodec_decode_video et sws_scale afin de repérer les frames, les décoder et les envoyer. La vidéo rendue n'est pas de très bonne qualité...

    (Quand je dis envoyer au graphe, c'est que j'utilise la méthode fillBuffer et je remplis le PBYTE correspondant au GETPointer sur le IMediaSample avec le buffer reçu)

    Bref, ce que je veux en fait connaître, c'est la façon dont je dois remplir mon buffer (celui de FillBuffer) afin d'avoir un décodage optimal (et en temps réél).

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Le protocole RTSP étant une méthode d'encodage particulière, je dirais que tu as un premier filtre qui s'occupe de la réception des données réseaux, puis un filtre de découpage des données pour le protocole RTSP. Ensuite deux filtres de décompression audio/video.

    Pour la qualité, il faut que les filtres respectent certains aspects propres à directshow. A savoir principalement le TimeStamp et de IQualProp.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    Le découpage de mes paquets RTSP se fait dans mon premier filtre. Ainsi j'envoie directement mes données de mon filtre source au décodeur.

    Je vais essayer de voir du côté du timestamp et te tiens au courant de mes avancés.

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    J'ai finalement abandonné l'utilisation de directshow pour résoudre mon problème de décodage vidéo: je suis finalement arrivé à faire ce que je voulais avec ffmpeg.

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

Discussions similaires

  1. Filtre source avec DirectShow - asynchrone ?
    Par buzzkaido dans le forum DirectX
    Réponses: 1
    Dernier message: 16/03/2010, 16h12
  2. Réponses: 9
    Dernier message: 05/08/2006, 17h46
  3. [VBA-E]filtre sur plusieurs Critères avec Excel
    Par Diablo_22 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2006, 20h34
  4. [JComboBox] Remplissage avec tableau de String
    Par linkit dans le forum Composants
    Réponses: 2
    Dernier message: 26/05/2005, 21h39

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