camera_module Yapı Referansı
#include <
camera_common.h
>
Veri Alanları |
|
hw_module_t | yaygın |
int(* | get_number_of_cameras )(void) |
int(* | get_camera_info )(int camera_id, struct camera_info *info) |
int(* | set_callbacks )(const camera_module_callbacks_t *callbacks) |
void(* | get_vendor_tag_ops )(vendor_tag_ops_t *ops) |
int(* | open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device) |
int(* | set_torch_mode )(const char *camera_id, bool enabled) |
int(* | init )() |
void * | reserved [5] |
Ayrıntılı Açıklama
Tanımı, camera_common.h dosyasının 646 satırı
Alan Belgeleri
hw_module_t common |
Kamera modülünün yaygın yöntemleri. Bu yapının kullanıcıları, hw_module_t camera_module i referans aldığı bilinen bağlamlarda hw_module_t camera_module işaretçisine bir camera_module yönelteceğinden bu, camera_module yapısının ilk üyesi olmalıdır.
camera_module için common.methods->open işlevinin döndürdüğü değerler şunlardır:
0: Kamera cihazı başarıyla açıldığında.
-ENODEV: Dahili bir hata nedeniyle kamera cihazı açılamıyor.
-EINVAL: Giriş bağımsız değişkenleri geçersizdir (ör. kimlik geçersizdir ve/veya modül geçersizdir).
-EBUSY: Kamera cihazı, açıldığı cihaz HAL sürümünden bağımsız olarak bu kamera kimliği için zaten açılmış (bu yöntem veya open_legacy kullanılarak).
-EUSERS: Eşzamanlı olarak açılabilecek maksimum kamera cihazı sayısı, bu yöntem veya open_legacy yöntemi kullanılarak zaten açılmış.
common.methods->open işlevinden döndürülen diğer tüm değerler -ENODEV olarak değerlendirilir.
Tanım, camera_common.h dosyasının 674. satırı içindedir.
int(* get_camera_info)(int camera_id, struct camera_info *info) |
get_camera_info:
Belirli bir kamera cihazıyla ilgili statik kamera bilgilerini döndürür. Bu bilgiler kamera cihazları için değişmeyebilir.
Döndürülen değerler:
0: Başarılı bir işlemde
-ENODEV: Dahili bir hata nedeniyle bilgiler sağlanamıyor.
-EINVAL: Giriş bağımsız değişkenleri geçersizdir (ör. kimlik geçersizdir ve/veya modül geçersizdir).
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_2_4 veya sonraki sürümler:
Bir kameranın bağlantısı kesildiğinde kamera kimliği geçersiz hale gelir. Bu yöntemi geçersiz kamera kimliğiyle çağırdığınızda -EINVAL ve NULL kamera statik meta verileri ( camera_info.static_camera_characteristics ) alırsınız.
Tanımı, camera_common.h dosyasının 727 satırı
int(* get_number_of_cameras)(void) |
get_number_of_cameras:
Kamera modülü aracılığıyla erişilebilen kamera cihazlarının sayısını döndürür. Kamera cihazları 0 ile N-1 arasında numaralandırılır. N, bu çağrı tarafından döndürülen değerdir. open() işlevi için kamera cihazının adı, yalnızca bir dizeye dönüştürülmüş sayıdır. Yani 0 kamera kimliği için "0", 1 kamera kimliği için "1".
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_2_3 veya daha düşük:
Buradaki değer statik olmalı ve bu yöntem ilk çağrıldıktan sonra değiştirilemez.
CAMERA_MODULE_API_VERSION_2_4 veya sonraki sürümler:
Buradaki değer statik olmalı ve yalnızca CAMERA_FACING_BACK veya CAMERA_FACING_FRONT kamera yönü değerlerine ( camera_info.facing ) sahip yerleşik kameraları saymalıdır. HAL, harici kameraları ( camera_info.facing == CAMERA_FACING_EXTERNAL) bu çağrının döndürülen değerine dahil etmemelidir. Çerçeveler, harici kamera sayısını yönetmek için camera_device_status_change geri çağırma işlevini kullanır.
Tanım, camera_common.h dosyasının 701 satırı
void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops) |
get_vendor_tag_ops:
Tedarikçi firma uzantısı meta veri etiketi bilgilerini sorgulamak için yöntemler alın. HAL, tüm tedarikçi etiketi işlem yöntemlerini doldurmalı veya tedarikçi etiketi tanımlanmamışsa işlemleri değiştirmeden bırakmalıdır.
Burada kullanılan vendor_tag_ops yapısı şurada tanımlanmıştır: system/media/camera/include/system/vendor_tags.h
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: HAL modülü tarafından sağlanmaz. Framework bu işlevi çağıramaz.
CAMERA_MODULE_API_VERSION_2_2: Çerçeve tarafından çağrılmak için geçerlidir.
Tanımı, camera_common.h dosyasının 778 satırı
int(* init)() |
init:
Bu yöntem, kamera HAL kitaplığı başarıyla yüklendikten hemen sonra, diğer yöntemler çağrılmadan önce kamera hizmeti tarafından çağrılır. Başlatma gerekmiyorsa HAL modülü tarafından NULL olarak bırakılabilir.
HAL uygulamaları tarafından ilk başlatma ve diğer tek seferlik işlemleri gerçekleştirmek için kullanılabilir.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL modülü tarafından sağlanmaz. Framework bu işlevi çağırmaz.
CAMERA_MODULE_API_VERSION_2_4: NULL değilse HAL modülü yüklendikten sonra, diğer HAL modülü yöntemleri çağrılmadan önce her zaman çerçeve tarafından çağrılır.
Döndürülen değerler:
0: Başarılı bir işlemde.
-ENODEV: Dahili bir hata nedeniyle ilklendirme tamamlanamıyor. HAL'in çalışmaz durumda olduğu varsayılmalıdır.
Tanımı, camera_common.h dosyasının 909 satırı
int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device) |
open_legacy:
Bu kamera HAL modülü birden fazla cihaz HAL API sürümü destekliyorsa belirli bir eski kamera HAL cihazını açın. Örneğin, kamera modülü aynı kamera kimliği için hem CAMERA_DEVICE_API_VERSION_1_0 hem de CAMERA_DEVICE_API_VERSION_3_2 cihaz API'sini destekliyorsa çerçeve, kamera cihazını CAMERA_DEVICE_API_VERSION_1_0 cihazı olarak açmak için bu işlevi çağırabilir.
Bu isteğe bağlı bir yöntemdir. Kamera HAL modülünün cihaz başına birden fazla cihaz HAL sürümü desteklemesi gerekmez ve bu tür modüller bu yönteme yapılan tüm çağrılar için -ENOSYS döndürebilir. Desteklenmeyen tüm eski HAL cihaz API sürümleri için -EOPNOTSUPP döndürülebilir. Yukarıdaki durumlar gerçekleştiğinde çerçeve bunun yerine normal open() yöntemini (common.methods->open) kullanır.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: HAL modülü tarafından sağlanmaz. Framework bu işlevi çağırmaz.
CAMERA_MODULE_API_VERSION_2_3: Çerçeve tarafından çağrılmak için geçerlidir.
Döndürülen değerler:
0: Kamera cihazı başarıyla açıldığında.
-ENOSYS Bu yöntem desteklenmiyor.
-EOPNOTSUPP: İstenen HAL sürümü bu yöntem tarafından desteklenmiyor.
-EINVAL: Giriş bağımsız değişkenleri geçersizdir (ör. kimlik geçersizdir ve/veya modül geçersizdir).
-EBUSY: Kamera cihazı, açıldığı cihaz HAL sürümünden bağımsız olarak bu kamera kimliği için zaten açılmış (bu yöntem veya common.methods->open yöntemi kullanılarak).
-EUSERS: Eşzamanlı olarak açılabilecek maksimum kamera cihazı sayısı, bu yöntem veya common.methods->open yöntemi kullanılarak zaten açılmıştır.
Tanım, camera_common.h dosyasının 824 satırı
void* reserved[5] |
Tanımı, camera_common.h dosyasının 912 satırı
int(* set_callbacks)(const camera_module_callbacks_t *callbacks) |
set_callbacks:
Çerçeveyi asenkron kamera modülü etkinlikleri hakkında bilgilendirmek için HAL modülüne geri çağırma işlevi işaretçileri sağlayın. Çerçeve, ilk kamera HAL modülü yüklendikten sonra, get_number_of_cameras() yöntemi ilk kez çağrıldıktan sonra ve modüle yapılan diğer çağrılardan önce bu işlevi bir kez çağırır.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:
HAL modülü tarafından sağlanmaz. Framework bu işlevi çağıramaz.
CAMERA_MODULE_API_VERSION_2_1:
Çerçeve tarafından çağrılmaya uygundur.
Döndürülen değerler:
0: Başarılı bir işlemde
-ENODEV: İşlem, dahili bir hata nedeniyle tamamlanamıyor.
-EINVAL: Giriş bağımsız değişkenleri geçersizdir (ör. geri çağırmalar null'dır)
Tanımı, camera_common.h dosyasının 758 satırı
int(* set_torch_mode)(const char *camera_id, bool enabled) |
set_torch_mode:
Belirli bir kamera kimliğiyle ilişkili flaş biriminin el feneri modunu açın veya kapatın. İşlem başarılı olursa HAL, yeni durumla birlikte camera_module_callbacks.torch_mode_status_change() çağrısını kullanarak çerçevenin el feneri durumunu bildirmelidir.
Kamera cihazı, flaş birimine erişme konusunda daha yüksek önceliğe sahiptir. Bir kamera cihazını açmak için open() çağrıldığı gibi kaynak çakışması olduğunda HAL modülü, el feneri modunun kapatıldığını ve el feneri modu durumunun TORCH_MODE_STATUS_NOT_AVAILABLE olduğunu camera_module_callbacks.torch_mode_status_change() aracılığıyla çerçeveye bildirmelidir. El feneri modunu açma kaynakları tekrar kullanılabilir hale geldiğinde HAL modülü, set_torch_mode() işlevinin çağrılabilmesi için el feneri modu durumunun TORCH_MODE_STATUS_AVAILABLE_OFF olduğunu camera_module_callbacks.torch_mode_status_change() aracılığıyla çerçeveye bildirmelidir.
Bir flash birimin flash modunu açmak için temel sistem set_torch_mode() set_torch_mode() çağrısı yaptığında, temel sistem birden fazla flash modunu aynı anda açık tutamazsa önceki bir set_torch_mode() çağrısıyla açılan flash modunu kapatmalı ve temel sistemin flash modu durumunun TORCH_MODE_STATUS_AVAILABLE_OFF olduğunu temel sisteme bildirmelidir.
Sürüm bilgileri (camera_module_t.common.module_api_version'e göre):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL modülü tarafından sağlanmaz. Framework bu işlevi çağırmaz.
CAMERA_MODULE_API_VERSION_2_4: Çerçeve tarafından çağrılmak için geçerlidir.
Döndürülen değerler:
0: Başarılı bir işlemde.
-ENOSYS: Kamera cihazı bu işlemi desteklemiyor. Yalnızca android.flash.info.available yanlışsa döndürülür.
-EBUSY: Kamera cihazı zaten kullanılıyor.
-EUSERS: El feneri modunu açmak için gereken kaynaklar kullanılamıyor. Bunun nedeni genellikle diğer kamera cihazlarının, flaş birimini kullanılamaz hale getirmek için kaynakları elinde tutmasıdır.
-EINVAL: camera_id geçersiz.
Tanımı, camera_common.h dosyasının 878 satırı
Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
- hardware/libhardware/include/hardware/ camera_common.h