Referensi Struct camera_info

Referensi Struct camera_info

#include < camera_common.h >

Kolom Data

int  menghadap
 
int  orientasi
 
uint32_t  device_version
 
const camera_metadata_t static_camera_characteristics
 
int  resource_cost
 
char **  conflicting_devices
 
size_t  conflicting_devices_length
 

Deskripsi Mendetail

Definisi di baris 161 file camera_common.h .

Dokumentasi Bidang

char** conflicting_devices

Array ID perangkat kamera yang direpresentasikan sebagai string yang diakhiri NULL yang menunjukkan perangkat lain yang tidak dapat dibuka secara bersamaan saat perangkat kamera ini sedang digunakan.

Kolom ini dimaksudkan untuk digunakan untuk menunjukkan bahwa perangkat kamera ini adalah gabungan dari beberapa perangkat kamera lainnya, atau memiliki dependensi hardware yang melarang penggunaan secara bersamaan. Jika tidak ada dependensi, NULL dapat ditampilkan di kolom ini untuk menunjukkan hal ini.

Layanan kamera tidak akan pernah membuka perangkat apa pun dalam daftar ini secara bersamaan saat perangkat kamera ini terbuka.

String yang ditunjuk di kolom ini tidak akan dihapus oleh layanan kamera, dan harus tetap ada saat perangkat ini dicolokkan.

Informasi versi (berdasarkan camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 atau yang lebih rendah:

Tidak valid. Dapat diasumsikan sebagai NULL. Jangan baca kolom ini.

CAMERA_MODULE_API_VERSION_2_4 atau yang lebih tinggi:

Selalu valid.

Definisi di baris 404 dari file camera_common.h .

size_t conflicting_devices_length

Panjang array yang diberikan di kolom conflicting_devices.

Informasi versi (berdasarkan camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 atau yang lebih rendah:

Tidak valid. Dapat diasumsikan 0. Jangan baca kolom ini.

CAMERA_MODULE_API_VERSION_2_4 atau yang lebih tinggi:

Selalu valid.

Definisi di baris 419 dari file camera_common.h .

uint32_t device_version

Nilai camera_device_t.common.version.

Informasi versi (berdasarkan camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Tidak valid. Dapat diasumsikan sebagai CAMERA_DEVICE_API_VERSION_1_0. Jangan baca kolom ini.

CAMERA_MODULE_API_VERSION_2_0 atau yang lebih tinggi:

Selalu valid

Definisi di baris 219 dari file camera_common.h .

int facing

Arah kamera menghadap. Lihat system/core/include/system/camera.h untuk mengetahui definisi kamera yang menghadap.

Informasi versi (berdasarkan camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 atau yang lebih rendah:

Harus berupa CAMERA_FACING_BACK atau CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 atau yang lebih tinggi:

Nilainya harus CAMERA_FACING_BACK, CAMERA_FACING_FRONT, atau CAMERA_FACING_EXTERNAL.

Definisi di baris 177 dari file camera_common.h .

orientasi int

Orientasi gambar kamera. Nilai ini adalah sudut yang digunakan untuk memutar gambar kamera searah jarum jam agar ditampilkan dengan benar di layar dalam orientasi alaminya. Harus berupa 0, 90, 180, atau 270.

Misalnya, anggaplah perangkat memiliki layar yang tinggi secara alami. Sensor kamera belakang dipasang dalam orientasi lanskap. Anda sedang melihat layar. Jika sisi atas sensor kamera sejajar dengan tepi kanan layar dalam orientasi alami, nilainya harus 90. Jika sisi atas sensor kamera depan sejajar dengan kanan layar, nilainya harus 270.

Informasi versi (berdasarkan camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 atau yang lebih rendah:

Valid di semua camera_module versi.

CAMERA_MODULE_API_VERSION_2_4 atau yang lebih tinggi:

Valid jika kamera menghadap ke CAMERA_FACING_BACK atau CAMERA_FACING_FRONT, tidak valid jika kamera menghadap ke CAMERA_FACING_EXTERNAL.

Definisi di baris 202 dari file camera_common.h .

int resource_cost

Total "biaya" resource penggunaan kamera ini, yang direpresentasikan sebagai nilai bilangan bulat dalam rentang [0, 100] dengan 100 mewakili total penggunaan resource bersama yang merupakan bottleneck yang membatasi subsistem kamera. Ini mungkin perkiraan yang sangat kasar, dan digunakan sebagai petunjuk untuk layanan kamera guna menentukan kapan tidak mengizinkan beberapa aplikasi membuka kamera yang berbeda secara bersamaan yang diiklankan oleh layanan kamera.

Layanan kamera harus dapat membuka dan menggunakan kombinasi perangkat kamera yang diekspos oleh HAL secara bersamaan dengan jumlah biaya resource kamera ini <= 100. Untuk menentukan biaya, setiap perangkat kamera harus diasumsikan dikonfigurasi dan beroperasi pada setelan kecepatan frame dan ukuran streaming yang mengonsumsi resource secara maksimal yang tersedia di setelan konfigurasi yang ditampilkan untuk perangkat tersebut melalui metadata kamera.

Layanan kamera mungkin masih mencoba membuka kombinasi perangkat kamera secara bersamaan dengan total biaya resource > 100. Hal ini dapat berhasil atau gagal. Jika berhasil, kombinasi konfigurasi yang tidak didukung karena batasan resource dari beberapa perangkat yang terbuka akan gagal selama panggilan konfigurasi. Jika total biaya resource <= 100, buka dan konfigurasi tidak boleh gagal untuk setelan konfigurasi streaming atau kemampuan perangkat lainnya yang biasanya berhasil untuk perangkat jika perangkat tersebut adalah satu-satunya perangkat kamera yang terbuka.

Kolom ini akan digunakan untuk menentukan apakah aplikasi latar belakang diizinkan untuk menggunakan perangkat kamera ini saat aplikasi lain menggunakan perangkat kamera lain. Catatan: beberapa aplikasi tidak akan pernah diizinkan oleh layanan kamera untuk membuka perangkat kamera yang sama secara bersamaan.

Contoh kasus penggunaan:

Mis. 1: Perangkat Kamera 0 = Kamera Belakang Perangkat Kamera 1 = Kamera Depan

  • Menggunakan kedua perangkat kamera menyebabkan penurunan kecepatan frame yang besar karena bandwidth ISP yang terbatas.

Konfigurasi:

Perangkat Kamera 0 - resource_cost = 51 conflicting_devices = null Perangkat Kamera 1 - resource_cost = 51 conflicting_devices = null

Hasil:

Karena jumlah biaya resource > 100, jika aplikasi dengan prioritas lebih tinggi membuka salah satu perangkat, layanan kamera tidak akan mengizinkan aplikasi dengan prioritas lebih rendah untuk membuka salah satu perangkat. Jika aplikasi dengan prioritas lebih rendah menggunakan perangkat yang kemudian dicoba dibuka oleh aplikasi dengan prioritas lebih tinggi, aplikasi dengan prioritas lebih rendah akan dipaksa untuk memutuskan koneksi perangkat.

Jika aplikasi dengan prioritas tertinggi memilih, aplikasi tersebut mungkin masih mencoba membuka kedua perangkat (karena perangkat ini tidak tercantum sebagai bertentangan di kolom conflicting_devices), tetapi penggunaan perangkat ini mungkin gagal dalam panggilan buka atau konfigurasi.

Mis. 2: Perangkat Kamera 0 = Kamera Belakang Kiri Perangkat Kamera 1 = Kamera Belakang Kanan Perangkat Kamera 2 = Kamera stereo gabungan yang menggunakan sensor kamera belakang kanan dan kiri yang digunakan oleh perangkat 0, dan 1 Perangkat Kamera 3 = Kamera Depan

  • Karena batasan hardware, maksimal dua kamera dapat terbuka sekaligus. Kamera stereo gabungan tidak boleh digunakan secara bersamaan dengan salah satu dari dua perangkat kamera belakang (perangkat 0, 1), dan biasanya memerlukan terlalu banyak bandwidth untuk digunakan secara bersamaan dengan kamera depan (perangkat 3).

Konfigurasi:

Perangkat Kamera 0 - resource_cost = 50 conflicting_devices = { 2 } Perangkat Kamera 1 - resource_cost = 50 conflicting_devices = { 2 } Perangkat Kamera 2 - resource_cost = 100 conflicting_devices = { 0, 1 } Perangkat Kamera 3 - resource_cost = 50 conflicting_devices = null

Hasil:

Berdasarkan kolom conflicting_devices, layanan kamera menjamin bahwa kumpulan perangkat terbuka berikut tidak akan pernah diizinkan: { 1, 2 }, { 0, 2 }.

Berdasarkan kolom resource_cost, jika aplikasi latar depan prioritas tinggi menggunakan perangkat kamera 0, aplikasi latar belakang akan diizinkan untuk membuka perangkat kamera 1 atau 3 (tetapi akan dipaksa untuk memutuskan koneksinya lagi jika aplikasi latar depan membuka perangkat lain).

Aplikasi dengan prioritas tertinggi mungkin masih mencoba membuka perangkat 0, 2, dan 3 secara bersamaan, tetapi HAL mungkin gagal membuka atau mengonfigurasi panggilan untuk kombinasi ini.

Mis. 3: Perangkat Kamera 0 = Kamera Belakang Perangkat Kamera 1 = Kamera Depan Perangkat Kamera 2 = Kamera Depan Hemat Daya yang menggunakan sensor yang sama dengan perangkat 1, tetapi hanya mengekspos resolusi aliran gambar yang dapat digunakan dalam mode hemat daya

  • Penggunaan kedua kamera depan (perangkat 1, 2) secara bersamaan tidak dapat dilakukan karena sensor fisik yang sama. Penggunaan kamera belakang dan kamera depan "berdaya tinggi" (perangkat 1) mungkin tidak dapat dilakukan untuk beberapa konfigurasi streaming karena keterbatasan hardware, tetapi opsi kamera depan "berdaya rendah" dapat selalu digunakan karena memiliki hardware khusus.

    Konfigurasi:

    Perangkat Kamera 0 - resource_cost = 100 conflicting_devices = null Perangkat Kamera 1 - resource_cost = 100 conflicting_devices = { 2 } Perangkat Kamera 2 - resource_cost = 0 conflicting_devices = { 1 } Hasil:

    Berdasarkan kolom conflicting_devices, layanan kamera menjamin bahwa kumpulan perangkat terbuka berikut tidak akan pernah diizinkan: { 1, 2 }.

    Berdasarkan kolom resource_cost, hanya aplikasi dengan prioritas tertinggi yang dapat mencoba membuka perangkat 0 dan 1 secara bersamaan. Jika aplikasi dengan prioritas lebih tinggi tidak menggunakan perangkat 1 atau 2, aplikasi latar belakang dengan prioritas rendah dapat membuka perangkat 2 (tetapi akan dipaksa untuk memutuskan koneksinya jika aplikasi dengan prioritas lebih tinggi kemudian membuka perangkat 1 atau 2).

Informasi versi (berdasarkan camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 atau yang lebih rendah:

Tidak valid. Dapat diasumsikan 100. Jangan baca kolom ini.

CAMERA_MODULE_API_VERSION_2_4 atau yang lebih tinggi:

Selalu valid.

Definisi di baris 376 dari file camera_common.h .

const camera_metadata_t * static_camera_characteristics

Karakteristik tetap kamera, yang mencakup semua metadata kamera statis yang ditentukan di system/media/camera/docs/docs.html. Ini harus berupa buffering metadata yang diurutkan, dan tidak boleh diubah atau dibebaskan oleh pemanggil. Pointer harus tetap valid selama masa aktif modul kamera, dan nilai di dalamnya tidak boleh berubah setelah ditampilkan oleh get_camera_info().

Informasi versi (berdasarkan camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Tidak valid. Karakteristik tambahan tidak tersedia. Jangan baca kolom ini.

CAMERA_MODULE_API_VERSION_2_0 atau yang lebih tinggi:

Valid jika device_version >= CAMERA_DEVICE_API_VERSION_2_0. Jangan membaca jika tidak.

Definisi di baris 241 dari file camera_common.h .


Dokumentasi untuk struct ini dibuat dari file berikut: