@@ -115,27 +115,26 @@ async fn record_master_playlist(
115115 dest : & Path ,
116116 recording : Arc < Mutex < RecordingFile > > ,
117117 options : RecordOptions ,
118- master_playlist : MasterPlaylist ,
118+ mut master_playlist : MasterPlaylist ,
119119 token : CancellationToken ,
120120) -> Result < ( ) , RecordError > {
121121 // Rewrite master playlist
122- let mut new_master_playlist = master_playlist. clone ( ) ;
123122 let rewriter = Rewriter :: new ( url, dest, options. keep_names ) ;
124- rewriter. rewrite_master_playlist ( & mut new_master_playlist ) ?;
123+ rewriter. rewrite_master_playlist ( & mut master_playlist ) ?;
125124
126125 // Select variant streams
127- new_master_playlist . variants = options
126+ master_playlist . variants = options
128127 . variant_select
129- . filter_variants ( & new_master_playlist . variants )
128+ . filter_variants ( & master_playlist . variants )
130129 . to_vec ( ) ;
131- if new_master_playlist . variants . is_empty ( ) {
130+ if master_playlist . variants . is_empty ( ) {
132131 return Err ( RecordError :: Config ( "No variant streams selected." ) ) ;
133132 }
134133 // Select renditions
135- let alternatives = & mut new_master_playlist . alternatives ;
134+ let alternatives = & mut master_playlist . alternatives ;
136135 alternatives. retain ( |media| {
137136 // Must apply to at least one selected variant stream
138- new_master_playlist
137+ master_playlist
139138 . variants
140139 . iter ( )
141140 . any ( |variant| media_applies_to_variant ( media, variant) )
@@ -170,17 +169,17 @@ async fn record_master_playlist(
170169 let video_renditions = options. video . filter_media ( & video_renditions) . to_vec ( ) ;
171170 let subtitle_renditions = options. subtitle . filter_media ( & subtitle_renditions) . to_vec ( ) ;
172171
173- new_master_playlist . alternatives = audio_renditions;
174- new_master_playlist . alternatives . extend ( video_renditions) ;
175- new_master_playlist . alternatives . extend ( subtitle_renditions) ;
176- new_master_playlist . alternatives . extend ( cc_renditions) ;
177- new_master_playlist . alternatives . extend ( other_renditions) ;
172+ master_playlist . alternatives = audio_renditions;
173+ master_playlist . alternatives . extend ( video_renditions) ;
174+ master_playlist . alternatives . extend ( subtitle_renditions) ;
175+ master_playlist . alternatives . extend ( cc_renditions) ;
176+ master_playlist . alternatives . extend ( other_renditions) ;
178177
179- let new_master_playlist = new_master_playlist ;
178+ let master_playlist = master_playlist ;
180179
181180 // Start recording selected variant streams and renditions
182181 let mut join_set = JoinSet :: new ( ) ;
183- for variant in & new_master_playlist . variants {
182+ for variant in & master_playlist . variants {
184183 let Some ( other_attributes) = & variant. other_attributes else {
185184 continue ;
186185 } ;
@@ -212,7 +211,7 @@ async fn record_master_playlist(
212211 . await
213212 } ) ;
214213 }
215- for media in & new_master_playlist . alternatives {
214+ for media in & master_playlist . alternatives {
216215 let Some ( media_uri) = & media. uri else {
217216 continue ;
218217 } ;
@@ -242,7 +241,7 @@ async fn record_master_playlist(
242241 }
243242 // Write updated master playlist
244243 let master_name = "index.m3u8" ;
245- write_master_playlist ( & dest. join ( master_name) , & new_master_playlist ) . await ?;
244+ write_master_playlist ( & dest. join ( master_name) , & master_playlist ) . await ?;
246245 recording
247246 . lock ( )
248247 . await
0 commit comments