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 :

[DirectShow] Récupérer les données décompressées d'un MPEG


Sujet :

DirectX

  1. #1
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut [DirectShow] Récupérer les données décompressées d'un MPEG
    Bonjour,

    J'ai en entrée un fichier MPEG 1 Layer 2, et je voudrais récupérer le flux mais en décompressé sachant que je dois notifier les samples (ou paquets de samples) pendant la décompression.
    En créant un graph et en incluant le SampleGrabber juste avant le Renderer j'ai quelque chose mais il me faut 1 min pour traiter un fichier de 1 min car je le joue. Je souhaiterai faire la même chose sans jouer le fichier afin de traiter le fichier le plus vite possible.

    Je programme actuellement en C# mais si vous avez des exemples C++ cela ne pose pas de problèmes majeurs je ferai la traduction.

    D'avance merci de votre aide.

  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 : 50
    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
    Points : 2 605
    Points
    2 605
    Par défaut
    Salut DrQ.

    Si tu utilises directshow avec ses interfaces de base, le stream s'adapte au timing de la vidéo. C'est-à-dire que si la vidéo dure 1 minutes, le graphe va se caller sur ce temps pour faire effectuer les traitements par les différents threads.

    Tu peux dèjà retirer les filtres de rendu, puisque l'affichage et la sortie audio ne t'intéressent pas. Ceci permettra peut-être de pouvoir effectuer la chose suivante avec une certaine "efficacité": tu implémentes l'interface "IReferenceClock" dans ton filtre. Cette interface va obliger les autres filtres à ce synchroniser sur le timer que tu utiliseras. A priori, cette interface s'applique surtout au filtre de rendu audio, donc...

    PS: je ne suis pas sûr d'avoir bien compris ton cahier des charges. Si tu ne joues pas le fichier, tu en fais quoi exactement. Tu effectues des traitements sur les trames vidéo ou sur les trames audio, ou les deux?

  3. #3
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    En fait j'ai un fichier audio au format MPEG 1 Layer 2.

    De ce fichier audio je dois générer un WMA, un fichier avec un échantillonage des PCM pour générer un waveform, et je dois passer le données décompressées dans un SDK tierce pour un traitemen métier.

    Aujourd'hui nous avons un outil de capture qui fait tout ça à partir des samples envoyés par un périphérique audio. Le but est donc de ne pas se caler sur un périphérique audio mais sur un fichier audio cette fois ci. Biensûr la solution bête est méchante serait de lire le fichier pour le renumériser par dernière avec l'applicatif existant. Mais on a besoin de pouvoir traiter le fichier le plus vite possible.

    L'idée est que lors de la lecture "rapide" du fichier audio (mp2 dans mon cas) des callback sont déclenchés envoyant les samples décompressés. Ainsi on peut traiter un fichier audio rapidement.

    En espérant que ce soit plus clair.

    De ce que j'ai compris de DirectShow, c'est le filtre de rendu qui temporise le graph. J'ai essayé de mettre un NullRenderer en fin de chaîne mais là je n'ai plus rien.

  4. #4
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    J'avance

    J'arrive à récupérer par le SampleGrabber les données. Sur un fichier d'une minute pas de souci par contre sur un fichier de 1h il s'arrête environ au bout d'une minute : je dis 'environ' car ça change à chaque exécution.

    --Edit--

    Le problème du fait que je fais un Console.Out.WriteLine, sans ça fonctionne.
    Donc en passant par un IReferenceClock cela devrait fonctionner, mais le problème est qu'en C#, pas moyen de trouver comment passer un sémaphore. Y a t'il un autre moyen ?

    --Edit--

    Tsss rien de bien grave, juste le buffer de sortie de VS.NET qui est visiblement limité en nombre de lignes : tout fonctionne à merveille
    Merci de votre aide.....

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

Discussions similaires

  1. [VB6] MySQL Comment récupérer les données ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/02/2006, 14h58
  2. XMLHttpRequest : Impossible de récupérer les données
    Par laurent_ifips dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 22/11/2005, 13h28
  3. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39
  4. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51
  5. Récupérer les données d'une iframe
    Par juli1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/02/2005, 22h53

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