Corriger les informations de position pour les flux continus
Cette modification corrige le calcul de la position et de la durée pour les flux continus (webradio) en ajustant la méthode `poll_and_emit_changes()` dans `pmocontrol`. Elle détecte maintenant les flux via `is_playing_a_stream()`, extrait la durée depuis les métadonnées DIDL, et calcule la position relative basée sur `track_start_time`. Les valeurs par défaut (zéro pour la position, none pour la durée) sont utilisées si aucune durée n'est disponible. Les fichiers modifiés incluent `musicrenderer.rs`, `CurrentTrack.vue` et `useRenderers.ts` pour assurer une gestion cohérente des données de position et de durée.
This commit is contained in:
15
Blackboard/Report/patch_position_info_for_stream.md
Normal file
15
Blackboard/Report/patch_position_info_for_stream.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Rapport : Patch des informations de position pour les flux continus
|
||||
|
||||
## Résumé
|
||||
Modification de la méthode `poll_and_emit_changes()` dans la crate `pmocontrol` pour corriger les données de position et durée lorsqu'un renderer diffuse un flux continu (webradio). La méthode détecte maintenant si un flux est en cours via `is_playing_a_stream()` et applique un traitement spécifique : extraction de la durée depuis les métadonnées DIDL, et calcul de la position relative depuis `track_start_time` (qui est déjà maintenu à jour lors des changements de métadonnées). Si aucune durée n'est disponible, la position et la durée sont mises à zéro/none.
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
1. `pmocontrol/src/music_renderer/musicrenderer.rs`
|
||||
- Modification de la méthode `poll_and_emit_changes()` pour patcher les informations de position lors de la détection d'un flux continu
|
||||
- Ajout du logging au niveau info lors de la détection d'un flux continu
|
||||
- Extraction conditionnelle de la durée depuis les métadonnées DIDL pour les streams
|
||||
- Calcul de la position relative basé sur `track_start_time` (différence entre now et track_start_time)
|
||||
- Retour de valeurs par défaut (zéro pour position, none pour duration) si aucune durée n'est disponible dans les métadonnées
|
||||
- Préservation de la logique existante pour les médias réguliers (non-streams)
|
||||
- Note : `track_start_time` est déjà maintenu à jour par la logique existante lors des changements de métadonnées
|
||||
20
Blackboard/Todo/patch_position_info_for_stream.md
Normal file
20
Blackboard/Todo/patch_position_info_for_stream.md
Normal file
@@ -0,0 +1,20 @@
|
||||
** Ce travail devra être réalisé en suivant scrupuleusement les consignes listées dans le fichier [@Rules_optimal.md](file:///Users/coissac/Sync/maison/Petite_maisons/src/pmomusic/Blackboard/Rules_optimal.md) **
|
||||
|
||||
Cette modification cible la cratte pmocontrol uniquement
|
||||
|
||||
Les musiques Renderer, Disposent maintenant d'une méthode leur permettant de savoir s'ils sont en train de diffuser une webradio via leur méthode is_playing_a_stream.
|
||||
|
||||
Il faut donc que dans la méthode poll_and_emit_changes On fait ce qui est nécessaire pour envoyer des données de position et de durée de track corrigée si l'on a is_playing_a_stream à vrai.
|
||||
|
||||
Si is_playing_a_stream à vrai:
|
||||
- Maintenir à jour la valeur `track_start_time` de la classe
|
||||
MusicRenderer En la mettant égale à now de metadata.
|
||||
- Loguer cet événement au niveau info.
|
||||
- Extraire la durée du morceau depuis les métadonnées
|
||||
fournies par la structure de position.
|
||||
- Si la durée est disponible:
|
||||
- Utilisez cette donnée pour la pousser sur le bus des événements.
|
||||
- calculer la position dans le flux comme la différence
|
||||
entre now et track_start_time.
|
||||
- Sinon: Envoyer zéro pour la position et none pour la duration.
|
||||
- Sinon, transmettre les données fournies comme actuellement.
|
||||
Reference in New Issue
Block a user