Skip to content

Commit 2c21704

Browse files
committed
Merge remote-tracking branch 'origin/main' into moq-native-debug-features
2 parents 576d3f1 + 6064eb0 commit 2c21704

File tree

11 files changed

+95
-79
lines changed

11 files changed

+95
-79
lines changed

Cargo.lock

Lines changed: 44 additions & 51 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,9 @@ web-async = { version = "0.1.1", features = ["tracing"] }
2424
web-transport-quinn = "0.10"
2525
web-transport-trait = "0.3"
2626
web-transport-ws = "0.2"
27+
28+
[profile.dev]
29+
panic = "abort"
30+
31+
[profile.release]
32+
panic = "abort"

deno.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

justfile

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -159,24 +159,30 @@ pub-hls name relay="http://localhost:4443/anon":
159159
rm -rf "$OUT_DIR"
160160
mkdir -p "$OUT_DIR"
161161

162-
echo ">>> Generating HLS stream to disk..."
162+
echo ">>> Generating HLS stream to disk (1280x720 + 256x144)..."
163163

164164
# Start ffmpeg in the background to generate HLS
165-
ffmpeg -loglevel warning -re -stream_loop -1 -i "$INPUT" \
166-
-map 0:v:0 -map 0:v:0 -map 0:a:0 \
165+
ffmpeg -hide_banner -loglevel warning -re -stream_loop -1 -i "$INPUT" \
166+
-filter_complex "\
167+
[0:v]split=2[v0][v1]; \
168+
[v0]scale=-2:720[v720]; \
169+
[v1]scale=-2:144[v144]" \
170+
-map "[v720]" -map "[v144]" -map 0:a:0 \
167171
-r 25 -preset veryfast -g 50 -keyint_min 50 -sc_threshold 0 \
168-
-c:v:0 libx264 -profile:v:0 high -level:v:0 4.1 -pix_fmt:v:0 yuv420p -tag:v:0 avc1 -bsf:v:0 dump_extra -b:v:0 4M -vf:0 "scale=1920:-2" \
169-
-c:v:1 libx264 -profile:v:1 high -level:v:1 4.1 -pix_fmt:v:1 yuv420p -tag:v:1 avc1 -bsf:v:1 dump_extra -b:v:1 300k -vf:1 "scale=256:-2" \
172+
-c:v:0 libx264 -profile:v:0 high -level:v:0 4.1 -pix_fmt:v:0 yuv420p -tag:v:0 avc1 \
173+
-b:v:0 4M -maxrate:v:0 4.4M -bufsize:v:0 8M \
174+
-c:v:1 libx264 -profile:v:1 high -level:v:1 4.1 -pix_fmt:v:1 yuv420p -tag:v:1 avc1 \
175+
-b:v:1 300k -maxrate:v:1 330k -bufsize:v:1 600k \
170176
-c:a aac -b:a 128k \
171-
-f hls \
172-
-hls_time 2 -hls_list_size 12 \
177+
-f hls -hls_time 2 -hls_list_size 12 \
173178
-hls_flags independent_segments+delete_segments \
174179
-hls_segment_type fmp4 \
175180
-master_pl_name master.m3u8 \
176-
-var_stream_map "v:0,agroup:audio v:1,agroup:audio a:0,agroup:audio" \
181+
-var_stream_map "v:0,agroup:audio,name:720 v:1,agroup:audio,name:144 a:0,agroup:audio,name:audio" \
177182
-hls_segment_filename "$OUT_DIR/v%v/segment_%09d.m4s" \
178183
"$OUT_DIR/v%v/stream.m3u8" &
179184

185+
180186
FFMPEG_PID=$!
181187

182188
# Wait for master playlist to be generated

rs/hang-cli/Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@ path = "src/main.rs"
1919
[dependencies]
2020
anyhow = { version = "1", features = ["backtrace"] }
2121
axum = { version = "0.8", features = ["tokio"] }
22+
axum-server = { version = "0.8", features = ["tls-rustls"] }
2223
bytes = "1.10"
2324
clap = { version = "4", features = ["derive"] }
2425
hang = { workspace = true }
25-
hyper-serve = { version = "0.6", features = ["tls-rustls"] }
2626
moq-native = { workspace = true }
27+
rustls = { version = "0.23", features = [
28+
"aws-lc-rs",
29+
], default-features = false }
2730
sd-notify = "0.4"
2831
tokio = { workspace = true, features = ["full"] }
2932
tower-http = { version = "0.6", features = ["cors", "fs"] }

rs/hang-cli/src/main.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ pub enum Command {
6767

6868
#[tokio::main]
6969
async fn main() -> anyhow::Result<()> {
70+
// TODO: It would be nice to remove this and rely on feature flags only.
71+
// However, some dependency is pulling in `ring` and I don't know why, so meh for now.
72+
rustls::crypto::aws_lc_rs::default_provider()
73+
.install_default()
74+
.expect("failed to install default crypto provider");
75+
7076
let cli = Cli::parse();
7177
cli.log.init();
7278

rs/hang-cli/src/server.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ async fn web(
126126
app = app.fallback_service(handle_404.into_service());
127127
}
128128

129-
let server = hyper_serve::bind(bind);
129+
let server = axum_server::bind(bind);
130130
server.serve(app.into_make_service()).await?;
131131

132132
Ok(())

rs/libmoq/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ file(MAKE_DIRECTORY ${RUST_TARGET_DIR}/include)
4848
add_library(moq INTERFACE)
4949
target_include_directories(moq INTERFACE ${RUST_TARGET_DIR}/include)
5050

51-
# Force absolute path to be used in linker command
52-
target_link_options(moq INTERFACE "$<LINK_ONLY:${RUST_LIB}>")
51+
# Link the static library - must use target_link_libraries so it appears
52+
# after object files in the link command (linker order matters for static libs)
53+
target_link_libraries(moq INTERFACE "${RUST_LIB}")
5354

5455
# Link required system frameworks on macOS
5556
if(APPLE)

rs/moq-relay/Cargo.toml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,23 @@ license = "MIT OR Apache-2.0"
88
version = "0.10.1"
99
edition = "2021"
1010

11-
[package.metadata.cargo-shear]
12-
ignored = ["hyper", "hyper-util"]
13-
1411
keywords = ["quic", "http3", "webtransport", "media", "live"]
1512
categories = ["multimedia", "network-programming", "web-programming"]
1613

1714
[dependencies]
18-
1915
anyhow = { version = "1", features = ["backtrace"] }
2016
axum = { version = "0.8", features = ["tokio", "ws"] }
17+
axum-server = { version = "0.8", features = ["tls-rustls"] }
2118
bytes = "1"
2219
clap = { version = "4", features = ["derive"] }
2320
futures = "0.3"
2421
http-body = "1"
25-
hyper = "=1.7.0"
26-
hyper-serve = { version = "0.6", features = [
27-
"tls-rustls",
28-
] } # fork of axum-server
29-
hyper-util = "=0.1.17"
3022
moq-lite = { workspace = true, features = ["serde"] }
31-
moq-native = { workspace = true }
23+
moq-native = { workspace = true, features = ["aws-lc-rs"] }
3224
moq-token = { workspace = true }
25+
rustls = { version = "0.23", features = [
26+
"aws-lc-rs",
27+
], default-features = false }
3328
sd-notify = "0.4"
3429
serde = { version = "1", features = ["derive"] }
3530
serde_with = { version = "3", features = ["json", "base64"] }

rs/moq-relay/src/main.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ pub use web::*;
1212

1313
#[tokio::main]
1414
async fn main() -> anyhow::Result<()> {
15+
// TODO: It would be nice to remove this and rely on feature flags only.
16+
// However, some dependency is pulling in `ring` and I don't know why, so meh for now.
17+
rustls::crypto::aws_lc_rs::default_provider()
18+
.install_default()
19+
.expect("failed to install default crypto provider");
20+
1521
let config = Config::load()?;
1622

1723
let addr = config.server.bind.unwrap_or("[::]:443".parse().unwrap());

0 commit comments

Comments
 (0)