Perfiles de dispositivo: adaptación a cada dispositivo
El hardware UPnP real es inconsistente en cuanto a lo que acepta: un streamer quiere FLAC de 24 bits, otro solo reproduce PCM de 16 bits, un tercero miente sobre los códecs que soporta. Un perfil de dispositivo es la forma de enseñarle al plugin los límites y peculiaridades de un dispositivo.
Cómo se elige un perfil. Cada dispositivo se identifica con una cadena User-Agent cuando se conecta. Un perfil dice "aplíqueme cuando el user-agent contenga este fragmento". Cuando un dispositivo se conecta, el plugin encuentra el perfil coincidente; si ninguno coincide, se utiliza un perfil incorporado de Dispositivo genérico como alternativa. Puedes listar varios fragmentos separados por | (por ejemplo, Linn|ChorusDS|BubbleDS) para que un perfil cubra una familia de dispositivos relacionados.
Qué controla un perfil. Los límites que un dispositivo no puede exceder —tamaño máximo de imagen para el arte del álbum, rango de frecuencia de muestreo permitido, profundidad de bits máxima, mezcla descendente solo a estéreo—, además, cuando una pista necesita ser convertida, a qué formato de salida y frecuencia de muestreo convertirla. Un grupo separado de interruptores de "dispositivo problemático" soluciona errores específicos de hardware (manejo de PCM sin procesar, orden de bytes, el encabezado HTTP content-length). Estos existen porque el cumplimiento de UPnP en la práctica es irregular; la mayoría de la gente nunca los toca.
Cuándo tocar un perfil. Solo cuando un dispositivo específico se comporta mal. De fábrica, el perfil genérico, más los valores predeterminados por dispositivo enviados para hardware común, cubren la mayoría de los casos. Para encontrar el user-agent de un dispositivo y poder apuntarlo, activa el registro de depuración (consulta Diagnóstico), reproduce algo desde el dispositivo y lee la línea useragent= en el registro.
El interruptor más importante del perfil —forzar flujo nativo— no se trata realmente de límites; decide si algo de lo anterior se aplica. Ese es el siguiente concepto.


Configuración
| Control | Qué hace |
|---|---|
| Nombre | El nombre de visualización del perfil. |
| Se aplica cuando el user-agent contiene | El o los fragmentos de user-agent que un dispositivo debe contener para coincidir con este perfil; separa las alternativas con |. Los dispositivos no coincidentes recurren al perfil genérico. |
| Tamaño máximo de imagen | Tamaño máximo de píxeles del arte del álbum enviado a este dispositivo (160 px es el estándar DLNA; un tamaño mayor no es universalmente compatible). |
| Frecuencia de muestreo de salida / a | El rango de frecuencia de muestreo que acepta el dispositivo; las fuentes fuera de este rango se convierten (fuerza la transcodificación). |
| Canales / solo estéreo | Mezcla descendente de multicanal a estéreo para dispositivos que solo admiten dos canales. |
| Profundidad de bits máxima | La profundidad de bits más alta que acepta el dispositivo; las fuentes más profundas se convierten. |
| Formato de salida | Cuando se necesita una transcodificación, el formato al que se debe convertir (PCM, FLAC, MP3, AAC, Ogg). |
| Frecuencia de muestreo de salida | La frecuencia de muestreo a usar al transcodificar; "igual que la fuente" conserva el original. |
| No usar PCM RAW | Envuelve PCM en un contenedor WAV en lugar de enviar L16/L24 sin procesar. Para dispositivos que distorsionan el PCM sin procesar (algunos Marantz). |
| Forzar little endian para flujos PCM | Envía PCM en formato little-endian en lugar del big-endian de la especificación. Soluciona la reproducción de ruido blanco en dispositivos que esperan little-endian. |
| Longitud del contenido | Cómo rellenar el encabezado HTTP Content-Length: Predeterminado (valor correcto), Ninguno (omitir), Solo PCM o Fijo (un valor "enorme" de centinela). Para dispositivos que manejan mal el encabezado. |