fix: relance auto du décodeur si la lecture reste figée au démarrage - #48
Merged
Conversation
Symptôme : après « Lecture », la timeline avançait de quelques dizaines de ms (la seule extrapolation de l'horloge) puis se bloquait ; Media.Position restait figé à 0 (décodeur WPF coincé). Il fallait fermer/rouvrir le projet. - Suppression d'une course dans PlayFile : Play()/Pause() étaient appelés AVANT MediaOpened, ce qui pouvait laisser le décodeur figé. La première image reste gérée par OnMediaOpened (média déjà ouvert). - Ajout d'un garde-fou de démarrage : si Media.Position n'avance pas dans les 0,4 s suivant Lecture, on relance le décodeur (re-seek + Play), jusqu'à 2 fois, puis on abandonne proprement. Se désarme dès que la lecture avance. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
En LoadedBehavior=Manual, fixer Media.Source ne charge PAS le média : sans commande de lecture, MediaOpened ne se déclenche jamais et le placeholder reste bloqué sur « Chargement de la vidéo… » (visible en changeant de projet). Le commit précédent avait retiré Play()/Pause() de PlayFile en pensant à une course ; c'est en réalité le déclencheur d'ouverture obligatoire. On le restaure. Le blocage du décodeur au vrai démarrage reste couvert par le garde-fou CheckPlaybackStall ajouté juste avant. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…her) Changer Media.Source alors qu'une vidéo est déjà chargée ne redéclenchait pas MediaOpened : la 2e vidéo restait bloquée sur « Chargement de la vidéo… ». Media.Stop() ne libère pas le média. On appelle Media.Close() puis on rebranche la nouvelle source au cycle de dispatcher suivant (DispatcherPriority.Loaded), le temps que le moteur média ait traité la fermeture. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problème
Après « Lecture » sur un projet, la timeline avançait de quelques dizaines de ms puis se bloquait :
Media.Positionrestait figé à 0 (décodeur WPF coincé). Seule la fermeture/réouverture du projet débloquait la lecture. Bug intermittent.Cause
PlayFileappelaitMedia.Play(); Media.Pause();avant queMediaOpenedne se déclenche — une course pouvant laisser le décodeur dans un état figé.Correctif
Play()/Pause()prématuré dansPlayFile. La première image reste affichée parOnMediaOpened(média déjà ouvert, état défini).Media.Positionn'avance pas dans les 0,4 s suivant Lecture, on relance le décodeur (re-seek +Play()), jusqu'à 2 fois, puis abandon propre. Se désarme dès que la position progresse → aucun effet en lecture normale.À valider
Bug intermittent — ouvrir plusieurs projets d'affilée et lancer Lecture à chaque fois. La release publique sera cuttée après confirmation.
🤖 Generated with Claude Code