iOS 0.5.43: honor master audio lane for HLS media playlists (F1TV audio).
This commit is contained in:
parent
2da59616e8
commit
eed167824e
3 changed files with 11 additions and 8 deletions
|
|
@ -345,7 +345,7 @@
|
|||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 55;
|
||||
CURRENT_PROJECT_VERSION = 56;
|
||||
DEVELOPMENT_TEAM = X25NYX3K49;
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
|
|
@ -360,7 +360,7 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks"
|
||||
);
|
||||
MARKETING_VERSION = 0.5.42;
|
||||
MARKETING_VERSION = 0.5.43;
|
||||
OTHER_LDFLAGS = ("$(inherited)", "-ObjC");
|
||||
PRODUCT_BUNDLE_IDENTIFIER = nl.vonas.mediacluster.ios;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
|
@ -378,7 +378,7 @@
|
|||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 55;
|
||||
CURRENT_PROJECT_VERSION = 56;
|
||||
DEVELOPMENT_TEAM = X25NYX3K49;
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
|
|
@ -393,7 +393,7 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks"
|
||||
);
|
||||
MARKETING_VERSION = 0.5.42;
|
||||
MARKETING_VERSION = 0.5.43;
|
||||
OTHER_LDFLAGS = ("$(inherited)", "-ObjC");
|
||||
PRODUCT_BUNDLE_IDENTIFIER = nl.vonas.mediacluster.ios;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
|
|
|||
|
|
@ -613,7 +613,7 @@ final class ClearKeyDashProxy {
|
|||
let lower = url.absoluteString.lowercased()
|
||||
if Self.isHlsURL(url) || Self.looksLikeHls(data) {
|
||||
let text = String(data: data, encoding: .utf8) ?? String(decoding: data, as: UTF8.self)
|
||||
let rewritten = rewriteHls(text, playlistURL: url)
|
||||
let rewritten = rewriteHls(text, playlistURL: url, laneHint: lane)
|
||||
return (Data(rewritten.utf8), "application/vnd.apple.mpegurl")
|
||||
}
|
||||
let isManifest = lower.contains(".mpd")
|
||||
|
|
@ -644,7 +644,7 @@ final class ClearKeyDashProxy {
|
|||
|
||||
/// Strip Widevine/PlayReady KEY-tags; herschrijf media-URI's naar de proxy.
|
||||
/// ESPN EVENT-playlists met duizenden segmenten → trim naar live-edge (anders audio-only / geen beeld).
|
||||
private func rewriteHls(_ text: String, playlistURL: URL) -> String {
|
||||
private func rewriteHls(_ text: String, playlistURL: URL, laneHint: CryptoLane = .shared) -> String {
|
||||
let lines = text.components(separatedBy: .newlines)
|
||||
let isMaster = lines.contains { $0.hasPrefix("#EXT-X-STREAM-INF") }
|
||||
var out: [String] = []
|
||||
|
|
@ -656,7 +656,10 @@ final class ClearKeyDashProxy {
|
|||
|
||||
// Gescheiden crypto-lanes: CMAF audio+video delen vaak track_ID=1.
|
||||
// Shared state → audio-init overschrijft video → geluid zonder beeld (ESPN).
|
||||
let lane = Self.hlsMediaLane(for: playlistURL)
|
||||
// De master kent TYPE=AUDIO al toe (ck=a); de URL-heuristiek mist o.a. F1TV-audio.
|
||||
let guessed = Self.hlsMediaLane(for: playlistURL)
|
||||
let lane = laneHint == .shared ? guessed : laneHint
|
||||
proxyLog.info("media playlist lane=\(lane.rawValue, privacy: .public) hint=\(laneHint.rawValue, privacy: .public) guess=\(guessed.rawValue, privacy: .public) file=\(playlistURL.lastPathComponent, privacy: .public)")
|
||||
|
||||
// Media playlist: verzamel tags + segmenten, trim live-edge.
|
||||
var header: [String] = []
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ struct SettingsScreen: View {
|
|||
|
||||
Section("Info") {
|
||||
LabeledContent("App", value: "VMC iOS")
|
||||
LabeledContent("Versie", value: "0.5.42")
|
||||
LabeledContent("Versie", value: "0.5.43")
|
||||
LabeledContent("Live TV", value: app.iptvEnabled ? "Aan" : "Uit")
|
||||
LabeledContent("Events", value: app.eventsEnabled ? "Aan" : "Uit")
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue