Kamera Versiyonu Desteği

Bu sayfa Kamera HAL'lere, API'ler ve ilişkili sürüm farklılıklarını ayrıntıları Uyumluluk Testi Suite (CTS) testlerinde. Ayrıca, Android 7.0'da kamera çerçevesini sağlamlaştırmak ve güvenceye almak için yapılan çeşitli mimari değişiklikleri, Android 8.0'da Treble'a geçişi ve satıcıların kamera uygulamalarında bu değişiklikleri desteklemek için yapmaları gereken güncellemeleri kapsar.

terminoloji

Bu sayfada aşağıdaki terimler kullanılmaktadır:

Kamera API1
Yoluyla maruz Android 4.4 ve daha düşük cihazlardaki uygulama düzeyinde Kamera çerçeve, android.hardware.Camera sınıfında.
Kamera API2
Yoluyla maruz Android 5.0 ve üzeri cihazlarda uygulama düzeyinde Kamera çerçeve, android.hardware.camera2 pakette.
kamera HAL
SoC satıcıları tarafından uygulanan kamera modülü katmanı. Uygulama düzeyindeki genel çerçeveler, HAL kamerasının üzerine inşa edilmiştir.
Kamera HAL3.1
Android 4.4 ile piyasaya sürülen kamera cihazı HAL sürümü.
Kamera HAL3.2
Android 5.0 ile piyasaya sürülen kamera cihazı HAL'ın sürümü.
Kamera API1 CTS
Camera API1'in üzerinde çalışan kamera CTS testleri seti.
Kamera API2 CTS'si
Camera API2'nin üzerinde çalışan ek kamera CTS testleri seti.
tiz
Satıcı uygulamasını (silikon üreticileri tarafından yazılan cihaza özel, daha düşük seviyeli yazılım) yeni bir satıcı arayüzü aracılığıyla Android işletim sistemi çerçevesinden ayırır.
HIDL
HAL arayüz tanımlama dili Tiz ile tanıtıldı ve bir HAL ve kullanıcıları arasındaki arayüzü belirtmek için kullanılır.
VTS
Satıcı test paketi Tiz yanında tanıttı.

Kamera API'leri

Android, aşağıdaki kamera API'lerini içerir.

Kamera API1

Yeni platform geliştirmenin Camera API2'ye odaklanmasıyla aşamalı olarak kullanımdan kaldırılmaya devam eden Android 5.0, Camera API1'i kullanımdan kaldırdı. Ancak, aşamalı olarak kullanımdan kaldırma süresi uzun olacak ve Android sürümleri, bir süreliğine Camera API1 uygulamalarını desteklemeye devam edecek. Spesifik olarak, aşağıdakiler için destek devam etmektedir:

  • Uygulamalar için kamera API1 arayüzleri. Camera API1 üzerine kurulu kamera uygulamaları, daha düşük Android sürüm sürümlerini çalıştıran cihazlarda olduğu gibi çalışmalıdır.
  • Kamera HAL sürümleri. Camera HAL1.0 için destek içerir.

Kamera API2

Camera API2 çerçevesi, etkin sıfır kopyalı seri çekim/akış akışları ve kare başına pozlama, kazanç, beyaz dengesi kazanımları, renk dönüştürme, gürültü giderme, keskinleştirme ve daha fazlasını içeren daha düşük seviyeli kamera kontrolünü uygulamaya sunar. Ayrıntılar için izlemek Google I / O genel bakış videosuna .

Android 5.0 ve sonraki sürümleri, Camera API2'yi içerir; ancak, Android 5.0 ve sonraki sürümleri çalıştıran cihazlar, tüm Camera API2 özelliklerini desteklemeyebilir. android.info.supportedHardwareLevel uygulamalar Kamera API2 arayüzleri üzerinden sorgulayabilir o özellik aşağıdaki destek seviyeleri biri raporlar:

  • LEGACY : Bu cihazlar yaklaşık Kamera API1 arayüzleri uygulamalarla maruz aynıdır yetenekleri vardır Kamera API2 arayüzleri uygulamalarla yetenekleri gösterilir. Eski çerçeve kodu, Camera API2 çağrılarını kavramsal olarak Camera API1 çağrılarına dönüştürür; eski cihazlar, kare başına kontroller gibi Camera API2 özelliklerini desteklemez.
  • LIMITED : Bu cihazlar, bazı Kamera API2 yetenekleri (hepsi değil) desteklemek ve Kamera HAL 3.2 veya daha yüksek kullanmalıdır.
  • FULL : Bu cihazlar Kamera API2 başlıca tüm yetenekleri desteklemek ve Kamera HAL 3.2 veya daha yüksek ve Android 5.0 veya daha yüksek kullanmalıdır.
  • LEVEL_3 : Bu cihazlar, ek çıkış akımı yapılandırmaları ile birlikte, YUV yeniden işleme ve RAW görüntü yakalama destekler.
  • EXTERNAL : Bu cihazlar benzer LIMITED bazı istisnalar dışında cihazlar; örneğin, bazı sensör veya lens bilgileri raporlanmayabilir veya daha az sabit kare hızlarına sahip olabilir. Bu seviye, USB web kameraları gibi harici kameralar için kullanılır.

Bireysel yetenekleri sayesinde maruz android.request.availableCapabilities Kamera API2 arayüzlerinde mülk. FULL cihazlar gerektiren MANUAL_SENSOR ve MANUAL_POST_PROCESSING diğerleri arasında, yetenekleri. RAW yeteneği bile isteğe bağlıdır FULL cihazlar. LIMITED cihazlar bunların hiçbiri dahil olmak üzere bu yetenekleri herhangi bir kısmını reklam verebilirsiniz. Ancak BACKWARD_COMPATIBLE yeteneği her zaman tanımlanmalıdır.

Cihazın desteklenen donanım düzeyi ve desteklediği belirli Camera API2 özellikleri, Google Play'in Camera API2 kamera uygulamalarını filtrelemesine izin vermek için aşağıdaki özellik işaretleri olarak mevcuttur.

  • 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 gereksinimleri

Android 5.0 ve sonraki sürümleri çalıştıran cihazlar, Camera API1 CTS, Camera API2 CTS ve CTS Verifier kamera testlerini geçmelidir.

Camera HAL3.2 uygulamasına sahip olmayan ve tam Camera API2 arabirimlerini destekleyemeyen cihazlar yine de Camera API2 CTS testlerini geçmelidir. Ancak, Kamera API2 cihaz çalışır LEGACY (Kamera API2 aramalar kavramsal Kamera API1 çağrılarına eşleştirilmiş edildiği) Herhangi Kamera API2 CTS Kamera API1 ötesinde özellikler veya yetenekleri ile ilgili testler böylece modunda otomatik atlanır vardır.

Eski cihazlarda, yürütülen Camera API2 CTS testleri, yeni gereksinim olmaksızın mevcut genel Camera API1 arayüzlerini ve özelliklerini kullanır. Ortaya çıkan (ve bir Camera API2 CTS hatasına neden olan) hatalar, cihazın mevcut Camera HAL'inde zaten mevcut olan hatalardır ve bu nedenle mevcut Camera API1 uygulamaları tarafından bulunabilir. Bu türden pek çok hata beklemiyoruz (ancak, Camera API2 CTS testlerini geçmek için bu tür hataların düzeltilmesi gerekir).

VTS gereksinimleri

Binderized HAL uygulamaları ile Android 8.0 ve üzeri çalıştıran cihazlar Kamera geçmelidir VTS testleri .

Kamera çerçevesi sertleştirme

Medya ve kamera çerçevesi güvenliğini güçlendirmek için Android 7.0, kamera hizmetini medya sunucusundan çıkarır. Android 8.0'dan itibaren, her bir ciltlenmiş Camera HAL, kamera hizmetinden ayrı bir işlemde çalışır. Satıcıların, kullanılan API ve HAL sürümlerine bağlı olarak kamera HAL'inde değişiklik yapmaları gerekebilir. Aşağıdaki bölümler, genel gereksinimlerin yanı sıra HAL1 ve HAL3 için AP1 ve AP2'deki mimari değişiklikleri detaylandırmaktadır.

API1 için mimari değişiklikler

API1 video kaydı, kamera ve video kodlayıcının aynı süreçte yaşadığını varsayabilir. API1 kullanırken:

  • Kamera hizmeti işlemleri arasında tampon geçmesine BufferQueue kullanır HAL3, hiçbir satıcı güncelleme gereklidir.

    HAL3'te API1'de Android 7.0 kamera ve medya yığını

    Şekil 1. Android 7.0 kamera ve medya HAL3 üzerinde API1 içinde yığını

  • Video arabelleğe meta verileri geçen destekler HAL1, satıcılar kullanmak HAL güncellemeniz gerekir kMetadataBufferTypeNativeHandleSource . ( kMetadataBufferTypeCameraSource artık Android'de 7.0 desteklenir.)

    HAL1'de API1'de Android 7.0 kamera ve medya yığını

    Şekil 2. Android 7.0 kamera ve medya HAL1 üzerinde API1 içinde yığını

API2 için mimari değişiklikler

HAL1 veya HAL3 üzerindeki API2 için BufferQueue arabellekleri geçirir, böylece bu yollar çalışmaya devam eder. API2 için Android 7.0 mimarisi:

  • HAL1 cameraservice hareket etkilenmez ve hiçbir satıcı güncelleme gereklidir.
  • HAL3 etkilenen, ama hiçbir satıcı güncelleme gereklidir:

    HAL3'te API2'de Android 7.0 kamera ve medya yığını

    Şekil 3. Android 7.0 kamera ve medya HAL3 ile API2 yığını

Ek gereksinimler

Sertleştirme ortamı ve kamera çerçevesi güvenliği için yapılan mimari değişiklikler, aşağıdaki ek cihaz gereksinimlerini içerir.

  • Genel. Cihazlar, yüksek hızlı video kaydı gibi zamana duyarlı kamera kullanım durumlarını etkileyebilecek olan IPC nedeniyle ek bant genişliği gerektirir. Satıcılar çalıştırarak gerçek etkisini ölçebilir android.hardware.camera2.cts.PerformanceTest ve 120/240 FPS yüksek hızlı video kaydı için Google Kamera uygulamasını. Cihazlar ayrıca yeni işlemi oluşturmak için az miktarda ek RAM gerektirir.
  • Video arabelleğe meta verileri geçirin (HAL1 için). HAL1 depolar bunun yerine video tampon gerçek YUV çerçeve verilerinin HAL kullanmalıdır meta verileri ise kMetadataBufferTypeNativeHandleSource meta tampon türü ve geçiş VideoNativeHandleMetadata Video tamponlar içinde. ( kMetadataBufferTypeCameraSource ile artık Android 7.0. Desteklenir) VideoNativeHandleMetadata , kamera ve medya çerçeveler seri ve düzgün yerli kolları deserializing tarafından süreçler arasında video tamponlarını geçmek edebiliyoruz.
  • Tampon kolu adresinin hep aynı tampon saklamaz (HAL3 için). Her yakalama isteği için HAL3, arabellek tutamaçlarının adreslerini alır. HAL, arabellekleri tanımlamak için adresleri kullanamaz, çünkü HAL arabelleği döndürdükten sonra adresler başka bir arabellek tanıtıcısı depolayabilir. Arabellekleri tanımlamak için arabellek tanıtıcılarını kullanmak için HAL'ı güncellemeniz gerekir. Örneğin, HAL, arabellek tanıtıcısı A'yı depolayan bir arabellek tanıtıcı adresi A alır. HAL, arabellek tanıtıcı A'yı döndürdükten sonra, arabellek tanıtıcı adresi A, HAL'in bir sonraki aldığında arabellek tanıtıcısı B'yi depolayabilir.
  • Cameraserver için SELinux politikalarını güncelleyin. Cihaza özel SELinux politikaları medya sunucusuna kamerayı çalıştırma izinleri veriyorsa, kamera sunucusuna uygun izinler vermek için SELinux politikalarını güncellemeniz gerekir. Medya sunucusunun SELinux ilkelerini kamera sunucusu için kopyalamayı önermiyoruz (medya sunucusu ve kamera sunucusu genellikle sistemde farklı kaynaklar gerektirdiğinden). Kamera sunucusu yalnızca kamera işlevlerini gerçekleştirmek için gereken izinlere sahip olmalı ve medya sunucusundaki kamerayla ilgili gereksiz tüm izinler kaldırılmalıdır.
  • Camera HAL ve kamera sunucusu arasındaki ayrım. Android 8.0 ve üstü, ayrıca, kamera sunucusundan farklı bir işlemde, ciltlenmiş Camera HAL'ı ayırır. IPC geçer HIDL tanımlı arayüzler.

doğrulama

Bir kamera içeren ve Android 7.0 çalıştıran tüm cihazlar için, Android 7.0 CTS çalıştırarak uygulamayı doğrulayın. Android 7.0, kamera hizmeti değişikliklerini doğrulayan yeni CTS testleri içermese de, yukarıda belirtilen güncellemeleri yapmadıysanız mevcut CTS testleri başarısız olur.

Bir kamera içeren ve Android 8.0 ve sonraki sürümlerini çalıştıran tüm cihazlar için VTS'yi çalıştırarak satıcı uygulamasını doğrulayın.

Kamera HAL sürüm geçmişi

Android Kamera HAL değerlendirilmesi için kullanılabilir testlerin bir listesi için bkz Kamera HAL Test Kontrol Listesi .

Android 10

Android 10, aşağıdaki güncellemeleri sunar.

Kamera API'sı

kamera HAL

Aşağıdaki Camera HAL sürümleri Android 10'da güncellenmiştir.

3.5

ICameraDevice

  • getPhysicalCameraCharacteristics : mantıksal kamera cihazı arkalık Fiziksel kamera ID statik kamera bilgiler. Bkz Çoklu Kamera Desteği .
  • isStreamCombinationSupported : Bu yöntem bir oturum yapılandırması destekleniyorsa istemcileri sorgu yardımcı olan bir kamu API destekler. Bkz sorgu akışı kombinasyonlarına API .

ICameraDeviceSession

  • isReconfigurationNeeded : komple akışı yeniden yapılandırılması olası yeni bir oturum parametre değerleri için gerekli olup olmadığını kamera çerçevesini söyler Yöntemi. Bu, gereksiz kamera yeniden yapılandırma gecikmelerini önlemeye yardımcı olur. Bkz Oturum yeniden yapılandırma sorgusu .
  • HAL Tampon yönetim API : Bu API'ler potansiyel olarak önemli bellek tasarrufu ile sonuçlanır kamera boru hattı boyunca ilişkili tamponlar ile her çekim isteği bağlanması yerine sadece gerekli kamera çerçevesinden talep tampon kamera HAL sağlar.
    • signalStreamFlush : Kamera hizmeti gerçekleştirmek üzere olduğunu HAL Sinyaller configureStreams_3_5 ve HAL belirlenen akışlarının tüm tamponları iade gerektiğini söyledi.
    • configureStreams_3_5 : Benzer ICameraDevice3.4.configureStreams fakat ek olarak, streamConfigCounter sayacı arasındaki bir yarış durumu kontrol etmek için sağlanmıştır configureStreams_3_5 ve signalStreamFlush aramalar.

Güncellemeler ICameraDeviceCallback :

  • requestStreamBuffers : HAL tamponları için kamera sunucusunu sormaya çağıran kamera o Senkron geri arama. Bkz requestStreamBuffers .
  • returnStreamBuffers : Kamera HAL için Senkron geri arama kamera sunucusuna çıkış tamponlarını dönmek için. Bkz returnStreamBuffers .

3.4

Android 10'da kamera meta verilerine aşağıdaki tuşlar eklenir.

  • Görüntü 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
  • yetenekler
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
  • İçin değerler ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT anahtarının
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
  • Mevcut 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 10'da güncellenmiştir.

2.5

  • Ekler notifyDeviceStateChange katlanır gibi fiziksel değişiklikler, kamera ve yönlendirme etkilediğinde cihazlar kamera HAL bildirmek için bir yöntem.

2.4

  • API düzeyinde 29 veya daha yüksek durumda lanse Cihazlar raporuna GEREKİR true için isTorchModeSupported .

Android 9

Android 9 sürümü, kamera API2 ve HAL arayüzü için aşağıdaki güncellemeleri sunar.

Kamera API'sı

  • Aynı yöne bakan birden fazla kameraya sahip cihazları daha iyi desteklemek için çoklu kamera API'sini sunar ve bokeh ve kusursuz yakınlaştırma gibi özellikleri etkinleştirir. Bu, uygulamaların bir cihazdaki birden fazla kamerayı tek bir mantıksal birim (mantıksal kamera) olarak görüntülemesine olanak tanır. Yakalama istekleri, tek bir mantıksal kamera tarafından kapsanan ayrı kamera cihazlarına da gönderilebilir. Bkz Çoklu Kamera Desteği .
  • Oturum parametrelerini tanıtır. Oturum parametreleri, değiştirildiğinde ciddi işleme gecikmelerine neden olabilen mevcut yakalama parametrelerinin bir alt kümesidir. İstemciler, yakalama oturumu başlatma sırasında başlangıç ​​değerlerini geçerse, bu maliyetler azaltılabilir. Bkz Oturum Parametreleri .
  • Uygulama düzeyinde sabitleme ve efektler için optik sabitleme (OIS) veri anahtarları ekler. Bkz STATISTICS_OIS_SAMPLES .
  • Harici flaş desteği ekler. Bkz CONTROL_AE_MODE_ON_EXTERNAL_FLASH .
  • İçinde niyet izleme hareketi ekler CAPTURE_INTENT . Bkz CONTROL_CAPTURE_INTENT_MOTION_TRACKING .
  • Artık kullanılmayacağı LENS_RADIAL_DISTORTION ve ekler LENS_DISTORTION onun yerine.
  • İçinde distorsiyon düzeltme modları ekler CaptureRequest . Bkz DISTORTION_CORRECTION_MODE .
  • Desteklenen cihazlarda harici USB/UVC kameralar için destek ekler. Bkz INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL .

kamera HAL

3.4

Güncellemeler ICameraDeviceSession

Güncellemeler ICameraDeviceCallback

3.3

Android 9'da kamera meta verilerine aşağıdaki tuşlar eklenir.

  • yetenekler
    • 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

Android 8.0 sürümü Treble'ı sunar. Tiz ile satıcı Kamera HAL uygulamaları gerekmektedir binderized . Android 8.0, Kamera hizmetinde şu önemli geliştirmeleri de içerir:

  • Paylaşılan yüzeyler: Aynı paylaşan birden yüzeyleri etkinleştirme OutputConfiguration
  • Özel kamera modları için sistem API'si
  • onCaptureQueueEmpty

Bu özellikler hakkında daha fazla bilgi için aşağıdaki bölümlere bakın.

Paylaşılan yüzeyler

Bu özellik, güç ve bellek tüketimini azaltan önizleme ve video kodlama gibi iki çıktıyı çalıştırmak için yalnızca bir arabellek kümesi sağlar. Bu özelliği desteklemek için, cihaz üreticilerinin kamera HAL ve gralloc HAL uygulamalarının tek bir tüketici yerine birden çok farklı tüketici (donanım oluşturucu/GPU ve video kodlayıcı gibi) tarafından kullanılan gralloc arabellekleri oluşturabildiğinden emin olmaları gerekir. Kamera hizmeti, tüketici kullanım bayraklarını kamera HAL'ına ve gralloc HAL'a iletir; ya doğru türde arabellekleri ayırmaları gerekir ya da kamera HAL'ının bu tüketici kombinasyonunun desteklenmediğine dair bir hata döndürmesi gerekir.

Bkz enableSurfaceSharing Ek ayrıntılar için geliştirici belgelerinde.

Özel kamera modları için sistem API'si

Genel kamera API'si iki çalışma modu tanımlar: normal ve kısıtlı yüksek hızlı kayıt. Oldukça farklı anlambilimleri vardır; örneğin, yüksek hız modu, aynı anda en fazla iki belirli çıkışla sınırlıdır. Çeşitli OEM'ler, donanıma özgü yetenekler için diğer özel modları tanımlamaya ilgi duyduklarını ifade ettiler. Kaputun altında, mod geçirilen bir tamsayı adildir configure_streams . Bkz: hardware/camera/device/3.2/ICameraDeviceSession#configurestreams .

Bu özellik, OEM kamera uygulamalarının özel bir modu etkinleştirmek için kullanabileceği bir sistem API çağrısını içerir. Genel API'ye eklenecek gelecekteki modlarla çakışmayı önlemek için bu modlar 0x8000 tamsayı değerinde başlamalıdır.

Bu özelliği desteklemek için OEM'lerin yalnızca HAL'lerine, configure_streams üzerinde HAL'e iletilen bu tamsayı tarafından tetiklenen yeni modu eklemeleri ve ardından özel kamera uygulamalarının sistem API'sini kullanmaları gerekir.

Yöntem adıdır android.hardware.camera2.CameraDevice#createCustomCaptureSession . Bakınız: frameworks/base/core/java/android/hardware/camera2/CameraDevice .

onCaptureQueueBoş

Bu API'nin amacı, istek kuyruğunu olabildiğince boş tutarak yakınlaştırma gibi kontrol değişikliklerinin gecikmesini azaltmaktır. onCaptureQueueEmpty bir HAL çalışma gerektirir; tamamen çerçeve tarafında bir eklemeydi. Bundan yararlanmak isteyen uygulamalar, bu geri aramaya bir dinleyici eklemeli ve uygun şekilde yanıt vermelidir. Genellikle bu, kamera cihazına başka bir yakalama isteği göndererek olur.

Kamera HIDL arayüzü

Camera HIDL arabirimi, kararlı HIDL tanımlı API'ler kullanan Camera HAL arabiriminin eksiksiz bir revizyonudur. En son eski sürüm 3.4 ve 2.4'te (kamera modülü için) sunulan tüm özellikler ve kamera yetenekleri de HIDL tanımlarının bir parçasıdır.

3.4

Desteklenen meta verilere küçük eklemeler ve data_space desteğinde yapılan değişiklikler:

  • Ekle ANDROID_SENSOR_OPAQUE_RAW_SIZE statik meta zorunlu olarak eğer RAW_OPAQUE biçimi desteklenir.
  • Ekle ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE statik meta zorunlu olarak herhangi bir RAW formatı destekleniyorsa.
  • Anahtar camera3_stream_t data_space DataSpace kodlama versiyonu 0 tanımı kullanarak daha esnek bir tanımına bir alan.
  • HALv3.2 veya daha yenisi için kullanılabilen 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ş yetenekli HAL'nin küçük revizyonu:

  • OPAQUE ve YUV yeniden işleme API güncellemeleri.
  • Derinlik çıktı tamponları için temel destek.
  • İlavesi data_space için sahada camera3_stream_t .
  • İçin rotasyon alanının eklenmesi camera3_stream_t .
  • İçin camera3 akış yapılandırmasına çalışma modunun eklenmesi camera3_stream_configuration_t .

3.2

Genişletilmiş yetenekli HAL'ın küçük revizyonu:

  • Karşı çıkan get_metadata_vendor_tag_ops . Kullanım get_vendor_tag_ops içinde camera_common.h yerine.
  • Karşı çıkan register_stream_buffers . İçinde HAL çerçevesi tarafından verilen tüm gralloc tampon process_capture_request her zaman yeni olabilir.
  • Kısmi sonuç desteği ekleyin. process_capture_result tam sonuç kullanılabilir önce mevcut sonuçların bir alt kümesiyle birden çok kez çağrılabilir.
  • Manuel şablon ekleme camera3_request_template . Uygulamalar, yakalama ayarlarını doğrudan kontrol etmek için bu şablonu kullanabilir.
  • Çift yönlü ve giriş akışı özelliklerini yeniden işleyin.
  • Giriş arabelleği dönüş yolunu değiştirin. Tampon döndürülen process_capture_result yerine process_capture_request .

3.1

Genişletilmiş yetenekli HAL'nin küçük revizyonu:

  • configure_streams HAL tüketici kullanım bayrakları geçer.
  • tüm uçuş sırasındaki istekleri/arabellekleri olabildiğince hızlı bırakmak için aramayı boşaltın.

3.0

Genişletilmiş yetenekli HAL'nin ilk revizyonu:

  • ABI tamamen farklı olduğundan büyük sürüm değişikliği. 2.0'dan itibaren gerekli donanım yeteneklerinde veya operasyonel modelde değişiklik yok.
  • Yeniden çalışılan giriş isteği ve akış kuyruğu arabirimleri: Sonraki istek ve akış arabellekleri zaten kuyruğundan kaldırılmış olarak HAL'a çerçeve çağrıları. Verimli uygulamalar için gerekli olan senkronizasyon çerçevesi desteği dahildir.
  • Tetikleyiciler isteklere, çoğu bildirim sonuçlara taşındı.
  • Bir yapıya çerçevesine bütün geri aramalar Konsolide ve tek içine tüm kurulum yöntemleri initialize() çağrısı.
  • Akış yönetimini basitleştirmek için akış yapılandırmasını tek bir çağrıya dönüştürdü. Çift yönlü akımlar yerine STREAM_FROM_STREAM yapısı.
  • Daha eski/sınırlı donanım aygıtları için sınırlı mod semantiği.

2.0

Genişletilmiş özellikli HAL (Android 4.2) [camera2.h]'nin ilk sürümü:

  • Varolan uygulanması için yeterli android.hardware.Camera API.
  • Kamera servis katmanında ZSL kuyruğuna izin verir.
  • Manuel yakalama kontrolü, Bayer RAW yakalama, RAW verilerinin yeniden işlenmesi vb. gibi yeni özellikler için test edilmemiştir.

1.0

İlk Android kamera HAL (Android 4.0) [camera.h]:

  • C++ CameraHardwareInterface soyutlama katmanından dönüştürülmüş.
  • Destekler android.hardware.Camera API.

Kamera modülü sürüm geçmişi

Bu bölüm dayalı Kamera donanım modülü için modül sürüm bilgileri içerir camera_module_t.common.module_api_version . En önemli iki onaltılık basamak ana sürümü temsil eder ve en az anlamlı iki rakam küçük sürümü temsil eder.

2.4

Bu kamera modülü sürümü, aşağıdaki API değişikliklerini ekler:

  1. Torç modu desteği. Çerçeve, flaş ünitesine sahip herhangi bir kamera cihazı için bir kamera cihazı açmadan meşale modunu açabilir. Kamera cihazının flaş ünitesine erişme önceliği kamera modülünden daha yüksektir; modül arayüzü aracılığıyla etkinleştirildiyse, bir kamera cihazının açılması torcu kapatır. Gibi herhangi bir kaynak çakışmaları, olduğunda open() bir kamera cihazı açmayı denir, kamera HAL modülünü meşale modunun kapalı olduğunu meşale modu durum geri arama çerçeveyi bildirmek zorundadır.
  2. Harici kamera (örneğin, USB çalışırken takılabilir kamera) desteği. API güncellemeleri, kamera statik bilgilerinin yalnızca kamera bağlandığında ve harici çalışırken takılabilir kameralar için kullanıma hazır olduğunda kullanılabilir olduğunu belirtir. Kamera durumu olmadığında statik bilgi almak için Aramalar geçersiz çağrıları vardır CAMERA_DEVICE_STATUS_PRESENT . Çerçeve, mevcut harici kamera listesini yönetmek için yalnızca cihaz durumu değişikliği geri aramalarına güvenir.
  3. Kamera tahkim ipuçları. Aynı anda açılıp kullanılabilen kamera cihazlarının sayısını açıkça belirtmek için destek ekler. Cihazların geçerli kombinasyonlarını belirtmek için, resource_cost ve conflicting_devices alanları her zaman set olmalıdır camera_info tarafından döndürülen yapıya get_camera_info çağrısı.
  4. Modül başlatma yöntemi. HAL modülü yüklendikten sonra, HAL'in bir kerelik başlatılmasına izin vermek için kamera hizmeti tarafından çağrılır. Diğer modül yöntemleri çağrılmadan önce çağrılır.

2.3

Bu kamera modülü sürümü, açık eski kamera HAL cihazı desteği ekler. Aynı cihaz birden fazla cihaz API sürümünü destekleyebiliyorsa, çerçeve bunu kamera cihazını daha düşük cihaz HAL sürümü HAL cihazı olarak açmak için kullanabilir. Standart donanım modülü açık çağrı ( common.methods->open ) da listelenen versiyonu son desteklenen sürümü ile kamera cihazı açmaya devam camera_info_t.device_version .

2.2

Bu kamera modülü versiyonu modülünden satıcı etiket desteğini ekleyen ve eski karşı çıkan vendor_tag_query_ops daha önce bir cihaz açıkken erişilebilir idi.

2.1

Bu kamera modülü sürümü, çerçeveyi kamera modülü durumundaki değişiklikler hakkında bilgilendirmek için kullanılan kamera HAL modülünden çerçeveye eşzamansız geri aramalar için destek ekler. Geçerli bir sağlamak Modüller set_callbacks() yöntemi mutlaka raporda en azından bu sürüm numarası.

2.0

Bu sürüm numarasını bildiren kamera modülleri, kamera modülü HAL arabiriminin ikinci sürümünü uygular. Bu modül aracılığıyla açılabilen kamera cihazları, kamera cihazı HAL arayüzünün 1.0 veya 2.0 sürümünü destekleyebilir. device_version camera_info alanı her zaman geçerlidir; static_camera_characteristics alan camera_info halinde geçerlidir device_version alan 2.0 veya daha yüksektir.

1.0

Bu sürüm numaralarını bildiren kamera modülleri, ilk kamera modülü HAL arabirimini uygular. Bu modül aracılığıyla açılabilen tüm kamera cihazları, kamera cihazı HAL'nin yalnızca 1. sürümünü destekler. device_version ve static_camera_characteristics alanları camera_info geçerli değildir. Sadece android.hardware.Camera API Bu modül ve cihazlar tarafından desteklenebilir.