Bonjour,
Je développe un module qui doit permettre de créer une vidéo à partir d'images générées en mémoires.
L'une des contraintes est d'utiliser DirectShow.
J'ai donc créé un filtre source, basé sur l'exemple "PushSource" du SDK, et ça fonctionne plutôt pas mal...
Le soucis, c'est que le temps de génération d'une image en mémoire est assez variable : je ne sais donc pas à quel moment le prochain "sample" sera disponible.
Pour résoudre ça, j'aimerais pouvoir :
- créer le graphe (avec mon filtre pushsource)
- créer la première image en mémoire
- transmettre l'adresse de cette image à mon filtre
- lancer le graphe en "OneShot" (comme avec un sampleGrabber) pour qu'il n'encode qu'une image
- attendre la fin du traitement de cette image
- générer l'image suivante
- transmettre l'adresse de cette image à mon filtre
- etc....
- stopper le graphe
Est-ce possible de lancer un graphe d'encodage en "OneShot" ? Comment ?
Sinon, j'ai vu qu'il existe des filtres "Asynchrones"... est-ce que ça répond à ce besoin ? Quelqu'un aurait des exemples (j'ai pas trop envie de repartir de zéro pour faire un nouveau filtre, j'ai déjà pas mal galéré pour le premier...)
Pour info, mon graphe est très simple :
MaSourceCustom ==> Codec ==> AVIMuxer ==> FileWriter
(le codec est au libre choix de l'utilisateur)
Merci d'avance pour tout ce qui pourrait faire avancer mon schmilblick !
Partager