Kamera sürümü desteği

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 cihazlar LIMITED 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.

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

    Şekil 1. Android 7.0 kamera ve medya HAL3'te API1'de yığın

  • 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.)

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

    Şekil 2. Android 7.0 kamera ve medya HAL1'de API1'deki yığın

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:

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

    Şekil 3. Android 7.0 kamera ve medya HAL3'te API2'de yığın

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 kullan VideoNativeHandleMetadata 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

Kamera donanım soyutlama katmanı

Android'de aşağıdaki Kamera HAL sürümleri güncellendi 10.

3,5

ICameraDevice

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 olan configureStreams_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 ve signalStreamFlush 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üleyin requestStreamBuffers değerleridir.
  • returnStreamBuffers: Çıkış arabelleklerini tekrar deneyin. Görüntüleyin returnStreamBuffers 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 anahtar
    • ANDROID_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çin true.

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üleyin CONTROL_CAPTURE_INTENT_MOTION_TRACKING değerleridir.
  • LENS_RADIAL_DISTORTION öğesini kullanımdan kaldırır ve şunu ekler: bunun yerine LENS_DISTORTION.
  • CaptureRequest içinde distorsiyon düzeltme modları ekler. Görüntüleyin DISTORTION_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

ICameraDeviceCallback ile ilgili güncellemeler

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 eklenmesi camera3_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 yerine camera_common.h içinde get_vendor_tag_ops.
  • register_stream_buffers kullanımdan kaldırılacak. Tüm gralloc arabellekleri process_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:

  1. 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ı.
  2. 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.
  3. 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 ve conflicting_devices alanları get_camera_info tarafından döndürülen camera_info yapısı çağrısına bir tıklama URL'si eklemeniz gerekir.
  4. 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.