Refactorisation des nœuds audio pour utiliser boxed()

Cette mise à jour refactorise les nœuds audio pour utiliser la méthode `boxed()` lors de l'enregistrement des enfants, améliorant ainsi la cohérence et la lisibilité du code. Les méthodes `make()` sont ajoutées pour faciliter la création d'instances boxées des nœuds, et les exemples sont mis à jour en conséquence.
This commit is contained in:
2026-02-26 20:18:14 +01:00
parent 306e691c61
commit 6f8a80a58a
16 changed files with 180 additions and 92 deletions

View File

@@ -83,21 +83,21 @@ impl InstancePipeline {
// Nœud de suivi de position : lit le timestamp des chunks sortant du buffer
let (mut position_tracker, position_handle) = PositionTrackerNode::new();
position_tracker.register(Box::new(sink));
position_tracker.register(sink.boxed());
// Nœud de pacing : régule le débit pour éviter les rafales et pertes de segments
// 2s de buffer absorbe les irrégularités de la source réseau
let mut timer_buffer = TimerBufferNode::new(2.0);
timer_buffer.register(Box::new(position_tracker));
timer_buffer.register(position_tracker.boxed());
// Nœud de conversion de profondeur : tout type entier → I24
// Placé avant le buffer pour réduire la mémoire utilisée
let mut to_i24 = ToI24Node::new();
to_i24.register(Box::new(timer_buffer));
to_i24.register(timer_buffer.boxed());
// Nœud de rééchantillonnage : n'importe quel sample rate → 96 kHz
let mut resampler = ResamplingNode::new(DIRECT_OGG_FLAC_SAMPLE_RATE);
resampler.register(to_i24);
resampler.register(to_i24.boxed());
// Le tx d'entrée du resampler est le point d'entrée du pipeline
let segment_tx = resampler.get_tx().expect("ResamplingNode doit avoir un sender");
@@ -110,7 +110,7 @@ impl InstancePipeline {
// Lancer la chaîne resampler → to_i24 → sink en background
let sink_stop = stop_token.clone();
tokio::spawn(async move {
if let Err(e) = resampler.run(sink_stop).await {
if let Err(e) = resampler.boxed().run(sink_stop).await {
warn!("Audio pipeline error: {:?}", e);
}
debug!("Sink task terminated");