lundi 16 novembre 2015

DLNA décrypté

Le DLNA c'est la promesse d'un monde merveilleux de convergence entre informatique et multimédia, où vous auriez accès à tous vos contenus de partout et sans prise de tête. En fait le terme est tellement galvaudé par le marketing et utilisé à tort et à travers qu'il finit pas devenir totalement abscons.

Puis comme nous allons le voir, la réalité est bien moins reluisante que le rêve qu'on nous vend.

Le DLNA c'est avant tout une technologie réseau. Si vous n'avez aucune base en la matière, je sous suggère de lire cette petite introduction sur le sujet.


DLNA, c'est quoi 

A la base c'est un consortium d'industriels qui a édicté une norme qui vise à permettre l'interopérabilité de nombreux matériels : TV "smart", disque dur multimédia, enceinte sans fil, smartphone et ainsi de suite.

L'interopérabilité c'est un mot compliqué pour dire qu'on va les faire fonctionner ensemble, leur apprendre à se parler et à coopérer. On doit pouvoir regarder sur sa télé les films stockés sur son ordinateur de bureau ou de préférence son NAS (c'est plus classe, ça coûte plus cher), diffuser de la musique stockée sur son NAS vers des enceintes sans fil et en contrôlant tout ça depuis son smartphone, envoyer les photos de son smartphone sur sa télé etc.

Bref, tellement d'usages différents et possibles, présentés sous des tas de noms différents, qu'on finit par ne plus rien comprendre. Surtout que les promesses de simplicité sont très loin, mais alors très loin, d'être tenues.


DLNA, explication de texte

Dans un réseau d'appareils collaborant selon la norme DLNA, on peut trouver des DMP(layer), DMC(ontroler), DMR(enderer), DMU(ploader), DMD(ownloader) et j'en oublie sans doute.  Difficile de comprendre le rôle de chacun et encore j'utilise ici les termes de la norme, mais il y a aussi les termes marketing, les noms qu'on trouve dans les menus qui sont encore différents, et l'existence en parallèle d'autres normes plus récentes qui recoupent DLNA sur certains usages. Une chatte n'y retrouverait pas ses petits.

Alors revenons aux fondamentaux pour y voir plus clair.

Dans un programme informatique, on peut distinguer au moins deux composantes : 
  • l'interface utilisateur qui est l'ensemble des éléments (menus, écrans de saisies, icônes, gestures d'écran tactile ...) qui vous permettent de donner des instructions à la machine et de recevoir des informations en retour. La télécommande est l'interface utilisateur de votre télévision.
  • les fonctionnalités qui correspondent à ce qu'on attend de la machine : jouer un son, afficher une image etc. Les fonctionnalités sont activées par les commandes transmises grâce à l'interface utilisateur.

Dans un programme classique, tel que vous l'utilisez sur un ordinateur, ces deux composantes forment un tout unique et indivisible qui s'exécute sur un matériel unique. Cependant, on peut imaginer de séparer ces deux composantes et de les faire s'exécuter chacune sur une machine différente. 

Dès lors il faut alors une composante réseau pour qu'elles puissent se parler. Et c'est ici qu'intervient DLNA en organisant ce dialogue.

Ce dialogue s'appuie sur une couche réseau qui permet aux équipement de se parler. Ce réseau ce peut être du Wifi, du Bluetooth, du réseau filaire Ethernet, du CPL, peu importe. Le réseau ce n'est pas le souci de DLNA, il utilise ce qu'il trouve mais il ne le gère pas. Comme quand vous utilisez une voiture, vous ne vous souciez pas du moteur (j'ai pas trouvé d'exemple plus parlant, disons que c'est une voiture en boite automatique) .

Prenons l'exemple d'enceintes sans fil pilotées depuis une application smartphone. L'application smartphone c'est l'interface utilisateur (aka DMC), les fonctionnalités c'est les enceintes (aka DMR), et DLNA est juste là pour les aider à se parler ; c'est juste le protocole de communication.

Maintenant, ce n'est pas fini. Une enceinte sans fil pour jouer un morceau de musique, elle doit en disposer. Or, ce n'est pas le cas car le morceau est stocké sur votre NAS. Hé bien, ici aussi il y une communication réseau entre l'enceinte et le NAS : l'enceinte demande au NAS de lui envoyer le morceau et le NAS lui envoie. Au passage, vous noterez que si le smartphone vous a proposé le morceau c'est qu'il avait déjà demandé au NAS "hé donne moi la liste des morceaux de musique dont tu disposes".  Toutes ces discussions sont gérées grâce au protocole DLNA.

J'espère que c'est déjà plus clair.

Alors j'ai pris un exemple avec 3 parties, mais il y a des cas plus simples. Par exemple, la TV "smart" qui lit les films diffusés par votre NAS. On est sur un cas de figure client-serveur tout à fait classique avec un client (la TV) qui envoie des requêtes à un serveur (le NAS) qui répond en fournissant, la liste de ses films avec leurs métadonnées (affiche, liste des acteurs, résumé ...), puis plus tard le film proprement dit (en streaming donc) quand la TV lui demande après que l'utilisateur ait choisi un film (via l'interface utilisateur pilotée par la télécommande).

DLNA, les la promesses tenues

Alors on vient de le voir, on a plein d'appareils qui se parlent. Habituellement, ceci implique pas mal de travail en amont pour configurer tout le bordel.

Mais avec DLNA vient encore une norme ou protocole qui porte divers noms mais dont l'objet est simplement de permettre à tous les programmes ou matériels qui "parlent" DLNA de se reconnaître mutuellement de façon automatique. 

ça s'appelle un truc comme "Universal Plug & Play" (Upnp) : "tu branches, ça marche" en bon Français.

Et ça fonctionne bien. Normalement, aucune configuration à faire, hors cas particuliers ou vieille box internet toute pourrie.

DLNA, les promesses non tenues

Format de données non reconnus

Les appareils DLNA doivent respecter une certification pour avoir le droit de s'appeler DLNA. 

Malheureusement, la norme DLNA impose uniquement de savoir reconnaître un format d'image, un format de son, et un format de vidéo. 

Certes ce sont des formats très utilisés, mais aujourd'hui il existe une multitude de formats d'image, de son et plus encore de vidéo.

Et dès qu'un appareil chargé de restituer un son/image/vidéo reçoit un fichier qu'il ne sait pas traiter, ben ça marche pas. Et manque de chance, les formats parmi les plus utilisés aujourd'hui ne sont pas dans la norme.

Alors on a des appareils plus sophistiqués qui savent gérer plein de formats, bien au delà de que réclame la norme, mais d'autres non. Et la seule façon de savoir, c'est de se taper les documentations techniques, et là ça peut devenir vite compliqué vu la multitude de formats.

D'où les problèmes fréquents.

Réencodage dynamique ...

Dans le cas de format non supportés, il existe certains serveurs de contenu DLNA (en particulier les logiciels qu'on installe classiquement sur un NAS utilisé en serveur multimédia) qui savent réencoder dynamiquement à la volée les vidéos pour les envoyer au client (disons la smart TV) dans un format qu'il va reconnaître.

Le souci c'est que le réencodage vidéo est une opération extrêmement lourde et qu'à moins d'avoir du matériel pointu avec plein de mémoire, un processeur multi-coeur rapide, des disques SSD rapides, un support matériel (donc une carte mère avec les bonnes puces et le logiciel qu'il faut, configuré comme il faut), vous allez mettre votre serveur à genoux, et côté client l'image va se figer, le son se décaler, l'avance et la marche arrière ne fonctionneront pas etc... Sauf à dégrader le qualité du signal pour gagner en performance... Mais bon si je me ruine en disque durs pour stocker des films en full HD, c'est pas pour les voir dans une qualité de merde !

Ergonomie

Les clients DLNA qui affichent la liste des contenus mis à disposition par un serveur DLNA sont de qualité très variables (pour être gentil). Bien souvent, ils gèrent très mal les méta données, et il n'y en a pas deux qui fonctionnent de la même façon.

Je ne sais pas pourquoi, mais pour avoir vu pas mal de client DLNA, je crois rarement avoir vu autant de softs développés avec les pieds par des développeurs autistes.  Il doit y avoir des raisons à ça.

Incompatibilités

De nombreux appareils implémentent mal la norme (en fait le logiciel qu'ils embarquent) et sont tout simplement bugués. Du coup, le dialogue ne fonctionne pas ou mal.

Alors, si on reste au sein d'une gamme d'un constructeur ça a de fortes chances de fonctionner, mais quand on mixe des appareils de différents constructeurs, c'est variable.

Vidéos HD > Problème de débit réseau

Le marketing met en avant la liberté et la facilité lié à l'utilisation de réseaux sans fil. Or, il faut savoir qu'un réseau WIFI, même à la dernière norme, a un débit beaucoup trop limité pour faire passer des vidéos en HD. Et ne parlons pas du bluetooth qui a déjà du mal à faire passer la musique sans trop nous abîmer les oreilles.

Donc, le DLNA ne fonctionne tout simplement pas en WIFI pour de la vidéo HD. Il y en a qui ont essayé, ils ont eu des problèmes.


Il faut être en réseau cablé Ethernet 1 Gbit pour que ça puisse fonctionner (et encore pas toujours, cf les problèmes de format).

Conclusion

Le DLNA c'est bien pour le son.
Le DLNA c'est bien pour la vidéo en SD (pas en HD).
Le DLNA, c'est bien pour quelques usages gadgets, genre envoyer ses photos sur sa TV (et encore)

Pour la vidéo HD, passez votre chemin. Prenez vous un boitier multimédia, ça coûte mille fois moins cher, c'est performant, et ça marche du feu de dieu.

Et je doute que les choses s'améliorent beaucoup dans le futur. Qui vivra verra.