Camera_module Yapı Referansı

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 kamera_kimliği, struct kamera_info *bilgi)
int(* set_callbacks )(const kamera_module_callbacks_t *geri aramalar)
geçersiz(* 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 etkin)
int(* içinde )()
geçersiz * ayrılmış [5]

Detaylı Açıklama

Camera_common.h dosyasının 646. satırındaki tanım.

Saha Dokümantasyonu

Kamera modülünün yaygın yöntemleri. Bu yapının kullanıcıları, hw_module_t'nin bir kamera_module'e referans verdiğinin bilindiği bağlamlarda, kamera_module işaretçisine bir hw_module_t yayınlayacağından, bu, kamera_module'ün ilk üyesi olmalıdır .

Camera_module için common.methods->open'ın dönüş değerleri şunlardır:

0: Kamera cihazı başarıyla açıldığında.

-ENODEV: Kamera cihazı dahili bir hata nedeniyle açılamıyor.

-EINVAL: Giriş argümanları geçersiz, yani kimlik geçersiz ve/veya modül geçersiz.

-EBUSY: Kamera cihazı, cihazın HAL sürümüne bakılmaksızın, bu kamera kimliği için zaten açıldı (bu yöntemi veya open_legacy kullanarak).

-EUSERS: Aynı anda açılabilen maksimum sayıda kamera cihazı, bu yöntemle veya open_legacy yöntemiyle zaten açıldı.

Common.methods->open'den gelen diğer tüm dönüş değerleri -ENODEV olarak değerlendirilecektir.

Camera_common.h dosyasının 674. satırındaki tanım.

int(* get_camera_info)(int kamera_kimliği, struct kamera_info *bilgi)

get_camera_info:

Belirli bir kamera cihazı için statik kamera bilgilerini döndürün. Bu bilgiler bir kamera cihazı için değişmeyebilir.

Dönüş değerleri:

0: Başarılı bir işlemde

-ENODEV: Dahili bir hata nedeniyle bilgi sağlanamıyor.

-EINVAL: Giriş argümanları geçersiz, yani kimlik geçersiz ve/veya modül geçersiz.

Sürüm bilgileri (camera_module_t.common.module_api_version'a dayalı):

CAMERA_MODULE_API_VERSION_2_4 veya üzeri:

Bir kameranın bağlantısı kesildiğinde kamera kimliği geçersiz hale gelir. Bu yöntemi bu geçersiz kamera kimliğiyle çağırmak, -EINVAL ve NULL kamera statik meta verilerini ( camera_info.static_camera_characteristics ) alır.

Camera_common.h dosyasının 727. satırındaki tanım.

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'dan N-1'e kadar numaralandırılır; burada N, bu çağrının döndürdüğü değerdir. open() için kamera cihazının adı basitçe bir dizgeye dönüştürülen sayıdır. Yani kamera kimliği 0 için "0", kamera kimliği 1 için "1".

Sürüm bilgileri (camera_module_t.common.module_api_version'a dayalı):

CAMERA_MODULE_API_VERSION_2_3 veya daha düşük:

Buradaki değer statik olmalıdır ve bu yönteme yapılan ilk çağrıdan sonra değişemez.

CAMERA_MODULE_API_VERSION_2_4 veya üzeri:

Buradaki değer statik olmalı ve yalnızca CAMERA_FACING_BACK veya CAMERA_FACING_FRONT kameraya bakan değerlere ( camera_info.facing ) sahip yerleşik kameraları saymalıdır. HAL, bu çağrının dönüş değerine harici kameraları ( camera_info.facing == CAMERA_FACING_EXTERNAL) dahil etmemelidir. Çerçeveler, harici kameraların sayısını yönetmek için Camera_device_status_change geri çağrısını kullanacaktır.

Camera_common.h dosyasının 701. satırındaki tanım.

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

Satıcı uzantısı meta veri etiketi bilgilerini sorgulamak için yöntemler alın. HAL, tüm satıcı etiketi işlem yöntemlerini doldurmalı veya herhangi bir satıcı etiketi tanımlanmamışsa işlemleri değiştirmeden bırakmalıdır.

Burada kullanılan satıcı_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'a dayalı):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: HAL modülü tarafından sağlanmıyor. Çerçeve bu işlevi çağırmayabilir.

CAMERA_MODULE_API_VERSION_2_2: Çerçeve tarafından çağrılmak için geçerlidir.

Camera_common.h dosyasının 778. satırındaki tanım.

int(* başlangıç)()

içinde:

Bu yöntem, kamera HAL kitaplığı başarıyla yüklendikten hemen sonra, başka 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 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'a dayalı):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL modülü tarafından sağlanmaz. Çerçeve bu işlevi çağırmayacaktır.

CAMERA_MODULE_API_VERSION_2_4: NULL değilse, HAL modülü yüklendikten sonra, başka bir HAL modülü yöntemi çağrılmadan önce her zaman çerçeve tarafından bir kez çağrılacaktır.

Dönüş değerleri:

0: Başarılı bir işlemde.

-ENODEV: Dahili bir hata nedeniyle başlatma tamamlanamıyor. HAL'ın işlevsel olmayan bir durumda olduğu varsayılmalıdır.

Camera_common.h dosyasının 909. satırındaki tanım.

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ü tarafından birden fazla cihaz HAL API sürümü destekleniyorsa 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. Bir Kamera HAL modülünün, cihaz başına birden fazla cihaz HAL sürümünü desteklemesi gerekmez ve bu tür modüller, bu yönteme yapılan tüm çağrılar için -ENOSYS değerini döndürebilir. Desteklenmeyen tüm eski HAL cihazı API sürümleri için -EOPNOTSUPP değerini döndürebilir. Yukarıdaki durumlar meydana geldiğinde bunun yerine çerçeve tarafından normal open() yöntemi (common.methods->open) kullanılacaktır.

Sürüm bilgileri (camera_module_t.common.module_api_version'a dayalı):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: HAL modülü tarafından sağlanmaz. Çerçeve bu işlevi çağırmayacaktır.

CAMERA_MODULE_API_VERSION_2_3: Çerçeve tarafından çağrılmak için geçerlidir.

Dönüş değerleri:

0: Kamera cihazı başarıyla açıldığında.

-ENOSYS Bu yöntem desteklenmemektedir.

-EOPNOTSUPP: İstenen HAL sürümü bu yöntemle desteklenmiyor.

-EINVAL: Giriş argümanları geçersiz, yani kimlik geçersiz ve/veya modül geçersiz.

-EBUSY: Kamera cihazı, hangi cihaz olarak açılmış olursa olsun, bu kamera kimliği için zaten açılmıştı (bu yöntemi veya ortak yöntemler->açık yöntemi kullanarak).

-EUSERS: Aynı anda açılabilen maksimum sayıda kamera cihazı bu yöntemle veya common.methods->open yöntemiyle zaten açıldı.

Camera_common.h dosyasının 824. satırındaki tanım.

geçersiz* ayrılmış[5]

Camera_common.h dosyasının 912. satırındaki tanım.

int(* set_callbacks)(const kamera_module_callbacks_t *geri aramalar)

set_callback'ler:

Eşzamansız kamera modülü olaylarının çerçevesini bilgilendirmek için HAL modülüne geri arama işlevi işaretçileri sağlayın. Çerçeve, bu işlevi ilk kamera HAL modülü yüklemesinden 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 bir kez çağıracaktır.

Sürüm bilgileri (camera_module_t.common.module_api_version'a dayalı):

CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:

HAL modülü tarafından sağlanmaz. Çerçeve bu işlevi çağırmayabilir.

CAMERA_MODULE_API_VERSION_2_1:

Çerçeve tarafından çağrılmak için geçerlidir.

Dönüş değerleri:

0: Başarılı bir işlemde

-ENODEV: Dahili bir hatadan dolayı işlem tamamlanamıyor.

-EINVAL: Giriş argümanları geçersiz, yani geri aramalar boş

Camera_common.h dosyasının 758. satırındaki tanım.

int(* set_torch_mode)(const char *camera_id, bool etkin)

set_torch_mode:

Belirli bir kamera kimliğiyle ilişkili flaş ünitesinin fener modunu açın veya kapatın. İşlem başarılı olursa HAL, yeni durumla birlikte Camera_module_callbacks.torch_mode_status_change() işlevini çağırarak çerçeve torç durumunu bilgilendirmelidir.

Kamera cihazının flaş ünitesine erişimde daha yüksek önceliği vardır. Bir kamera cihazını açmak için open() çağrılması gibi herhangi bir kaynak çakışması olduğunda, HAL modülü, torç modunun kapatıldığını ve torç modu durumunun TORCH_MODE_STATUS_NOT_AVAILABLE haline geldiğini , Camera_module_callbacks.torch_mode_status_change() aracılığıyla çerçeveye bildirmelidir. Torç modunu açacak kaynaklar tekrar kullanılabilir hale geldiğinde, HAL modülü , set_torch_mode()'un çağrılması için fener modu durumunun TORCH_MODE_STATUS_AVAILABLE_OFF haline geldiğini Camera_module_callbacks.torch_mode_status_change() aracılığıyla çerçeveye bildirmelidir.

Çerçeve bir flaş ünitesinin fener modunu açmak için set_torch_mode() öğesini çağırdığında, HAL birden fazla fener modunu aynı anda açık tutamazsa, HAL önceki set_torch_mode() çağrısıyla açılan fener modunu kapatmalı ve çerçeveyi bilgilendirmelidir o flaş ünitesinin fener modu durumunun TORCH_MODE_STATUS_AVAILABLE_OFF haline geldiğini.

Sürüm bilgileri (camera_module_t.common.module_api_version'a dayalı):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL modülü tarafından sağlanmaz. Çerçeve bu işlevi çağırmayacaktır.

CAMERA_MODULE_API_VERSION_2_4: Çerçeve tarafından çağrılmak için geçerlidir.

Dönüş değerleri:

0: Başarılı bir işlemde.

-ENOSYS: Kamera cihazı bu işlemi desteklemiyor. Yalnızca android.flash.info.available false ise döndürülür.

-EBUSY: Kamera cihazı zaten kullanımda.

-EUSERS: Fener modunu açmak için gereken kaynaklar mevcut değildir, bunun nedeni genellikle diğer kamera cihazlarının flaş ünitesinin kullanımını mümkün kılmayacak şekilde kaynakları tutmasıdır.

-EINVAL: kamera_kimliği geçersiz.

Camera_common.h dosyasının 878. satırındaki tanım.


Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur: