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)

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)
DirettaRendererUPnP
Soutenez ce projet
Si vous trouvez ce moteur de rendu utile, vous pouvez soutenir le développement :

Votre soutien m’aidera à continuer ce projet, qui représente pour moi un certain coût en temps et en argent. Merci pour votre compréhension.
Soutenez ce projet
Si vous trouvez ce moteur de rendu utile, vous pouvez soutenir le développement :
Votre soutien m’aidera à continuer ce projet, qui représente pour moi un certain coût en temps et en argent. Merci pour votre compréhension.
