Informazioni sulla sessione multimediale

La sessione multimediale espone l'interfaccia IMFMediaSession . Esistono due modi per creare la sessione multimediale, a seconda che l'applicazione supporti il contenuto protetto:

  • Se l'applicazione non supporta il contenuto protetto, è possibile creare la sessione multimediale chiamando MFCreateMediaSession. Questa funzione crea la sessione multimediale all'interno del processo dell'applicazione.
  • Per supportare il contenuto protetto, creare la sessione multimediale chiamando MFCreatePMPMediaSession. Questa funzione crea la sessione multimediale all'interno del processo PMP (Protected Media Path). L'applicazione riceve un puntatore a un oggetto proxy che esegue il marshalling delle chiamate al metodo attraverso il limite del processo. Si noti che la sessione multimediale PMP può essere usata per riprodurre contenuto chiaro, nonché contenuto protetto.

Tutte le applicazioni che usano la sessione multimediale seguiranno questa procedura generale:

  1. Creare una topologia.
  2. Accodare la topologia nella sessione multimediale chiamando FMMediaSession::SetTo topologia.
  3. Controllare il flusso di dati chiamando FMMediaSession::Start, FMIMediaSession::P ause o FMMediaSession::Stop.
  4. Prima dell'uscita dell'applicazione, chiamare FMIMediaSession::Close per chiudere la sessione multimediale.
  5. Arrestare tutte le origini multimediali create dall'applicazione chiamando FMMediaSource::Shutdown.
  6. Arrestare la sessione multimediale chiamando IMFMediaSession::Shutdown.

Quando si usa la sessione multimediale, l'applicazione non deve avviare direttamente, sospendere o arrestare l'origine multimediale. Tutte le modifiche dello stato devono essere avviate chiamando i metodi IMFMediaSession . Le modifiche dello stato nell'origine multimediale vengono gestite dalla sessione multimediale.

Molti altri dettagli dipendono dalla funzionalità specifica dell'applicazione.

Contenuto protetto

Per riprodurre contenuto protetto, è necessario creare la sessione multimediale all'interno del percorso multimediale protetto (PMP), chiamando MFCreatePMPMediaSession. Questa funzione crea un'istanza della sessione multimediale all'interno del PMP e restituisce un puntatore a un oggetto proxy che esegue il marshalling delle interfacce attraverso il limite del processo.

Nella maggior parte dei confronti, l'uso della sessione multimediale all'interno del PMP è trasparente per l'applicazione. Tuttavia, l'applicazione potrebbe dover richiamare determinate azioni che consentono all'utente di riprodurre il contenuto. Ad esempio, l'utente potrebbe dover ottenere una licenza DRM. Media Foundation definisce un meccanismo generico per queste azioni usando l'interfaccia FMContentEnabler .

Per altre informazioni, vedere gli argomenti seguenti:

Orologio presentazione

La sessione multimediale gestisce tutti gli aspetti dell'orologio della presentazione:

  • Creazione dell'orologio della presentazione.

  • Selezione dell'origine temporale.

  • Notifica dei sink multimediali sull'orologio

  • Avvio, arresto e sospensione dell'orologio in base alle esigenze.

  • Arrestare l'orologio.

Per ottenere un puntatore all'orologio della presentazione, chiamare IMFMediaSession::GetClock nella sessione multimediale. L'orologio della presentazione non restituisce un'ora valida finché la sessione multimediale invia l'evento MESessionTopologyStatus con il flag di MF_TOPOSTATUS_READY. Fino a allora, GetClock restituisce MF_E_CLOCK_NO_TIME_SOURCE.

Un'applicazione che usa la sessione multimediale non deve mai avviare, arrestare o sospendere l'orologio della presentazione; modificare la frequenza di orologio; o arrestare l'orologio.

Quando l'applicazione chiama IMFMediaSession::Start, la sessione multimediale avvia l'orologio della presentazione con un'ora iniziale uguale alla posizione iniziale specificata nel metodo Start . Per altre informazioni sulla sessione multimediale, vedere Sessione multimediale.

Sessione multimediale