Ces derniers jours (du 19 au 23, minimum) ont été consacré à la correction et l’amélioration du mini soft permettant de diffuser une vidéo dans un environnement 3D utilisant glfilterreflectedscreen. Ainsi, lors du lancement de l’application la première fois après l’upgrade de gstreamer, le mode display fonctionnait correctement, mais plus le mode record. Etant donné que ce devait être le plus utilisé, j’ai passé plusieurs jours à chercher l’erreur, sans la trouver, y compris avec l’aide de la communauté gstreamer présente sur irc.
C’est finalement hier que nous avons compris ce qui coinçait. Sans vraiment pour expliquer les raisons de ce problème, la connexion des pads entre les src et les sinks des différents éléments généraient une erreur au niveau du join entre theoraenc et gldownload. Et malgré tout nos efforts nous étions dans l’incapacité de comprendre pourquoi. Il faut savoir qu’à ce moment là, on diposait de trois bin: le bin principal, le pipeline, le bin vidéo et le bin audio. A cet instant, oggmux et filesink se trouvaient dans le bin principale, puisqu’ils devaient constituer avec filesrc et decodebin la base immuable du pipeline. Le problème venait en fait d’ici. Le bin vidéo ne parvenait pas à connecter les pad de son dernier élement (theoraenc) à ceux du premier du bin principal (oggmux). Finalement, le soucis a été résolu en plaçant oggmux et filesink dans le bin video.
S’en est alors suivi un nouveau problème. En effet, dans le cadre d’un montage vidéo “normal” il est plus que probable qu’au moins un des fichiers d’entré contienne une piste vidéo, mais également une piste audio. Dans ce cas là, pas de problème, les deux bin fonctionnent. Mais dans le cas où les DEUX vidéos ne contiennent aucun son (comme c’est le cas pour nous), le bin audio attends un flux de donnée qui ne vient, et le pipeline se bloque.
Ayant déjà passé beaucoup de temps là dessus sans pouvoir trouver une solution “propre”, je me suis résigner à une solution “de secours”: l’interface java comprend désormais un checkbox de plus, qui permet à l’utilisateur de spécifier si son fichier d’entré comprend ou non du son.
Il s’agit comme je viens de le dire d’une solution de secours temporaire. Lorsque mes compétences dans le maniement de gstreamer seront un peu efficace (même si je crois comprendre comment faire, j’ai toujours une erreur que je ne sais pas comment gérer), il sera possible de détecter si le fichier d’entré comprend du son ou non et de le jouer, quelque soit le résultat. La démarche est la suivante:
montage de base du pipeline: videosrc + decodebin
phase de preroll: permet de connecter les pad et de déterminer le type de données
modification du pipeline en fonction des résultats (ajout video et/ou audio)
phase playing: lancement du pipeline.
Pour le moment, la détection semble être incorrecte au niveau de l’audio, et l’ajout de la vidéo ne fonctionne pas. Bref il s’agit, avec l’utilisation de glmosaic lorsque celui-ci sera disponible, des dernières améliorations possibles concernant ce mini soft.
Il a également été effectuer une petite retouche de l’aspect graphique du filtre, afin d’augmenter la taille des écrans, d’avoir un angle plus important entre les deux, et de perdre moins d’espace en haut et en bas de l’image.
Voici quelques screen permettant de comprendre le fonctionnement du soft:
Fenêtre par défaut (accueil)
choix du fichier d’entré (via browser)
gestion des options
rendu
Ou une petite vidéo pour montrer en temps réel comment cela fonctionne:





Laisser un commentaire
Flux de commentaires pour cet article