# Backlog : ce qui est fait Les entrées de BACKLOG.md une fois traitées, mot pour mot, avec leur statut en tête. Rien n'est perdu : ce fichier est l'historique, BACKLOG.md ne garde que l'ouvert. (Entrées du 2026-08 au 2026-10, dans l'ordre où elles étaient écrites.) - **Indicateur de mise a jour pas assez visible.** > **Statut : FAIT le 2026-10-07 : le bouton « Réglages… » commun (nico579-commons 0.4.8) donne à lidar2map, gpxsolar et watch2notif la vérification des mises à jour que blink2video avait déjà ; la pastille de mise à jour est servie par les exécutables (elle était en 404 avant, les .spec n'embarquaient pas le fichier).** Source : reddit/SR_gAr, r/blinkcameras, 2026-08-20. A dit avoir ete "perdu dans toutes les infos" et ne pas avoir vu qu'une mise a jour etait disponible, a cru manquer quelque chose. Signal faible (un seul retour) mais a surveiller : si ca revient, revoir la visibilite du bouton/de la bascule "Mettre a jour" dans reglages (et maintenant dans le menu de l'icone tray, 28.58). - **Latence du direct (MSE) : piste WebRTC construite, active derriere un > **Statut : FAIT et validé en usage réel le 2026-09-03 (WebRTC est le protocole par défaut).** drapeau, validee en usage reel (2026-09-03).** Source : meme fil reddit/cutthin que l'entree Tester-XR.exe ci-dessus (plainte initiale sur la lenteur du direct des cameras eloignees), approfondi en session le 2026-09-03 apres que l'utilisateur a mesure a la main Salon : 10s sur blink2video contre 3s sur l'appli officielle Blink. Diagnostic instrumente (horodatage reel ajoute a _journal_direct_mse/serve.py et au recv() patche de blink_engine.py, direct.log) : l'essentiel du delai n'est pas cote Blink mais dans blink2video meme, structurel au MSE - ffmpeg doit voir passer le SPS avant de pouvoir ecrire un entete MP4 (empty_moov), pas une histoire de reglage. Baisser -analyzeduration/-probesize (5000000 -> 1500000, serve.py) a ete teste sans regression sur jardin (la camera batterie lente a l'origine du reglage genereux), a garder. Prototype WebRTC (aiortc + blinkpy, venv isole, aucune modification du process en direct) confirme un vrai gain, mesure deux fois par camera : Salon 9,3s (MSE) -> 4,10s (WebRTC decodage+reencodage) -> 3,23s (WebRTC passthrough, sans reencodage) ; jardin ~15,8s (MSE, mesure sur Terrasse1, meme materiel) -> 6,81s -> 5,60s. Facteur 2,3 a 2,9x selon camera et mode. Le mode passthrough (equivalent WebRTC du -c:v copy deja utilise en MSE, evite le cout CPU du reencodage) a demande de monkey-patcher aiortc.codecs.CODECS["video"] pour declarer le vrai profil H.264 de la camera (High, 640028) : aiortc n'annonce que du Baseline en dur (42001f/42e01f). Verifie qu'aucune solution officielle n'existe cote aiortc (issue aiortc/aiortc#944, fermee sans suite ; la reserve du mainteneur porte sur l'encodage, pas sur le passthrough, ne s'applique pas a notre cas). Construit dans le depot (pas juste un prototype jetable) : blink_webrtc.py (module optionnel, DISPONIBLE=False proprement si aiortc absent), route POST /live-webrtc/ dans serve.py, watchLive()/watchWebRTC() dans serve_app.js avec repli automatique sur watchMse() si la negociation echoue. Active par la variable d'environnement BLINK_DIRECT_WEBRTC=1, pas encore un reglage de la page web. aiortc + cryptography/pyopenssl/cffi plafonnes dans requirements.in (cffi<2 : le python systeme partage de l'utilisateur porte aussi timezonefinder, sans rapport avec blink2video, qui exige cffi<2 - non pertinent si ce depot passe un jour a un venv dedie). Incident reel a l'activation (2026-09-03) : premiere tentative restee bloquee sur "Reconnexion...", .blink_hub.lock jamais libere (MODULE_SLOT pareil), plus aucun direct possible - meme MSE, verrou partage. Cause : RTCPeerConnection() sans configuration explicite retombe sur le defaut d'aiortc (stun:stun.l.google.com:19302, aiortc/codecs/rtcicetransport.py RTCIceGatherer.getDefaultIceServers), et setLocalDescription() attend la fin de la collecte de candidats avant de rendre la main - un blocage reseau/pare-feu dessus bloque tout indefiniment, jamais de connectionstatechange donc jamais de nettoyage. Corrige : iceServers=[] (navigateur et serveur sur le meme reseau local, un STUN n'a de toute facon rien a apporter) plus deux plafonds durs dans blink_webrtc.py, memes principes que LIVE_FIRST_FRAME_SECONDS/LIVE_MAX_SECONDS en MSE - NEGOCIATION_MAX_SECONDS (15s, echoue proprement plutot que de bloquer) et SESSION_MAX_SECONDS (300s, ferme une session jamais terminee proprement cote client). Revalide ensuite par l'utilisateur : fonctionne, "beaucoup plus rapide". Reste ouvert : pas de reglage dans la page web (variable d'environnement seulement) ; pas de reprise automatique si la connexion tombe apres la premiere image (contrairement a connecterMse) ; detection du profil H.264 verifiee sur deux modeles de camera seulement (Salon, jardin) ; CODECS["video"] reste un detail d'implementation non documente d'aiortc qu'une mise a jour peut casser sans avertissement (issue aiortc/aiortc#944 toujours sans solution officielle cote projet). A trancher avec l'utilisateur : rendre ca un reglage visible, ou garder en drapeau experimental encore un temps. PyAV retire (2026-09-03), remplace par un demultiplexeur MPEG-TS/PES/NAL maison, blink_ts_demux.py (~200 lignes, assez de ISO/IEC 13818-1 pour isoler le flux elementaire H.264 : PAT -> PMT -> PID video -> decoupage en NAL units des qu'une fin est vue, sans attendre un paquet PES ou une image entiere complets). Motive par le retrait de la dependance PyAV elle meme, pas par un bug precis d'origine ; a permis au passage de lire le PTS reel encode par la camera plutot que de sonder les flux (extradata SPS/PPS incomplet a probesize bas, cf. l'essai analyzeduration/probesize abandonne plus haut). Valide hors-ligne contre une capture TS reelle (373 NAL units, 0 pts=None, PTS = valeur de reference PyAV a l'identique). Saccade signalee par l'utilisateur en usage reel (2026-09-03, "le debit est plus saccade") apres activation de WebRTC : deux causes distinctes trouvees et corrigees ensemble, aucune des deux liee a la latence de demarrage deja mesuree plus haut. 1. PTS invente a la reception (horloge monotone locale) au lieu du PTS reel encode par la camera dans l'entete PES (ITU-T H.222.0, 2.4.3.7) : un reseau qui livre par rafales plutot qu'a cadence reguliere faisait perdre au recepteur l'information de rythme necessaire pour lisser l'affichage. Corrige par l'extraction PTS ci-dessus dans blink_ts_demux.py (deja cadencee a 90 kHz, meme horloge que WebRTC utilise pour la video RTP - aucune conversion requise). 2. `