Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Format aliran DVD dapat berubah kapan saja. Misalnya, format aliran audio dapat berubah antara AC3 dan LPCM selama pemutaran.
Setiap sampel data dalam aliran berisi struktur KSSTREAM_HEADER ditambahkan ke dalamnya. Struktur ini berisi anggota OptionsFlags .
Sampel data yang terkait dengan header yang berisi salah satu bendera berikut mungkin atau mungkin tidak berisi paket data null atau data yang valid.
Nilai anggota KSSTREAM_HEADER OptionsFlags berikut penting untuk pemutaran DVD:
KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY
Bit KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY menunjukkan bahwa sampel yang segera mengikutinya milik sumber (atau lokasi/posisi) data yang berbeda dari sampel sebelumnya. Ini menunjukkan bahwa pemrosesan apa pun yang sedang berlangsung menggunakan sampel sebelumnya harus diselesaikan. Bit ini sering berada di tengah bingkai sebelumnya, sehingga menunjukkan bahwa dekoder harus membuang bingkai sebelumnya dan mulai memproses dengan data baru.
KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY
Bit KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY menunjukkan bahwa akan ada kesenjangan waktu dalam data segera setelah sampel ini. Misalnya, jika aliran DVD berisi bingkai diam yang dikodekan sebagai bingkai I tunggal, dekoder menerima semua data untuk bingkai I, dengan sampel terakhir yang berisi bendera KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY. Ini menunjukkan bahwa dekoder harus segera mendekode bingkai I dan tidak menunggu data bingkai B.
KSSTREAM_HEADER_OPTIONSF_TYPECHANGED
Bit KSSTREAM_HEADER_OPTIONSF_TYPECHANGED menunjukkan bahwa sampel yang terhubung dengan header akan menjadi blok KSDATAFORMAT baru untuk aliran. Ini memungkinkan perubahan jenis data secara dinamis. Contohnya adalah perubahan video dari 4x3 menjadi 16x9, atau perubahan audio dari AC3 ke PCM. Dekoder harus membuat semua perubahan yang diperlukan untuk blok format baru hanya ketika semua data sebelum paket dengan blok format baru telah diproses.
Ketika perubahan format aliran terjadi, minidriver menerima paket data dengan bit KSSTREAM_HEADER_OPTIONSF_TYPECHANGED diatur dalam anggota OptionsFlags dari struktur KSSTREAM_HEADER paket data.
Minidriver mungkin tidak pernah melihat bendera KSSTREAM_HEADER_OPTIONSF_TYPECHANGED jika tidak mengekspos format data yang didukung oleh aliran audionya dengan benar.
Mengekspos format data yang didukung oleh aliran dengan benar melibatkan dua langkah:
Handler SRB_GET_STREAM_INFO untuk aliran harus mengatur penunjuk StreamFormatsArray untuk menunjuk ke array pointer NumberOfFormatArrayEntries , yang masing-masing menunjuk ke blok format yang valid.
Handler SRB_GET_DATA_INTERSECTION harus menyalin blok format yang sesuai dengan format yang diusulkan ke dalam buffer yang disediakan.
Perubahan format video juga harus memberi sinyal peristiwa KSSTREAM ke koneksi port video untuk menunjukkan bahwa format video telah berubah. Minidriver harus menggunakan StreamClassStreamNotification(SignalMultipleStreamEvents, pMyHwDevExt-pMyStreamObject>, &MY_KSEVENTSETID_VPNOTIFY, KSEVENT_VPNOTIFY_FORMATCHANGE) untuk tujuan ini.
Saat beberapa parameter format video berubah, seperti rasio aspek piksel, dekoder menerima blok format. Dekoder harus memberi sinyal port video untuk menegosiasikan ulang koneksi port video. Dekoder memanggil StreamClassStreamNotification dengan parameter SignalMultipleStreamEvents.
Minidriver dekoder DVD harus menunjukkan bahwa dukungan disediakan untuk peristiwa ini dalam entri HW_STREAM_INFORMATION untuk aliran VideoPort. ID set peristiwa untuk peristiwa port video KSEVENTSETID_VPNotify dan ID peristiwa KSEVENT_VPNOTIFY_FORMATCHANGE.