Skip to content

Commit 0bad110

Browse files
committed
Keep inline startup media on selected host
1 parent 7ad716a commit 0bad110

2 files changed

Lines changed: 50 additions & 9 deletions

File tree

‎services/rend-api/src/main.rs‎

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2413,7 +2413,7 @@ async fn api_fast_embed_inner(
24132413
.map(|value| query_flag(Some(value), true))
24142414
.unwrap_or(auto_play);
24152415
let inline_startup = if startup == "mse" {
2416-
fast_embed_inline_startup(state.as_ref(), &response, &selection)
2416+
fast_embed_inline_startup(state.as_ref(), &response, &selection, &playback_base_url)
24172417
.await
24182418
.unwrap_or(None)
24192419
} else {
@@ -2434,7 +2434,7 @@ async fn api_fast_embed_inner(
24342434
if let Ok(cookie) = playback_cookie_header(
24352435
&response.playback_token,
24362436
response.ttl_seconds,
2437-
&state.config.playback_base_url,
2437+
&playback_base_url,
24382438
state.config.playback_cookie_domain.as_deref(),
24392439
)
24402440
.parse()
@@ -3832,6 +3832,7 @@ async fn fast_embed_inline_startup(
38323832
state: &AppState,
38333833
response: &PlaybackBootstrapResponse,
38343834
selection: &FastEmbedPlaybackSelection,
3835+
playback_base_url: &str,
38353836
) -> Result<Option<FastEmbedInlineStartup>, AppError> {
38363837
let Some(rendition) = hls_progressive_rendition(&selection.artifact_path) else {
38373838
return Ok(None);
@@ -3880,14 +3881,14 @@ async fn fast_embed_inline_startup(
38803881
let segment_urls = segment_names
38813882
.iter()
38823883
.skip(1)
3883-
.map(|segment| {
3884-
artifact_url(
3885-
&state.config.playback_base_url,
3886-
&response.asset_id,
3887-
&format!("hls/{rendition}/{segment}"),
3888-
)
3889-
})
3884+
.map(String::as_str)
38903885
.collect::<Vec<_>>();
3886+
let segment_urls = fast_embed_inline_segment_urls(
3887+
playback_base_url,
3888+
&response.asset_id,
3889+
rendition,
3890+
&segment_urls,
3891+
);
38913892

38923893
Ok(Some(FastEmbedInlineStartup {
38933894
artifact_path: format!(
@@ -3899,6 +3900,24 @@ async fn fast_embed_inline_startup(
38993900
}))
39003901
}
39013902

3903+
fn fast_embed_inline_segment_urls(
3904+
playback_base_url: &str,
3905+
asset_id: &str,
3906+
rendition: &str,
3907+
segment_names: &[&str],
3908+
) -> Vec<String> {
3909+
segment_names
3910+
.iter()
3911+
.map(|segment| {
3912+
artifact_url(
3913+
playback_base_url,
3914+
asset_id,
3915+
&format!("hls/{rendition}/{segment}"),
3916+
)
3917+
})
3918+
.collect()
3919+
}
3920+
39023921
fn hls_master_codecs_for_rendition(master: &str, rendition: &str) -> Option<String> {
39033922
let rendition_path = format!("{rendition}/index.m3u8");
39043923
let mut pending_codecs = None;

‎services/rend-api/src/tests.rs‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1623,6 +1623,28 @@ fn api_fast_embed_can_render_inline_mse_startup_without_token_material() {
16231623
);
16241624
}
16251625

1626+
#[test]
1627+
fn api_fast_embed_inline_segment_urls_use_selected_playback_base() {
1628+
let urls = fast_embed_inline_segment_urls(
1629+
"https://ams-1.play.rend.so",
1630+
"asset-123",
1631+
"360p",
1632+
&["segment_00001.m4s", "segment_00002.m4s"],
1633+
);
1634+
1635+
assert_eq!(
1636+
urls,
1637+
vec![
1638+
"https://ams-1.play.rend.so/v/asset-123/hls/360p/segment_00001.m4s",
1639+
"https://ams-1.play.rend.so/v/asset-123/hls/360p/segment_00002.m4s",
1640+
]
1641+
);
1642+
assert!(
1643+
urls.iter()
1644+
.all(|url| !url.starts_with("https://api.rend.so"))
1645+
);
1646+
}
1647+
16261648
#[tokio::test]
16271649
async fn api_fast_embed_playback_base_override_is_allowlisted() {
16281650
let mut config = test_config();

0 commit comments

Comments
 (0)