Perfis de dispositivo — adaptação a cada dispositivo
O hardware UPnP real é inconsistente quanto ao que aceita: um streamer quer FLAC de 24 bits, outro só reproduz PCM de 16 bits, um terceiro mente sobre os codecs que suporta. Um perfil de dispositivo é como se ensina ao plugin os limites e peculiaridades de um dispositivo.
Como um perfil é escolhido. Cada dispositivo identifica-se com uma string User-Agent quando se conecta. Um perfil diz "aplica-me quando o user-agent contiver este fragmento". Quando um dispositivo se conecta, o plugin encontra o perfil correspondente; se nenhum corresponder, um perfil Dispositivo Genérico incorporado é o fallback. Pode listar vários fragmentos separados por | (por exemplo, Linn|ChorusDS|BubbleDS) para que um perfil cubra uma família de dispositivos relacionados.
O que um perfil controla. Os limites que um dispositivo não pode exceder — tamanho máximo da imagem para a arte do álbum, intervalo de taxa de amostragem permitido, profundidade máxima de bits, downmixing apenas para estéreo — além disso, quando uma faixa precisa de conversão, para qual formato de saída e taxa de amostragem converter. Um grupo separado de switches de "dispositivo problemático" contorna bugs específicos de hardware (manuseamento de PCM bruto, ordem de bytes, o cabeçalho HTTP content-length). Estes existem porque a conformidade UPnP na prática é irregular; a maioria das pessoas nunca os toca.
Quando tocar num perfil. Apenas quando um dispositivo específico se comporta mal. De fábrica, o perfil Genérico, mais os padrões por dispositivo fornecidos para hardware comum, cobrem a maioria dos casos. Para encontrar o user-agent de um dispositivo para que possa direcioná-lo, ative o registo de depuração (consulte Diagnóstico), reproduza algo do dispositivo e leia a linha useragent= no registo.
O switch mais consequente do perfil — forçar fluxo nativo — não se trata de limites; decide se alguma das opções acima se aplica. Esse é o próximo conceito.


Definições
| Controlo | O que faz |
|---|---|
| Nome | O nome de exibição do perfil. |
| Aplica-se quando o user-agent contém | O(s) fragmento(s) do user-agent que um dispositivo deve conter para corresponder a este perfil; separe as alternativas com |. Dispositivos não correspondentes voltam ao perfil Genérico. |
| Tamanho máximo da imagem | Tamanho máximo em pixels da arte do álbum enviado para este dispositivo (160 px é o padrão DLNA; tamanhos maiores não são universalmente suportados). |
| Taxa de amostragem de saída / para | O intervalo de taxa de amostragem que o dispositivo aceita; fontes fora dele são convertidas (força a transcodificação). |
| Canais / apenas estéreo | Mistura multi-canal para estéreo para dispositivos que só suportam dois canais. |
| Profundidade máxima de bits | Maior profundidade de bits que o dispositivo aceita; fontes mais profundas são convertidas. |
| Formato de saída | Quando uma transcodificação é necessária, o formato para converter (PCM, FLAC, MP3, AAC, Ogg). |
| Taxa de amostragem de saída | A taxa de amostragem a usar na transcodificação; "igual à fonte" preserva o original. |
| Não usar RAW PCM | Envolve o PCM num contentor WAV em vez de enviar L16/L24 bruto. Para dispositivos que distorcem o PCM bruto (alguns Marantz). |
| Forçar little endian para fluxos PCM | Envia PCM little-endian em vez do big-endian da especificação. Corrige a reprodução de ruído branco em dispositivos que esperam little-endian. |
| Comprimento do conteúdo | Como preencher o cabeçalho HTTP Content-Length: Predefinição (valor correto), Nenhum (omitir), Apenas PCM, ou Fixo (um valor "enorme" sentinela). Para dispositivos que manuseiam mal o cabeçalho. |