Tentang Sesi Media

Sesi Media mengekspos antarmuka IMFMediaSession . Ada dua cara untuk membuat Sesi Media, tergantung pada apakah aplikasi Anda akan mendukung konten yang dilindungi:

  • Jika aplikasi Anda tidak mendukung konten yang dilindungi, Anda dapat membuat Sesi Media dengan memanggil MFCreateMediaSession. Fungsi ini membuat Sesi Media di dalam proses aplikasi.
  • Untuk mendukung konten yang dilindungi, buat Sesi Media dengan memanggil MFCreatePMPMediaSession. Fungsi ini membuat Sesi Media di dalam proses Jalur Media Terproteksi (PMP). Aplikasi menerima penunjuk ke objek proksi yang dipanggil metode marshals di seluruh batas proses. Perhatikan bahwa Sesi Media PMP dapat digunakan untuk memutar konten yang jelas, serta konten yang dilindungi.

Aplikasi apa pun yang menggunakan Sesi Media akan mengikuti langkah-langkah umum berikut:

  1. Buat topologi.
  2. Antrekan topologi pada Sesi Media dengan memanggil IMFMediaSession::SetTopology.
  3. Kontrol aliran data dengan memanggil IMFMediaSession::Start, IMFMediaSession::P ause, atau IMFMediaSession::Stop.
  4. Sebelum aplikasi keluar, panggil IMFMediaSession::Close untuk menutup Sesi Media.
  5. Matikan sumber media apa pun yang dibuat aplikasi, dengan memanggil IMFMediaSource::Shutdown.
  6. Matikan Sesi Media dengan memanggil IMFMediaSession::Shutdown.

Saat menggunakan Sesi Media, aplikasi tidak boleh langsung memulai, menjeda, atau menghentikan sumber media. Semua perubahan status harus dimulai dengan memanggil metode IMFMediaSession . Perubahan status di sumber media ditangani oleh Sesi Media.

Banyak detail lain akan bergantung pada fungsionalitas spesifik aplikasi Anda.

Konten Terlindungi

Untuk memutar konten yang dilindungi, Anda harus membuat Sesi Media di dalam jalur media yang dilindungi (PMP), dengan memanggil MFCreatePMPMediaSession. Fungsi ini membuat instans Sesi Media di dalam PMP dan mengembalikan penunjuk ke objek proksi yang menghaluskan antarmuka di seluruh batas proses.

Dalam kebanyakan hal, menggunakan Sesi Media di dalam PMP transparan terhadap aplikasi. Namun, aplikasi mungkin perlu memanggil tindakan tertentu yang memungkinkan pengguna untuk memutar konten. Misalnya, pengguna mungkin perlu mendapatkan lisensi DRM. Media Foundation mendefinisikan mekanisme umum untuk tindakan ini menggunakan antarmuka IMFContentEnabler .

Untuk informasi selengkapnya, lihat topik berikut:

Jam Presentasi

Sesi Media mengelola semua aspek jam presentasi:

  • Membuat jam presentasi.

  • Memilih sumber waktu.

  • Memberi tahu sink media tentang jam

  • Memulai, menghentikan, dan menjeda jam seperlunya.

  • Mematikan jam.

Untuk mendapatkan penunjuk ke jam presentasi, panggil IMFMediaSession::GetClock pada Sesi Media. Jam presentasi tidak mengembalikan waktu yang valid sampai Sesi Media mengirim peristiwa MESessionTopologyStatus dengan bendera MF_TOPOSTATUS_READY. Sampai saat itu, GetClock mengembalikan MF_E_CLOCK_NO_TIME_SOURCE.

Aplikasi yang menggunakan Sesi Media tidak boleh memulai, menghentikan, atau menjeda jam presentasi; mengubah laju jam; atau mematikan jam.

Ketika aplikasi memanggil IMFMediaSession::Start, Sesi Media memulai jam presentasi dengan waktu mulai yang sama dengan posisi awal yang ditentukan dalam metode Mulai . Untuk informasi selengkapnya tentang Sesi Media, lihat Sesi Media.

Sesi Media