@@ -50,7 +50,7 @@ public struct HLSPlaylistRewriter: Sendable {
5050 }
5151
5252 let parsed = HLSPlaylistParser ( ) . parse ( playlist: playlist, sourceURL: baseURL)
53- let selectedURLs = await selectedPlaybackURLs ( in: parsed, originalURL: baseURL, currentURL: baseURL)
53+ let selection = await playbackSelection ( in: parsed, originalURL: baseURL, currentURL: baseURL)
5454 let lines = playlist. split ( separator: " \n " , omittingEmptySubsequences: false ) . map ( String . init)
5555
5656 var rewrittenLines : [ String ] = [ ]
@@ -63,7 +63,7 @@ public struct HLSPlaylistRewriter: Sendable {
6363 if let uriIndex = nextURIIndex ( after: index, in: lines) ,
6464 let url = URL ( string: lines [ uriIndex] , relativeTo: baseURL) ? . absoluteURL
6565 {
66- if selectedURLs . isEmpty || selectedURLs . contains ( url) {
66+ if !selection . filtersVariants || selection . variantURLs . contains ( url) {
6767 rewrittenLines. append ( rewriteURIAttribute ( in: text, baseURL: baseURL, kind: nil ) )
6868 var cursor = index + 1
6969 while cursor < uriIndex {
@@ -82,7 +82,7 @@ public struct HLSPlaylistRewriter: Sendable {
8282 }
8383
8484 if text. hasPrefix ( " #EXT-X-MEDIA: " ) ,
85- let rewritten = rewriteRenditionLine ( text, baseURL: baseURL, selectedURLs : selectedURLs )
85+ let rewritten = rewriteRenditionLine ( text, baseURL: baseURL, selection : selection )
8686 {
8787 rewrittenLines. append ( rewritten)
8888 } else if !text. hasPrefix ( " #EXT-X-MEDIA: " ) {
@@ -107,7 +107,7 @@ public struct HLSPlaylistRewriter: Sendable {
107107 return rewrittenLines. joined ( separator: " \n " )
108108 }
109109
110- private func rewriteRenditionLine( _ line: String , baseURL: URL , selectedURLs : Set < URL > ) -> String ? {
110+ private func rewriteRenditionLine( _ line: String , baseURL: URL , selection : HLSPlaybackSelection ) -> String ? {
111111 guard let uriRange = line. range ( of: " URI= " ) else {
112112 return line
113113 }
@@ -131,7 +131,7 @@ public struct HLSPlaylistRewriter: Sendable {
131131 guard let url = URL ( string: uriText, relativeTo: baseURL) ? . absoluteURL else {
132132 return line
133133 }
134- guard selectedURLs . isEmpty || selectedURLs . contains ( url) else {
134+ guard !selection . filtersRenditions || selection . renditionURLs . contains ( url) else {
135135 return nil
136136 }
137137 return rewriteURIAttribute ( in: line, baseURL: baseURL, kind: renditionKind ( from: line) )
@@ -285,12 +285,12 @@ public struct HLSPlaylistRewriter: Sendable {
285285 return attributes
286286 }
287287
288- private func selectedPlaybackURLs (
288+ private func playbackSelection (
289289 in playlist: HLSPlaylist ,
290290 originalURL: URL ,
291291 currentURL: URL
292- ) async -> Set < URL > {
293- await HLSSelectionResolver ( ) . selectedPlaybackURLs ( in: playlist, originalURL: originalURL, currentURL: currentURL)
292+ ) async -> HLSPlaybackSelection {
293+ await HLSSelectionResolver ( ) . playbackSelection ( in: playlist, originalURL: originalURL, currentURL: currentURL)
294294 }
295295
296296 private func nextURIIndex( after index: Int , in lines: [ String ] ) -> Int ? {
0 commit comments