none
Problème avec Media Foundation à haut débits RRS feed

  • Question

  • Bonjour à tous,

    Je rencontre des difficultés avec l'utilisation des librairies Media Foundation pour acquérir un flux vidéo (uniquement vidéo) à grande vitesse.

    J'ai réalisé une application avec Qt Creator pour traiter et afficher des signaux venant d'une camera USB3.0. (par l'intermédiaire d'un callback). La librairie où sont définies toutes les méthodes Media Foundation a été réalisée avec Visual Studio.

    J'ai effectué des essais d'acquisition et d'affichage avec une caméra USB3.0 d'une résolution de 640*480 @50FPS sans aucun problème.

    Désormais, je souhaite acquérir et afficher un flux d'une caméra d'une résolution de 1024*768 @120FPS je rencontre quelques problème.

    Quand je lance l'acquisition (asynchrone), tout semble se passer correctement, j'ai bien 120 callbacks qui se produisent (avec l'aide de la méthode ReadSample) mais à ce moment là, je n'affiche pas la vidéo.

    Quand j'affiche le flux vidéo sur mon IHM, le nombre de callback chute (aux alentours de 60) et de temps en temps je perds le flux (mon affichage se fige et plus aucun callback ne se produit). Après avoir debuggé mon programme, j'ai remarqué que la méthode ReadSample n'appelle plus la méthode OnReadSample. Dans ce cas, je suis obligé de lancer une réinitialisation totale de la librairie pour que le flux se relance.

    Y a-t-il un moyen d'augmenter la taille du buffer où sont stockées les données, de réaliser un buffer tournant, ou une autre méthode me permettant de gérer plus efficacement les données acquises ?

    Merci d'avance.

    Kevin

    vendredi 4 décembre 2015 18:18

Toutes les réponses

  • Bonjour, Oxthorp,

    Veuillez consulter l'article en bas:
    Using the Source Reader in Asynchronous Mode
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora

    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    dimanche 6 décembre 2015 12:35
    Modérateur
  • Bonjour Teodora,

    Merci beaucoup pour votre réponse, je regarde de plus près cet article dès maintenant et je vous tiens au courant rapidement.

    Cordialement.

    Kévin


    lundi 7 décembre 2015 08:32
  • Rebonjour,

    Je viens de compléter mon code en rajoutant quelques parties qui semblaient manquer. Cependant, j'ai toujours des pertes de flux. 

    Ces pertes ne pourraient-elles pas être dues au buffer où sont stockées les données qui serait plein ?

    Y a t-il un moyen de vider ce buffer ? Utiliser le flag "MF_SOURCE_READER_CONTROLF_DRAIN" pourrait-il m'aider ? Car si j'ai bien compris son utilité, il permet de bypasser le buffer. Mais il faut vérifier que les données sont disponibles à chaque appel de OnReadSample ?

    Merci d'avance

    Cordialement.

    Kévin

    lundi 7 décembre 2015 10:46