Profils d'appareil — adaptation à chaque appareil
Le matériel UPnP réel est incohérent quant à ce qu'il accepte : un streamer veut du FLAC 24 bits, un autre ne lit que du PCM 16 bits, un troisième ment sur les codecs qu'il prend en charge. Un profil d'appareil est la façon dont vous enseignez au plugin les limites et les particularités d'un appareil.
Comment un profil est choisi. Chaque appareil s'identifie avec une chaîne User-Agent lorsqu'il se connecte. Un profil dit "applique-moi quand l'agent utilisateur contient ce fragment". Lorsqu'un appareil se connecte, le plugin trouve le profil correspondant ; si aucun ne correspond, un profil Appareil générique intégré est utilisé par défaut. Vous pouvez lister plusieurs fragments séparés par | (par exemple Linn|ChorusDS|BubbleDS) afin qu'un profil couvre une famille d'appareils liés.
Ce qu'un profil contrôle. Les limites qu'un appareil ne peut pas dépasser — taille maximale de l'image pour la pochette d'album, plage de fréquences d'échantillonnage autorisée, profondeur de bits maximale, downmixage stéréo uniquement — plus, lorsqu'une piste doit être convertie, le format de sortie et la fréquence d'échantillonnage vers lesquels convertir. Un groupe distinct de commutateurs "appareil problématique" contourne des bogues matériels spécifiques (gestion du PCM brut, ordre des octets, en-tête HTTP content-length). Ceux-ci existent parce que la conformité UPnP dans la nature est inégale ; la plupart des gens n'y touchent jamais.
Quand toucher un profil. Seulement lorsqu'un appareil spécifique se comporte mal. Par défaut, le profil générique, plus les paramètres par défaut fournis pour le matériel courant, couvrent la majorité des cas. Pour trouver l'agent utilisateur d'un appareil afin de pouvoir le cibler, activez la journalisation de débogage (voir Diagnostics), lisez quelque chose depuis l'appareil et lisez la ligne useragent= dans le journal.
Le commutateur le plus important du profil — forcer le flux natif — ne concerne pas du tout les limites ; il décide si l'une des options ci-dessus s'applique. C'est le concept suivant.


Paramètres
| Contrôle | Ce qu'il fait |
|---|---|
| Nom | Le nom d'affichage du profil. |
| S'applique lorsque l'agent utilisateur contient | Le ou les fragments d'agent utilisateur qu'un appareil doit contenir pour correspondre à ce profil ; séparez les alternatives avec |. Les appareils non appariés reviennent au profil générique. |
| Taille maximale de l'image | Taille maximale en pixels de la pochette d'album envoyée à cet appareil (160 px est la norme DLNA ; plus grand n'est pas universellement pris en charge). |
| Fréquence d'échantillonnage de sortie / à | La plage de fréquences d'échantillonnage acceptée par l'appareil ; les sources en dehors de celle-ci sont converties (force le transcodage). |
| Canaux / stéréo seulement | Downmixe le multi-canal en stéréo pour les appareils qui ne gèrent que deux canaux. |
| Profondeur de bits maximale | Profondeur de bits la plus élevée acceptée par l'appareil ; les sources plus profondes sont converties. |
| Format de sortie | Lorsqu'un transcodage est nécessaire, le format vers lequel convertir (PCM, FLAC, MP3, AAC, Ogg). |
| Fréquence d'échantillonnage de sortie | La fréquence d'échantillonnage à utiliser lors du transcodage ; "identique à la source" préserve l'original. |
| Ne pas utiliser le PCM RAW | Encapsule le PCM dans un conteneur WAV au lieu d'envoyer du L16/L24 brut. Pour les appareils qui brouillent le PCM brut (certains Marantz). |
| Forcer le little endian pour les flux PCM | Envoie le PCM en little-endian au lieu du big-endian de la spécification. Corrige la lecture de bruit blanc sur les appareils qui attendent le little-endian. |
| Longueur du contenu | Comment remplir l'en-tête HTTP Content-Length : Par défaut (valeur correcte), Aucun (omettre), PCM uniquement, ou Fixe (une valeur "énorme" sentinelle). Pour les appareils qui gèrent mal l'en-tête. |