Perfis de dispositivo — adaptando-se 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 quais codecs suporta. Um perfil de dispositivo é como você ensina ao plugin os limites e peculiaridades de um dispositivo.
Como um perfil é escolhido. Todo dispositivo se identifica com uma string User-Agent quando se conecta. Um perfil diz "aplique-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 integrado é o fallback. Você 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 de imagem para arte do álbum, faixa de taxa de amostragem permitida, profundidade de bits máxima, downmixing apenas para estéreo — além disso, quando uma faixa precisa de conversão, qual formato de saída e taxa de amostragem converter. Um grupo separado de chaves de "dispositivo problemático" contorna bugs de hardware específicos (manuseio de PCM bruto, ordem de bytes, cabeçalho HTTP content-length). Eles existem porque a conformidade UPnP na prática é irregular; a maioria das pessoas nunca os toca.
Quando tocar em um perfil. Somente quando um dispositivo específico se comporta mal. Fora da caixa, o perfil Genérico, mais os padrões por dispositivo enviados para hardware comum, cobrem a maioria dos casos. Para encontrar o user-agent de um dispositivo para que você possa direcioná-lo, ative o registro de depuração (consulte Diagnóstico), reproduza algo do dispositivo e leia a linha useragent= no log.
A chave mais importante do perfil — forçar fluxo nativo — não se trata de limites; ela decide se alguma das opções acima se aplica. Esse é o próximo conceito.


Configurações
| Controle | 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 alternativas com |. Dispositivos não correspondentes retornam ao perfil Genérico. |
| Tamanho máximo da imagem | Tamanho máximo de pixel da arte do álbum enviado para este dispositivo (160 px é o padrão DLNA; maior não é universalmente suportado). |
| Taxa de amostragem de saída / para | A faixa de taxa de amostragem que o dispositivo aceita; fontes fora dela são convertidas (força a transcodificação). |
| Canais / apenas estéreo | Downmix multi-canal para estéreo para dispositivos que só fazem 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 ser usada na transcodificação; "igual à fonte" preserva o original. |
| Não usar RAW PCM | Empacota PCM em um contêiner WAV em vez de enviar L16/L24 bruto. Para dispositivos que distorcem PCM bruto (alguns Marantz). |
| Forçar little endian para fluxos PCM | Envia PCM little-endian em vez do big-endian da especificação. Cura 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: Padrão (valor correto), Nenhum (omitir), Somente PCM ou Fixo (um valor "enorme" sentinela). Para dispositivos que manipulam mal o cabeçalho. |