camera_info Yapı Referansı
#include <
camera_common.h
>
Veri Alanları |
|
int | karşıya bakıyor |
int | orientation |
uint32_t | device_version |
const camera_metadata_t * | static_camera_characteristics |
int | resource_cost |
char ** | conflicting_devices |
size_t | conflicting_devices_length |
Ayrıntılı Açıklama
Tanım, camera_common.h dosyasının 161. satırı içindedir.
Alan Belgeleri
char** conflicting_devices |
Bu kamera cihazı kullanımdayken aynı anda açılamayan diğer cihazları belirten, NULL ile biten dize olarak temsil edilen bir kamera cihazı kimlikleri dizisi.
Bu alan, bu kamera cihazının diğer birkaç kamera cihazının birleşimi olduğunu veya eşzamanlı kullanımı yasaklayan donanım bağımlılıkları olduğunu belirtmek için kullanılır. Bağımlılık yoksa bunu belirtmek için bu alanda NULL döndürülebilir.
Kamera hizmeti, bu kamera cihazı açıkken bu listedeki cihazlardan hiçbirini aynı anda açmaz.
Bu alanda işaretlenen dizeler kamera hizmeti tarafından temizlenmez ve bu cihaz prize takılıyken kalmalıdır.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_2_3 veya daha düşük:
Geçersiz. NULL olduğu varsayılabilir. Bu alanı okumayın.
CAMERA_MODULE_API_VERSION_2_4 veya sonraki sürümler:
Her zaman geçerlidir.
Tanımı, camera_common.h dosyasının 404 satırı
size_t conflicting_devices_length |
conflicting_devices alanında verilen dizinin uzunluğu.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_2_3 veya daha düşük:
Geçersiz. 0 olduğu varsayılabilir. Bu alanı okumayın.
CAMERA_MODULE_API_VERSION_2_4 veya sonraki sürümler:
Her zaman geçerlidir.
Tanımı, camera_common.h dosyasının 419 satırı
uint32_t device_version |
camera_device_t.common.version değerini belirtir.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_1_0:
Geçersiz. CAMERA_DEVICE_API_VERSION_1_0 olarak kabul edilebilir. Bu alanı okumayın.
CAMERA_MODULE_API_VERSION_2_0 veya sonraki sürümler:
Her zaman geçerli
Tanımı, camera_common.h dosyasının 219 satırı
int bakan |
Kameranın baktığı yön. Kamera yönü tanımları için system/core/include/system/camera.h dosyasını inceleyin.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_2_3 veya daha düşük:
CAMERA_FACING_BACK veya CAMERA_FACING_FRONT olmalıdır.
CAMERA_MODULE_API_VERSION_2_4 veya sonraki sürümler:
CAMERA_FACING_BACK, CAMERA_FACING_FRONT veya CAMERA_FACING_EXTERNAL olmalıdır.
Tanım, camera_common.h dosyasının 177. satırı içindedir.
int orientation |
Kamera görüntüsünün yönü. Bu değer, kamera görüntüsünün doğal yönü ile ekranda doğru şekilde gösterilmesi için saat yönünde döndürülmesi gereken açıdır. 0, 90, 180 veya 270 olmalıdır.
Örneğin, bir cihazın doğal olarak uzun bir ekranı olduğunu varsayalım. Arka kamera sensörü yatay olarak monte edilmiştir. Ekrana bakıyorsunuz. Kamera sensörünün üst tarafı doğal yönde ekranın sağ kenarı ile hizalanmışsa değer 90 olmalıdır. Ön kamera sensörünün üst tarafı ekranın sağıyla hizalanmışsa değer 270 olmalıdır.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_2_3 veya daha düşük:
Tüm camera_module sürümlerinde geçerlidir.
CAMERA_MODULE_API_VERSION_2_4 veya sonraki sürümler:
Kamera yönü CAMERA_FACING_BACK veya CAMERA_FACING_FRONT ise geçerlidir. Kamera yönü CAMERA_FACING_EXTERNAL ise geçerli değildir.
Tanımı, camera_common.h dosyasının 202 satırı
int resource_cost |
Bu kameranın kullanılmasının toplam kaynak "maliyeti". [0, 100] aralığında bir tam sayı değeri olarak gösterilir. 100, kamera alt sisteminin sınırlayıcı darboğazını oluşturan paylaşılan kaynağın toplam kullanımını temsil eder. Bu çok kaba bir tahmin olabilir ve kamera hizmeti tarafından reklamı yapılan farklı kameraların birden fazla uygulama tarafından aynı anda açılmasına ne zaman izin verileceğini belirlemek için kamera hizmetine ipucu olarak kullanılır.
Kamera hizmeti, HAL tarafından sunulan kamera cihazlarının herhangi bir kombinasyonunu aynı anda açıp kullanabilmelidir. Bu kameraların kaynak maliyetlerinin toplamı <= 100 olmalıdır. Maliyeti belirlemek için her kamera cihazının, kamera meta verileri aracılığıyla bu cihaz için sunulan yapılandırma ayarlarında bulunan en fazla kaynak tüketen kare hızı ve akış boyutu ayarlarında yapılandırıldığı ve çalıştığı varsayılmalıdır.
Kamera hizmeti, toplam kaynak maliyeti 100'den fazla olan kamera cihazı kombinasyonlarını aynı anda açmaya çalışabilir. Bu işlem başarılı veya başarısız olabilir. Bu işlem başarılı olursa birden fazla açık cihazın kaynak kısıtlamaları nedeniyle desteklenmeyen yapılandırma kombinasyonları, yapılandırma çağrıları sırasında başarısız olur. Toplam kaynak maliyeti <= 100 ise akış yapılandırma ayarları veya yalnızca açık kamera cihazı olduğunda normalde başarılı olacak diğer cihaz özellikleri için açma ve yapılandırma işlemi hiçbir zaman başarısız olmaz.
Bu alan, diğer uygulamalar diğer kamera cihazlarını kullanırken arka plan uygulamalarının bu kamera cihazını kullanmasına izin verilip verilmeyeceğini belirlemek için kullanılır. Not: Kamera hizmeti, birden fazla uygulamanın aynı kamera cihazını aynı anda açmasına hiçbir zaman izin vermez.
Kullanım alanı örnekleri:
Ör. 1: Kamera Cihazı 0 = Arka Kamera Kamera Cihazı 1 = Ön Kamera
- Her iki kamera cihazını da kullanmak, sınırlı ISP bant genişliği nedeniyle kare hızında büyük bir yavaşlamaya neden olur.
Yapılandırma:
Kamera Cihazı 0 - resource_cost = 51 conflicting_devices = null Kamera Cihazı 1 - resource_cost = 51 conflicting_devices = null
Sonuç:
Kaynak maliyetlerinin toplamı 100'den fazla olduğundan, daha yüksek öncelikli bir uygulama bu cihazlardan birini açık tutuyorsa kamera hizmeti, daha düşük öncelikli uygulamaların bu cihazları açmasına izin vermez. Daha düşük öncelikli bir uygulama, daha yüksek öncelikli bir uygulamanın daha sonra açmaya çalıştığı bir cihazı kullanıyorsa düşük öncelikli uygulama, cihazın bağlantısını kesmek zorunda kalır.
En yüksek öncelikli uygulama, her iki cihazı da açmayı deneyebilir (bu cihazlar conflicting_devices alanlarında çakışan olarak listelenmediğinden). Ancak bu cihazların kullanımı, çağrıları açma veya yapılandırma sırasında başarısız olabilir.
Ör. 2: Kamera Cihazı 0 = Sol Arka Kamera Kamera Cihazı 1 = Sağ Arka Kamera Kamera Cihazı 2 = 0 ve 1 numaralı cihazlar tarafından kullanılan hem sağ hem de sol arka kamera sensörlerini kullanan birleşik stereo kamera Kamera Cihazı 3 = Ön Kamera
- Donanım kısıtlamaları nedeniyle aynı anda en fazla iki kamera açık olabilir. Birleştirilmiş stereo kamera, iki arka kamera cihazından (cihaz 0, 1) hiçbir zaman aynı anda kullanılamaz ve genellikle ön kamerayla (cihaz 3) aynı anda kullanılması için çok fazla bant genişliği gerekir.
Yapılandırma:
Kamera Cihazı 0 - resource_cost = 50 conflicting_devices = { 2 } Kamera Cihazı 1 - resource_cost = 50 conflicting_devices = { 2 } Kamera Cihazı 2 - resource_cost = 100 conflicting_devices = { 0, 1 } Kamera Cihazı 3 - resource_cost = 50 conflicting_devices = null
Sonuç:
Kamera hizmeti, conflicting_devices alanlarına göre aşağıdaki açık cihaz gruplarına hiçbir zaman izin verilmeyeceğini garanti eder: { 1, 2 }, { 0, 2 }.
resource_cost alanlarına göre, yüksek öncelikli bir ön plan uygulaması 0 numaralı kamera cihazını kullanıyorsa arka plan uygulamasının 1 veya 3 numaralı kamera cihazını açmasına izin verilir (ancak ön plan uygulaması başka bir cihaz açarsa tekrar bağlantısını kesmesi gerekir).
En yüksek öncelikli uygulama, 0, 2 ve 3 numaralı cihazları aynı anda açmaya çalışabilir ancak HAL, bu kombinasyon için açık veya yapılandır çağrılarında başarısız olabilir.
Ör. 3: Kamera Cihazı 0 = Arka Kamera Kamera Cihazı 1 = Ön Kamera Kamera Cihazı 2 = 1. cihazla aynı sensörü kullanan ancak yalnızca düşük güç modunda kullanılabilen görüntü akışı çözünürlüklerini gösteren düşük güç ön kamerası
-
Paylaşılan fiziksel sensör nedeniyle iki ön kamerayı (1. ve 2. cihaz) aynı anda kullanmak mümkün değildir. Arka ve "yüksek güçlü" ön kamera (1. cihaz), donanım sınırlamaları nedeniyle bazı yayın yapılandırmalarında kullanılamayabilir. Ancak özel donanıma sahip olduğu için "düşük güçlü" ön kamera seçeneği her zaman kullanılabilir.
Yapılandırma:
Kamera Cihazı 0 - resource_cost = 100 conflicting_devices = null Kamera Cihazı 1 - resource_cost = 100 conflicting_devices = { 2 } Kamera Cihazı 2 - resource_cost = 0 conflicting_devices = { 1 } Sonuç:
Kamera hizmeti, conflicting_devices alanlarına göre aşağıdaki açık cihaz gruplarına hiçbir zaman izin verilmeyeceğini garanti eder: { 1, 2 }.
resource_cost alanlarına göre, yalnızca en yüksek öncelikli uygulama hem 0 hem de 1 numaralı cihazı aynı anda açmayı deneyebilir. Daha yüksek öncelikli bir uygulama 1. veya 2. cihazı kullanmıyorsa düşük öncelikli bir arka plan uygulaması 2. cihazı açabilir (ancak daha yüksek öncelikli bir uygulama daha sonra 1. veya 2. cihazı açarsa bağlantısını kesmek zorunda kalır).
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_2_3 veya daha düşük:
Geçersiz. 100 olarak varsayılabilir. Bu alanı okumayın.
CAMERA_MODULE_API_VERSION_2_4 veya sonraki sürümler:
Her zaman geçerlidir.
Tanımı, camera_common.h dosyasının 376 satırı
const camera_metadata_t * static_camera_characteristics |
system/media/camera/docs/docs.html adresinde belirtilen tüm statik kamera meta verilerini içeren kameranın sabit özellikleri. Bu, sıralanmış bir meta veri arabelleği olmalıdır ve arayan tarafından değiştirilemez veya serbest bırakılamaz. İşaretçi, kamera modülünün kullanım ömrü boyunca geçerli kalmalıdır ve get_camera_info() tarafından döndürüldükten sonra içindeki değerler değişemez.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_1_0:
Geçerli değil. Ek özellikler kullanılamaz. Bu alanı okumayın.
CAMERA_MODULE_API_VERSION_2_0 veya sonraki sürümler:
device_version >= CAMERA_DEVICE_API_VERSION_2_0 ise geçerlidir. Aksi takdirde okumayın.
Tanımı, camera_common.h dosyasının 241. satırı içindedir.
Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
- hardware/libhardware/include/hardware/ camera_common.h