Cette mise à jour ajoute la gestion de la durée dans les métadonnées UPnP et OpenHome. Les changements incluent : - Ajout de la dépendance `pmoutils` dans `pmocontrol` - Mise à jour du modèle `Item` pour inclure le champ `duration` - Implémentation de la sérialisation DIDL-Lite avec `pmodidl` et `pmoutils` - Ajout de la gestion de la durée dans les renderers UPnP et OpenHome - Extraction de la durée depuis les métadonnées DIDL-Lite - Support du fallback vers la durée du DIDL lorsque l'ampli ne la retourne pas - Mise à jour des constructeurs d'items pour inclure la durée calculée pour les streams radio Ces modifications permettent une meilleure gestion des durées de pistes audio, notamment pour les streams radio avec des durées calculées à partir des timestamps de début/fin.
pmomediaserver
Implémentation d'un MediaServer UPnP conforme à la spécification UPnP AV Architecture.
Description
Cette crate fournit un MediaServer UPnP qui permet d'exposer et de servir du contenu audio à des clients UPnP (MediaRenderer). Elle suit le même modèle architectural que la crate pmomediarenderer.
Architecture
Le MediaServer est composé de deux services obligatoires :
- ContentDirectory : Gestion du contenu et de la navigation dans la bibliothèque musicale
- ConnectionManager : Gestion des connexions et des protocoles supportés
Device UPnP
- Type :
urn:schemas-upnp-org:device:MediaServer:1 - Services : ContentDirectory:1, ConnectionManager:1
Utilisation
use pmomediaserver::MEDIA_SERVER;
use pmoupnp::UpnpServer;
// Le device est déjà configuré avec tous ses services
let server = MEDIA_SERVER.clone();
// Créer une instance du server
let instance = server.create_instance();
// Enregistrer le server sur un serveur UPnP
upnp_server.register_device(server).await?;
Dépendances
pmoupnp: Fournit l'infrastructure UPnP de base (devices, services, actions, state variables)pmodidl: Pour la gestion des métadonnées DIDL-Liteonce_cell: Pour les initialisations lazybevy_reflect: Pour la réflexion et l'introspection
Services
ContentDirectory
Service de gestion du contenu conforme UPnP ContentDirectory:1. Permet de naviguer et rechercher dans la bibliothèque musicale.
Actions supportées :
- Browse
- Search
- GetSearchCapabilities
- GetSortCapabilities
- GetSystemUpdateID
- CreateObject (optionnel)
- DestroyObject (optionnel)
- UpdateObject (optionnel)
ConnectionManager
Service de gestion des connexions conforme UPnP ConnectionManager:1. Gère les protocoles supportés.
Actions supportées :
- GetProtocolInfo
- GetCurrentConnectionIDs
- GetCurrentConnectionInfo
- PrepareForConnection (optionnel)
- ConnectionComplete (optionnel)
Licence
Voir le fichier LICENSE à la racine du projet.