Enhetsprofiler – tilpasning til hver enhet
Ekte UPnP-maskinvare er inkonsekvent med hva den aksepterer: én strømmer vil ha 24-bit FLAC, en annen spiller bare 16-bit PCM, en tredje lyver om hvilke kodeker den støtter. En enhetsprofil er hvordan du lærer plugin-modulen en enhets begrensninger og særegenheter.
Hvordan en profil velges. Hver enhet identifiserer seg med en User-Agent-streng når den kobler til. En profil sier "bruk meg når user-agent inneholder dette fragmentet." Når en enhet kobler til, finner plugin-modulen den matchende profilen; hvis ingen matcher, er en innebygd Generisk enhet-profil reserve. Du kan liste opp flere fragmenter atskilt med | (for eksempel Linn|ChorusDS|BubbleDS) slik at én profil dekker en familie av relaterte enheter.
Hva en profil kontrollerer. Begrensningene en enhet ikke kan overskride – maksimal bildestørrelse for albumkunst, tillatt samplingsfrekvensområde, maksimal bitdybde, kun stereo nedmiksing – pluss, når et spor trenger konvertering, hvilket utdataformat og samplingsfrekvens det skal konverteres til. En separat gruppe med "problem-enhet"-brytere omgår spesifikke maskinvarefeil (rå-PCM-håndtering, byte-rekkefølge, HTTP content-length-headeren). Disse eksisterer fordi UPnP-kompatibilitet i praksis er mangelfull; de fleste rører dem aldri.
Når du skal røre en profil. Bare når en spesifikk enhet oppfører seg feil. Ut av esken dekker den generiske profilen, pluss de forhåndsinnstilte standardinnstillingene for vanlig maskinvare, de fleste tilfeller. For å finne en enhets user-agent slik at du kan målrette den, slå på feilsøkingslogging (se Diagnostikk), spill noe fra enheten, og les useragent=-linjen i loggen.
Profilens mest betydningsfulle bryter – tving native strøm – handler egentlig ikke om begrensninger i det hele tatt; den bestemmer om noe av det ovennevnte gjelder. Det er det neste konseptet.


Innstillinger
| Kontroll | Hva den gjør |
|---|---|
| Navn | Profilens visningsnavn. |
| Gjelder når brukeragenten inneholder | User-agent-fragment(ene) en enhet må inneholde for å matche denne profilen; separer alternativer med |. Ikke-matchede enheter faller tilbake til den generiske profilen. |
| Maksimal bildestørrelse | Maksimal pikselstørrelse for albumkunst sendt til denne enheten (160 px er DLNA-standarden; større er ikke universelt støttet). |
| Utdata samplingsfrekvens / til | Samplingsfrekvensområdet enheten aksepterer; kilder utenfor dette konverteres (tvinger transkoding). |
| Kanaler / kun stereo | Nedmikser flerkanals til stereo for enheter som kun støtter to kanaler. |
| Maksimal bitdybde | Høyeste bitdybde enheten aksepterer; dypere kilder konverteres. |
| Utdataformat | Når en transkoding er nødvendig, formatet det skal konverteres til (PCM, FLAC, MP3, AAC, Ogg). |
| Utdata samplingsfrekvens | Samplingsfrekvensen som skal brukes ved transkoding; "samme som kilde" bevarer originalen. |
| Ikke bruk RAW PCM | Pakker PCM i en WAV-beholder i stedet for å sende rå L16/L24. For enheter som forvrenger rå PCM (noen Marantz). |
| Tving little endian for PCM-strømmer | Sender PCM little-endian i stedet for spesifikasjonens big-endian. Kurerer avspilling av hvit støy på enheter som forventer little-endian. |
| Innholdslengde | Hvordan fylle HTTP Content-Length-headeren: Standard (korrekt verdi), Ingen (utelat), Kun PCM, eller Fast (en sentinel "stor" verdi). For enheter som håndterer headeren feil. |