Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Dukungan Versi Kamera

Halaman ini menjelaskan perbedaan versi di HAL Camera, API, dan terkait Uji Kompatibilitas Suite (CTS) tes. Ini juga mencakup beberapa perubahan arsitektur yang dibuat untuk memperkuat dan mengamankan kerangka kerja kamera di Android 7.0, peralihan ke Treble di Android 8.0, dan pembaruan yang harus dilakukan vendor untuk mendukung perubahan ini dalam implementasi kamera mereka.

Terminologi

Istilah berikut digunakan di halaman ini:

Kamera API1
Kerangka kamera aplikasi-level pada Android 4.4 dan lebih rendah perangkat, terkena melalui android.hardware.Camera kelas.
Kamera API2
Kerangka kamera aplikasi-level pada Android 5.0 dan perangkat yang lebih tinggi, terkena melalui android.hardware.camera2 paket.
Kamera HAL
Lapisan modul kamera diimplementasikan oleh vendor SoC. Kerangka kerja publik tingkat aplikasi dibangun di atas kamera HAL.
Kamera HAL3.1
Versi perangkat kamera HAL dirilis dengan Android 4.4.
Kamera HAL3.2
Versi perangkat kamera HAL dirilis dengan Android 5.0.
Kamera API1 CTS
Kumpulan pengujian CTS kamera yang dijalankan di atas Camera API1.
Kamera API2 CTS
Kumpulan pengujian CTS kamera tambahan yang berjalan di atas Camera API2.
Tiga kali lipat
Memisahkan implementasi vendor (khusus perangkat, perangkat lunak tingkat rendah yang ditulis oleh produsen silikon) dari kerangka kerja OS Android melalui antarmuka vendor baru.
HIDL
HAL bahasa definisi antarmuka diperkenalkan dengan Treble dan digunakan untuk menentukan antarmuka antara HAL dan penggunanya.
VTS
Vendor test suite diperkenalkan bersama Treble.

API Kamera

Android menyertakan API kamera berikut.

Kamera API1

Camera API1 yang tidak digunakan lagi Android 5.0, yang terus dihentikan karena pengembangan platform baru berfokus pada Camera API2. Namun, periode penghentian akan memakan waktu lama, dan rilis Android akan terus mendukung aplikasi Camera API1 untuk beberapa waktu. Secara khusus, dukungan berlanjut untuk:

  • Antarmuka Kamera API1 untuk aplikasi. Aplikasi kamera yang dibuat di atas Camera API1 akan berfungsi seperti pada perangkat yang menjalankan versi rilis Android yang lebih rendah.
  • Kamera versi HAL. Termasuk dukungan untuk Kamera HAL1.0.

Kamera API2

Kerangka kerja Camera API2 memaparkan kontrol kamera tingkat rendah ke aplikasi, termasuk aliran burst/streaming nol-salinan yang efisien dan kontrol per-bingkai dari eksposur, penguatan, peningkatan keseimbangan putih, konversi warna, denoising, penajaman, dan banyak lagi. Untuk detail, menonton Google I / O ringkasan video .

Android 5.0 dan lebih tinggi menyertakan Camera API2; namun, perangkat yang menjalankan Android 5.0 dan lebih tinggi mungkin tidak mendukung semua fitur Camera API2. The android.info.supportedHardwareLevel properti yang aplikasi dapat query melalui antarmuka Kamera Api2 melaporkan salah satu tingkat dukungan berikut:

  • LEGACY : Perangkat ini mengekspos kemampuan untuk aplikasi melalui Kamera interface Api2 yang kira-kira kemampuan yang sama seperti mereka yang terkena aplikasi melalui antarmuka Kamera Api1. Kode kerangka kerja lama secara konseptual menerjemahkan panggilan Camera API2 menjadi panggilan Camera API1; perangkat lawas tidak mendukung fitur Camera API2 seperti kontrol per bingkai.
  • LIMITED : Perangkat ini mendukung beberapa kemampuan Camera Api2 (tetapi tidak semua) dan harus menggunakan Camera HAL 3.2 atau lebih tinggi.
  • FULL : Perangkat ini mendukung semua kemampuan utama Kamera Api2 dan harus menggunakan Camera HAL 3.2 atau lebih tinggi dan Android 5.0 atau lebih tinggi.
  • LEVEL_3 : Perangkat ini mendukung YUV pengolahan dan pengambilan gambar RAW, bersama dengan konfigurasi output stream tambahan.
  • EXTERNAL : Alat ini mirip dengan LIMITED perangkat dengan beberapa pengecualian; misalnya, beberapa informasi sensor atau lensa mungkin tidak dilaporkan atau memiliki kecepatan bingkai yang kurang stabil. Level ini digunakan untuk kamera eksternal seperti webcam USB.

Kemampuan individu terpapar melalui android.request.availableCapabilities properti di antarmuka Kamera Api2. FULL perangkat memerlukan MANUAL_SENSOR dan MANUAL_POST_PROCESSING kemampuan, antara lain. The RAW kemampuan opsional bahkan untuk FULL perangkat. LIMITED perangkat dapat mengiklankan subset dari kemampuan ini, termasuk tidak satupun dari mereka. Namun, BACKWARD_COMPATIBLE kemampuan harus selalu didefinisikan.

Tingkat perangkat keras yang didukung perangkat, serta kemampuan Camera API2 spesifik yang didukungnya, tersedia sebagai tanda fitur berikut untuk memungkinkan pemfilteran Google Play dari aplikasi kamera Camera API2.

  • android.hardware.camera.hardware_level.full
  • android.hardware.camera.capability.raw
  • android.hardware.camera.capability.manual_sensor
  • android.hardware.camera.capability.manual_post_processing

Persyaratan CTS

Perangkat yang menjalankan Android 5.0 dan lebih tinggi harus lulus uji kamera Camera API1 CTS, Camera API2 CTS, dan CTS Verifier.

Perangkat yang tidak menampilkan implementasi Camera HAL3.2 dan tidak mampu mendukung antarmuka penuh Camera API2 masih harus lulus pengujian Camera API2 CTS. Namun, berjalan perangkat di Kamera Api2 LEGACY modus (di mana panggilan Kamera Api2 yang konseptual dipetakan ke panggilan Kamera Api1) sehingga setiap Kamera Api2 CTS tes yang berkaitan dengan fitur atau kemampuan luar Kamera Api1 secara otomatis dilewati.

Pada perangkat lawas, pengujian Camera API2 CTS yang dijalankan menggunakan antarmuka dan kemampuan Camera API1 publik yang ada tanpa persyaratan baru. Bug yang terekspos (dan yang menyebabkan kegagalan Camera API2 CTS) adalah bug yang sudah ada di HAL Kamera perangkat yang ada, dan dengan demikian akan ditemukan oleh aplikasi Camera API1 yang ada. Kami tidak mengharapkan banyak bug seperti ini (namun, bug seperti itu harus diperbaiki untuk lulus tes Camera API2 CTS).

Persyaratan VTS

Perangkat yang menjalankan Android 8.0 dan lebih tinggi dengan implementasi HAL binderized harus lulus Kamera tes VTS .

Pengerasan kerangka kamera

Untuk memperkuat keamanan kerangka kerja media dan kamera, Android 7.0 memindahkan layanan kamera dari server media. Dimulai dengan Android 8.0, setiap HAL Kamera yang di-binder berjalan dalam proses yang terpisah dari layanan kamera. Vendor mungkin perlu melakukan perubahan pada HAL kamera tergantung pada API dan versi HAL yang digunakan. Bagian berikut merinci perubahan arsitektur di AP1 dan AP2 untuk HAL1 dan HAL3, serta persyaratan umum.

Perubahan arsitektur untuk API1

Perekaman video API1 dapat mengasumsikan kamera dan pembuat enkode video hidup dalam proses yang sama. Saat menggunakan API1 pada:

  • HAL3, di mana layanan kamera menggunakan BufferQueue untuk melewati buffer antara proses, tidak ada update vendor yang diperlukan.

    Kamera Android 7.0 dan tumpukan media di API1 di HAL3

    Gambar 1. Android 7.0 kamera dan media menumpuk di Api1 di HAL3

  • HAL1, yang mendukung lewat metadata di buffer video, vendor harus memperbarui HAL untuk menggunakan kMetadataBufferTypeNativeHandleSource . ( kMetadataBufferTypeCameraSource tidak lagi didukung di Android 7.0.)

    Kamera Android 7.0 dan tumpukan media di API1 pada HAL1

    Gambar 2. Android 7.0 kamera dan media menumpuk di Api1 di HAL1

Perubahan arsitektur untuk API2

Untuk API2 pada HAL1 atau HAL3, BufferQueue melewati buffer sehingga jalur tersebut terus bekerja. Arsitektur Android 7.0 untuk API2 pada:

  • HAL1 tidak terpengaruh oleh cameraservice bergerak, dan tidak ada update vendor yang diperlukan.
  • HAL3 adalah terpengaruh, tapi tidak ada update vendor yang diperlukan:

    Kamera Android 7.0 dan tumpukan media di API2 di HAL3

    Gambar 3. Android 7.0 kamera dan media menumpuk di Api2 di HAL3

Persyaratan tambahan

Perubahan arsitektur yang dibuat untuk pengerasan media dan keamanan kerangka kerja kamera mencakup persyaratan perangkat tambahan berikut.

  • Umum. Perangkat memerlukan bandwidth tambahan karena IPC, yang dapat memengaruhi kasus penggunaan kamera yang sensitif terhadap waktu seperti perekaman video kecepatan tinggi. Vendor dapat mengukur dampak yang sebenarnya dengan menjalankan android.hardware.camera2.cts.PerformanceTest dan aplikasi Kamera Google untuk 120/240 merekam video berkecepatan tinggi FPS. Perangkat juga memerlukan sedikit RAM tambahan untuk membuat proses baru.
  • Lulus metadata di buffer video (HAL1 saja). Jika toko HAL1 metadata bukan data bingkai YUV nyata dalam buffer video, HAL harus menggunakan kMetadataBufferTypeNativeHandleSource sebagai metadata jenis buffer dan lulus VideoNativeHandleMetadata di buffer video. ( kMetadataBufferTypeCameraSource tidak lagi didukung pada Android 7.0.) Dengan VideoNativeHandleMetadata , kamera dan media kerangka kerja yang mampu melewati buffer video antara proses oleh serialisasi dan deserializing pegangan asli benar.
  • Buffer alamat pegangan tidak selalu menyimpan buffer yang sama (HAL3 saja). Untuk setiap permintaan penangkapan, HAL3 mendapatkan alamat pegangan buffer. HAL tidak dapat menggunakan alamat untuk mengidentifikasi buffer karena alamat dapat menyimpan pegangan buffer lain setelah HAL mengembalikan buffer. Anda harus memperbarui HAL untuk menggunakan pegangan buffer untuk mengidentifikasi buffer. Misalnya, HAL menerima alamat pegangan buffer A, yang menyimpan pegangan buffer A. Setelah HAL mengembalikan pegangan buffer A, alamat pegangan buffer A dapat menyimpan pegangan buffer B saat HAL menerimanya.
  • Perbarui kebijakan SELinux untuk server kamera. Jika kebijakan SELinux khusus perangkat memberikan izin server media untuk menjalankan kamera, Anda harus memperbarui kebijakan SELinux untuk memberikan izin yang tepat kepada server kamera. Kami tidak menyarankan mereplikasi kebijakan SELinux server media untuk server kamera (karena server media dan server kamera umumnya memerlukan sumber daya yang berbeda dalam sistem). Cameraserver seharusnya hanya memiliki izin yang diperlukan untuk menjalankan fungsi kamera dan izin terkait kamera yang tidak perlu di server media harus dihapus.
  • Pemisahan antara Camera HAL dan cameraserver. Android 8.0 dan lebih tinggi juga memisahkan Camera HAL yang di-binder dalam proses yang berbeda dari cameraserver. IPC melewati HIDL-didefinisikan antarmuka.

Validasi

Untuk semua perangkat yang menyertakan kamera dan menjalankan Android 7.0, verifikasi penerapannya dengan menjalankan Android 7.0 CTS. Meskipun Android 7.0 tidak menyertakan pengujian CTS baru yang memverifikasi perubahan layanan kamera, pengujian CTS yang ada akan gagal jika Anda belum melakukan pembaruan yang ditunjukkan di atas.

Untuk semua perangkat yang menyertakan kamera dan menjalankan Android 8.0 dan lebih tinggi, verifikasi implementasi vendor dengan menjalankan VTS.

Riwayat versi kamera HAL

Untuk daftar tes yang tersedia untuk mengevaluasi Android Kamera HAL, melihat Kamera HAL Pengujian Checklist .

Android 10

Android 10 memperkenalkan pembaruan berikut.

API Kamera

Kamera HAL

Versi Kamera HAL berikut diperbarui di Android 10.

3.5

ICameraDevice

  • getPhysicalCameraCharacteristics : Informasi kamera statis untuk ID kamera fisik back perangkat kamera logis. Lihat Multi-Camera Dukungan .
  • isStreamCombinationSupported : Metode ini mendukung API publik yang membantu klien query jika konfigurasi sesi didukung. Lihat API untuk kombinasi aliran permintaan .

ICameraDeviceSession

  • isReconfigurationNeeded : Metode yang memberitahu kerangka kamera apakah konfigurasi ulang aliran lengkap diperlukan untuk memungkinkan nilai parameter sesi baru. Ini membantu menghindari penundaan konfigurasi ulang kamera yang tidak perlu. Lihat Sesi konfigurasi ulang permintaan .
  • HAL API manajemen buffer : API ini memungkinkan HAL kamera untuk buffer permintaan dari kerangka kamera hanya ketika diperlukan bukan kopling setiap permintaan capture dengan buffer yang terkait di seluruh pipa kamera, menghasilkan penghematan memori berpotensi signifikan.
    • signalStreamFlush : Sinyal ke HAL bahwa layanan kamera adalah untuk melakukan configureStreams_3_5 dan bahwa HAL harus mengembalikan semua buffer dari aliran yang ditunjuk.
    • configureStreams_3_5 : Mirip dengan ICameraDevice3.4.configureStreams , tetapi di samping itu, streamConfigCounter kontra disediakan untuk memeriksa kondisi lomba antara configureStreams_3_5 dan signalStreamFlush panggilan.

Update ICameraDeviceCallback :

  • requestStreamBuffers : callback Synchronous bahwa kamera HAL panggilan untuk meminta server kamera untuk buffer. Lihat requestStreamBuffers .
  • returnStreamBuffers : callback Synchronous untuk kamera HAL untuk kembali buffer output ke server kamera. Lihat returnStreamBuffers .

3.4

Kunci berikut ditambahkan ke metadata kamera di Android 10.

  • Format gambar
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW10
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW12
    • ANDROID_SCALER_AVAILABLE_FORMATS_Y8
  • Tag metadata kamera
    • 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
  • Kemampuan
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
  • Nilai untuk ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT kunci
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
  • Konfigurasi aliran kedalaman dinamis yang tersedia
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT
  • Konfigurasi aliran HEIC yang tersedia
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT

modul kamera

Versi modul kamera berikut diperbarui di Android 10.

2.5

  • Menambahkan notifyDeviceStateChange metode untuk perangkat untuk memberitahu HAL kamera saat perubahan fisik, seperti lipat, mempengaruhi kamera dan routing.

2.4

  • Perangkat meluncurkan dengan API tingkat 29 atau lebih tinggi HARUS melaporkan true untuk isTorchModeSupported .

Android 9

Rilis Android 9 memperkenalkan pembaruan berikut untuk antarmuka API2 dan HAL kamera.

API Kamera

  • Memperkenalkan API multi-kamera untuk mendukung perangkat dengan lebih baik dengan beberapa kamera menghadap ke arah yang sama, memungkinkan fitur seperti bokeh dan zoom tanpa batas. Ini memungkinkan aplikasi untuk melihat beberapa kamera pada perangkat sebagai satu unit logis (kamera logis). Permintaan pengambilan juga dapat dikirim ke perangkat kamera individual yang dicakup oleh satu kamera logis. Lihat Multi-Camera Dukungan .
  • Memperkenalkan parameter sesi. Parameter sesi adalah bagian dari parameter penangkapan yang tersedia yang dapat menyebabkan penundaan pemrosesan yang parah saat dimodifikasi. Biaya ini dapat dikurangi jika klien melewati nilai awal mereka selama inisialisasi sesi pengambilan. Lihat Sesi Parameter .
  • Menambahkan kunci data optical stabilization (OIS) untuk stabilisasi dan efek tingkat aplikasi. Lihat STATISTICS_OIS_SAMPLES .
  • Menambahkan dukungan flash eksternal. Lihat CONTROL_AE_MODE_ON_EXTERNAL_FLASH .
  • Menambahkan gerakan pelacakan niat di CAPTURE_INTENT . Lihat CONTROL_CAPTURE_INTENT_MOTION_TRACKING .
  • Deprecates LENS_RADIAL_DISTORTION dan menambahkan LENS_DISTORTION di tempatnya.
  • Menambahkan mode koreksi distorsi di CaptureRequest . Lihat DISTORTION_CORRECTION_MODE .
  • Menambahkan dukungan untuk kamera USB/UVC eksternal pada perangkat yang didukung. Lihat INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL .

Kamera HAL

3.4

Update ICameraDeviceSession

Update ICameraDeviceCallback

3.3

Kunci berikut ditambahkan ke metadata kamera di Android 9.

  • Kemampuan
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME
  • Tag metadata kamera
    • 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

Rilis Android 8.0 memperkenalkan Treble. Dengan Treble, penjual Kamera HAL implementasi harus binderized . Android 8.0 juga berisi penyempurnaan utama ini untuk layanan Kamera:

  • Permukaan bersama: Aktifkan beberapa permukaan berbagi sama OutputConfiguration
  • API Sistem untuk mode kamera khusus
  • onCaptureQueueEmpty

Lihat bagian di bawah untuk informasi lebih lanjut tentang fitur ini.

Permukaan bersama

Fitur ini memungkinkan hanya satu set buffer untuk menggerakkan dua output, seperti pratinjau dan encoding video, yang menurunkan konsumsi daya dan memori. Untuk mendukung fitur ini, produsen perangkat perlu memastikan implementasi HAL kamera dan gralloc HAL mereka dapat membuat buffer gralloc yang digunakan oleh beberapa konsumen yang berbeda (seperti komposer perangkat keras/GPU dan pembuat enkode video), bukan hanya satu konsumen. Layanan kamera meneruskan flag penggunaan konsumen ke kamera HAL dan gralloc HAL; mereka perlu mengalokasikan jenis buffer yang tepat, atau kamera HAL perlu mengembalikan kesalahan bahwa kombinasi konsumen ini tidak didukung.

Lihat enableSurfaceSharing dokumentasi pengembang untuk rincian tambahan.

API Sistem untuk mode kamera khusus

API kamera publik mendefinisikan dua mode operasi: perekaman kecepatan tinggi normal dan terbatas. Mereka memiliki semantik yang cukup berbeda; misalnya, mode kecepatan tinggi dibatasi paling banyak dua output tertentu sekaligus. Berbagai OEM telah menyatakan minatnya untuk mendefinisikan mode kustom lainnya untuk kemampuan khusus perangkat keras. Di bawah tenda, modus ini hanya integer diteruskan ke configure_streams . Lihat: hardware/camera/device/3.2/ICameraDeviceSession#configurestreams .

Fitur ini mencakup panggilan API sistem yang dapat digunakan aplikasi kamera OEM untuk mengaktifkan mode kustom. Mode ini harus dimulai pada nilai integer 0x8000 untuk menghindari konflik dengan mode mendatang yang ditambahkan ke API publik.

Untuk mendukung fitur ini, OEM hanya perlu menambahkan mode baru ke HAL mereka, dipicu oleh bilangan bulat ini yang diteruskan ke HAL pada configure_streams, dan kemudian aplikasi kamera khusus mereka menggunakan API sistem.

Nama metode adalah android.hardware.camera2.CameraDevice#createCustomCaptureSession . Lihat: frameworks/base/core/java/android/hardware/camera2/CameraDevice .

diCaptureQueueEmpty

Tujuan dari API ini adalah untuk mengurangi latensi perubahan kontrol seperti zoom dengan menjaga antrian permintaan sekosong mungkin. onCaptureQueueEmpty tidak memerlukan kerja HAL; itu murni tambahan sisi kerangka kerja. Aplikasi yang ingin memanfaatkannya perlu menambahkan pendengar ke panggilan balik itu dan merespons dengan tepat. Umumnya itu dengan mengirimkan permintaan capture lain ke perangkat kamera.

Antarmuka kamera HIDL

Antarmuka Kamera HIDL adalah perombakan total antarmuka Kamera HAL yang menggunakan API yang ditentukan HIDL stabil. Semua fitur dan kemampuan kamera yang diperkenalkan dalam versi lawas terbaru 3.4 dan 2.4 (untuk modul kamera) juga merupakan bagian dari definisi HIDL.

3.4

Penambahan kecil pada metadata yang didukung dan perubahan pada dukungan data_space:

  • Menambahkan ANDROID_SENSOR_OPAQUE_RAW_SIZE statis metadata sebagai wajib jika RAW_OPAQUE Format didukung.
  • Menambahkan ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE statis metadata sebagai wajib jika ada format RAW didukung.
  • Beralih camera3_stream_t data_space lapangan untuk definisi yang lebih fleksibel, menggunakan versi 0 definisi dataspace encoding.
  • Penambahan metadata umum yang tersedia untuk digunakan untuk HALv3.2 atau yang lebih baru:
    • 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

Revisi kecil dari HAL dengan kemampuan yang diperluas:

  • Pembaruan API pemrosesan ulang OPAQUE dan YUV.
  • Dukungan dasar untuk buffer keluaran kedalaman.
  • Penambahan data_space lapangan untuk camera3_stream_t .
  • Selain lapangan rotasi ke camera3_stream_t .
  • Selain dari mode operasi camera3 konfigurasi sungai untuk camera3_stream_configuration_t .

3.2

Revisi kecil dari HAL dengan kemampuan yang diperluas:

  • Deprecates get_metadata_vendor_tag_ops . Gunakan get_vendor_tag_ops di camera_common.h gantinya.
  • Deprecates register_stream_buffers . Semua buffer gralloc disediakan oleh kerangka kerja untuk HAL di process_capture_request mungkin baru setiap saat.
  • Tambahkan dukungan hasil parsial. process_capture_result dapat disebut beberapa kali dengan subset dari hasil yang tersedia sebelum hasil lengkap tersedia.
  • Menambahkan template manual untuk camera3_request_template . Aplikasi dapat menggunakan template ini untuk mengontrol pengaturan pengambilan secara langsung.
  • Kerjakan ulang spesifikasi aliran dua arah dan input.
  • Ubah jalur pengembalian buffer input. Buffer dikembalikan dalam process_capture_result bukan process_capture_request .

3.1

Revisi kecil dari HAL dengan kemampuan yang diperluas:

  • configure_streams melewati bendera penggunaan konsumen untuk HAL tersebut.
  • panggilan flush untuk membatalkan semua permintaan/buffer dalam penerbangan secepat mungkin.

3.0

Revisi pertama dari HAL dengan kemampuan yang diperluas:

  • Perubahan versi utama sejak ABI benar-benar berbeda. Tidak ada perubahan pada kemampuan perangkat keras yang diperlukan atau model operasional dari 2.0.
  • Permintaan input yang dikerjakan ulang dan antarmuka antrian aliran: Kerangka panggilan ke HAL dengan permintaan berikutnya dan buffer aliran sudah di-dequeued. Dukungan kerangka kerja sinkronisasi disertakan, yang diperlukan untuk implementasi yang efisien.
  • Memindahkan pemicu ke permintaan, sebagian besar notifikasi ke hasil.
  • Konsolidasi semua callback ke dalam kerangka menjadi satu struktur, dan semua metode pengaturan menjadi satu initialize() panggilan.
  • Membuat konfigurasi streaming menjadi satu panggilan untuk menyederhanakan manajemen streaming. Bidirectional aliran menggantikan STREAM_FROM_STREAM membangun.
  • Semantik mode terbatas untuk perangkat keras lama/terbatas.

2.0

Rilis awal HAL berkemampuan diperluas (Android 4.2) [camera2.h]:

  • Cukup untuk menerapkan yang ada android.hardware.Camera API.
  • Memungkinkan antrian ZSL di lapisan layanan kamera.
  • Tidak diuji untuk fitur baru apa pun seperti kontrol pengambilan manual, pengambilan Bayer RAW, pemrosesan ulang data RAW, dll.

1.0

Kamera Android awal HAL (Android 4.0) [camera.h]:

  • Dikonversi dari lapisan abstraksi C++ CameraHardwareInterface.
  • Mendukung android.hardware.Camera API.

Riwayat versi modul kamera

Bagian ini berisi informasi versi modul untuk modul hardware Kamera, berdasarkan camera_module_t.common.module_api_version . Dua digit heksagonal paling signifikan mewakili versi mayor, dan dua digit paling signifikan mewakili versi minor.

2.4

Versi modul kamera ini menambahkan perubahan API berikut:

  1. Dukungan mode obor. Kerangka kerja dapat mengaktifkan mode obor untuk perangkat kamera apa pun yang memiliki unit lampu kilat, tanpa membuka perangkat kamera. Perangkat kamera memiliki prioritas yang lebih tinggi untuk mengakses unit lampu kilat daripada modul kamera; membuka perangkat kamera mematikan obor jika telah diaktifkan melalui antarmuka modul. Ketika ada konflik sumber daya, seperti open() dipanggil untuk membuka perangkat kamera, modul HAL kamera harus memberitahu kerangka melalui status modus obor callback bahwa modus obor telah dimatikan.
  2. Dukungan kamera eksternal (misalnya, kamera hot-plug USB). Pembaruan API menentukan info statis kamera hanya tersedia saat kamera terhubung dan siap digunakan untuk kamera hot-plug eksternal. Panggilan untuk mendapatkan info statis panggilan tidak valid saat status kamera tidak CAMERA_DEVICE_STATUS_PRESENT . Kerangka kerja hanya mengandalkan panggilan balik perubahan status perangkat untuk mengelola daftar kamera eksternal yang tersedia.
  3. Petunjuk arbitrase kamera. Menambahkan dukungan untuk secara eksplisit menunjukkan jumlah perangkat kamera yang dapat dibuka dan digunakan secara bersamaan. Untuk menentukan kombinasi yang valid dari perangkat, yang resource_cost dan conflicting_devices bidang harus selalu set di camera_info struktur dikembalikan oleh get_camera_info panggilan.
  4. Metode inisialisasi modul. Dipanggil oleh layanan kamera setelah modul HAL dimuat untuk memungkinkan inisialisasi HAL satu kali. Itu dipanggil sebelum metode modul lain dipanggil.

2.3

Versi modul kamera ini menambahkan dukungan perangkat HAL kamera warisan terbuka. Kerangka kerja dapat menggunakannya untuk membuka perangkat kamera sebagai perangkat HAL versi perangkat HAL yang lebih rendah jika perangkat yang sama dapat mendukung beberapa versi API perangkat. Modul hardware standar terbuka panggilan ( common.methods->open ) terus membuka perangkat kamera dengan versi yang terbaru, yang juga merupakan versi yang tercantum dalam camera_info_t.device_version .

2.2

Versi modul kamera ini menambahkan tag vendor dukungan dari modul, dan deprecates tua vendor_tag_query_ops yang sebelumnya hanya dapat diakses dengan membuka perangkat.

2.1

Versi modul kamera ini menambahkan dukungan untuk panggilan balik asinkron ke kerangka kerja dari modul HAL kamera, yang digunakan untuk memberi tahu kerangka kerja tentang perubahan status modul kamera. Modul yang memberikan valid set_callbacks() metode keharusan laporan setidaknya nomor versi ini.

2.0

Modul kamera yang melaporkan nomor versi ini mengimplementasikan versi kedua dari antarmuka HAL modul kamera. Perangkat kamera yang dapat dibuka melalui modul ini dapat mendukung versi 1.0 atau versi 2.0 dari antarmuka HAL perangkat kamera. The device_version bidang camera_info selalu berlaku; yang static_camera_characteristics bidang camera_info berlaku jika device_version bidang adalah 2,0 atau lebih tinggi.

1.0

Modul kamera yang melaporkan nomor versi ini mengimplementasikan antarmuka HAL modul kamera awal. Semua perangkat kamera yang dapat dibuka melalui modul ini hanya mendukung versi 1 perangkat kamera HAL. The device_version dan static_camera_characteristics bidang camera_info tidak valid. Hanya android.hardware.Camera API dapat didukung oleh modul ini dan perangkat nya.