Bagikan melalui


KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET

ID properti KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET yang ditentukan dalam KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY digunakan untuk mengatur pengaturan per bingkai di driver.

Ringkasan Penggunaan

Untuk mengatur pengaturan per bingkai, kontrol properti KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET dikirim ke driver bersama dengan payload pengaturan per bingkai.

Properti ini dapat dibaca atau ditulis. Meskipun panggilan GET dapat digunakan untuk mengembalikan pengaturan per bingkai terakhir yang diatur pada driver, panggilan GET tidak diekspos ke klien aplikasi dan hanya dikeluarkan pada waktu inisialisasi ketika kontrol pengaturan per bingkai dibangun oleh alur MF, di mana driver harus mengembalikan STATUS_BUFFER_OVERFLOW dengan ukuran buffer 0.

Dalam panggilan GET, buffer panjang nol dikirim ke driver terlebih dahulu untuk mengetahui ukuran buffer data yang diperlukan untuk menahan seluruh pengaturan per bingkai yang dimiliki driver. Menanggapi panggilan ini, driver harus mengembalikan STATUS_BUFFER_OVERFLOW dengan ukuran buffer pengaturan per bingkai yang diperlukan yang harus 0 jika tidak ada pengaturan per bingkai yang pernah diatur atau setidaknya ukuran KSCAMERA_PERFRAMESETTING_HEADER sebaliknya.

Payload pengaturan per bingkai harus dimulai dengan KSCAMERA_PERFRAMESETTING_HEADER, diikuti oleh satu atau beberapa pengaturan bingkai. Jumlah pengaturan bingkai ditentukan dalam FrameCount. Pengaturan untuk setiap bingkai harus dimulai dengan KSCAMERA_PERFRAMESETTING_FRAME_HEADER, diikuti dengan pengaturan item nol atau lebih. Jumlah pengaturan item ditentukan dalam ItemCount. Pengaturan untuk setiap item, jika ada yang harus dimulai dengan KSCAMERA_PERFRAMESETTING_ITEM_HEADER.

Untuk pengaturan untuk setiap item, jika payload Nilai ada, KSCAMERA_PERFRAMESETTING_ITEM_HEADER harus diikuti oleh KSCAMERA_EXTENDEDPROP_VALUE. Jika ada item kustom, KSCAMERA_PERFRAMESETTING_ITEM_HEADER harus diikuti oleh KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM, diikuti oleh data kustom yang terkait dengan Id GUID yang ditentukan dalam KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM.

Jika FrameCount adalah 0, driver harus menolak payload pengaturan per bingkai. Jika ItemCount adalah 0, tidak ada pengaturan bingkai yang ditentukan. Driver harus menerapkan pengaturan global ke bingkai yang terkait. Misalnya, FrameCount = 1 dan ItemCount = 0 menyiratkan urutan foto variabel bingkai tunggal dengan pengaturan global.

Gambar di bawah ini menggambarkan tata letak struktur data konfigurasi payload pengaturan per bingkai. Dalam contoh di bawah ini, pengaturan per bingkai untuk empat bingkai dikonfigurasi dengan bingkai 0 yang berisi tiga item, dua tanpa payload dan satu dengan payload Nilai; bingkai 1 berisi dua item, satu tanpa payload dan yang lain dengan payload nilai; bingkai 2 berisi 0 item yang menyiratkan pengaturan global untuk bingkai 2; bingkai 3 berisi empat item, satu dengan payload nilai, dua masing-masing dengan item kustom dan payload data kustom, dan satu tanpa payload.

struktur perframesetting-header.

  1. Ukuran dalam header pengaturan per bingkai mewakili ukuran total payload yang akan diisi KSCAMERA_PERFRAMESETTING_HEADER. Ukuran

  2. Ukuran dalam bingkai pengaturan per bingkai mewakili ukuran yang akan diisi KSCAMERA_PERFRAMESETTING_FRAME_HEADER. Ukuran untuk bingkai.

  3. Ukuran item mewakili ukuran yang akan diisi KSCAMERA_PERFRAMESETTING_ITEM_HEADER. Ukuran untuk item.

  4. Ukuran item kustom mewakili ukuran yang akan diisi KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM. Ukuran untuk item kustom.

Waktu paparan pengaturan per bingkai

Jika waktu pencahayaan manual ditentukan dalam pengaturan per bingkai, KSCAMERA_EXTENDEDPROP_VALUE. Value.ll akan berisi waktu paparan yang diinginkan dalam panggilan SET dan waktu paparan saat ini yang digunakan dalam panggilan GET .

Kompensasi pengaturan per bingkai

Jika kompensasi pengaturan manual ditentukan dalam pengaturan per bingkai, KSCAMERA_EXTENDEDPROP_VALUE. Value.l akan berisi kompensasi pencahayaan yang diinginkan dalam panggilan SET dan kompensasi paparan saat ini yang digunakan dalam panggilan GET .

Fokus pengaturan per bingkai

Jika pengaturan manual per bingkai ditentukan dalam pengaturan per bingkai, KSCAMERA_EXTENDEDPROP_VALUE. Value.ul akan berisi posisi lensa yang diinginkan dalam panggilan SET dan posisi lensa saat ini yang digunakan dalam panggilan GET .

ISO pengaturan per bingkai

Jika driver tidak mendukung KSCAMERA_EXTENDEDPROP_ISO_MANUAL, payload Nilai tidak disertakan. Jika tidak, header item pengaturan per bingkai harus diikuti oleh KSCAMERA_EXTENDEDPROP_VALUE. Dalam panggilan SET , KSCAMERA_EXTENDEDPROP_VALUE. Value.ul berisi kecepatan ISO yang diinginkan jika KSCAMERA_EXTENDEDPROP_ISO_MANUAL didukung dan ditentukan dalam KSCAMERA_PERFRAMESETTING_ITEM_HEADER. Bendera.

Berikut ini menunjukkan bagaimana header item dan payload Nilai akan terlihat seperti ketika kemampuan ISO pengaturan per bingkai KSCAMERA_EXTNDEDPROP_ISO_AUTO, KSCAMERA_EXTENDEDPROP_ISO_MANUAL (min = 30, maks = 210, langkah =20)sebagai berikut:

KSCAMERA_EXTNDEDPROP_ISO_AUTO, 
KSCAMERA_EXTENDEDPROP_ISO_MANUAL (min = 30, max = 210, step =20)
  1. Jika kecepatan ISO adalah 70

    KSCAMERA_PERFRAMESETTING_ITEM_HEADER.Flags = KSCAMERA_EXTENDEDPROP_ISO_MANUAL
    KSCAMERA_EXTENDEDPROP_VALUE.Value.ul = 70
    
  2. Jika kecepatan ISO adalah 50

    KSCAMERA_PERFRAMESETTING_ITEM_HEADER.Flags = KSCAMERA_EXTENDEDPROP_ISO_MANUAL
    KSCAMERA_EXTENDEDPROP_VALUE.Value.ul = 50
    

Tabel berikut ini meringkas kontrol dan nilai yang tersedia untuk pengaturan per bingkai. Ketersediaan aktual ditentukan oleh kemampuan aktual driver, yang dapat diperoleh menggunakan KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY.

Nama Nilai yang tersedia

Waktu pencahayaan

Otomatis atau waktu dalam 100 nanodetik.

Flash

Hidup/Mati, otomatis, reduksi mata merah menyala/mati, daya lampu kilat dalam persentase.

Kompensasi paparan

Nilai langkah otomatis atau kompensasi.

Kecepatan ISO

Otomatis atau manual dengan nilai ISO bilangan bulat.

Fokus

Posisi lensa otomatis atau logis. Nilai ini tidak memiliki unit tertentu.

Properti kustom

OEM mendefinisikan ini dengan GUID kustom dan data properti.

Gambar konfirmasi

Aktif/Nonaktif

Untuk meneruskan data properti kustom ke pengaturan per bingkai, aplikasi melakukan hal berikut:

  1. Memanggil QueryInterface di IFrameSettingsControls untuk mendapatkan antarmuka IMFGetServices yang terkait dengan pengaturan per bingkai.

  2. Memanggil GetService dari antarmuka IMFGetServices untuk membuat antarmuka IMFAttributes kustom pada pengaturan per bingkai.

  3. Memanggil SetUINT32, SetBlob, dll pada GUID properti kustom untuk mengatur data properti kustom pada IMFAttributes yang terkait dengan pengaturan per bingkai.

Kerangka kerja akan mencari IMFAttributes kustom untuk membuat payload item kustom jika ada saat merakit payload pengaturan per bingkai untuk diatur pada driver.

Bidang LoopCount di KSCAMERA_PERFRAMESETTING_HEADER menentukan jumlah pengulangan bahwa pengaturan per bingkai harus diterapkan ke bingkai mendatang untuk diambil dalam urutan foto. LoopCount dikodekan secara permanen ke 1 oleh alur (misalnya, pengaturan per bingkai hanya akan diterapkan sekali tanpa pengulangan lebih lanjut). Bidang FrameCount di KSCAMERA_PERFRAMESETTING_HEADER menentukan jumlah pengaturan bingkai yang harus diterapkan pengaturan per bingkai ke bingkai di setiap pengulangan.

Bidang ItemCount di KSCAMERA_PERFRAMESETTING_FRAME_HEADER menentukan jumlah pengaturan item yang harus diterapkan ke bingkai yang sesuai. Jika ItemCount adalah 0, pengaturan global harus diterapkan ke bingkai yang sesuai.

Tabel di bawah ini mencantumkan kemungkinan konfigurasi dan jenis urutan foto yang sesuai.

LoopCount FrameCount ItemCount Jenis

L(L=1)

N(N>0)

S(S>=0)

Urutan foto variabel terbatas

L(L=1)

1

0

Satu urutan foto variabel terbatas bingkai dengan pengaturan global

L(L=1)

0

S

Konfigurasi tidak valid

Urutan foto variabel telah disederhanakan untuk melakukan pengambilan terbatas hanya dengan satu pengulangan. Urutan foto dengan pengaturan per bingkai akan selalu ditandai sebagai urutan foto variabel dan payload pengaturan per bingkai selalu diperlukan.

Jika jumlah perulangan adalah L (L = 1) dan jumlah bingkai adalah N (N > 0), itu adalah urutan foto variabel terbatas. Pengaturan per bingkai akan diulangI L = 1 kali dengan pengaturan bingkai N diterapkan ke bingkai N mendatang berikutnya di setiap pengulangan.

Jika jumlah perulangan adalah L (L = 1), jumlah bingkai adalah 1, dan jumlah item adalah 0, itu adalah urutan foto variabel terbatas satu bingkai dengan pengaturan global.

Urutan foto variabel lebih disederhanakan untuk tidak meminta bingkai sebelumnya. Alur akan mengodekan hardcode jumlah foto sebelumnya yang diminta, (misalnya, RequestedHistoryFrames) ke 0. Driver hanya memberikan bingkai masa depan dalam urutan foto variabel. Gambar berikut menggambarkan jumlah bingkai yang diharapkan untuk dikirimkan oleh driver dalam urutan foto variabel. Jumlah foto sebelumnya ditentukan dalam KSCAMERA_EXTENDEDPROP_PHOTOMODE. RequestedHistoryFrames oleh KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE kontrol properti yang diperluas yang dikodekan secara permanen ke 0 oleh alur.

N : Frame Count
L : Loop Count
P : Past Photos Requested
T : Total number of frame delivered by driver
L = 1
P = 0
T = (N * L) + P

Untuk urutan foto variabel terbatas, driver harus menandai KSSTREAM_HEADER. OptionsFlags untuk bingkai terakhir dengan bendera KSSTREAM_HEADER_OPTIONSF_ENDOFPHOTOSEQUENCE . Melakukannya akan memastikan bahwa driver secara otomatis berhenti mengirimkan bingkai kembali ke alur MF setelah jumlah bingkai di masa mendatang yang diharapkan telah dikirimkan. Ini secara efektif menghentikan urutan foto dan memberi tahu klien aplikasi tentang penyelesaian urutan foto. Ini terjadi ketika driver selesai menangkap bingkai terakhir dalam urutan foto variabel terbatas.

Persyaratan

Header

Ksmedia.h