Bagikan melalui


Peristiwa Sumber Pengurut

Ketika Sumber Pengurut memutar urutan file, Sesi Media umumnya mengirim semua peristiwa yang sama yang dikirim selama pemutaran normal, dan yang tercantum dalam Peristiwa Sesi Media. Aplikasi mendapatkan peristiwa ini menggunakan antarmuka IMFMediaEventGenerator Sesi Media.

Selain itu, ada beberapa peristiwa yang khusus untuk segmen daftar putar.

Peristiwa Deskripsi
MENewPresentation Memberi sinyal aplikasi untuk mendaftarkan topologi berikutnya.
Untuk memberikan transisi yang mulus antara dua presentasi berturut-turut, sumber pengurut memuat topologi berikutnya terlebih dahulu. Saat topologi aktif masih diputar, sumber pengurut mengirimkan peristiwa ini untuk topologi berikutnya, selama ada topologi berikutnya yang tersedia di sumbernya.
Data peristiwa untuk peristiwa ini adalah deskriptor presentasi untuk topologi berikutnya. Aplikasi ini bertanggung jawab untuk mengatur topologi yang sesuai pada Sesi Media, seperti yang dijelaskan dalam Menggunakan Sumber Pengurut.
MEEndOfPresentationSegment Sumber pengurut meningkatkan peristiwa ini ketika Sesi Media telah selesai memutar segmen saat ini, jika segmen tersebut diikuti oleh segmen lain. (Jika segmen saat ini adalah yang terakhir, sumber pengurut menaikkan peristiwa MEEndOfPresentation sebagai gantinya.)
Sesi Media meneruskan kejadian ini ke aplikasi. Biasanya, aplikasi menerima MEEndOfPresentationSegment setelah Sesi Media mulai memproses segmen berikutnya, tetapi saat sink media masih mengirimkan sampel untuk segmen sebelumnya.
MESessionTopologyStatus, dengan status MF_TOPOSTATUS_SINK_SWITCHED. Sesi Media memunculkan peristiwa ini ketika melakukan transisi ke topologi berikutnya dalam sumber pengurut dan sink media telah selesai memutar topologi sebelumnya. Kejadian ini berisi penunjuk ke topologi berikutnya.

 

Contoh 1: Pemutaran tanpa Melompat

Ketika sumber pengurut terlibat, jumlah peristiwa yang Anda dapatkan dari Sesi Media dapat membingungkan, terutama karena peristiwa yang terkait dengan satu segmen sering diselingi dengan peristiwa untuk segmen berikutnya.

Dalam contoh pertama, aplikasi mengantre tiga segmen, S1, S2, dan S3. Segmen ketiga memiliki bendera SequencerTopologyFlags_Last, untuk memberi sinyal itu adalah segmen terakhir dalam urutan. Segmen yang sesuai dengan setiap peristiwa diberikan dalam tanda kurung. PanggilanSetTopologyaplikasi juga tercantum, untuk membuat urutan operasi lebih jelas.

Daftar ini tidak menyertakan setiap peristiwa yang mungkin Anda terima. (Misalnya, ini menghilangkan peristiwa MESessionCapabilitiesChanged, yang dikirim setiap kali kemampuan sesi berubah. Aplikasi biasanya menerima beberapa peristiwa MESessionCapabilitiesChanged sepanjang presentasi.) Peristiwa yang tercantum di sini adalah peristiwa yang memperlihatkan transisi dari satu segmen ke segmen berikutnya. Peristiwa yang paling penting adalah MENewPresentation , yang menandakan aplikasi untuk mendaftarkan topologi berikutnya, dan MEEndOfPresentationSegment, yang menandakan akhir segmen (kecuali untuk segmen terakhir).

Karena peristiwa di Media Foundation tidak sinkron, dan tidak diserialisasikan dengan panggilan metode, urutan yang tepat dapat bervariasi. Misalnya, Anda dapat menerima MF_TOPOSTATUS_STARTED_SOURCE untuk S1 sebelum aplikasi memanggil SetTopology untuk S2.

Selain itu, Anda mungkin tidak mendapatkan setiap acara yang tercantum di sini. Peristiwa MEEndOfPresentation dan MESessionEnded, misalnya, tidak dikirim kecuali segmen terakhir memiliki bendera SequencerTopologyFlags_Last.

Akhirnya, daftar ini tidak menunjukkan berlalunya waktu. Waktu dari "awal S1" hingga "akhir S1" adalah seluruh durasi S1, yang bisa beberapa detik atau berjam-jam, tergantung pada sumbernya.

Contoh 2: Pemutaran dengan Segmen melompati

Dalam contoh ini, aplikasi mengantrekan segmen yang sama, tetapi melompat ke segmen 3 saat segmen 1 sedang diputar. Dalam hal ini, peristiwa berikut dikirim:

Ketika aplikasi memanggil Mulai untuk melompat ke segmen 3, sumber pengurut membatalkan segmen 1, yang masih diputar. Peristiwa MEEndOfPresentationSegment untuk segmen ini berisi atribut MF_EVENT_SOURCE_TOPOLOGY_CANCELED, menunjukkan bahwa segmen berakhir karena dibatalkan. Kemudian, karena segmen 2 sudah digulirkan sebelumnya, segmen tersebut dimulai tetapi kemudian segera dibatalkan. Peristiwa MEEndOfPresentationSegment untuk segmen 2 juga berisi atribut MF_EVENT_SOURCE_TOPOLOGY_CANCELED. Sesi kemudian dapat beralih ke segmen 3 dan memainkannya secara normal.

Tentang Sumber Pengurut

Sumber Pengurut