Condividi tramite


Come controllare gli stati di presentazione

La sessione multimediale fornisce un controllo di trasporto, ad esempio la modifica degli stati di presentazione (riproduzione, pausa e arresto in uno scenario di riproduzione in stile playlist). In questo argomento vengono descritti i metodi di sessione multimediale che un'applicazione deve chiamare per modificare lo stato di riproduzione.

Nella tabella seguente vengono illustrate le transizioni di stato di presentazione valide.

Transizione dello stato Descrizione
Riproduzione -> Pausa L'orologio della presentazione si blocca.
Play -> Stop L'orologio della presentazione viene reimpostato.
Pausa -> Riproduzione L'orologio della presentazione riprende dal momento in cui si blocca durante la transizione Play to Pause.
Pausa -> Arresta L'orologio della presentazione viene reimpostato.
Stop -> Play L'orologio della presentazione inizia dall'inizio della presentazione.
Arresta -> Sospendi Non consentiti.

 

Per modificare gli stati di presentazione

  • Chiamare il metodo IMFMediaSession::P ause per sospendere la riproduzione.

    hr = pMediaSession->Pause();
    

    Prima di chiamare questo metodo, l'applicazione deve chiamare il metodo IMFMediaSession::GetSessionCapabilities per determinare se l'origine multimediale supporta lo stato Pause. In tal caso, questo metodo restituisce MFSESSIONCAP_PAUSE nel parametro pdwCaps .

    La sospensione arresta temporaneamente la sessione multimediale, l'orologio della presentazione e il sink del flusso per la presentazione corrente. Al termine della chiamata, l'applicazione riceve un evento MESessionPaused .

  • Chiamare il metodo IMFMediaSession::Stop per arrestare la riproduzione.

    hr = pMediaSession->Stop();
    

    Questo metodo arresta la sessione multimediale arrestando l'origine multimediale, gli orologi corrispondenti e i sink di flusso. Se la sessione multimediale controlla l'origine sequencer, le origini native sottostanti vengono arrestate dall'origine sequencer. Dopo l'arresto della sessione multimediale, l'applicazione riceve un evento MESessionStopped .

  • Chiamare il metodo IMFMediaSession::Start per avviare la riproduzione o cercare una nuova posizione.

    hr = pMediaSession->Start(NULL, &var);
    

    Questo metodo avvia la sessione multimediale dagli stati Pause e Stop. La sessione multimediale è responsabile della configurazione del flusso di dati nella pipeline. Questo metodo indica alla sessione multimediale di avviare l'orologio della presentazione. Dopo questa chiamata, Media Session invia un evento MESessionStarted all'applicazione.

Sessione multimediale