autoAdjustQuality bricht die Plex-Wiedergabe — wieder raus

Gemessen, nicht vermutet: zwei Anfragen an denselben Titel, getrennte
Sitzungskennungen, einzige Abweichung der Wert. Ohne ihn kommt eine
Playlist, mit ihm eine nackte **HTTP 400**.

Die Zeile hätte also nicht die Qualität verbessert, sondern die
Wiedergabe verhindert. Der Plan hat vor genau diesem Verhalten gewarnt —
nur habe ich es am Entscheider vermutet und ihn dort ausgespart, während
die Start-Adresse ihn ebenso ablehnt.

Plex' eigene Clients schicken den Wert; welche weitere Angabe sie dabei
mitführen, ist offen. Bis das gemessen ist, bleibt er draußen: eine
Leiter, die es vielleicht gibt, ist keinen Strom wert, der sicher nicht
läuft.

`TranscodeRequest.adaptive` bleibt samt seinen Tests bestehen. Das
Gerüst steht, es fehlt die richtige Beschwörungsformel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-27 18:02:37 +02:00
co-authored by Claude Opus 5
parent 165a82acd0
commit 7ecb16d4eb
@@ -167,10 +167,24 @@ public struct PlexBackend: MediaBackend {
throw .refused(reason: decision.explanation ?? "")
}
// Erst für die Adresse, die wirklich gespielt wird.
let start = transcode.prefersAdaptive ? request.askingForLadder() : request
guard let url = server.transcodeURL(for: start) else { throw .notFound }
return PlaybackTarget(url: url, sessionID: start.sessionIdentifier)
// **`autoAdjustQuality` wird nicht geschickt — gemessen, nicht vermutet.**
//
// Die Zeile stand hier und ist wieder raus. Gegen den Testserver
// beantwortet Plex dieselbe Anfrage mit dem Wert mit einer nackten
// **HTTP 400**, ohne ihn mit einer Playlist. Zwei Anfragen, getrennte
// Sitzungskennungen, sonst identisch — der Wert ist die einzige
// Abweichung.
//
// Damit hätte er nicht die Qualität verbessert, sondern die
// Wiedergabe verhindert. Plex' eigene Clients schicken ihn; welche
// weitere Angabe sie dabei mitgeben, ist offen. Bis das gemessen ist,
// bleibt er draußen: eine Leiter, die es vielleicht gibt, ist keinen
// Strom wert, der sicher nicht läuft.
//
// `TranscodeRequest.adaptive` bleibt samt Tests bestehen — das
// Gerüst steht, es fehlt die richtige Beschwörungsformel.
guard let url = server.transcodeURL(for: request) else { throw .notFound }
return PlaybackTarget(url: url, sessionID: request.sessionIdentifier)
}
public func endPlayback(sessionID: String) async {