À propos de la session multimédia

La session multimédia expose l’interface IMFMediaSession . Il existe deux façons de créer la session multimédia, selon que votre application prend en charge ou non le contenu protégé :

  • Si votre application ne prend pas en charge le contenu protégé, vous pouvez créer la session multimédia en appelant mfCreateMediaSession. Cette fonction crée la session multimédia à l’intérieur du processus d’application.
  • Pour prendre en charge le contenu protégé, créez la session multimédia en appelant MFCreatePMPMediaSession. Cette fonction crée la session multimédia à l’intérieur du processus PMP (Protected Media Path). L’application reçoit un pointeur vers un objet proxy qui marshale les appels de méthode au-delà de la limite de processus. Notez que la session multimédia PMP peut être utilisée pour lire du contenu clair, ainsi que du contenu protégé.

Toute application qui utilise la session multimédia suit les étapes générales suivantes :

  1. Créez une topologie.
  2. Mettez la topologie en file d’attente sur la session multimédia en appelant IMFMediaSession::SetTopology.
  3. Contrôlez le flux de données en appelant IMFMediaSession::Start, IMFMediaSession::P ause ou IMFMediaSession::Stop.
  4. Avant la fermeture de l’application, appelez IMFMediaSession::Close pour fermer la session multimédia.
  5. Arrêtez toutes les sources multimédias créées par l’application, en appelant IMFMediaSource::Shutdown.
  6. Arrêtez la session multimédia en appelant IMFMediaSession::Shutdown.

Lors de l’utilisation de la session multimédia, l’application ne doit pas démarrer, suspendre ou arrêter directement la source multimédia. Toutes les modifications d’état doivent être initiées en appelant les méthodes IMFMediaSession . Les changements d’état dans la source multimédia sont gérés par la session multimédia.

De nombreux autres détails dépendent des fonctionnalités spécifiques de votre application.

Contenu protégé

Pour lire du contenu protégé, vous devez créer la session multimédia à l’intérieur du chemin d’accès multimédia protégé (PMP) en appelant MFCreatePMPMediaSession. Cette fonction crée un instance de la session multimédia à l’intérieur du PMP et retourne un pointeur vers un objet proxy qui marshale les interfaces au-delà de la limite de processus.

À la plupart des égards, l’utilisation de la session multimédia dans le PMP est transparente pour l’application. Toutefois, l’application peut avoir besoin d’appeler certaines actions qui permettent à l’utilisateur de lire le contenu. Par exemple, l’utilisateur peut avoir besoin d’obtenir une licence DRM. Media Foundation définit un mécanisme générique pour ces actions à l’aide de l’interface IMFContentEnabler .

Pour plus d'informations, voir les rubriques suivantes :

Horloge de présentation

La session multimédia gère tous les aspects de l’horloge de présentation :

  • Création de l’horloge de présentation.

  • Sélection de la source de temps.

  • Notification des récepteurs multimédias à propos de l’horloge

  • Démarrage, arrêt et suspension de l’horloge si nécessaire.

  • Arrêt de l’horloge.

Pour obtenir un pointeur vers l’horloge de présentation, appelez IMFMediaSession::GetClock sur la session multimédia. L’horloge de présentation ne retourne pas une heure valide tant que la session multimédia n’a pas envoyé l’événement MESessionTopologyStatus avec l’indicateur MF_TOPOSTATUS_READY. En attendant, GetClock retourne MF_E_CLOCK_NO_TIME_SOURCE.

Une application qui utilise la session multimédia ne doit jamais démarrer, arrêter ou suspendre l’horloge de présentation ; modifier la fréquence d’horloge ; ou arrêtez l’horloge.

Lorsque l’application appelle IMFMediaSession::Start, la session multimédia démarre l’horloge de présentation avec une heure de début égale à la position de départ spécifiée dans la méthode Start . Pour plus d’informations sur la session multimédia, consultez Session multimédia.

Session multimédia