Pengodeaan Video dengan Teknik Interlaced (Microsoft Media Foundation)

Data video yang dimaksudkan untuk digunakan dengan komputer biasanya progresif , yang berarti bahwa setiap bingkai dikodekan sebagai satu gambar. Beberapa perangkat, seperti televisi, tidak menampilkan bingkai sekaligus, tetapi sebagai dua gambar. Salah satu gambar, atau bidang, berisi semua baris bernomor genap. Bidang lainnya berisi data untuk semua baris bernomor ganjil. Video yang dikodekan dengan lebih dari satu bidang per bingkai disebut interlaced, karena dirender dengan bergantian antara bidang genap dan bidang ganjil.

Pada masa lalu, konten video yang terjalin selalu diterjemahkan sebelum dikodekan dengan codec Windows Media Video. Dimulai dengan Windows Media 9 Series, bagaimanapun, encoder video mendukung kompresi konten terjalin tanpa terlebih dahulu mengonversinya menjadi progresif. Mempertahankan hubungan dalam file yang dikodekan penting jika konten pernah dirender pada layar terjalin, seperti televisi. Fitur ini meningkatkan kepentingan, karena dukungan untuk konten berbasis Windows Media menyebar ke pemutar DVD, kotak set-top, dan elektronik rumah lainnya.

Cara term mudah untuk mengodekan dan mengirimkan video terjalin adalah dengan mengembangkan aplikasi Anda menggunakan Windows Media Format SDK dan menyimpan konten dalam file ASF. Informasi terjalin tentang bingkai diteruskan ke codec menggunakan ekstensi unit data, yang berfungsi dengan baik untuk konten ASF, tetapi sedikit lebih sulit untuk didukung dalam kontainer lain. Untuk informasi selengkapnya tentang ekstensi unit data, lihat Menggunakan Ekstensi Unit Data.

Untuk mendukung pengodean terjalin melibatkan dua langkah utama: mendapatkan informasi bingkai ke encoder, dan mengirimkan informasi ke aplikasi penyajian. Langkah-langkah ini dijelaskan dalam paragraf berikut.

Video Terjalin dan Encoder

Langkah pertama dalam mengenkode video dengan interlacing yang dipertahankan adalah mengonfigurasi encoder untuk mengenkode bidang yang terjalin. Untuk melakukan ini, atur properti MFPKEY_INTERLACEDCODINGENABLED ke TRUE. Ini menyiapkan encoder untuk menerima sampel yang terjalin. Setiap sampel input harus berisi kedua bidang.

Setiap sampel yang Anda proses dengan encoder setelah mengaktifkan pengodean terjalin harus memiliki ekstensi unit data yang terpasang. Sampel tanpa ekstensi unit data yang diharapkan diasumsikan progresif. GUID yang mengidentifikasi ekstensi adalah D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC. Nilai yang diteruskan oleh objek Windows Media Format SDK ditentukan dalam tabel berikut.

Nilai Deskripsi
0x00000020 Menentukan bahwa sampel dikodekan dengan bidang bawah terlebih dahulu. Nilai ini hanya bermakna jika dikombinasikan dengan nilai terjalin.
0x00000040 Menentukan bahwa sampel dikodekan dengan bidang atas terlebih dahulu. Nilai ini hanya bermakna jika dikombinasikan dengan nilai terjalin.
0x00000080 Menentukan bahwa sampel terjalin. Ini adalah satu-satunya nilai yang bermakna bagi DMO codec.

 

Salah satu dari kedua nilai awal selalu dikombinasikan dengan 0x80 menggunakan OR bitwise sebelum diterapkan ke sampel. Namun, encoder hanya memeriksa 0x80 dan mengabaikan ekstensi lainnya. Jika ekstensi mengidentifikasi sampel sebagai terjalin, encoder mempertahankan interlaksi sampel dalam aliran terkompresi, dan menyematkan bendera indikasi dalam aliran sehingga dekoder dapat mengidentifikasi bingkai yang saling terkait. Setiap sampel yang terjalin ditandai, sehingga konten sumber yang merupakan campuran progresif dan terjalin dapat dikodekan bersama menjadi satu aliran.

Objek penulis SDK Format Media Windows menyertakan ekstensi unit data jenis konten dalam sampel yang ditulisnya ke bagian data kontainer ASF untuk digunakan pada saat penyajian.

Membaca dan Merender Video Terjalin

Decoder mengidentifikasi sampel yang saling terkait berdasarkan bendera yang diatur dalam aliran oleh encoder. Sebagai pengaturan awal, dekoder mendeinterlace sampel dan memberikan keluaran progresif. Aplikasi pemutar dapat mengonfigurasi dekoder untuk memproses output dengan mempertahankan interlacing dengan mengatur properti MFPKEY_DECODER_DEINTERLACING.

Kesulitan dalam memutar video interklas muncul setelah dekoder menghasilkan sampel. Perender (kartu video atau chip dalam perangkat) tidak dapat menampilkan konten video dengan benar tanpa mengetahui bidang mana yang mana. Dalam aplikasi yang menggunakan Windows Media Format SDK, ekstensi unit data jenis konten diambil dari sampel yang tidak dikompresi, dan dapat diteruskan ke perangkat.

Saat menggunakan objek codec secara langsung, tidak ada transfer data ini yang otomatis. Anda harus menerapkan dukungan ekstensi unit data, baik di objek buffer maupun dalam kontainer yang Anda gunakan untuk konten yang dikodekan. Jenis kontainer media yang paling umum (seperti AVI) tidak mendukung metadata tingkat sampel. Anda dapat menerapkan sistem Anda sendiri untuk menyimpan data dalam file dan mengaitkannya dengan sampel individual, tetapi hanya pembaca yang disesuaikan yang dapat mengambilnya.

Nota

Mengatur properti MFPKEY_INTERLACEDCODINGENABLED ke TRUE, lalu tidak mengirimkan sampel apa pun dengan ekstensi unit data jenis konten yang terpasang dapat menyebabkan encoder mengalami kerusakan. Atur encoder untuk pengodean terjalin hanya jika Anda memiliki sampel yang terjalin untuk dikirimkan.

 

Bekerja dengan Video