Ajout du reporting de position audio

Ajoute un reporting de la position audio toutes les secondes depuis le navigateur vers le serveur pour une meilleure synchronisation.

- Implémente un intervalle pour envoyer la position courante et la durée de l'audio
- Ajoute les endpoints POST /api/webrenderer/{id}/position
- Met à jour la logique de gestion de la position dans le registre
- Supprime le tracking de position dans le pipeline audio (déplacé côté client)
This commit is contained in:
2026-02-28 12:45:55 +01:00
parent f9056f92e0
commit ca8702fd7f
5 changed files with 63 additions and 27 deletions

View File

@@ -151,6 +151,20 @@ impl RendererRegistry {
.map(|i| i.device_instance.clone())
}
/// Met à jour la position et la durée depuis le navigateur (audio.currentTime).
pub fn update_position(&self, instance_id: &str, position_sec: f64, duration_sec: Option<f64>) {
let instances = self.instances.read();
if let Some(instance) = instances.get(instance_id) {
let mut s = instance.state.write();
s.position = Some(crate::pipeline::seconds_to_upnp_time(position_sec));
if let Some(dur) = duration_sec {
if dur > 0.0 {
s.duration = Some(crate::pipeline::seconds_to_upnp_time(dur));
}
}
}
}
pub fn schedule_unregister(self: &Arc<Self>, instance_id: &str) {
use tokio_util::sync::CancellationToken;