Joyeux Noël à tous!!!!
Nouvelle version majeure: version 1.1.0
[1.1.0] – 24/12/2025
Ajouté
• ? Prise en charge multi‑interface pour les systèmes multi‑homed
• Nouvelle option en ligne de commande : pour lier le service à une interface réseau spécifique (ex. : eth0, eno1, enp6s0)
• Nouvelle option en ligne de commande : pour lier le service à une adresse IP spécifique (ex. : 192.168.1.10)
• Indispensable pour les architectures en 3 niveaux avec réseaux séparés (contrôle / audio)
• Corrige les problèmes de découverte SSDP sur les systèmes avec plusieurs interfaces réseau (VPN, multiples cartes réseau, ponts réseau)
• L’auto‑détection reste le comportement par défaut pour les systèmes à interface unique (compatibilité ascendante)
• Configuration avancée des paramètres via ligne de commande:
Options Basiques:
--name, -n <name> Renderer name (default: Diretta Renderer)
--port, -p <port> UPnP port (default: auto)
--buffer, -b <seconds> Buffer size in seconds (default: 2.0)
--target, -t <index> Select Diretta target by index (1, 2, 3...)
--no-gapless Disable gapless playback
--verbose Enable verbose debug output
Options avancées
- Réglage précis du Protocole Diretta pour des performances optimales telles que Thread-mode, Temps de transfert...
Corrigé
• Critique : Correction du gel lors des changements de format entre profondeurs de bits
• Problème : La lecture d’une playlist se figeait pendant 10 secondes lors du passage d’un morceau 24 bits à un morceau 16 bits
• Cause racine : 4 échantillons résiduels dans le buffer du SDK Diretta ne se vidaient jamais, provoquant un timeout
• Solution : Implémentation d’un flush forcé avec ajout de silence pour pousser les trames incomplètes dans le pipeline
• Résultat : Les changements de format se font désormais en ~200–300 ms au lieu de 10 secondes
• Impact : Lecture fluide des playlists contenant des formats mixtes (16/24/32 bits)
• Amélioration de la récupération d’erreurs lors des transitions de format
• Meilleure gestion des trames audio incomplètes aux frontières de pistes
Modifié
• Initialisation UPnP : Utilise désormais avec paramètre d’interface pour un binding réseau précis
• Timeout de changement de format : Réduit de 10 s à 3 s pour une récupération plus rapide
• Logique de vidage du buffer : Ajout d’une tolérance pour ≤4 échantillons résiduels (considéré comme « suffisamment vide »)
• Stabilisation matérielle : Augmentée de 200 ms à 300 ms pour une meilleure fiabilité lors des changements de format
• Journalisation : Sorties debug enrichies pendant la séquence de changement de format, avec détection de flush
Configuration
• Systemd : Nouveau paramètre dans
• Script wrapper : Détecte automatiquement si le paramètre est une adresse IP ou un nom d’interface
Cas d’usage
Scénarios multi‑interface
1. Architecture en 3 niveaux (recommandée par dsnyder) :
• Points de contrôle (JPlay, Roon) en 192.168.1.x via eth0
• DAC Diretta en 192.168.2.x via eth1
2. VPN + réseau local :
• Réseau local en 192.168.1.x via eth0
• VPN en 10.0.0.x via tun0
3. Multiples adaptateurs Ethernet :
• Spécifier quel adaptateur gère la découverte UPnP
Améliorations des changements de format
• Playlists à formats mixtes : Transitions transparentes entre 16 bits, 24 bits et différents taux d’échantillonnage
• Services de streaming : Meilleure compatibilité avec Qobuz et autres services mélangeant les profondeurs de bits
• Lecture gapless : Le comportement gapless est maintenu même lors des changements de format
Documentation
• Ajout d’une section complète Systèmes multi‑homed dans le README
• Ajout d’un guide de dépannage pour la sélection d’interface réseau
• Ajout d’exemples pour les configurations multi‑interface courantes
• Mise à jour du guide de configuration systemd
• Ajout de la documentation technique FORMAT_CHANGE_FIX.md
Détails techniques
Implémentation multi‑interface
• Modification de : au lieu de
• Ajout du paramètre dans la structure
• Propagation de la sélection d’interface : ligne de commande → DirettaRenderer → UPnPDevice
• Messages d’erreur améliorés en cas d’échec de binding (suggestions : , vérification des permissions)
Implémentation du correctif de changement de format
• Ajout d’une Étape 1.5 dans : flush forcé avec 128 échantillons de silence
• Pousse les trames incomplètes dans le pipeline du SDK Diretta
• Déclenché uniquement si < 64 échantillons résiduels détectés
• Modification de la logique de vidage pour accepter un petit résiduel (≤4 échantillons) comme succès
• Implémentation de pour unifier la transmission audio
• Meilleure synchronisation entre AudioEngine et DirettaOutput lors des transitions
Changements incompatibles
Aucun — toutes les modifications sont rétro‑compatibles
Guide de migration
Aucune migration nécessaire. Les configurations existantes continuent de fonctionner :
• Systèmes à interface unique : aucun changement requis
• Systèmes multi‑interface : ajouter ou configurer dans systemd
Problèmes connus
• Aucun signalé
Configurations testées
• ✅ Fedora 39/40 (x64)
• ✅ Ubuntu 22.04/24.04 (x64)
• ✅ AudioLinux (x64)
• ✅ Raspberry Pi 4 (aarch64)
• ✅ Architecture 3 niveaux avec Intel i225 + RTL8125
• ✅ Playlists mixtes (16/24 bits, 44.1/96/192 kHz)
• ✅ Streaming Qobuz (16/24 bits)
• ✅ Fichiers FLAC/WAV locaux
• ✅ Lecture DSD64/128/256
Performances
• Latence de changement de format : ~200–300 ms (au lieu de 10 s)
• Découverte réseau : immédiate sur l’interface spécifiée
• Utilisation mémoire : inchangée
• Utilisation CPU : inchangée
Crédits
• Prise en charge multi‑interface demandée et testée par la communauté
• Correctif de changement de format développé en collaboration avec Yu Harada (créateur du protocole Diretta)