Untuk Menggunakan Video Terjajar

[Fitur yang terkait dengan halaman ini, Windows Media Format 11 SDK, adalah fitur warisan. Ini telah digantikan oleh Pembaca Sumber dan Penulis Sink. Pembaca Sumber dan Penulis Sink telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan Pembaca Sumber dan Penulis Sink alih-alih Windows Media Format 11 SDK, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Ada dua jenis dasar pengodean video: progresif dan terjajar. Dalam pengodean progresif, setiap bingkai adalah representasi yang dikodekan dari satu bingkai video. Dalam pengodean terjajar, setiap bingkai adalah representasi yang dikodekan dari semua baris piksel genap dalam video, atau semua baris ganjil. Setiap bingkai yang saling terkait disebut bidang, sehingga ada bidang ganjil dan bahkan bidang. Layar yang saling terkait (seperti televisi) merender bidang satu per satu, bidang bergantian. Tampilan progresif merender bingkai sekaligus.

Codec Profil Tingkat Lanjut Windows Media Video 9 menyediakan dukungan untuk mempertahankan interlacing dalam aliran terkompresi.

Kapan Menggunakan Video Terjajar

Pengodean video yang terjajar hanya berguna ketika konten ditampilkan pada perangkat yang saling terkait. Konten yang dimaksudkan untuk dilihat di televisi (melalui kotak set-top atau perangkat lain) mungkin perlu disatukan. Konten yang dimaksudkan untuk dilihat secara eksklusif pada tampilan komputer tidak boleh dikodekan sebagai terjajar.

Untuk mengodekan video yang terjalin sebagai video progresif, Anda harus mengonfigurasi pengaturan input. Untuk informasi selengkapnya, lihat Untuk Mendesinterlace Video.

Urutan Bidang

Sebagian besar sumber video yang saling terkait, seperti kartu pengambilan video, mengirimkan sampel video yang mencakup kedua bidang yang saling terkait. Hasilnya seperti bingkai video lengkap, kecuali bahwa garis ganjil dan genap sedikit bergeser tepat waktu. Tidak ada standar universal untuk bidang mana dalam sampel video yang diselingi terjadi pertama kali.

Anda harus memungkinkan pengguna untuk menentukan urutan bidang saat meneruskan sampel yang terjalin ke aplikasi Anda.

Pengodean Video Terjajar

Untuk menggunakan pengodean interlaced, lakukan langkah-langkah berikut:

  1. Konfigurasikan aliran video di profil untuk menggunakan ekstensi unit data jenis konten dengan memanggil metode IWMStreamConfig2::AddDataUnitExtension . GUID ekstensi sampel untuk ekstensi jenis konten WM_SampleExtensionsGUID_ContentType.
  2. Atur aliran di profil dan konfigurasikan penulis dengan profil seperti biasa.
  3. Sebelum meneruskan sampel terjalin ke penulis, panggil metode IWMWriterAdvanced2::SetInputSetting untuk mengatur pengaturan input g_wszInterlacedCoding ke TRUE.
  4. Untuk setiap sampel interlaced yang Anda berikan ke penulis, panggil metode INSSBuffer3::SetProperty untuk mengatur jenis konten. Nilai tipe konten adalah kombinasi dari bendera dalam tabel berikut.
Bendera Deskripsi
WM_CT_INTERLACED Selalu atur bendera ini saat mengodekan konten yang terjajar. Jika Anda menggunakan bendera ini tanpa mengatur bendera urutan bidang (WM_CT_BOTTOM_FIELD_FIRST atau WM_CT_TOP_FIELD_FIRST) codec akan mengasumsikan bahwa bidang atas adalah yang pertama. Jika codec menggunakan urutan bidang yang salah, seharusnya tidak ada dampak pada kualitas gambar, tetapi efisiensi pengodean akan terpengaruh.
WM_CT_BOTTOM_FIELD_FIRST Ketika dikombinasikan dengan bendera WM_CT_INTERLACED, bendera ini menunjukkan bahwa bidang bawah (bidang yang dimulai dengan baris kedua dalam sampel) terjadi pertama kali.
WM_CT_TOP_FIELD_FIRST Ketika dikombinasikan dengan bendera WM_CT_INTERLACED, bendera ini menunjukkan bahwa bidang atas (bidang yang dimulai dengan baris pertama dalam sampel) terjadi pertama kali.
WM_CT_REPEAT_FIRST_FIELD Menunjukkan bahwa bidang pertama dalam sampel harus diulang pada pemutaran. Bendera ini digunakan untuk video yang telah dibuat dari film oleh proses telecine. Jika tidak ada bendera urutan bidang yang diatur bersama dengan bendera ini, bidang atas diasumsikan terjadi pertama kali.

Catatan

Jika bendera WM_CT_INTERLACED tidak diatur, sampel diasumsikan berisi bingkai video progresif.

Pendekodean Video Terlampir

Saat mendekodingkan video yang saling terkait, Anda harus mengatur pengaturan g_wszAllowInterlacedOutput ke TRUE menggunakan metode IWMReaderAdvanced2::SetOutputSetting . Jika tidak, codec akan memberikan bingkai progresif.

Ekstensi unit data jenis konten dipertahankan pada sampel output. Anda harus meneruskan orientasi bidang ke perangkat penyajian untuk memastikan pemutaran yang tepat.

Topik Tingkat Lanjut