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

@@ -70,8 +70,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let sink = FlacFileSink::new(output_path);
// Construire la chaîne: source → converter → sink
converter.register(Box::new(sink));
source.register(converter);
converter.register(sink.boxed());
source.register(converter.boxed());
// Créer un token d'arrêt pour contrôle manuel si besoin
let stop_token = CancellationToken::new();

View File

@@ -38,7 +38,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let sink = FlacFileSink::new(output_path);
// Enregistrer le sink comme enfant de la source
source.register(Box::new(sink));
source.register(sink.boxed());
// Créer un token d'arrêt pour contrôle manuel si besoin
let stop_token = CancellationToken::new();

View File

@@ -34,7 +34,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let sink = AudioSink::new();
// Connecter la source au sink
source.register(Box::new(sink));
source.register(sink.boxed());
println!("Démarrage de la lecture...");
println!("Appuyez sur Ctrl+C pour arrêter");

View File

@@ -35,22 +35,16 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Lecture de: {}", file_path);
println!("Sample rate cible: {} Hz", target_sample_rate);
// Créer la source audio
let mut source = FileSource::new(file_path).await?;
// Créer le nœud de resampling
let mut resampler = ResamplingNode::new(target_sample_rate);
// Créer le nœud de conversion vers I24
let mut converter = ToI24Node::new();
// Créer le sink audio avec volume à 80%
let sink = AudioSink::with_volume(0.8);
// Construire le pipeline: Source → Resampler → Converter → Sink
source.register(Box::new(resampler));
resampler.register(Box::new(converter));
converter.register(Box::new(sink));
let sink = AudioSink::new();
let mut converter = ToI24Node::new();
converter.register(sink.boxed());
let mut resampler = ResamplingNode::new(target_sample_rate);
resampler.register(converter.boxed());
let mut source = FileSource::new(file_path);
source.register(resampler.boxed());
println!(
"Pipeline créé: FileSource → Resampling({} Hz) → ToI24 → AudioSink",