Bu sayfada Kamera HAL'leri, API'ler ve ilişkili sürüm farklılıkları ayrıntılı olarak Uyumluluk Test Paketi (CTS) testleri. Ayrıca proje yönetiminde Android'deki kamera çerçevesini sağlamlaştırmak ve güvenceye almak için yapılan mimari değişiklikler 7.0, Android 8.0'da Treble'a geçiş ve satıcıların yapması gereken güncellemeler destekleyici araçlar mevcut.
Terminoloji
Bu sayfada aşağıdaki terimler kullanılır:
- Kamera API'si1
- Android 4.4 ve önceki sürümleri çalıştıran cihazlarda uygulama düzeyinde kamera çerçevesi gösteriliyor
android.hardware.Camera
sınıfı üzerinden. - Kamera API'sı2
- Android 5.0 ve sonraki sürümleri çalıştıran cihazlarda uygulama düzeyinde kamera çerçevesi gösteriliyor
android.hardware.camera2
paketiyle satın alınabilir. - Kamera donanım soyutlama katmanı
- SoC tedarikçileri tarafından uygulanan kamera modülü katmanı. Uygulama düzeyinde herkese açık çerçeveler, kamera donanım soyutlama katmanı (HAL) üzerine oluşturulur.
- Kamera HAL3.1
- Android 4.4 ile yayınlanan kamera cihazı HAL sürümü.
- Kamera HAL3.2
- Android 5.0 ile yayınlanan kamera cihazı HAL sürümü.
- Kamera API1 CTS
- Kameranın üzerinde çalıştırılan kamera CTS testleri API1.
- Kamera API2 CTS
- Kamera API2'nin üstünde çalıştırılan ek kamera CTS testleri.
- Tiz
- Tedarikçi firma uygulamasını ayırır (cihaza özgü, alt düzey yazılım) silikon üreticileri tarafından yazılmış) Android OS çerçevesinden satıcı arayüzüdür.
- İDL
- HAL arayüzü tanım dili Bu teknoloji, Treble ile birlikte sunuldu ve HAL ile HAL arasındaki arayüzü belirtmek için teslim etmeye odaklandığı teslimatı öğrendiniz.
- GD
- Tedarikçi test paketi, Tiz.
Kamera API'leri
Android aşağıdaki kamera API'lerini içerir.
Kamera API'si1
Android 5.0'ın desteği sonlandırılan Camera API1, yeni model olarak aşamalı olarak kullanımdan kaldırılmaya devam ediyor Kamera API2'ye odaklanıyor. Bununla birlikte, kullanımdan kaldırma dönemi ve Android sürümleri, şunun için Camera API1 uygulamalarını desteklemeye devam edecektir: biraz zaman alabilir. Özellikle aşağıdakiler için destek devam etmektedir:
- Uygulamalar için Camera API1 arayüzleri. Kamera üzerinde yerleşik olarak bulunan kamera uygulamaları API1, daha düşük Android sürümleri çalıştıran cihazlarda olduğu gibi çalışır.
- Kamera HAL sürümleri. Kamera HAL1.0 desteği dahildir.
Kamera API'sı2
Camera API2 çerçevesi, uygulamaya alt düzey kamera kontrolü sunar. verimli sıfır kopya seri çekim/akış akışları ve her kare için pozlama, kazanç, beyaz dengesi kazanımları, renk dönüştürme, parazit giderme, keskinleştirme, ve diğerleri. Ayrıntılı bilgi için Google I/O videosuna genel bakış.
Android 5.0 ve sonraki sürümler Camera API2'yi içerir; ancak Android çalıştıran cihazlar
5.0 ve sonraki sürümler tüm Camera API2 özelliklerini desteklemeyebilir. İlgili içeriği oluşturmak için kullanılan
Uygulamaların sorgulayabileceği android.info.supportedHardwareLevel
özellik
kamera API2 arayüzleri aracılığıyla aşağıdaki destek raporlarından
seviyeler:
LEGACY
: Bu cihazlar, özellikleri uygulamalara Kamera API2 arayüzleri, işlevlerle hemen hemen aynı olan işlevlere sahiptir. kamera API1 arayüzleri üzerinden uygulamalara gösterilir. Eski çerçeve kodu Camera API2 çağrılarını Camera API1 çağrılarına kavramsal olarak çevirir; eski cihazlar çerçeve başına kontrol gibi Kamera API2 özelliklerini desteklemiyor.LIMITED
: Bu cihazlar bazı Camera API2 özelliklerini destekliyor (Hepsini değil) ve Kamera HAL 3.2 veya sonraki bir sürümü kullanmalıdır.FULL
: Bu cihazlar, Android uygulamanızın tüm temel özelliklerini destekler Kamera API2; Kamera HAL 3.2 veya sonraki sürümleri ile Android 5.0 veya sonraki sürümleri kullanmalıdır.LEVEL_3
: Bu cihazlar YUV yeniden işlemeyi ve RAW resmi destekler ek çıkış akışı yapılandırmalarıyla birlikte yakalayabilir.EXTERNAL
: Bu cihazlarLIMITED
ile benzer cihazlar; örneğin, bazı sensör veya lens bilgileri, bildirilmez veya daha az istikrarlı kare hızına sahip olur. Bu düzey, harici kameralar ve cihazlar.
Bağımsız özellikler
Kamera API2'deki android.request.availableCapabilities
özelliği
kullanır. FULL
cihaz için MANUAL_SENSOR
ve
MANUAL_POST_PROCESSING
ve daha birçok özellik. İlgili içeriği oluşturmak için kullanılan
RAW
özelliği FULL
cihazlar için bile isteğe bağlıdır.
LIMITED
cihaz bu özelliklerin herhangi bir alt kümesini tanıtabilir.
ve bunların hiçbiri dahil değildir. Ancak BACKWARD_COMPATIBLE
özelliği
her zaman tanımlanmalıdır.
Cihazın desteklenen donanım düzeyi ve ilgili Kamera Desteklediği API2 özellikleri, aşağıdaki özellik bayraklarıyla sunulmaktadır: Kamera API2 kamera uygulamalarının Google Play tarafından filtrelenmesine izin ver.
android.hardware.camera.hardware_level.full
android.hardware.camera.capability.raw
android.hardware.camera.capability.manual_sensor
android.hardware.camera.capability.manual_post_processing
CTS koşulları
Android 5.0 ve sonraki sürümleri çalıştıran cihazlar Camera API1 CTS, Kamera API2 CTS ve CTS Doğrulayıcı kamera testleri.
Kamera HAL3.2 uygulaması bulunmayan ve bu özellik olmayan cihazlar
tam Camera API2 arayüzlerini destekleyebilen Kamera'dan yine de
API2 CTS testleri. Ancak cihaz Kamera API2'de çalışır
LEGACY
modu (Kamera API2 çağrılarının kavramsal olarak eşlendiği
kamera API1 çağrıları ile karşılaştırıldığında) özelliklerle ilgili herhangi bir Camera API2 CTS
Kamera API1 dışındaki özellikler otomatik olarak atlanır.
Eski cihazlarda, çalıştırılan Camera API2 CTS testleri mevcut herkese açık Camera API1 arayüzleri ve özellikleri gereksinimlerini karşılayın. Açığa çıkan (ve Camera API2 CTS hatasına neden olan) hatalar cihazın mevcut Kamera HAL'sinde zaten hatalar mevcuttur ve dolayısıyla, bulunabilir. Bu türde çok fazla hata beklemiyoruz (ancak Camera API2 CTS testlerini geçmek için bu tür hataların düzeltilmesi gerekir).
VTS gereksinimleri
Bağlayıcı HAL uygulamaları içeren Android 8.0 ve sonraki sürümleri çalıştıran cihazlar Kamerayı geç VTS testleri.
Kamera çerçevesi sağlamlaştırma
Android 7.0, medya ve kamera çerçevesi güvenliğini güçlendirmek için kamerayı hareket ettirir. olabilir. Android 8.0 sürümünden itibaren, tüm birleştirilmiş kameralar HAL, kamera hizmetinden ayrı bir işlemde çalışır. Tedarikçi firmaların kullanılan API ve HAL sürümlerine bağlı olarak kamera HAL'sindeki değişiklikler. İlgili içeriği oluşturmak için kullanılan aşağıdaki bölümlerde, HAL1 ve ve genel şartlara tabi olmalıdır.
API1 için mimari değişiklikler
API1 video kaydı, kamera ve video kodlayıcının aynı bahsedeceğim. Aşağıdaki cihazlarda API1 kullanılırken:
- Kamera hizmetinin, arabellekleri tedarikçi firma güncellemesi gerekmez.
- Video arabelleklerinde meta verilerin iletilmesini destekleyen HAL1, sağlayıcılar
kMetadataBufferTypeNativeHandleSource
kullanmak için HAL'yi güncelleyin. (kMetadataBufferTypeCameraSource
artık Android'de desteklenmiyor 7.0.)
API2 için mimari değişiklikler
BufferQueue, HAL1 veya HAL3'teki API2'de arabellekleri ileterek yolların devam etmesini sağlar. işe yarıyor. Aşağıdaki cihazlarda API2 için Android 7.0 mimarisi:
- HAL1, kamera hizmetinin taşınmasından etkilenmez ve satıcı yok güncelleme gerekli.
- HAL3 etkilenir ancak tedarikçi firma güncellemesi etkilenmez gerekli:
Diğer şartlar
Medya ve kamera çerçevesini sağlamlaştırmak için yapılan mimari değişiklikler aşağıdaki ek cihaz gereksinimlerini kapsar.
- Genel: Cihazlar, IPC nedeniyle ek bant genişliği gerektirir.
Bu durum, yüksek hızlı video gibi zamana duyarlı kamera kullanım alanlarını etkileyebilir.
kaydediyorum. Tedarikçiler, Ürün İş Listesi’ni
kullanarak
android.hardware.camera2.cts.PerformanceTest
ve Google Kamera uygulamasıdır. Cihazlarda ayrıca ek RAM ile işlem yapmanız gerekebilir. - Meta verileri video arabelleklerinde iletin (yalnızca HAL1). HAL1 ise
video arabelleklerinde gerçek YUV kare verileri yerine meta verileri depoladığında HAL,
meta veri arabelleği olarak
kMetadataBufferTypeNativeHandleSource
kullanVideoNativeHandleMetadata
yazıp video arabelleklerine geçirin. (kMetadataBufferTypeCameraSource
artık Android'de desteklenmiyor 7.0.)VideoNativeHandleMetadata
ile kamera ve medya çerçeveleri video arabelleklerini süreçler arasında serileştirme ve Yerel herkese açık kullanıcı adları düzgün şekilde seri durumdan çıkarılıyor. - Arabellek tutma yeri adresi her zaman aynı arabelleği depolamaz (yalnızca HAL3). HAL3, her yakalama isteği için arabellek adreslerini alır herkese açık kullanıcı adları için geçerlidir. HAL, tamponları tanımlamak için adresleri kullanamaz çünkü adresler başka bir arabellek tutma yeri içerebilir. Güncellemeniz gerekiyor tamponları tanımlamak için tampon tutamaçlarının kullanılmasıdır. Örneğin, HAL tampon tutamacı A'yı depolayan tampon tutamacı adresi. HAL geri döndükten sonra arabellek tutamacı A, arabellek tutma yeri adresi A, E-posta HAL tarafından alınır.
- Kamera sunucusu için SELinux politikalarını güncelleyin. Eğer cihaza özgü SELinux politikaları, medya sunucusuna kamerayı çalıştırmak için izin verir. kamera sunucusuna uygun izinleri vermek için SELinux politikalarını güncellemeniz gerekir. Biz Cameraserver için medya sunucusunun SELinux politikalarını tekrarlamaktan kaçınma (çünkü medya sunucusu ve kamera sunucusu genellikle sistem). Cameraserver yalnızca kamera işlemini gerçekleştirmek için gerekli izinlere sahip olmalıdır işlevleri ve medya sunucusunda kamerayla ilgili gereksiz izinler kaldırılmalıdır.
- Kamera HAL'si ile kamera sunucusu arasında ayırma. Android 8.0 ve sonraki sürümler, ayrıca birleştirilmiş Kamera HAL'sini kamera sunucusundan farklıdır. IPC HIDL tarafından tanımlanmış arayüzler.
Doğrulama
Kamerası olan ve Android 7.0 çalıştıran tüm cihazlarda uygulanması için Android 7.0 CTS kullanmanız gerekir. Ancak Android 7.0 bu özelliği kamera hizmeti değişikliklerini doğrulayan yeni CTS testleri, mevcut CTS testleri başarısız yukarıda belirtilen güncellemeleri yapmadıysanız.
Kamerası olan ve Android 8.0 ve sonraki sürümleri çalıştıran tüm cihazlarda doğrulama yapın: tedarikçinin uygulaması için VTS’yi çalıştırın.
Kamera HAL sürüm geçmişi
Android Kamera HAL'sini değerlendirmek üzere kullanılabilecek testlerin listesi için bkz. Kamera HAL Testi Yapılacaklar listesi.
Android 10
Android 10'da aşağıdaki güncellemeler sunuluyor.
Kamera API'si
- Fiziksel kameraların kullanılabilmesini sağlayan çoklu kamera iyileştirmeleri kullanılarak veya kameralar kullanılarak gizlenerek fiziksel kamera kimlikleri. Görüntüleyin Çoklu Kamera Desteği.
- Belirli bir oturum yapılandırmasının
Böylece, yeni oturum oluşturmanın performans yükü olmadan desteklenir.
Görüntüleyin
CameraDevice
. - Belirli bir kullanım için önerilen akış yapılandırmalarını alabilme
sağlamak için büyük bir fırsat sağlar. Görüntüleyin
getRecommendedStreamConfigurationMap
. - derinlikli JPEG resim biçimi. Daha ayrıntılı bilgi için Dinamik Derinlik spesifikasyonu.
- HEIC Resim biçimi. Görüntüleyin HEIF Görüntüleme.
- Gizlilikle ilgili iyileştirmeler. İstemci için belirli anahtarlar gerekiyor
sahip olmak
CAMERA
izinlerini almaları gerekirCameraCharacteristics
) GörüntüleyingetKeysNeedingPermission
değerleridir.
Kamera donanım soyutlama katmanı
Android'de aşağıdaki Kamera HAL sürümleri güncellendi 10.
3,5
ICameraDevice
-
getPhysicalCameraCharacteristics
: Mantıksal bir arka planlayan fiziksel kamera kimliğinin statik kamera bilgileri ekleyebilirsiniz. Görüntüleyin Çoklu Kamera Desteği. isStreamCombinationSupported
: Bu yöntem herkese açık İstemcilerin, bir oturum yapılandırmasının desteklenip desteklenmediğini sorgulamasına yardımcı olan API. Bkz. API kullanarak sorgu akışı kombinasyonlarını sorgulayabilirsiniz.
ICameraDeviceSession
-
isReconfigurationNeeded
: Kamera çerçevesine yayının tamamlanıp tamamlanmadığını bildiren yöntem Olası yeni oturum parametresi değerleri için yeniden yapılandırma gerekir. Bu kameranın gereksiz yeniden yapılandırma gecikmelerini önlemeye yardımcı olur. Görüntüleyin Oturum yeniden yapılandırma sorgusu. - HAL
arabellek yönetimi API'leri: Bu API'ler, kamera HAL'sinin istekte bulunmasına olanak tanır.
kamera çerçevesinden yalnızca gerektiğinde tampon oluşturur.
kamera ardışık düzeni boyunca ilişkili arabelleklerle
Bu da bellekten önemli ölçüde tasarruf
edilmesine neden olabilir.
-
signalStreamFlush
: HAL'ye, kameranın gerçekleştirecek olanconfigureStreams_3_5
ve HAL, belirtilen akışların tüm tamponlarını döndürmelidir. -
configureStreams_3_5
: Şuna benzer:ICameraDevice3.4.configureStreams
ancak şurada: ek olarak,streamConfigCounter
sayacıconfigureStreams_3_5
arasında yarış durumunu kontrol et vesignalStreamFlush
arama.
-
ICameraDeviceCallback
güncellemeleri:
-
requestStreamBuffers
: Kamera HAL'nin, kamera sunucusundan şunları istemek için çağırdığı eşzamanlı geri çağırma tamponları kullanır. GörüntüleyinrequestStreamBuffers
değerleridir. -
returnStreamBuffers
: Çıkış arabelleklerini tekrar deneyin. GörüntüleyinreturnStreamBuffers
değerleridir.
3,4
Aşağıdaki anahtarlar, Android'de kamera meta verilerine eklenir 10.
- Resim biçimleri
ANDROID_SCALER_AVAILABLE_FORMATS_RAW10
ANDROID_SCALER_AVAILABLE_FORMATS_RAW12
ANDROID_SCALER_AVAILABLE_FORMATS_Y8
- Kamera meta veri etiketleri
ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION
ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS
ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP
ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION
ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS
ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS
ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS
ANDROID_HEIC_INFO_SUPPORTED
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
- Özellikler
-
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
-
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
için değerler anahtarANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
- Kullanılabilir dinamik derinlik akış yapılandırmaları
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT
- Kullanılabilir HEIC akış yapılandırmaları
-
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT
-
Kamera modülü
Aşağıdaki kamera modülü sürümleri Android'de güncellendi 10.
2,5
- Cihazların bildirim göndermesi için
notifyDeviceStateChange
yöntemini ekler Katlama gibi fiziksel değişiklikler kamerayı etkilemesi ve yönlendirme.
2,4
- API düzeyi 29 veya sonraki sürümlerle başlatılan cihazlar ZORUNLUDUR
isTorchModeSupported
tarih aralığı içintrue
.
Android 9
Android 9 sürümünde, Camera API2 ve HAL arayüzü.
Kamera API'si
- Birden fazla kameraya sahip cihazları daha iyi desteklemek için çoklu kamera API'sini kullanıma sunar kameraların aynı yöne bakmasını sağlayarak bokeh ve zahmetsiz yakınlaştırma. Bu işlem, uygulamaların bir cihazdaki birden fazla kamerayı tek bir kamera olarak görüntülemesine olanak tanır mantıksal birim (mantıksal kamera). Yakalama istekleri, ve bir mantıksal kameranın çevrelediği kamera cihazları. Görüntüleyin Çoklu Kamera Desteği.
- Oturum parametrelerini sunar. Oturum parametreleri aşağıdaki durumlarda işlemede ciddi gecikmelere neden olabilecek yakalama parametrelerine sahiptir: değiştirildi. Müşteriler başlangıçtaki değerlerini geçerse bu maliyetler düşürülebilir başlatma sırasında kontrol edilmesi gerekir. Görüntüleyin Oturum Parametreleri.
- Uygulama düzeyinde sabitleme için optik sabitleme (OIS) veri anahtarları ekler ve
hoşuma gidiyor. Görüntüleyin
STATISTICS_OIS_SAMPLES
değerleridir. - Harici flaş desteği ekler. Görüntüleyin
CONTROL_AE_MODE_ON_EXTERNAL_FLASH
değerleridir. CAPTURE_INTENT
aralığına hareket izleme amacı ekler. GörüntüleyinCONTROL_CAPTURE_INTENT_MOTION_TRACKING
değerleridir.LENS_RADIAL_DISTORTION
öğesini kullanımdan kaldırır ve şunu ekler: bunun yerineLENS_DISTORTION
.CaptureRequest
içinde distorsiyon düzeltme modları ekler. GörüntüleyinDISTORTION_CORRECTION_MODE
değerleridir.- Desteklenen cihazlarda harici USB/UVC kameralar için destek ekler. Görüntüleyin
INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL
değerleridir.
Kamera donanım soyutlama katmanı
3,4
ICameraDeviceSession
ile ilgili güncellemeler
-
configureStreams_3_4
:sessionParameters
ve mantıksal kameralar için destek ekler. -
processCaptureRequest_3_4
: Yayın yapısına fiziksel kamera kimliklerini ekleme desteği eklendi.
ICameraDeviceCallback
ile ilgili güncellemeler
-
processCaptureResult_3_4
: Yakalama sonuçlarına fiziksel kamera meta verileri ekler.
3,3
Aşağıdaki anahtarlar, Android 9'da kamera meta verilerine eklenir.
- Özellikler
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME
- Kamera meta veri etiketleri
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES
ANDROID_LENS_POSE_REFERENCE
-
ANDROID_LENS_DISTORTION
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS
ANDROID_STATISTICS_OIS_DATA_MODE
ANDROID_STATISTICS_OIS_TIMESTAMPS
ANDROID_STATISTICS_OIS_X_SHIFTS
ANDROID_STATISTICS_OIS_Y_SHIFTS
Android 8.0
Treble, Android 8.0 sürümünde kullanıma sunuldu. Treble ile Kamera HAL'si uygulamalar, binderized. Ayrıca Android 8.0 , Kamera hizmetinde şu önemli geliştirmeleri içerir:
- Paylaşılan yüzeyler: Aynı içeriği paylaşan birden fazla yüzeyi etkinleştirin.
OutputConfiguration
. - Özel kamera modları için System API
onCaptureQueueEmpty
Bu özellikler hakkında daha fazla bilgi için aşağıdaki bölümlere bakın.
Paylaşılan yüzeyler
Bu özellik, Önizleme ve video kodlama gibi özellikler, güç ve bellek tüketimini azaltır. Alıcı: Bu özelliği desteklemesi durumunda, cihaz üreticilerinin kamera HAL'sini ve HAL'yi gralloc HAL uygulamaları, birden fazla tüketici (örneğin, donanım bestecisi/GPU ve kodlayıcıya göre değiştirilebilir. Kamera hizmeti kamera HAL'sine ve gralloc HAL'sine tüketici kullanım işaretleri gönderme; web sitesi üzerinden doğru arabellek türlerini ayırın veya kamera HAL'sinin bir hata döndürmesi gerekiyor. desteklenmediğini lütfen unutmayın.
enableSurfaceSharing
inceleyin.
geliştirici belgelerine bakın.
Özel kamera modları için System API
Genel kamera API'si iki çalışma modu tanımlar: normal ve kısıtlı
yüksek hızlı kayıt. Anlamları oldukça farklıdır. örneğin,
Yüksek hızlı modu, aynı anda en fazla iki belirli çıkışla sınırlıdır. Çeşitli
OEM'ler, mobil cihazlar için farklı özel modlar
donanıma özgü özellikler. Gelişmiş seçeneklerde mod sadece bir tam sayıdır
configure_streams
işlevine aktarıldı. Bkz.:
hardware/camera/device/3.2/ICameraDeviceSession#configurestreams
değerleridir.
Bu özellik, OEM kamera uygulamalarının bir kullanabilirsiniz. Bu modlar, çakışma olmaması için 0x8000 tam sayı değeriyle başlamalıdır herkese açık API'ye eklenecek yeni modlarla.
OEM'lerin bu özelliğin desteklenmesi için yeni modu HAL'lerine eklemesi yeterlidir. Configuration_streams'de HAL'ye iletilen ve bu tam sayı tarafından tetiklenen sistem API'sini kullanıyor.
Yöntem adı:
android.hardware.camera2.CameraDevice#createCustomCaptureSession
.
Bkz.:
frameworks/base/core/java/android/hardware/camera2/CameraDevice
değerleridir.
onCaptureQueueBlank
Bu API'nin amacı, yakınlaştırma gibi kontrol değişikliklerinin gecikmesini azaltmaktır:
istek sırasını mümkün olduğunca boş
tutmanız gerekir. onCaptureQueueEmpty
.
HAL çalışması gerektirmez; Tamamen çerçeve tarafında bir katkıydı. Şu uygulamalar:
bu çağrıya bir dinleyici eklemeniz ve ona yanıt vermeniz
sağlayabilir. Bunun için genellikle kameraya başka bir yakalama isteği gönderilir.
olanak tanır.
Kamera HIDL arayüzü
Kamera HIDL arayüzü, Kamera HAL arayüzünün eksiksiz bir revizyonudur. kullanın. Tüm özellikler ve kamera yetenekleri 3.4 ve 2.4'teki en son eski sürümlerde (kamera modülü) de HIDL tanımlarının bir parçasıdır.
3.4
Desteklenen meta verilere küçük eklemeler ve data_space desteğinde değişiklikler:
ANDROID_SENSOR_OPAQUE_RAW_SIZE
statik meta verisini zorunlu olarak ekle (RAW_OPAQUE
biçimi destekleniyorsa)ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
statik ekle meta verileri zorunlu olarak tanımlar.camera3_stream_t data_space
alanını daha esnek bir alana geçirin tanımında yer alır.- HALv3.2 veya daha yeni sürümler için kullanılabilecek genel meta veri eklemeleri:
-
ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL
ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL
ANDROID_SENSOR_OPAQUE_RAW_SIZE
ANDROID_SENSOR_OPTICAL_BLACK_REGIONS
-
3.3
Genişletilmiş özellikli HAL'nin küçük bir düzeltmesi:
- OPAQUE ve YUV yeniden işleme API güncellemeleri.
- Derinlik çıkış arabellekleri için temel destek.
data_space
alanının eklenmesicamera3_stream_t
.- Rotasyon alanının
camera3_stream_t
değerine eklenmesi. - Kamera3 akış yapılandırma çalışma modu şuna eklendi:
camera3_stream_configuration_t
3.2
Genişletilmiş özellikli HAL'nin küçük bir düzeltmesi:
get_metadata_vendor_tag_ops
kullanımdan kaldırılacak. Tekliflerinizi otomatikleştirmek ve optimize etmek için Bunun yerinecamera_common.h
içindeget_vendor_tag_ops
.register_stream_buffers
kullanımdan kaldırılacak. Tüm gralloc arabellekleriprocess_capture_request
bölgesinde HAL'ye çerçeve tarafından sağlanan yeni olabilir istediğiniz zaman izleyebilirsiniz.- Kısmi sonuç desteği ekleyin.
process_capture_result
şu olabilir: tam sonuçtan önce mevcut sonuçların bir alt kümesiyle birden çok kez çağrılır kullanılabilir. camera3_request_template
öğesine manuel şablon ekleyin. Uygulamalar yakalama ayarlarını doğrudan kontrol etmek için bu şablonu kullanabilir.- Çift yönlü ve giriş akışı spesifikasyonlarını yeniden oluşturun.
- Giriş arabelleği dönüş yolunu değiştirin. Tampon,
-
process_capture_result
process_capture_request
.
3.1
Genişletilmiş özellikli HAL'nin küçük bir düzeltmesi:
configure_streams
, tüketici kullanım işaretlerini HAL'ye iletir.- yayındaki tüm istekleri/arabellekleri mümkün olduğunca hızlı bir şekilde bırakmak için temizleme çağrısı.
3,0
Genişletilmiş özellikli HAL'nin ilk düzeltmesi:
- ABI tamamen farklı olduğundan büyük sürüm değişikliği. veya operasyonel model için 2.0'dan itibaren kullanılabilir.
- Giriş isteği ve akış sırası arayüzleri yeniden düzenlendi: HAL'ye yapılan çerçeve çağrıları sonraki istek ve akış arabellekleri zaten çıkarılmış. Senkronizasyon çerçevesi desteği dahil edilmiş ve etkili uygulamalar için gereklidir.
- Tetikleyiciler isteklere, çoğu bildirim ise sonuçlara taşındı.
- Tüm geri çağırmalar tek bir yapıda bir çerçevede birleştirildi ve tüm kurulumlar
yöntemleri tek bir
initialize()
çağrısında birleştirir. - Yayın yönetimini basitleştirmek için yayın yapılandırması, tek bir çağrıya dönüştürüldü.
Çift yönlü akışlar
STREAM_FROM_STREAM
yerinin yerini alıyor olacaktır. - Eski/sınırlı donanım cihazları için sınırlı mod anlamı.
2,0
Genişletilmiş özellikli HAL'nin (Android 4.2) [camera2.h] ilk sürümü:
- Mevcut
android.hardware.Camera
uygulamak için yeterli API'ye gidin. - Kamera hizmet katmanında ZSL sırasına izin verir.
- Manuel çekim kontrolü, Bayer RAW gibi yeni özellikler için test edilmemiştir. RAW verilerinin yakalanması, yeniden işlenmesi vb.
1,0
İlk Android kamera HAL'si (Android 4.0) [kamera.h]:
- C++ CameraDonanımInterface soyutlama katmanından dönüştürüldü.
android.hardware.Camera
API'yi destekler.
Kamera modülü sürüm geçmişi
Bu bölümde, Kamera donanımı için modül sürüm oluşturma bilgileri yer alır
modülünü kullanarak camera_module_t.common.module_api_version
test edin. İkisi
en önemli onaltılık basamak ana sürümü, en küçük iki
büyük, alt sürümü temsil eder.
2.4
Bu kamera modülü sürümü aşağıdaki API değişikliklerini ekler:
- Flaş modu desteği. Çerçeve, tüm kamera modları için flaş modunu açabilir
flaş ünitesi bulunan kamera cihazı (kamera cihazı açılmadan). İlgili içeriği oluşturmak için kullanılan
kameranın, flaş birimine erişim önceliği kameradan daha yüksek
module; bir kamera cihazı açıldığında, etkinleştirilmişse flaş kapatılır
üzerinden geçtik. Örneğin, herhangi bir kaynak çakışması olduğunda
open()
, kamera HAL modülünü (HAL modülü) açmak için çağrılır fener modu durum geri çağırması aracılığıyla çerçeveye flaşın modu kapatıldı. - Harici kamera (ör. USB çalışırken takılabilir kamera) desteği. İlgili içeriği oluşturmak için kullanılan
API güncellemeleri, kamera statik bilgilerinin yalnızca kamera açıkken kullanılabileceğini belirtir.
bağlı ve harici hotspot kameraları için kullanıma hazır. Durağanlaşma çağrıları
kamera durumu şu olmadığında bilgiler geçersiz aramalardır:
CAMERA_DEVICE_STATUS_PRESENT
Bu çerçeve yalnızca cihaz durumu değişikliği geri çağırmalarını kullanarak kullanılabilir harici kamera listesini yönetin. - Kamera tahkim ipuçları. Açıkça bildirmek için bir destek ekler
Aynı anda açılıp kullanılabilecek kamera cihazlarının sayısı. Alıcı:
geçerli cihaz kombinasyonlarını,
resource_cost
veconflicting_devices
alanlarıget_camera_info
tarafından döndürülencamera_info
yapısı çağrısına bir tıklama URL'si eklemeniz gerekir. - Modül başlatma yöntemi. Kamera hizmeti tarafından çağırıldı . Diğer modül yöntemleri çağrılmadan önce çağrılır.
2.3
Bu kamera modülü sürümü, eski açık kamera HAL cihazı desteğini ekler.
Çerçeve, bunu kamera cihazını daha düşük HAL sürümü olarak açmak için kullanabilir
Aynı cihaz birden fazla API sürümünü destekliyorsa HAL cihazı.
Standart donanım modülü açık çağrısı
(common.methods->open
) devam ediyor
Kamera cihazını, desteklenen en son sürümle açın.
ayrıca camera_info_t.device_version
sayfasında listelenen sürüm.
2,2
Bu kamera modülü sürümü, modülden satıcı etiketi desteğini ekler ve
Önceden yalnızca kullanılan eski vendor_tag_query_ops
desteği sonlandırılır
erişilebilir hale getirebilirsiniz.
2.1
Bu kamera modülü sürümü,
çerçeve oluşturmak için kullanılan kamera HAL modülünden
değişiklikleri hakkında bilgi edinin. Geçerli bir
set_callbacks()
yöntemi en az bu sürüm numarasını bildirmelidir.
2,0
Bu sürüm numarasını bildiren kamera modüllerinde ikinci sürüm kullanılıyor
kamera modülü HAL arayüzünün Bu araçla açılabilen kamera cihazları
modülü, kamera cihazının 1.0 veya 2.0 sürümünü destekleyebilir
HAL arayüzü. Camera_info öğesinin device_version
alanı her zaman
geçerli; static_camera_characteristics
alanı
device_version
alanı geçerliyse camera_info
geçerlidir
2.0 veya üzeri sürümler.
1,0
Bu sürüm numaralarını bildiren kamera modüllerinde,
kamera modülü HAL arayüzü. Bu araçla açılabilen tüm kamera cihazları
modül, kamera cihazı donanım soyutlama katmanının yalnızca 1. sürümünü destekliyor. İlgili içeriği oluşturmak için kullanılan
device_version
static_camera_characteristics
camera_info
alanları geçerli değil. Yalnızca
android.hardware.Camera
API, bu modül ve
cihazlar.