Version v1.0.7 disponible
[1.0.7]
Ajouts
• Support du DSD512 et DSD1024 ajouté (merci à norman-arch).
? Correctif de compatibilité Audirvana (en cours, pas encore parfait)
Problème :
• Audirvana pré-décode l’audio et l’encapsule dans un format inhabituel.
• Le mode DSD natif standard échouait avec Audirvana.
• La lecture DSD produisait un format incorrect ou aucun son.
Solution :
• Détection des flux Audirvana via le motif d’URL ().
• Pour le DSD Audirvana : utilisation du décodage FFmpeg au lieu du mode brut.
• Pour les autres sources : maintien du mode DSD natif.
Résultat :
• ✅ Audirvana DSD (DoP) fonctionne → décodé en PCM Hi-Res (352.8k/705.6k, DirettaHostSDK ne supporte pas DoP).
• ✅ BubbleUPnP/JPLAY DSD fonctionne → flux natif DSD vers le DAC.
• ✅ Aucune régression sur les formats PCM.
? Support du buffer en flottant (précision sous-seconde)
Problème :
• Le buffer était stocké en , provoquant une troncature des valeurs < 1 seconde.
• Exemple : buffer de 0,8s → converti en int → 0 seconde !
• Résultat : sous-alimentation du buffer, artefacts audio (bruit rose).
Tests :
• ✅ DSD avec buffer de 0,8s fonctionne correctement.
• ✅ PCM avec buffer de 1,2s fonctionne correctement.
• ✅ Pas de régression sur les valeurs entières.
Fichiers modifiés :
• – type de membre modifié.
• – calculs mis à jour.
• – configuration mise à jour.
• – valeur par défaut modifiée.
Fonctionnalité :
• Dimensionnement intelligent du buffer selon la complexité du format audio.
• Précision sous-seconde grâce au type au lieu de .
Stratégie de buffer :
Bénéfices :
• Plus de délais de démarrage de 10s ou plus (reste un délai de 3 à 8s).
• Latence optimisée pour chaque type de format.
• Stabilité maintenue pour les formats Hi-Res et compressés.
Fichiers modifiés :
• – type du buffer changé en float.
• – logique adaptative du buffer.
• – structure de config mise à jour.
• – buffer par défaut réduit de 10s à 2s.
? Correctif critique : cycle Stop/Play (mode exclusif Audirvana)
Problème :
• Après un STOP (notamment en mode exclusif Audirvana), était fermé.
• Le PLAY suivant tentait de reprendre sur une connexion fermée.
• Le flag restait vrai même après fermeture.
• Résultat : crash, freeze ou comportement indéfini nécessitant un double PLAY.
Tests :
• ✅ PAUSE → PLAY fonctionne correctement (reprise réelle).
• ✅ STOP → PLAY fonctionne dès la première tentative.
• ✅ Cycles STOP/PLAY multiples stables.
• ✅ Mode exclusif Audirvana pleinement fonctionnel.
Fichier modifié :
• – logique du callback .
Corrections
• Changement dynamique de fréquence d’échantillonnage :
• Correction du DAC qui ne changeait pas de fréquence lors du passage entre pistes de formats différents (ex. 96kHz → 44.1kHz).
• Cause : après , le callback ouvrait immédiatement avec le nouveau format sans laisser le temps au Target de se réinitialiser.
• Solution : suivi persistant du format via variables statiques + pause de 500ms avant réouverture pour permettre au générateur d’horloge et au PLL du Target de se réinitialiser.
• Le Target reconfigure désormais correctement le DAC à chaque changement de format.
• Les changements de format sont journalisés avec détails.
Changements
• Amélioration du logging du thread audio :
• Réduction du spam de logs lorsque retourne false.
• Désormais journalisé seulement toutes les 100 erreurs consécutives.
• Évite des fichiers logs multi-gigaoctets en état idle.
• Ajout d’un compteur d’échecs consécutifs pour une meilleure visibilité en debug.
• Compatibilité améliorée avec Roon + Squeeze2UPnP (merci à herisson-88).
Détails techniques
• Détection des changements de format fonctionne dans deux cas :
1. Quand : comparaison du format actuel avec .
2. Quand : comparaison avec le dernier format connu (critique pour le comportement AUTO-STOP de JPLAY).
• Durée totale du changement de format : ~1 seconde
(500ms reset Target + 290ms setup SyncBuffer + 200ms stabilisation DAC).
• Transitions validées : PCM ↔ PCM (différentes fréquences), PCM ↔ DSD.
Notes
• Les changements de format entre pistes entraînent une courte pause (~1s) pour reconfiguration DAC.
• La lecture gapless reste intacte pour les pistes de même format.
• Ce correctif permet une lecture bit-perfect sur des playlists multi-formats.
[1.0.7]
Ajouts
• Support du DSD512 et DSD1024 ajouté (merci à norman-arch).
? Correctif de compatibilité Audirvana (en cours, pas encore parfait)
Problème :
• Audirvana pré-décode l’audio et l’encapsule dans un format inhabituel.
• Le mode DSD natif standard échouait avec Audirvana.
• La lecture DSD produisait un format incorrect ou aucun son.
Solution :
• Détection des flux Audirvana via le motif d’URL ().
• Pour le DSD Audirvana : utilisation du décodage FFmpeg au lieu du mode brut.
• Pour les autres sources : maintien du mode DSD natif.
Résultat :
• ✅ Audirvana DSD (DoP) fonctionne → décodé en PCM Hi-Res (352.8k/705.6k, DirettaHostSDK ne supporte pas DoP).
• ✅ BubbleUPnP/JPLAY DSD fonctionne → flux natif DSD vers le DAC.
• ✅ Aucune régression sur les formats PCM.
? Support du buffer en flottant (précision sous-seconde)
Problème :
• Le buffer était stocké en , provoquant une troncature des valeurs < 1 seconde.
• Exemple : buffer de 0,8s → converti en int → 0 seconde !
• Résultat : sous-alimentation du buffer, artefacts audio (bruit rose).
Tests :
• ✅ DSD avec buffer de 0,8s fonctionne correctement.
• ✅ PCM avec buffer de 1,2s fonctionne correctement.
• ✅ Pas de régression sur les valeurs entières.
Fichiers modifiés :
• – type de membre modifié.
• – calculs mis à jour.
• – configuration mise à jour.
• – valeur par défaut modifiée.
Fonctionnalité :
• Dimensionnement intelligent du buffer selon la complexité du format audio.
• Précision sous-seconde grâce au type au lieu de .
Stratégie de buffer :
Bénéfices :
• Plus de délais de démarrage de 10s ou plus (reste un délai de 3 à 8s).
• Latence optimisée pour chaque type de format.
• Stabilité maintenue pour les formats Hi-Res et compressés.
Fichiers modifiés :
• – type du buffer changé en float.
• – logique adaptative du buffer.
• – structure de config mise à jour.
• – buffer par défaut réduit de 10s à 2s.
? Correctif critique : cycle Stop/Play (mode exclusif Audirvana)
Problème :
• Après un STOP (notamment en mode exclusif Audirvana), était fermé.
• Le PLAY suivant tentait de reprendre sur une connexion fermée.
• Le flag restait vrai même après fermeture.
• Résultat : crash, freeze ou comportement indéfini nécessitant un double PLAY.
Tests :
• ✅ PAUSE → PLAY fonctionne correctement (reprise réelle).
• ✅ STOP → PLAY fonctionne dès la première tentative.
• ✅ Cycles STOP/PLAY multiples stables.
• ✅ Mode exclusif Audirvana pleinement fonctionnel.
Fichier modifié :
• – logique du callback .
Corrections
• Changement dynamique de fréquence d’échantillonnage :
• Correction du DAC qui ne changeait pas de fréquence lors du passage entre pistes de formats différents (ex. 96kHz → 44.1kHz).
• Cause : après , le callback ouvrait immédiatement avec le nouveau format sans laisser le temps au Target de se réinitialiser.
• Solution : suivi persistant du format via variables statiques + pause de 500ms avant réouverture pour permettre au générateur d’horloge et au PLL du Target de se réinitialiser.
• Le Target reconfigure désormais correctement le DAC à chaque changement de format.
• Les changements de format sont journalisés avec détails.
Changements
• Amélioration du logging du thread audio :
• Réduction du spam de logs lorsque retourne false.
• Désormais journalisé seulement toutes les 100 erreurs consécutives.
• Évite des fichiers logs multi-gigaoctets en état idle.
• Ajout d’un compteur d’échecs consécutifs pour une meilleure visibilité en debug.
• Compatibilité améliorée avec Roon + Squeeze2UPnP (merci à herisson-88).
Détails techniques
• Détection des changements de format fonctionne dans deux cas :
1. Quand : comparaison du format actuel avec .
2. Quand : comparaison avec le dernier format connu (critique pour le comportement AUTO-STOP de JPLAY).
• Durée totale du changement de format : ~1 seconde
(500ms reset Target + 290ms setup SyncBuffer + 200ms stabilisation DAC).
• Transitions validées : PCM ↔ PCM (différentes fréquences), PCM ↔ DSD.
Notes
• Les changements de format entre pistes entraînent une courte pause (~1s) pour reconfiguration DAC.
• La lecture gapless reste intacte pour les pistes de même format.
• Ce correctif permet une lecture bit-perfect sur des playlists multi-formats.
Cliquez sur le lien ci-dessous pour aller vers le GitHib de DirettaRendererUPnP
https://github.com/cometdom/DirettaRendererUPnP
Soutenez ce projet
Si vous trouvez ce moteur de rendu utile, vous pouvez soutenir le développement :
https://ko-fi.com/cometdom
Dons optionnels mais appréciés afin de couvrir les heures passées au codage ainsi le que coût et le support. Ils ne sont pas obligatoires. Merci.
https://github.com/cometdom/DirettaRendererUPnP
Soutenez ce projet
Si vous trouvez ce moteur de rendu utile, vous pouvez soutenir le développement :
https://ko-fi.com/cometdom
Dons optionnels mais appréciés afin de couvrir les heures passées au codage ainsi le que coût et le support. Ils ne sont pas obligatoires. Merci.
