fix(sync): apply startup video grace to all sessions
This commit is contained in:
parent
a87577a042
commit
0eec6d0beb
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -1642,7 +1642,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.14.7"
|
version = "0.14.8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -1676,7 +1676,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.14.7"
|
version = "0.14.8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
@ -1688,7 +1688,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.14.7"
|
version = "0.14.8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
|
|||||||
@ -4,7 +4,7 @@ path = "src/main.rs"
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.14.7"
|
version = "0.14.8"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.14.7"
|
version = "0.14.8"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ bench = false
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.14.7"
|
version = "0.14.8"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
autobins = false
|
autobins = false
|
||||||
|
|
||||||
|
|||||||
@ -274,7 +274,7 @@ impl Relay for Handler {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let upstream_lease = self.upstream_media_rt.activate_camera();
|
let upstream_lease = self.upstream_media_rt.activate_camera();
|
||||||
let (session_id, relay, relay_reused) = self.camera_rt.activate(&cfg).await?;
|
let (session_id, relay, _relay_reused) = self.camera_rt.activate(&cfg).await?;
|
||||||
let camera_rt = self.camera_rt.clone();
|
let camera_rt = self.camera_rt.clone();
|
||||||
let upstream_media_rt = self.upstream_media_rt.clone();
|
let upstream_media_rt = self.upstream_media_rt.clone();
|
||||||
info!(rpc_id, session_id, "🎥 stream_camera opened");
|
info!(rpc_id, session_id, "🎥 stream_camera opened");
|
||||||
@ -292,7 +292,7 @@ impl Relay for Handler {
|
|||||||
let startup_grace_us = upstream_camera_startup_grace()
|
let startup_grace_us = upstream_camera_startup_grace()
|
||||||
.as_micros()
|
.as_micros()
|
||||||
.min(u64::MAX as u128) as u64;
|
.min(u64::MAX as u128) as u64;
|
||||||
let mut cold_startup_grace_pending = !relay_reused && startup_grace_us > 0;
|
let mut cold_startup_grace_pending = startup_grace_us > 0;
|
||||||
loop {
|
loop {
|
||||||
if !camera_rt.is_active(session_id)
|
if !camera_rt.is_active(session_id)
|
||||||
|| !upstream_media_rt.is_camera_active(upstream_lease.generation)
|
|| !upstream_media_rt.is_camera_active(upstream_lease.generation)
|
||||||
|
|||||||
@ -173,7 +173,7 @@ impl Relay for Handler {
|
|||||||
) -> Result<Response<Self::StreamCameraStream>, Status> {
|
) -> Result<Response<Self::StreamCameraStream>, Status> {
|
||||||
let cfg = camera::current_camera_config();
|
let cfg = camera::current_camera_config();
|
||||||
let upstream_lease = self.upstream_media_rt.activate_camera();
|
let upstream_lease = self.upstream_media_rt.activate_camera();
|
||||||
let (session_id, relay, relay_reused) = self.camera_rt.activate(&cfg).await?;
|
let (session_id, relay, _relay_reused) = self.camera_rt.activate(&cfg).await?;
|
||||||
let camera_rt = self.camera_rt.clone();
|
let camera_rt = self.camera_rt.clone();
|
||||||
let upstream_media_rt = self.upstream_media_rt.clone();
|
let upstream_media_rt = self.upstream_media_rt.clone();
|
||||||
let (tx, rx) = tokio::sync::mpsc::channel(1);
|
let (tx, rx) = tokio::sync::mpsc::channel(1);
|
||||||
@ -187,7 +187,7 @@ impl Relay for Handler {
|
|||||||
let startup_grace_us = upstream_camera_startup_grace()
|
let startup_grace_us = upstream_camera_startup_grace()
|
||||||
.as_micros()
|
.as_micros()
|
||||||
.min(u64::MAX as u128) as u64;
|
.min(u64::MAX as u128) as u64;
|
||||||
let mut cold_startup_grace_pending = !relay_reused && startup_grace_us > 0;
|
let mut cold_startup_grace_pending = startup_grace_us > 0;
|
||||||
loop {
|
loop {
|
||||||
if !camera_rt.is_active(session_id)
|
if !camera_rt.is_active(session_id)
|
||||||
|| !upstream_media_rt.is_camera_active(upstream_lease.generation)
|
|| !upstream_media_rt.is_camera_active(upstream_lease.generation)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user