GStreamer dégaine la version 1.2

Posté par  (site web personnel) . Édité par antistress, Nils Ratusznik, palm123 et patrick_g. Modéré par tuiu pol. Licence CC By‑SA.
69
26
sept.
2013
Audiovisuel

Le framework multimédia GStreamer est sorti ce mardi 24 septembre 2013 en version 1.2, tout juste un an après la version 1.0 !

Comme on peut le lire sur Wikipédia, GStreamer est une bibliothèque logicielle de manipulation de sons et d’images (et plus encore) écrite en C, initialement développée pour proposer une solution capable de concurrencer QuickTime et DirectShow sur GNU/Linux. Sa première version publique date du 31 octobre 1999. C’est un projet freedesktop.org.

Gstreamer

GStreamer est utilisé dans de nombreux projets, notamment les logiciels du bureau GNOME, du bureau KDE via Phonon, ainsi que Mozilla Firefox et Opera. Les applications les plus courantes sont des logiciels de lecture multimédia, des juke-box numériques, des interfaces de montage non linéaire, de outils de transcodage, des navigateur web ou bien des logiciels de visioconférence ou de téléphonie.

La version 1.2 est la seconde version majeure de la branche 1.x, et est compatible avec la version 1.0 sur le plan des API et des ABI. Cette montée de version est justifiée par la présence de nombreuses modifications qui sont trop importantes pour être considérées comme de simple corrections de bug.

La branche 1.x est une branche stable et n’est pas compatible avec la branche 0.10, mais ces deux branches du framework peuvent être installées en parallèle sur un même système, et c’est ce que font ordinairement les distributions pour permettre une transition des paquets en douceur.

Les liens vers les sources sont fournis dans la note de parution, des binaires précompilés pour Windows, Mac OS X et Android seront bientôt livrés. Pour GNU/Linux, voyez avec les mainteneurs de votre distribution préférée, comme d’habitude !

NDA : merci à antistress< pour sa consciencieuse relecture, ses pertinentes suggestions, et pour ses contributions aux articles Wikipédia qui ont nourri cette dépêche. :)

Sommaire

Quand je pense au nombre de fois où je t’ai sauvé la vie

GStreamer par l’exemple

GStreamer est particulièrement apprécié pour son fonctionnement en pipeline qui rappellera à chacun les tubes sous Unix : on connecte des éléments entre eux via des tubes. Mais avec GStreamer, il y a en plus la particularité que le type d’un flux passant par un tube est connu des éléments (le format de sortie et d’entrée n’a pas à être spécifiée au niveau de chaque élément). On peut également dupliquer un flux avec un élément tee.

Comme rien ne vaut un bon exemple, voici deux pipelines qui, s’ils sont tous deux exécutés sur deux hôtes d’un même réseau réalisent un duplex audio stéréo codé en Opus et transporté par RTP :

gst-launch autoaudiosrc ! audioconvert ! audioresample ! capsfilter caps='audio/x-raw, format=S16LE, rate=48000, channels=2' ! opusenc bitrate=128000 ! rtpopuspay ! udpsink host=distant-hostname port=5004

gst-launch udpsrc uri=udp://local-hostname:5004 ! capsfilter caps='application/x-rtp, media=(string)audio, clock-rate=(int)48000, payload=(int)96, caps=(string)"audio/x-opus"' ! rtpjitterbuffer latency=60 drop-on-latency=true ! rtpopusdepay ! opusdec ! audioconvert ! audioresample ! autoaudiosink

Je ne les oublie pas les copains, surtout quand les amis viennent de si loin et qu’ils ont tant de choses à me raconter

Fonctionnalités nouvelles apportées par GStreamer 1.2

On remarquera principalement l’arrivée de greffons prenant en charge des formats dont on parle parfois sur DLFP et qui enflamment souvent les débats.

  • WebP, un format d’image concurrent du JPEG et proposé par Google et dont l’usage se destine principalement au web. WebP utilise la même technique de compression que celle qui est utilisée pour les images clés du codec vidéo VP8, dans un conteneur dérivé des spécifications RIFF qui autorise les métadonnées. Pour le moment seul le décodage est fonctionnel et le codage sera implémenté plus tard. Le greffon s’appelle webp.
  • JPEG 2000, un autre format d’image concurrent du JPEG et plus ancien que WebP mais très performant et dont la norme est commune à l’ISO, l’IEC et à l’UIT-T et notamment utilisé dans l’industrie du cinéma. Le support de ce format repose sur la bibliothèque OpenJPEG. Le greffon s’appelle donc openjpeg.
  • VP9, un codec vidéo expérimental en cours de développement par Google et attendu comme le successeur du VP8 et prévu pour concurrencer H.265/HEVC. Le greffon pour décoder ou coder en VP9 est le même que pour le VP8 : vpx.
  • Daala, un autre codec vidéo en cours de développement par la fondation Xiph.Org et la Fondation Mozilla et également attendu pour concurrencer H.265/HEVC. Attention, comme indiqué sur la page du projet, le nom Daala n’est pas définitif. Un autre nom plus pertinent pourrait être PatentCake, mais on ne pourrait plus faire la blague « Daala, ton univers impitoyaable ». Le greffon s’appelle donc daala.

Les musiciens remarqueront l’arrivée de deux nouveaux greffons pour la prise en charge du MIDI :

  • fluidsynth : ce greffon qui permet de générer des sons à l’aide d’informations MIDI et d’une SoundFont.
  • midiparse : c’est un greffon rendu nécessaire par le greffon fluidynth. On peut donner comme exemple de pipeline utilisant ces deux modules le pipeline suivant : "filesrc location=song.mid ! midiparse ! fluidsynth ! autoaudiosink".

Il existait déjà un greffon timidity, mais ces deux nouveaux greffons permettent justement de se passer de TiMidity++ et de contrôler divers paramètres depuis GStreamer lui-même et d’avoir un pipeline plus modulaire. Il n’est pas impossible qu’à l’avenir un greffon autre que fluisynth puisse être connecté à la sortie de midiparse.

Deux nouveaux greffons pour la capture vidéo via Video4Linux arrivent :

  • mfc : un greffon pour prendre en charge le Multi Format Codec, un format de compression utilisé par certains SoC comme les Samsung Exynos ou les Freescale IMX.
  • ivtv : pour prendre en charge l’IVTV, un format de compression utilisé par certaines interfaces de capture vidéo Connexant.

Pour le streaming, GStreamer 1.2 apporte deux greffons de format et un de transport :

On citera également pêle-mêle le greffon bluez pour interagir avec des appareils Bluetooth ainsi que le greffon sbc pour gérer le codec audio et vidéo Subband Codec habituellement utilisé sur du Bluetooth, le filtre de désentrelacement vidéo yadif, le greffon accuraterip pour ripper des CD audios, et pour terminer le greffon audiofxbad qui permet via l’élément audiochannelmix de reconstruire un son multicanal de manière à ce que les canaux soient identiques malgré que la source ne fournisse du son que sur un seul des canaux.

Si on ne veut pas mourir de faim, il faut faire ou le moine ou le bandit

Les tribulations de gstreamer-vaapi

L’un des objectifs de la série 1.x est de permettre d’utiliser l’accélération matérielle pour le (dé)codage vidéo et proposée par les processeurs graphiques (VA-API, VDPAU et XvBA).

Cette fonctionnalité permettrait à toute application basée sur GStreamer de bénéficier de cette accélération pour le décodage ou éventuellement le codage vidéo. Comme logiciel qui pourrait en bénéficier, citons les logiciels Totem (lecture vidéo), Pitivi (montage vidéo) ou bien encore Epiphany dont le moteur WebKitGTK+ utilise GStreamer pour afficher la vidéo nativement dans le navigateur.

Finalement cette fonctionnalité a été externalisée en une bibliothèque, gstreamer-vaapi, un ensemble de greffons dédiés à cette tâche développé par Gwenolé Beauchesne (gbeauche<) à qui l’on doit déjà l’implémentation VA API de Gnash et celle de Mplayer.

Évidemment, ce travail a nécessité de nombreuses modifications dans le code de GStreamer lui-même et les deux équipes travaillent conjointement. Comme l’a écrit Tim-Philipp Müller, un développeur GStreamer, « Ce sont des pièces de puzzle, nous faisons notre partie dans GStreamer 1.2, il faut voir avec les gens de gstreamer-vaapi pour leur partie. :) ».

Il semble donc que la présente version 1.2 ait les fondations requises. Il reste à présent à la bibliothèque externe gstreamer-vaapi à se synchroniser avec cette version pour tenir compte des derniers changements (notamment dans l’API GstContext). Alors les logiciels cités précédemment en tireront directement profit !

L’ennui c’est que moi, je finis toujours le travail

Bonification, dénonciation

De nombreux bugs sont évidemment corrigés, nous invitons le lecteur à consulter la note de parution. Si vous constatez que des bugs ont été introduits, le Bugzilla du projet vous ouvre grand ses portes, n’attendez pas !

Il faudra remercier tout spécialement le projet Pitivi (anciennement PiTiVi) pour leur débogage consciencieux. En effet, le logiciel de montage vidéo Pitivi exploite largement GStreamer, et ils ont corrigé de nombreux bugs de GStreamer en prévision de la très prochaine sortie de la version 1.0 de Pitivi.

La saine politique de Pitivi est de tout corriger en amont plutôt que de mettre en place des solutions de contournement au niveau de l’application. Cela peut retarder le développement de l’application elle-même car il faut attendre que la résolution soit intégrée en amont, mais cela bénéficie à la qualité de l’écosystème tout entier.

Dans son billet « Corrigez-le trois fois », le développeur Jean-François Fortin Tam rappelle qu’ils ont récemment apporté « 250 changements à Pitivi, 180 à GES, et je ne sais pas combien de centaines dans GStreamer ».

Je profite de cette dépêche pour encourager chacun à la même exigence ! Je me suis moi-même retrouvé dans une situation similaire : refusant de me satisfaire d’un contournement j’ai levé un bug aussi vieux que GStreamer mais dont personne ne s’était vraiment rendu compte puisque le contournement était répété de bouche à oreille comme la bonne manière de faire (et cru comme tel), sans remise en cause.

Soyez exigeant, ne contournez jamais un problème, dénoncez-le !

De nouvelles API ont également été ajoutées. Puisque l’API est stabilisée ce ne sont pas des changements de l’existant mais de nouvelles fonctionnalités.

Je vais dormir tranquille, parce que je sais maintenant que mon pire ennemi veille sur moi

Support amélioré pour plusieurs greffons

Les greffons dtmf, vp8rtp, scaletempo et rtpmux font désormais partie de l’ensemble « Good », ce qui signifie qu’ils font désormais partie des greffons les mieux supportés :

  • Le code DTMF est un système utilisée dans la téléphonie pour coder les fréquences de touches (numérotation, serveur vocal), ce greffon rejoint l’ensemble « Good » pour permettre à Empathy de ne pas dépendre de « Bad » et ses très nombreuses dépendances ;
  • ScaleTempo permet de varier la vitesse de lecture d’un média ;
  • les greffons vp8rtp et rtpmux sont, comme leur nom le laissent deviner, des greffons liés à la transmission multimédia sur RTP, le premier traite de la transmission de flux VP8, le second permet de multiplexer plusieurs streams RTP en un seul.

Le monde se divise en deux catégories : ceux qui ont un pistolet chargé et ceux qui creusent

Toi, tu creuses

Pour ceux qui se demandent ce que signifient ces ensembles nommés « Good », « Bad » et « Ugly » : en fait dans le projet GStreamer, les greffons sont regroupés selon le support qui leur est accordé, support qui est défini en fonction de la qualité du greffon lui-même, sa licence et d’autre détails et parfois des raisons politiques comme on vient de le voir. Les greffons « Good » sont de bonne qualité et très bien supportés. Les greffons « Bad » sont ceux dont la qualité n’est pas assurée parce qu’ils sont soit peu utilisés, soit peu testés, soit peu maintenus ou tout simplement parce que leur support n’est pas prioritaire. Quand aux greffons « Ugly », ce sont des greffons de bonne qualité mais dont la redistribution est problématique.

Pour l’anecdote, ce nommage en « Good », « Bad », et « Ugly » est inspiré du titre anglais d’un célèbre film de Sergio Leone : Le Bon, la Brute et le Truand (The Good, the Bad and the Ugly).

Cette dépêche rappellera aux lecteurs que les trolls sur le JPEG 2000 et la norme DCI commencent à se faire dangereusement oublier et que la dernière des dépêches cinéma date sérieusement ! Et si, non contente de chatouiller le troll qui veille, cette dépêche réveillait chez certains d’entre-vous l’ivresse de l’odeur de la poudre, sachez que d’ici la sortie de GStreamer 1.4 vous pouvez rejoindre une partie de Smokin’Guns, un autre logiciel qui n’a pas d’autres rapport avec GStreamer que celui d’être libre et d’aimer le Western quand il est spaghetti.

Aller plus loin

  • # Correction du bug 692953

    Posté par  . Évalué à 10.

    Je profite de cette dépêche pour encourager chacun à la même exigence ! Je me suis moi-même retrouvé dans une situation similaire : refusant de me satisfaire d’un contournement j’ai levé un bug aussi vieux que GStreamer mais dont personne ne s’était vraiment rendu compte puisque le contournement était répété de bouche à oreille comme la bonne manière de faire (et cru comme tel), sans remise en cause.

    191 commentaires et ce n'est pas un troll !

    Tu fais preuve d'une sacrée détermination, bien des gens n'auraient pas persévérer comme toi. Chapeau \o/

    • [^] # Re: Correction du bug 692953

      Posté par  (site web personnel) . Évalué à 2.

      Oui, j'ai parcouru ce bug, le travail d'investigation est impressionnant, surtout vu le temps nécessaire à chaque test (plusieurs heures, typiquement la journée entière) ! Félicitations aux participants !

      • [^] # Re: Correction du bug 692953

        Posté par  . Évalué à 3.

        En parlant de bug…

        GStreamer est sorti ce mardi 24 mars 2013 en version 1.2

        C'est soit mardi dimanche 24 mars 2013, soit mardi 24 mars septembre 2013. Je pencherais plutôt pour la seconde proposition.

        Pour l’anecdote, ce nommage en « Good », « Bad », et « Ugly » est inspiré du titre anglais d’un célèbre film de Sergio Leone : Le Bon, la Brute et le Truand (The Good, the Bad and the Ugly).

        Je ne sais pas pourquoi, mais arrivé à cette phrase, je n'ai pas été étonné en lisant cela, peut-être une sorte de prémonition :)

        • [^] # Re: Correction du bug 692953

          Posté par  (site web personnel) . Évalué à 2.

          En parlant de bug…

          GStreamer est sorti ce mardi 24 mars 2013 en version 1.2

          C'est soit mardi dimanche 24 mars 2013, soit mardi 24 mars septembre 2013. Je pencherais plutôt pour la seconde proposition.

          Oooouch, oui ça c'est du bug et du gros. C'est fou comment on peut écrire des choses aussi énormes et surtout les laisser à la relecture. Heureusement que je ne suis pas « core developper » et que je me fais surtout une spécialité de rapporter les bugs des autres. :p

          ce commentaire est sous licence cc by 4 et précédentes

          • [^] # Re: Correction du bug 692953

            Posté par  . Évalué à 2.

            Bravo pour cette article bien complet, et j'apprécie tout particulièrement l'absence de tout mot commençant par "encod", ça fait drôlement plaisir :) . J'ai l'impression qu'il y a de l'espoir.

        • [^] # Re: Correction du bug 692953

          Posté par  (site web personnel) . Évalué à 5.

          il y a un autre bug dans la dépêche, et beaucoup plus discret (chez moi avec Firefox il ne se remarque qu'au survol de la souris), dans le chapitre « Je vais dormir tranquille », le lien “pas dépendre de « Bad »” dans la phrase “ ce greffon rejoint l’ensemble « Good » pour permettre à Empathy de ne pas dépendre de « Bad ») et ses très nombreuses dépendances ” est un lien sans adresse, ce devait être cette adresse (qui source l'affirmation) :

          https://bugzilla.gnome.org/show_bug.cgi?id=687416

          Il fallait donc lire :

          ce greffon rejoint l’ensemble « Good » pour permettre à Empathy de ne pas dépendre de « Bad » et ses très nombreuses dépendances

          Il semble que j'ai écrit un code markdown très étrange :

          [pas dépendre de « Bad »](](https://bugzilla.gnome.org/show_bug.cgi?id=687416))
          

          Ce qui a donné ça en chteumeuleu :

          <a>pas dépendre de « Bad »</a>

          ce commentaire est sous licence cc by 4 et précédentes

  • # KDE et Gstreamer

    Posté par  . Évalué à 5.

    Il semblerait que KDE recherche des gens pour faire vivre phonon-gstreamer :

    http://comments.gmane.org/gmane.comp.kde.devel.core/80805

    • [^] # Re: KDE et Gstreamer

      Posté par  . Évalué à 7.

      Etant moi-même totalement non qualifié sur la question, je me demandais même quels étaient les avantages et inconvénients entre GStreamer et VLC pour Phonon?
      Devrais-je commencer par un est maintenu et l'autre, peut-être?

      • [^] # Re: KDE et Gstreamer

        Posté par  . Évalué à 3.

        Phonon-VLC supporte moins de fonctionnalités mais plus de codecs. J’ai cru comprendre que Phonon-Gstreamer était maintenu plus activement que Phonon-VLC mais je peux me tromper.

        Écrit en Bépo selon l’orthographe de 1990

  • # Le troll endormi

    Posté par  (site web personnel) . Évalué à 2.

    Cette dépêche rappellera aux lecteurs que les trolls sur le JPEG 2000 et >la norme DCI commencent à se faire dangereusement oublier et que la >dernière des dépêches cinéma date sérieusement !
    Ces dommages. Réveillons-le! Au souvenir il y a celui la aussi: Dindon

    Bon depuis on a bien avancé, convergé, fraternisé, etc, etc …

    Mais bon c'est pas pour dire, mais si gstreamer supporte le jpeg2000, ca n'implique pas vraiment de lien avec le cinéma DCI. y manque encore des petites choses.

    Mais que gstreamer supporte le JPEG2000, c'est vraiment une bonne nouvelle.

    Et bravo pour la belle écriture de cet article.

  • # Clarification

    Posté par  (site web personnel) . Évalué à 7.

    je tiens à dire que je n'ai aucune responsabilité dans la forme complètement fantaisiste de cette dépêche ;)

    Bon, c'est pas tout ça, je m'en vais réécouter l'album Blaze of Glory de Jon Bon Jovi

    • [^] # Re: Clarification

      Posté par  . Évalué à 3.

      Et bien justement j'ai vraiment apprécié lire cet article ! Je n'aime pas trop les gros articles mais là c'était cool et j'ai appris des trucs :) Surtout la référence au film qui m'a fait sourire :D

  • # Petite précision sur Smokin’guns

    Posté par  . Évalué à 2.

    Le code est libre mais les données, il est important de le préciser, sont non-libres. Bon jeu quand même! :p

    Écrit en Bépo selon l’orthographe de 1990

  • # Typo

    Posté par  . Évalué à 7.

    malgré que

    Aïe! C'est un usage incorrect.
    Il faut dire "bien que".

    "Malgré" s'emploi sans le "que": "Malgré le mauvais temps, …"

  • # MIDI

    Posté par  . Évalué à 1.

    Cool, vais enfin pouvoir écouter du MIDI ! Ça eut marché sur ma distrib, mais ce temps était révolu. Peut-être bien que ça remarchera !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.