Bagikan melalui


Encoder API

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

API Encoder menyediakan antarmuka yang seragam untuk mengonfigurasi encoder perangkat lunak dan perangkat keras. Aplikasi dapat menggunakan API Encoder untuk mengonfigurasi encoder dan menyimpan pengaturan konfigurasi. Vendor encoder dapat menggunakan API Encoder untuk mengekspos kemampuan encoder. Meskipun API Encoder dirancang terutama untuk encoder, itu cukup umum bahwa dekoder juga dapat mendukungnya.

API Encoder diekspos ke aplikasi melalui antarmuka ICodecAPI , yang diekspos oleh filter encoder. Filter encoder mungkin merupakan filter DirectShow asli, encoder perangkat keras, atau DirectX Media Object (DMO).

  • Filter perangkat lunak: Encoder yang diimplementasikan sebagai filter DirectShow asli harus mengekspos ICodecAPI secara langsung.
  • Encoder perangkat keras: Perangkat pengodean diekspos melalui satu atau beberapa minidriver AVStream, yang diwakili dalam mode pengguna oleh KSProxy. KSProxy menerjemahkan panggilan metode ICodecAPI ke dalam set properti KS. Untuk informasi selengkapnya, lihat dokumentasi DDK.
  • DMO: DMO harus mengekspos antarmuka ICodecAPI . Aplikasi DirectShow dapat mengkueri filter DMO Wrapper, yang mengekspos antarmuka dengan menggabungkan DMO. Aplikasi yang tidak didasarkan pada DirectShow dapat mengkueri DMO secara langsung.

Kapitalkan Encoder

Encoder dapat mendaftarkan daftar kemampuan tingkat tinggi dengan menyimpannya di registri sistem. Setiap kemampuan diidentifikasi oleh GUID. Untuk menghitung kemampuan encoder tertentu, lakukan hal berikut:

  1. Buat moniker yang mewakili filter encoder. (Lihat Menggunakan Enumerator Perangkat Sistem.)
  2. Kueri moniker filter untuk antarmuka IGetCapabilitiesKey .
  3. Panggil IGetCapabilitiesKey::GetCapabilitiesKey. Metode mengembalikan handel ke kunci registri yang berisi daftar kemampuan filter.
  4. Panggil fungsi RegEnumValue untuk menghitung nilai untuk kunci yang dikembalikan.

Jika Anda merancang encoder, buat entri registri untuk kemampuan saat filter terdaftar. Untuk filter perangkat lunak, buat kunci bernama Kemampuan yang berdekatan dengan tombol FilterData dan FriendlyName . Biasanya, Anda akan menambahkan informasi ini setelah memanggil AMovieDllRegisterServer2 untuk mendaftarkan data filter standar. Untuk informasi selengkapnya, lihat Cara Mendaftarkan Filter DirectShow. Atau, Anda dapat membuat kunci CapabilitiesLocation yang berisi string yang memberikan lokasi kunci Kapabilitas di registri. String harus dimulai dengan "HKLM\", "HKCR\", atau "HKCU\" untuk menunjukkan subtree registri. Untuk perangkat Plug and Play, file penyiapan driver harus membuat kunci Kemampuan yang berdekatan dengan kunci FriendlyName filter, atau dapat menggunakan kunci CapabilitiesLocation seperti yang dijelaskan untuk filter perangkat lunak.

Setelah Anda membuat kunci Kapabilitas , buat nilai untuk setiap GUID kemampuan. Nama nilai harus berupa bentuk string GUID, dalam bentuk {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. Setiap jenis nilai harus salah satu dari yang berikut ini:

  • Nilai numerik tunggal. Gunakan nilai DWORD .
  • GUID. Gunakan bentuk string GUID.
  • Pasangan numerik. Gunakan string dengan formulir "a,b" untuk mewakili pasangan nilai, seperti lebar dan tinggi, atau pembilang dan denominator untuk pecahan.
  • Array nilai. Gunakan multi-string (REG_SZ_MULTI) untuk mewakili lebih dari satu nilai.

Contoh berikut menunjukkan tata letak registri untuk filter perangkat lunak:

\HKCR\CLSID\Filter Category\Instance\Filter CLSID\Capabilities\
    
Values: 
    
    guid1: 1234 (REG_DWORD)   
    
    guid2: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" (REG_SZ)
    
    guid3: "2","4","6" (REG_SZ_MULTI)
    
    guid4: "720,480" (REG_SZ) 

Profil Encoder

Profil encoder adalah daftar tetap pengaturan konfigurasi yang dapat diterapkan ke encoder pada durasi. Profil tidak bergantung pada encoder; aplikasi dapat memilih encoder, lalu memilih profil dan menerapkan pengaturan profil ke encoder. Profil diidentifikasi oleh GUID dan harus disimpan di lokasi berikut di registri:

\HKLM\Software\Microsoft\EncoderProfiles\Profile GUID\

where Profile GUID

adalah bentuk string GUID yang mengidentifikasi profil. Buat nilai untuk setiap pengaturan. Buat juga nilai string bernama "FriendlyName" yang datanya mengidentifikasi profil (seperti "LowBandwidthVideo").

Pengembangan Encoder dan Decoder