SlideShare a Scribd company logo
1 of 53
Camera 3
The New Camera Subsystem in Android KitKat

Balwinder Kaur,

Senior Member, Technical Staff, Aptina Imaging

AnDevCon, Burlingame, CA
11.15.13
Slide Deck v 1.2 last updated 12.27.13

Ā© 2013 Aptina Imaging Corporation. All rights reserved. Products are warranted only to meet Aptinaā€™s production data sheet specifications. Information, products, and/or
specifications are subject to change without notice. All information is provided on an ā€œAS ISā€ basis without warranties of any kind. Dates are estimates only. Drawings not to
scale. Aptina and the Aptina logo are trademarks of Aptina Imaging Corporation. All other trademarks are the property of their respective owners.

1

|

Ā© 2013 Aptina Imaging Corporation
Agenda
I.

Camera 3
ā€£ Introduction
ā€£ History

ā€£ Computational Photography Use Cases

II.

The APIs
ā€£ {@hide} ā€“ Sneak Peek into coming Android Pro Camera APIs

III. The Platform
ā€£ Architecture
ā€£ 3A

IV. Emerging Trends

V.

Demo

VI. Q&A
2

|

Ā© 2013 Aptina Imaging Corporation
Camera 3 ā€“ The New Camera
Framework

3

|

Ā© 2013 Aptina Imaging Corporation
Limitations of Camera 1
ā€¢ 3 Operating Modes
ā€£ Preview
ā€£ Capture
ā€£ Video

ā€¢ Burst Mode Photography ā€“ hard to
implement
ā€£ Zero Shutter Lag
ā€£ Multi-Shot HDR
ā€£ Panoramic Stitch

ā€¢ Metadata: Practically, only face
detection data could be returned
to the application
4

|

Ā© 2013 Aptina Imaging Corporation
Camera 3
ā€¢ Android 4.3 (Jelly Bean MR2) and Android 4.4 (KitKat)
have shipped with a new Camera Hardware Interface
ā€£ Android 4.3 => Camera 3 Hardware Interface
ā€£ Android 4.4 => Camera 3.1 Hardware Interface
What
happened
to
Camera2
?

5

|

Ā© 2013 Aptina Imaging Corporation
Overview of Camera 3
ā€¢

Camera Framework till Android 4.0 was modeled after a point & shoot camera.

ā€¢

Expanded Camera Subsystem is modeled after a Professional Camera
ā€£

ā€¢

6

But it is more than that

It is the basis of a potential paradigm shift in photography

|

Ā© 2013 Aptina Imaging Corporation
A Bit of History
FCAM

F2 Frankencamera
Project

Lead - Stanford Professor Marc Levoy
Main architects - Eino-Ville (Eddy) Talvala and Andrew Adams
Eddy Talvala is the Tech Lead for Camera Framework on the
Android Team
Industry Partner - Nokia

Computational Photography
ā€£ Out of scope for this talk
ā€£ Good starting point - A white paper on Computational Photography Platforms
by Marc Levoy
ā€£ Use and relevance of software increases in photography
ā€£ Processing happens in near real time instead of post-processing
ā€£ Open platforms facilitate innovation
7

|

Ā© 2013 Aptina Imaging Corporation
Computational Photography
Definition
ā€¢ Computational photography refers to computational image
capture, processing, and manipulation techniques that
enhance or extend the capabilities of digital photography.
ā€¢ Good examples of image capture and manipulation include
panoramas, and high-dynamic-range imaging which is the use
of differently exposed pictures of the same scene to extend
dynamic range beyond even that of analog film-based media.
Source: Wikipedia

8

|

Ā© 2013 Aptina Imaging Corporation
Multi Shot HDR
ā€¢ HDR = High Dynamic Range
ā€¢ Multiple shots at different exposures and then blended together

9

|

Ā© 2013 Aptina Imaging Corporation
Panoramic Stitching

Source: commons.wikimedia.org

10

|

Ā© 2013 Aptina Imaging Corporation
Multi-Flash Photography

Source: Stanford Graphics Research
11

|

Ā© 2013 Aptina Imaging Corporation
Flash No-Flash Photography

Source: Microsoft Research

12

|

Ā© 2013 Aptina Imaging Corporation
Flash No-Flash Photography

Source: Microsoft Research
13

|

Ā© 2013 Aptina Imaging Corporation
Focus Bracketing

Focus Stacking for macro photography

Source: Wikipedia
14

|

Ā© 2013 Aptina Imaging Corporation
View Finder Editing
Todayā€™s smartphones have features like

ā€¢

ā€£

Computational Photography can take it to the next level

ā€¢

ā€£

ā€¢

15

Touch to Expose & Touch to Focus

Edit the frame in the view finder by selecting areas to sharpen, blur, brighten
and maintain these during capture mode

Source: SIGGRAPH 2012

|

Ā© 2013 Aptina Imaging Corporation
Open Platform Requirements
for Computation Photography
ā€¢ Fine grained control of the Sensor, Flash, Lens and Image Signal
Processing pipeline
ā€¢ Ability to program
ā€£ exposure time, auto white balance, focus, frame-rate etc.
ā€£ metering algorithm, autofocus algorithm etc.

ā€¢ Meta data
ā€£ Every frame is returned with the settings that it was taken with (verses
settings take effect sometime in future)

ā€¢ Platform should have enough compute and memory power.
ā€£ With multi core devices and GPU capability increasing, Android becomes a
very attractive platform as an open computational photography platform.

16

|

Ā© 2013 Aptina Imaging Corporation
Other use cases
ā€¢ Using Imagers for Information
ā€£ Gesture Recognition
ā€£ Face Recognition
ā€£ Augmented Reality

ā€¢ Requirements differ for this class of applications
ā€£ High and steady Frame Rate under all light conditions is
Important.
ā€£ Of less importance
ā€¢
ā€¢

17

|

High Resolution
Image Quality & Color Accuracy

Ā© 2013 Aptina Imaging Corporation
The APIs

18

|

Ā© 2013 Aptina Imaging Corporation
Camera API
Camera APIs
Package - android.hardware.camera
Android Version

Additions to
android.hardware.camera

Kit Kat (4.4)

API level 19

None

Jelly Bean MR2 (4.3)

API level 18

None

Jelly Bean MR1 (4.2)

API level 17

Minor (HDR, shutterSound)

Jelly Bean (4.1)

API level 16

Minor (AutoFocus Move
Callback)

Ice-cream Sandwich

API level 15

Minor (Video Stabilization)

Ice-cream Sandwich
19

API Level

API level 14

Major (Face Detection)

|

Ā© 2013 Aptina Imaging Corporation
A Sneak Peek of the New Camera APIs
ā€¢ Kitkat shipped with a set of Experimental Java camera
APIs with the {@hide} tag.
ā€£ https://android.googlesource.com/platform/frameworks/base
/+/kitkat-release/core/java/android/hardware/camera2/

ā€¢ Package name is android.hardware.camera2
ā€£ But in other parts of AOSP many references to ProCamera
(Professional Camera) are found.

20

|

Ā© 2013 Aptina Imaging Corporation
Pro Camera APIs ?
ā€¢ They are experimental and not part of the SDK, but
available in the platform.

ā€¢ Likely to change before released in the SDK.
ā€¢ Camera 3 Hardware Interface is fairly stable now.
ā€¢ Itā€™s a good time to start thinking about new Camera
applications

21

|

Ā© 2013 Aptina Imaging Corporation
android.hardware.camera2
Interface
Camera Device
Exception
CameraAccessException

22

|

Ā© 2013 Aptina Imaging Corporation

Classes
CameraCharacteristics
CameraDevice.CaptureListener
CameraDevice.StateListener
CameraManager
CameraManager.AvailabilityListener
CameraMetadata
CameraMetadata.Key<t>
CaptureFailure
CaptureRequest
CaptureRequest.Builder
CaptureResult
Face
Rational
Size
Camera Manager
Interface for iterating, listing and accessing Camera Devices
CameraManager manager = (CameraManager)
getSystemService(Context.CAMERA_SERVICE);
//Iterating through Camera Devices
manager.getCameraIdList();
// Query a device for Capabilities
manager.getCameraCharacteristics(cameraId);
// Open a Camera
manager.openCamera ( cameraId,...);
// add an Availability Listener as Cameras become available or unavailable
manager.addAvailabilityListener(CameraManager.AvailabilityListener);

23

|

Ā© 2013 Aptina Imaging Corporation
Camera Device
ā€¢

Device is modeled as a pipeline
ā€£

Input : CaptureRequest for a single Frame

ā€£

Output: CaptureResult Metadata packet + output image buffers for the request.
These buffers can go to one or multiple output targets
ā€¢

SurfaceView

ā€¢

SurfaceTexture

ā€¢

MediaCodec

ā€¢

MediaRecorder

ā€¢

Renderscript Allocation et al

ā€¢

ImageReader (Use this for Still Images)

ā€£

ā€£
24

Requests are processed in order, multiple requests are in flight to maintain full
frame rate ( generally means 30 frames per second )

Android 4.4 added the flush() command to drop all inflight requests.
|

Ā© 2013 Aptina Imaging Corporation
Capture Request
// Step 1 : Configure Output Surfaces
camera.configureOutputs (List<Surfaces> outputs)
// Set the size and format.
// Step 2: Build a CaptureRequest
// Use default Templates ā€“ Manual, Preview, Still_Capture,
// Record, Video_Snapshot, Zero_Shutter_Lag
CaptureRequest.Builder bldr =
camera.createCaptureRequest(CameraDevice.TEMPLATE_VIDEO_SNAPSHOT);
//no chaining of calls available
bldr.addTarget();
bldr.setTag(); // to identify the result when it is returned
bldr.set (Metadata.Key ā€¦);
CaptureRequest req = bldr.build();

25

|

Ā© 2013 Aptina Imaging Corporation
Capture Modes
//Step 3: Submit a request
//Pick 1 of the 4
// capture, captureBurst, setRepeatingRequest, setRepeatingBurst

camera.capture(CaptureRequest, CameraDevice.CaptureListener) //one time capture
camera.captureBurst(ā€¦) // Bracketing Modes. Guaranteed that no other request will be
interspersed in this queue
camera.setRepeatingRequest (ā€¦) // Preview. Lower priority. Cancelled with stopRepeating() or
flush() call. videoRates ā€“ needs clarification

camera.setRepeatingBurst (ā€¦) // same as setRepeatingBurst but at full frame rates

26

|

Ā© 2013 Aptina Imaging Corporation
CaptureListener
//Step 4: Process the progress of the capture
//4 callback methods available
onCaptureStarted(CameraDevice, CaptureRequest, long timestamp);
onCaptureCompleted(CameraDevice, CaptureRequest, CaptureResult);
//or
onCaptureFailed(CameraDevice, CaptureRequest, CaptureFailure);
// once all the capture requests are processed
onCaptureSequenceCompleted(CameraDevice, int seqid, int framenumber)

27

|

Ā© 2013 Aptina Imaging Corporation
Capture Result
//Step 5: Investigate the CaptureResult or CaptureFailure Object Received
// The results of a single image capture from the
//image sensor. Contains the final configuration for
//the capture hardware (sensor, lens, flash), the
//processing pipeline, the control algorithms,
//and the output buffers.
get(CameraMetadata.Key<T> key) ;
getRequest() ;

28

|

Ā© 2013 Aptina Imaging Corporation
ImageReader
ā€¢

Introduced in KitKat API Level 19

ā€¢

Android.media.ImageReader

ā€¢

Allows direct application access to image data rendered into a Surface

ā€¢

maxImages determines the maximum number of Image objects that can be be
acquired from the ImageReader simultaneously. Use cautiously !

ā€¢

ImageFormat is defined by ImageFormat or PixelFormat

ā€¢

ImageReader.OnImageAvailableListener provides callback for when the next
Image is available

ā€¢

Use acquireLatestImage, rather than acquireNextImage. It removes old images

ImageReader imgreader = ImageReader.newInstance(width, height, format,
maxImages);
imgreader.getSurface() ; // Pass this into the CameraRequest Class

29

|

Ā© 2013 Aptina Imaging Corporation
Camera Metadata
ā€¢ Base class for Camera Controls and Information
ā€¢ Metadata is of 2 types
ā€£ Static and Dynamic

ā€¢ Sensor Control
ā€¢ Flash Control
ā€¢ Lens Control
ā€¢ Pipeline Control
ā€¢ 3 Subclasses
ā€£ CameraCharacteristics

ā€£ CaptureRequest
ā€£ CaptureResult

30

|

Ā© 2013 Aptina Imaging Corporation
Camera Metadata ā€“ Static
ā€¢ Characteristics for an Individual Camera Device
ā€¢ Static ā€“ does not change for a device, so no need to
open a Camera to get this information.
ā€£ Can be queried from Camera Manager or Camera Device

ā€¢ Keys are of the format - ā€œAvailableā€ or ā€œInfoā€
ā€¢ Some interesting Metadata Keys
ā€£ INFO_SUPPORTED_HARDWARE_LEVEL : Limited or Full
ā€£ 3A : CONTROL_AE_*, CONTROL_AWB_*, CONTROL_AF_*
ā€£ LENS_INFO_*, FLASH_INFO_*, SENSOR_INFO_*

31

|

Ā© 2013 Aptina Imaging Corporation
Camera Metadata - Dynamic
ā€¢ Dynamic Metadata is ā€œper frameā€
ā€¢ Set in CaptureRequest via the Builder to specify
settings while capturing a frame.
ā€¢ Returned as part of the CaptureResult
ā€¢ One has to be a ā€œproā€ with Image Sensors and Image
Sensing Pipelines to use this.
ā€¢ Very long list of options available

32

|

Ā© 2013 Aptina Imaging Corporation
How do we use these APIs?
ā€¢

To query whether the APIs are available or not on a platform, use
reflection.

ā€¢

{@hide} only means not available in SDK.

ā€¢

Steps to setup development environment
ā€£

Connect KitKat Device or start KitKat AVD
adb pull /system/framework/core.jar .
adb pull /system/framework/framework.jar .

ā€£

Convert from Dex to Jar using tool such as dex2jar
dex2jar core.jar
dex2jar framework.jar

ā€£

In Eclipse, Project ā†’ Properties ā†’ Java Build Path ā†’ Libraries ā†’ Add External
JARs... ā†’ core-dex2jar.jar & framework-dex2jar.jar
Source : stackoverflow

ā€¢
33

APIs donā€™t work on AVD because the HAL is a Version 1 Implementation
|

Ā© 2013 Aptina Imaging Corporation
ā€¢ https://github.com/lbk003/Cam3HiddenAPIs

34

|

Ā© 2013 Aptina Imaging Corporation
The Platform

35

|

Ā© 2013 Aptina Imaging Corporation
AOSP Architecture
Application
Framework/SDK

Java Classes Exposed to the
application for interacting with
the hardware

frameworks/base/core/java/and
roid/hardware

JNI

Glue Code between Java Classes
and Native Classes

frameworks/base/core/jni/andro
id_hardware_Camera.cpp

Native
Framework

Native counterpart of the Java
Camera Classes. Manages all
Binder Interactions

frameworks/av/camera/Camera.
cpp

IPC Binder

3 Binder Interfaces
ICameraService and Icamera
from Application to Framework.
ICameraClient for callbacks into
the Application

frameworks/av/camera

Camera Service

The Camera Service that
manages permissions and
lifecycle of the Camera Devices

frameworks/av/services/camera
/libcameraservice/CameraServic
e.cpp

HAL Interface

Hardware Interface. Multiple
Versions

platform/hardware/libhardware/
include

HAL
Implementation

Hardware specific
implementations. Depends on
host processor, ISP and Sensor

platform/hardware/<vendor>/<pl
atform>

Kernel drivers

http://source.android.com/devices/camera/camera.html
36

|

Ā© 2013 Aptina Imaging Corporation
Camera Version Saga
Camera
HAL
Version

Description

1.0

Android 4.0 (Icecream Sandwich)

Converted from C++
CameraHardwareInterface abstraction
layer to camera.h

2.0

Android 4.2 (Jelly
Bean MR1)

Initial Release of expanded capability HAL. camera2.h
Allowed ZSL in the service layer.

3.0

Android 4.3 (Jelly
Bean MR2)

First revision of expanded-capability
HAL camera3.h. Operational mode
same as Camera 2, but ABI different,
and optimized to support multiple
host architectures

3.1
37

Android Version

Android 4.4 (Kit
Kat)

Minor Revision. Added flush() call to
drop all inflight requests immediately

|

Ā© 2013 Aptina Imaging Corporation
Camera Version Saga (contd)
ā€¢

platform/hardware/libhardware/include/camera_common.h

ā€¢

Camera HAL version = CAMERA_DEVICE_API_VERSION

ā€¢

CAMERA_MODULE_API_VERSION is different
CAMERA_MODULE_API_
VERSION

CAMERA_DEVICE_A
PI_VERSION

Android Version

(Camera HAL
Version)

1.0

1.0

Android 4.0 (Ice-cream Sandwich)

2.0

2.0

Android 4.2 (Jelly Bean MR1)

2.1

3.0

Android 4.3 (Jelly Bean MR2)

2.2

3.1

Android 4.4 (Kit Kat)

ā€¢ CAMERA_DEVICE_API_VERSION 2.x is outdated.

38

|

Ā© 2013 Aptina Imaging Corporation
Camera 3 HAL
ā€¢ Supports 2 modes ā€“ Limited and Full
ā€¢ Limited just means Camera version 1

ā€¢ Camera HAL version 3 and 1 can co-exist. For example,
a front facing camera may be a version 1 device,
whereas the rear facing one could be a version 3
device.

39

|

Ā© 2013 Aptina Imaging Corporation
Camera 1 HAL

http://source.android.com/devices/camera/camera.html
40

|

Ā© 2013 Aptina Imaging Corporation
Camera 3 Core Operation Model

http://source.android.com/devices/camera/camera.html
41

|

Ā© 2013 Aptina Imaging Corporation
Camera 3 HAL Model

http://source.android.com/devices/camera/camera.html
42

|

Ā© 2013 Aptina Imaging Corporation
Camera Pipeline

http://source.android.com/devices/camera/camera.html
43

|

Ā© 2013 Aptina Imaging Corporation
3A
ā€¢

3A = Auto Focus, Auto Exposure, Auto White Balance

ā€¢

Along with demosaicing and denoising, forms a crucial part of the
image pipeline.

ā€¢

The 3A algorithms are typically the ā€œsecret sauceā€ of the ISP

ā€¢

The State Machine for each of the 3A is defined by the HAL.

ā€¢

When a device is opened the 3A is INACTIVE

ā€¢

3A algorithms at the top level are controlled by
ANDROID_CONTROL_MODE key
1.

ANDROID_CONTROL_MODE_OFF

2.

ANDROID_CONTROL_MODE_AUTO

3.

ANDROID_CONTROL_USE_SCENE_MODE
ā€¢

44

|

SCENE_MODE_FACE_PRIORITY -the AE/AWB/AFMODE controls work as in
ANDROID_CONTROL_MODE_AUTO, but the 3A routines must bias toward metering and focusing
on any detected faces in the scene.

Ā© 2013 Aptina Imaging Corporation
Open Source Implementation of HAL3
Nexus 5
ā€¢ https://android.googlesource.com/platform/hardware/
qcom/camera/+/kitkat-release/QCamera2/HAL3/
ā€¢ Released for the Qualcomm MSM8974 Snapdragon 800
based device

45

|

Ā© 2013 Aptina Imaging Corporation
Implementing Camera3 HALs
ā€¢ Overall with Camera3 specification, the Camera HAL
implementations have become simpler, since most of the
functionality like stream management, etc. are defined and have
moved into the Service Layer
ā€¢ Most Camera HAL implementations have had required considerable
amount of cleanup and refactoring.
ā€¢ Most of the work is getting the Hardware vendors (AP, ISPs) ready
to support these features
ā€¢ Devices with Camera 3 implementations - Nexus 7 (4.3) and Nexus
5
ā€¢ Major progress but there are areas of investigations - like
processing of non-Bayer sensors, multi-stream, multi ā€“ array
sensors etc.

46

|

Ā© 2013 Aptina Imaging Corporation
A Peek into the Future

47

|

Ā© 2013 Aptina Imaging Corporation
Emerging Trends
ā€¢ Photography is going to become a lot about the software as
processing from offline computers to smart devices
ā€¢ Imagers for information
ā€£ Computer Vision, Gesture Recognition, Augmented Reality

ā€¢ Non-Bayer Sensors
ā€£ Clarity+

ā€¢ High Dynamic Range
ā€£ HDR in Preview, Video

ā€¢ Multi Sensor Imagers ā€“ Array imagers, Stereo

48

|

Ā© 2013 Aptina Imaging Corporation
DEMO
49

|

Ā© 2013 Aptina Imaging Corporation
Q&A
50

|

Ā© 2013 Aptina Imaging Corporation
References
ā€¢

Computational Photography
ā€£
ā€£

http://graphics.stanford.edu/projects/lightfield/

ā€£

http://fcam.garage.maemo.org/

ā€£

http://graphics.stanford.edu/courses/cs178/applets/

ā€£

https://graphics.stanford.edu/papers/fcam/fcam-sigtalk.pdf

ā€£

ā€¢

http://graphics.stanford.edu/projects/camera-2.0/

http://graphics.stanford.edu/papers/camera20/levoy-platforms-cga10.pdf

Android
ā€£
ā€£

http://source.android.com/devices/camera/camera.html

ā€£

ā€¢

http://source.android.com
http://android.googlesource.com

Clarity+
ā€£

51

http://www.aptina.com/Aptina_ClarityPlus_WhitePaper.pdf

|

Ā© 2013 Aptina Imaging Corporation
About
Aptina is a global provider of CMOS imaging solutions that enable
Imaging Everywhereā„¢. Using performance enhancing technologies like
Aptina A-Pixā„¢, Aptina A-PixHSā„¢ , DR-Pixā„¢ and Clarity+ā„¢ technology,
Aptina has created a market-leading portfolio of image sensor
products found in leading consumer electronics like smart phones,
tablets, laptops, digital and video cameras, as well as applications in
surveillance, automotive, medical, video conferencing, and gaming.
Clarity+ is Aptinaā€™s breakthrough clear pixel technology that
provides 2x improvement in image quality under low light conditions.

Contact Information
Balwinder Kaur bkaur@aptina.com
52

|

Ā© 2013 Aptina Imaging Corporation
Hidden Camera 3 APIs in Android 4.4 (KitKat)

More Related Content

What's hot

Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera ArchitecturePicker Weng
Ā 
Android audio system(audioflinger)
Android audio system(audioflinger)Android audio system(audioflinger)
Android audio system(audioflinger)fefe7270
Ā 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
Ā 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateLinaro
Ā 
MediaPlayer Playing Flow
MediaPlayer Playing FlowMediaPlayer Playing Flow
MediaPlayer Playing FlowJavid Hsu
Ā 
08 android multimedia_framework_overview
08 android multimedia_framework_overview08 android multimedia_framework_overview
08 android multimedia_framework_overviewArjun Reddy
Ā 
ExoPlayer for Application developers
ExoPlayer for Application developersExoPlayer for Application developers
ExoPlayer for Application developersHassan Abid
Ā 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveBin Chen
Ā 
Overview of Android binder IPC implementation
Overview of Android binder IPC implementationOverview of Android binder IPC implementation
Overview of Android binder IPC implementationChethan Pchethan
Ā 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Opersys inc.
Ā 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverNanik Tolaram
Ā 
Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overviewJerrin George
Ā 
How to create a camera2
How to create a camera2How to create a camera2
How to create a camera2Booch Lin
Ā 
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)"Learning AOSP" - Android Hardware Abstraction Layer (HAL)
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)Nanik Tolaram
Ā 

What's hot (20)

Embedded Android : System Development - Part III
Embedded Android : System Development - Part IIIEmbedded Android : System Development - Part III
Embedded Android : System Development - Part III
Ā 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Ā 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
Ā 
Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera Architecture
Ā 
Android audio system(audioflinger)
Android audio system(audioflinger)Android audio system(audioflinger)
Android audio system(audioflinger)
Ā 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
Ā 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack Update
Ā 
Binder: Android IPC
Binder: Android IPCBinder: Android IPC
Binder: Android IPC
Ā 
MediaPlayer Playing Flow
MediaPlayer Playing FlowMediaPlayer Playing Flow
MediaPlayer Playing Flow
Ā 
08 android multimedia_framework_overview
08 android multimedia_framework_overview08 android multimedia_framework_overview
08 android multimedia_framework_overview
Ā 
Android presentation
Android presentationAndroid presentation
Android presentation
Ā 
ExoPlayer for Application developers
ExoPlayer for Application developersExoPlayer for Application developers
ExoPlayer for Application developers
Ā 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Ā 
Overview of Android binder IPC implementation
Overview of Android binder IPC implementationOverview of Android binder IPC implementation
Overview of Android binder IPC implementation
Ā 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013
Ā 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
Ā 
Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overview
Ā 
How to create a camera2
How to create a camera2How to create a camera2
How to create a camera2
Ā 
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)"Learning AOSP" - Android Hardware Abstraction Layer (HAL)
"Learning AOSP" - Android Hardware Abstraction Layer (HAL)
Ā 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
Ā 

Viewers also liked

Camera2 introdction
Camera2 introdctionCamera2 introdction
Camera2 introdctionBooch Lin
Ā 
ć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸ
ć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸ
ć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸYamashita Takeshi
Ā 
Introduction of Android Camera1
Introduction of Android Camera1Introduction of Android Camera1
Introduction of Android Camera1Booch Lin
Ā 
Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟
Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟
Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟Masaki Otsuki
Ā 
IoT in the Enterprise
IoT in the EnterpriseIoT in the Enterprise
IoT in the EnterpriseBalwinder Kaur
Ā 
Going Beyond the Device Heart Beat
Going Beyond the Device Heart BeatGoing Beyond the Device Heart Beat
Going Beyond the Device Heart BeatBalwinder Kaur
Ā 
ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„
ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„
ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„tac0x2a
Ā 
GreenDao Introduction
GreenDao IntroductionGreenDao Introduction
GreenDao IntroductionBooch Lin
Ā 
Kernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelKernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelAnne Nicolas
Ā 
Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux MultimediaCaglar Dursun
Ā 
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and DriversKernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and DriversAnne Nicolas
Ā 
Multimedia con GNU/Linux
Multimedia con GNU/LinuxMultimedia con GNU/Linux
Multimedia con GNU/LinuxStefano Sabatini
Ā 
Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)Egor Elizarov
Ā 
ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•
ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•
ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•chon2010
Ā 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System ServerOpersys inc.
Ā 
Nestle + kitkat
Nestle + kitkatNestle + kitkat
Nestle + kitkatJigar Gala
Ā 

Viewers also liked (20)

Camera2 introdction
Camera2 introdctionCamera2 introdction
Camera2 introdction
Ā 
ć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸ
ć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸ
ć‚ćƒ»ćƒ»ćƒ»ć‚ć‚Šć®ć¾ć¾ä»Ščµ·ć“ć£ćŸć“ćØć‚’č©±ć™ćœļ¼ćŠć‚ŒćÆTextureView恧惗惭ć‚ø悧ć‚Æćƒˆć‚’é–‹å§‹ć—ć¦ć„ćŸćØę€ć£ćŸć‚‰ć„ć¤ć®ć¾ć«ć‹SurfaceViewć«ęˆ»ć£ć¦ć„ćŸ
Ā 
Introduction of Android Camera1
Introduction of Android Camera1Introduction of Android Camera1
Introduction of Android Camera1
Ā 
Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟
Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟
Camera API 3.0ć‚’č§¦ć£ć¦ćæ恟
Ā 
IoT in the Enterprise
IoT in the EnterpriseIoT in the Enterprise
IoT in the Enterprise
Ā 
Going Beyond the Device Heart Beat
Going Beyond the Device Heart BeatGoing Beyond the Device Heart Beat
Going Beyond the Device Heart Beat
Ā 
Camera2
Camera2Camera2
Camera2
Ā 
ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„
ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„
ć‚«ćƒ”ćƒ©ć‚¢ćƒ—ćƒŖå®Ÿč£…ć®ć‚³ćƒ„
Ā 
Kitkat
KitkatKitkat
Kitkat
Ā 
GreenDao Introduction
GreenDao IntroductionGreenDao Introduction
GreenDao Introduction
Ā 
Kernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelKernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernel
Ā 
Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux Multimedia
Ā 
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and DriversKernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Ā 
Multimedia con GNU/Linux
Multimedia con GNU/LinuxMultimedia con GNU/Linux
Multimedia con GNU/Linux
Ā 
Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)Android internals 03 - Build system, emulator (rev_1.1)
Android internals 03 - Build system, emulator (rev_1.1)
Ā 
ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•
ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•
ģ•ˆė“œė”œģ“ė“œ ģ™€ ė””ė°”ģ“ģŠ¤ ė“œė¼ģ“ė²„ ģ ģš© źø°ė²•
Ā 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
Ā 
THE KITKAT STORY
THE KITKAT STORYTHE KITKAT STORY
THE KITKAT STORY
Ā 
Process of Nestle Coffee and Chocolate
Process of Nestle Coffee and Chocolate Process of Nestle Coffee and Chocolate
Process of Nestle Coffee and Chocolate
Ā 
Nestle + kitkat
Nestle + kitkatNestle + kitkat
Nestle + kitkat
Ā 

Similar to Hidden Camera 3 APIs in Android 4.4 (KitKat)

COSCUP 2017 FACE OFF
COSCUP 2017 FACE OFFCOSCUP 2017 FACE OFF
COSCUP 2017 FACE OFFPRADA Hsiung
Ā 
UplinQ - implementing computational camera
UplinQ - implementing computational cameraUplinQ - implementing computational camera
UplinQ - implementing computational cameraSatya Harish
Ā 
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App..."Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...Edge AI and Vision Alliance
Ā 
xmobots at the Scade User Group Conference 2013
xmobots at the Scade User Group Conference 2013xmobots at the Scade User Group Conference 2013
xmobots at the Scade User Group Conference 2013Ansys
Ā 
"Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a...
"Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a..."Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a...
"Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a...Edge AI and Vision Alliance
Ā 
IBM Mobile Quality Assurance Open Beta Study Group Session 3 (Instrumenting...
IBM Mobile Quality Assurance   Open Beta Study Group Session 3 (Instrumenting...IBM Mobile Quality Assurance   Open Beta Study Group Session 3 (Instrumenting...
IBM Mobile Quality Assurance Open Beta Study Group Session 3 (Instrumenting...Roger Snook
Ā 
Avigilon acc6.10.0.24-release-notes
Avigilon acc6.10.0.24-release-notesAvigilon acc6.10.0.24-release-notes
Avigilon acc6.10.0.24-release-notesDanilo Moreira
Ā 
Video Surveillance Report
Video Surveillance ReportVideo Surveillance Report
Video Surveillance ReportMihika Shah
Ā 
ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...
ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...
ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...Edge AI and Vision Alliance
Ā 
Computer Vision Technology and Expertise
Computer Vision Technology and ExpertiseComputer Vision Technology and Expertise
Computer Vision Technology and ExpertiseRhonda Software
Ā 
IRJET- Optimization of Surveillance Camera for Low Cost Storage Device
IRJET- Optimization of Surveillance Camera for Low Cost Storage DeviceIRJET- Optimization of Surveillance Camera for Low Cost Storage Device
IRJET- Optimization of Surveillance Camera for Low Cost Storage DeviceIRJET Journal
Ā 
Securescape Introduction
Securescape IntroductionSecurescape Introduction
Securescape IntroductionDaden Limited
Ā 
ARM: Enhancing your Unity mobile VR experience
ARM: Enhancing your Unity mobile VR experienceARM: Enhancing your Unity mobile VR experience
ARM: Enhancing your Unity mobile VR experienceDevGAMM Conference
Ā 
"Addressing Corner Cases in Embedded Computer Vision Applications," a Present...
"Addressing Corner Cases in Embedded Computer Vision Applications," a Present..."Addressing Corner Cases in Embedded Computer Vision Applications," a Present...
"Addressing Corner Cases in Embedded Computer Vision Applications," a Present...Edge AI and Vision Alliance
Ā 
Mopcon2017 - AppDevKit x CameraKit
Mopcon2017 - AppDevKit x CameraKitMopcon2017 - AppDevKit x CameraKit
Mopcon2017 - AppDevKit x CameraKitanistar sung
Ā 
IRJET- Front View Identification of Vehicles by using Machine Learning Te...
IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...
IRJET- Front View Identification of Vehicles by using Machine Learning Te...IRJET Journal
Ā 
Video Stabilization using Python and open CV
Video Stabilization using Python and open CVVideo Stabilization using Python and open CV
Video Stabilization using Python and open CVIRJET Journal
Ā 
Debug, Analyze and Optimize Games with Intel Tools
Debug, Analyze and Optimize Games with Intel Tools Debug, Analyze and Optimize Games with Intel Tools
Debug, Analyze and Optimize Games with Intel Tools Matteo Valoriani
Ā 

Similar to Hidden Camera 3 APIs in Android 4.4 (KitKat) (20)

COSCUP 2017 FACE OFF
COSCUP 2017 FACE OFFCOSCUP 2017 FACE OFF
COSCUP 2017 FACE OFF
Ā 
UplinQ - implementing computational camera
UplinQ - implementing computational cameraUplinQ - implementing computational camera
UplinQ - implementing computational camera
Ā 
Implementing Computational Camera
Implementing Computational CameraImplementing Computational Camera
Implementing Computational Camera
Ā 
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App..."Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
Ā 
xmobots at the Scade User Group Conference 2013
xmobots at the Scade User Group Conference 2013xmobots at the Scade User Group Conference 2013
xmobots at the Scade User Group Conference 2013
Ā 
"Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a...
"Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a..."Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a...
"Accessing Advanced Image Processing Feature Sets with Alvium Cameras Using a...
Ā 
IBM Mobile Quality Assurance Open Beta Study Group Session 3 (Instrumenting...
IBM Mobile Quality Assurance   Open Beta Study Group Session 3 (Instrumenting...IBM Mobile Quality Assurance   Open Beta Study Group Session 3 (Instrumenting...
IBM Mobile Quality Assurance Open Beta Study Group Session 3 (Instrumenting...
Ā 
Avigilon acc6.10.0.24-release-notes
Avigilon acc6.10.0.24-release-notesAvigilon acc6.10.0.24-release-notes
Avigilon acc6.10.0.24-release-notes
Ā 
Video Surveillance Report
Video Surveillance ReportVideo Surveillance Report
Video Surveillance Report
Ā 
ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...
ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...
ā€œMachine Learning for the Real World: What is Acceptable Accuracy, and How Ca...
Ā 
Computer Vision Technology and Expertise
Computer Vision Technology and ExpertiseComputer Vision Technology and Expertise
Computer Vision Technology and Expertise
Ā 
IRJET- Optimization of Surveillance Camera for Low Cost Storage Device
IRJET- Optimization of Surveillance Camera for Low Cost Storage DeviceIRJET- Optimization of Surveillance Camera for Low Cost Storage Device
IRJET- Optimization of Surveillance Camera for Low Cost Storage Device
Ā 
Securescape Introduction
Securescape IntroductionSecurescape Introduction
Securescape Introduction
Ā 
ARM: Enhancing your Unity mobile VR experience
ARM: Enhancing your Unity mobile VR experienceARM: Enhancing your Unity mobile VR experience
ARM: Enhancing your Unity mobile VR experience
Ā 
Machine Vision Cameras
Machine Vision CamerasMachine Vision Cameras
Machine Vision Cameras
Ā 
"Addressing Corner Cases in Embedded Computer Vision Applications," a Present...
"Addressing Corner Cases in Embedded Computer Vision Applications," a Present..."Addressing Corner Cases in Embedded Computer Vision Applications," a Present...
"Addressing Corner Cases in Embedded Computer Vision Applications," a Present...
Ā 
Mopcon2017 - AppDevKit x CameraKit
Mopcon2017 - AppDevKit x CameraKitMopcon2017 - AppDevKit x CameraKit
Mopcon2017 - AppDevKit x CameraKit
Ā 
IRJET- Front View Identification of Vehicles by using Machine Learning Te...
IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...IRJET-  	  Front View Identification of Vehicles by using Machine Learning Te...
IRJET- Front View Identification of Vehicles by using Machine Learning Te...
Ā 
Video Stabilization using Python and open CV
Video Stabilization using Python and open CVVideo Stabilization using Python and open CV
Video Stabilization using Python and open CV
Ā 
Debug, Analyze and Optimize Games with Intel Tools
Debug, Analyze and Optimize Games with Intel Tools Debug, Analyze and Optimize Games with Intel Tools
Debug, Analyze and Optimize Games with Intel Tools
Ā 

Recently uploaded

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
Ā 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
Ā 
Scaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationScaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationRadu Cotescu
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel AraĆŗjo
Ā 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
Ā 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
Ā 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
Ā 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
Ā 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Ā 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Ā 
Scaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationScaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organization
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Ā 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Ā 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Ā 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Ā 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Ā 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 

Hidden Camera 3 APIs in Android 4.4 (KitKat)

  • 1. Camera 3 The New Camera Subsystem in Android KitKat Balwinder Kaur, Senior Member, Technical Staff, Aptina Imaging AnDevCon, Burlingame, CA 11.15.13 Slide Deck v 1.2 last updated 12.27.13 Ā© 2013 Aptina Imaging Corporation. All rights reserved. Products are warranted only to meet Aptinaā€™s production data sheet specifications. Information, products, and/or specifications are subject to change without notice. All information is provided on an ā€œAS ISā€ basis without warranties of any kind. Dates are estimates only. Drawings not to scale. Aptina and the Aptina logo are trademarks of Aptina Imaging Corporation. All other trademarks are the property of their respective owners. 1 | Ā© 2013 Aptina Imaging Corporation
  • 2. Agenda I. Camera 3 ā€£ Introduction ā€£ History ā€£ Computational Photography Use Cases II. The APIs ā€£ {@hide} ā€“ Sneak Peek into coming Android Pro Camera APIs III. The Platform ā€£ Architecture ā€£ 3A IV. Emerging Trends V. Demo VI. Q&A 2 | Ā© 2013 Aptina Imaging Corporation
  • 3. Camera 3 ā€“ The New Camera Framework 3 | Ā© 2013 Aptina Imaging Corporation
  • 4. Limitations of Camera 1 ā€¢ 3 Operating Modes ā€£ Preview ā€£ Capture ā€£ Video ā€¢ Burst Mode Photography ā€“ hard to implement ā€£ Zero Shutter Lag ā€£ Multi-Shot HDR ā€£ Panoramic Stitch ā€¢ Metadata: Practically, only face detection data could be returned to the application 4 | Ā© 2013 Aptina Imaging Corporation
  • 5. Camera 3 ā€¢ Android 4.3 (Jelly Bean MR2) and Android 4.4 (KitKat) have shipped with a new Camera Hardware Interface ā€£ Android 4.3 => Camera 3 Hardware Interface ā€£ Android 4.4 => Camera 3.1 Hardware Interface What happened to Camera2 ? 5 | Ā© 2013 Aptina Imaging Corporation
  • 6. Overview of Camera 3 ā€¢ Camera Framework till Android 4.0 was modeled after a point & shoot camera. ā€¢ Expanded Camera Subsystem is modeled after a Professional Camera ā€£ ā€¢ 6 But it is more than that It is the basis of a potential paradigm shift in photography | Ā© 2013 Aptina Imaging Corporation
  • 7. A Bit of History FCAM F2 Frankencamera Project Lead - Stanford Professor Marc Levoy Main architects - Eino-Ville (Eddy) Talvala and Andrew Adams Eddy Talvala is the Tech Lead for Camera Framework on the Android Team Industry Partner - Nokia Computational Photography ā€£ Out of scope for this talk ā€£ Good starting point - A white paper on Computational Photography Platforms by Marc Levoy ā€£ Use and relevance of software increases in photography ā€£ Processing happens in near real time instead of post-processing ā€£ Open platforms facilitate innovation 7 | Ā© 2013 Aptina Imaging Corporation
  • 8. Computational Photography Definition ā€¢ Computational photography refers to computational image capture, processing, and manipulation techniques that enhance or extend the capabilities of digital photography. ā€¢ Good examples of image capture and manipulation include panoramas, and high-dynamic-range imaging which is the use of differently exposed pictures of the same scene to extend dynamic range beyond even that of analog film-based media. Source: Wikipedia 8 | Ā© 2013 Aptina Imaging Corporation
  • 9. Multi Shot HDR ā€¢ HDR = High Dynamic Range ā€¢ Multiple shots at different exposures and then blended together 9 | Ā© 2013 Aptina Imaging Corporation
  • 11. Multi-Flash Photography Source: Stanford Graphics Research 11 | Ā© 2013 Aptina Imaging Corporation
  • 12. Flash No-Flash Photography Source: Microsoft Research 12 | Ā© 2013 Aptina Imaging Corporation
  • 13. Flash No-Flash Photography Source: Microsoft Research 13 | Ā© 2013 Aptina Imaging Corporation
  • 14. Focus Bracketing Focus Stacking for macro photography Source: Wikipedia 14 | Ā© 2013 Aptina Imaging Corporation
  • 15. View Finder Editing Todayā€™s smartphones have features like ā€¢ ā€£ Computational Photography can take it to the next level ā€¢ ā€£ ā€¢ 15 Touch to Expose & Touch to Focus Edit the frame in the view finder by selecting areas to sharpen, blur, brighten and maintain these during capture mode Source: SIGGRAPH 2012 | Ā© 2013 Aptina Imaging Corporation
  • 16. Open Platform Requirements for Computation Photography ā€¢ Fine grained control of the Sensor, Flash, Lens and Image Signal Processing pipeline ā€¢ Ability to program ā€£ exposure time, auto white balance, focus, frame-rate etc. ā€£ metering algorithm, autofocus algorithm etc. ā€¢ Meta data ā€£ Every frame is returned with the settings that it was taken with (verses settings take effect sometime in future) ā€¢ Platform should have enough compute and memory power. ā€£ With multi core devices and GPU capability increasing, Android becomes a very attractive platform as an open computational photography platform. 16 | Ā© 2013 Aptina Imaging Corporation
  • 17. Other use cases ā€¢ Using Imagers for Information ā€£ Gesture Recognition ā€£ Face Recognition ā€£ Augmented Reality ā€¢ Requirements differ for this class of applications ā€£ High and steady Frame Rate under all light conditions is Important. ā€£ Of less importance ā€¢ ā€¢ 17 | High Resolution Image Quality & Color Accuracy Ā© 2013 Aptina Imaging Corporation
  • 18. The APIs 18 | Ā© 2013 Aptina Imaging Corporation
  • 19. Camera API Camera APIs Package - android.hardware.camera Android Version Additions to android.hardware.camera Kit Kat (4.4) API level 19 None Jelly Bean MR2 (4.3) API level 18 None Jelly Bean MR1 (4.2) API level 17 Minor (HDR, shutterSound) Jelly Bean (4.1) API level 16 Minor (AutoFocus Move Callback) Ice-cream Sandwich API level 15 Minor (Video Stabilization) Ice-cream Sandwich 19 API Level API level 14 Major (Face Detection) | Ā© 2013 Aptina Imaging Corporation
  • 20. A Sneak Peek of the New Camera APIs ā€¢ Kitkat shipped with a set of Experimental Java camera APIs with the {@hide} tag. ā€£ https://android.googlesource.com/platform/frameworks/base /+/kitkat-release/core/java/android/hardware/camera2/ ā€¢ Package name is android.hardware.camera2 ā€£ But in other parts of AOSP many references to ProCamera (Professional Camera) are found. 20 | Ā© 2013 Aptina Imaging Corporation
  • 21. Pro Camera APIs ? ā€¢ They are experimental and not part of the SDK, but available in the platform. ā€¢ Likely to change before released in the SDK. ā€¢ Camera 3 Hardware Interface is fairly stable now. ā€¢ Itā€™s a good time to start thinking about new Camera applications 21 | Ā© 2013 Aptina Imaging Corporation
  • 22. android.hardware.camera2 Interface Camera Device Exception CameraAccessException 22 | Ā© 2013 Aptina Imaging Corporation Classes CameraCharacteristics CameraDevice.CaptureListener CameraDevice.StateListener CameraManager CameraManager.AvailabilityListener CameraMetadata CameraMetadata.Key<t> CaptureFailure CaptureRequest CaptureRequest.Builder CaptureResult Face Rational Size
  • 23. Camera Manager Interface for iterating, listing and accessing Camera Devices CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); //Iterating through Camera Devices manager.getCameraIdList(); // Query a device for Capabilities manager.getCameraCharacteristics(cameraId); // Open a Camera manager.openCamera ( cameraId,...); // add an Availability Listener as Cameras become available or unavailable manager.addAvailabilityListener(CameraManager.AvailabilityListener); 23 | Ā© 2013 Aptina Imaging Corporation
  • 24. Camera Device ā€¢ Device is modeled as a pipeline ā€£ Input : CaptureRequest for a single Frame ā€£ Output: CaptureResult Metadata packet + output image buffers for the request. These buffers can go to one or multiple output targets ā€¢ SurfaceView ā€¢ SurfaceTexture ā€¢ MediaCodec ā€¢ MediaRecorder ā€¢ Renderscript Allocation et al ā€¢ ImageReader (Use this for Still Images) ā€£ ā€£ 24 Requests are processed in order, multiple requests are in flight to maintain full frame rate ( generally means 30 frames per second ) Android 4.4 added the flush() command to drop all inflight requests. | Ā© 2013 Aptina Imaging Corporation
  • 25. Capture Request // Step 1 : Configure Output Surfaces camera.configureOutputs (List<Surfaces> outputs) // Set the size and format. // Step 2: Build a CaptureRequest // Use default Templates ā€“ Manual, Preview, Still_Capture, // Record, Video_Snapshot, Zero_Shutter_Lag CaptureRequest.Builder bldr = camera.createCaptureRequest(CameraDevice.TEMPLATE_VIDEO_SNAPSHOT); //no chaining of calls available bldr.addTarget(); bldr.setTag(); // to identify the result when it is returned bldr.set (Metadata.Key ā€¦); CaptureRequest req = bldr.build(); 25 | Ā© 2013 Aptina Imaging Corporation
  • 26. Capture Modes //Step 3: Submit a request //Pick 1 of the 4 // capture, captureBurst, setRepeatingRequest, setRepeatingBurst camera.capture(CaptureRequest, CameraDevice.CaptureListener) //one time capture camera.captureBurst(ā€¦) // Bracketing Modes. Guaranteed that no other request will be interspersed in this queue camera.setRepeatingRequest (ā€¦) // Preview. Lower priority. Cancelled with stopRepeating() or flush() call. videoRates ā€“ needs clarification camera.setRepeatingBurst (ā€¦) // same as setRepeatingBurst but at full frame rates 26 | Ā© 2013 Aptina Imaging Corporation
  • 27. CaptureListener //Step 4: Process the progress of the capture //4 callback methods available onCaptureStarted(CameraDevice, CaptureRequest, long timestamp); onCaptureCompleted(CameraDevice, CaptureRequest, CaptureResult); //or onCaptureFailed(CameraDevice, CaptureRequest, CaptureFailure); // once all the capture requests are processed onCaptureSequenceCompleted(CameraDevice, int seqid, int framenumber) 27 | Ā© 2013 Aptina Imaging Corporation
  • 28. Capture Result //Step 5: Investigate the CaptureResult or CaptureFailure Object Received // The results of a single image capture from the //image sensor. Contains the final configuration for //the capture hardware (sensor, lens, flash), the //processing pipeline, the control algorithms, //and the output buffers. get(CameraMetadata.Key<T> key) ; getRequest() ; 28 | Ā© 2013 Aptina Imaging Corporation
  • 29. ImageReader ā€¢ Introduced in KitKat API Level 19 ā€¢ Android.media.ImageReader ā€¢ Allows direct application access to image data rendered into a Surface ā€¢ maxImages determines the maximum number of Image objects that can be be acquired from the ImageReader simultaneously. Use cautiously ! ā€¢ ImageFormat is defined by ImageFormat or PixelFormat ā€¢ ImageReader.OnImageAvailableListener provides callback for when the next Image is available ā€¢ Use acquireLatestImage, rather than acquireNextImage. It removes old images ImageReader imgreader = ImageReader.newInstance(width, height, format, maxImages); imgreader.getSurface() ; // Pass this into the CameraRequest Class 29 | Ā© 2013 Aptina Imaging Corporation
  • 30. Camera Metadata ā€¢ Base class for Camera Controls and Information ā€¢ Metadata is of 2 types ā€£ Static and Dynamic ā€¢ Sensor Control ā€¢ Flash Control ā€¢ Lens Control ā€¢ Pipeline Control ā€¢ 3 Subclasses ā€£ CameraCharacteristics ā€£ CaptureRequest ā€£ CaptureResult 30 | Ā© 2013 Aptina Imaging Corporation
  • 31. Camera Metadata ā€“ Static ā€¢ Characteristics for an Individual Camera Device ā€¢ Static ā€“ does not change for a device, so no need to open a Camera to get this information. ā€£ Can be queried from Camera Manager or Camera Device ā€¢ Keys are of the format - ā€œAvailableā€ or ā€œInfoā€ ā€¢ Some interesting Metadata Keys ā€£ INFO_SUPPORTED_HARDWARE_LEVEL : Limited or Full ā€£ 3A : CONTROL_AE_*, CONTROL_AWB_*, CONTROL_AF_* ā€£ LENS_INFO_*, FLASH_INFO_*, SENSOR_INFO_* 31 | Ā© 2013 Aptina Imaging Corporation
  • 32. Camera Metadata - Dynamic ā€¢ Dynamic Metadata is ā€œper frameā€ ā€¢ Set in CaptureRequest via the Builder to specify settings while capturing a frame. ā€¢ Returned as part of the CaptureResult ā€¢ One has to be a ā€œproā€ with Image Sensors and Image Sensing Pipelines to use this. ā€¢ Very long list of options available 32 | Ā© 2013 Aptina Imaging Corporation
  • 33. How do we use these APIs? ā€¢ To query whether the APIs are available or not on a platform, use reflection. ā€¢ {@hide} only means not available in SDK. ā€¢ Steps to setup development environment ā€£ Connect KitKat Device or start KitKat AVD adb pull /system/framework/core.jar . adb pull /system/framework/framework.jar . ā€£ Convert from Dex to Jar using tool such as dex2jar dex2jar core.jar dex2jar framework.jar ā€£ In Eclipse, Project ā†’ Properties ā†’ Java Build Path ā†’ Libraries ā†’ Add External JARs... ā†’ core-dex2jar.jar & framework-dex2jar.jar Source : stackoverflow ā€¢ 33 APIs donā€™t work on AVD because the HAL is a Version 1 Implementation | Ā© 2013 Aptina Imaging Corporation
  • 35. The Platform 35 | Ā© 2013 Aptina Imaging Corporation
  • 36. AOSP Architecture Application Framework/SDK Java Classes Exposed to the application for interacting with the hardware frameworks/base/core/java/and roid/hardware JNI Glue Code between Java Classes and Native Classes frameworks/base/core/jni/andro id_hardware_Camera.cpp Native Framework Native counterpart of the Java Camera Classes. Manages all Binder Interactions frameworks/av/camera/Camera. cpp IPC Binder 3 Binder Interfaces ICameraService and Icamera from Application to Framework. ICameraClient for callbacks into the Application frameworks/av/camera Camera Service The Camera Service that manages permissions and lifecycle of the Camera Devices frameworks/av/services/camera /libcameraservice/CameraServic e.cpp HAL Interface Hardware Interface. Multiple Versions platform/hardware/libhardware/ include HAL Implementation Hardware specific implementations. Depends on host processor, ISP and Sensor platform/hardware/<vendor>/<pl atform> Kernel drivers http://source.android.com/devices/camera/camera.html 36 | Ā© 2013 Aptina Imaging Corporation
  • 37. Camera Version Saga Camera HAL Version Description 1.0 Android 4.0 (Icecream Sandwich) Converted from C++ CameraHardwareInterface abstraction layer to camera.h 2.0 Android 4.2 (Jelly Bean MR1) Initial Release of expanded capability HAL. camera2.h Allowed ZSL in the service layer. 3.0 Android 4.3 (Jelly Bean MR2) First revision of expanded-capability HAL camera3.h. Operational mode same as Camera 2, but ABI different, and optimized to support multiple host architectures 3.1 37 Android Version Android 4.4 (Kit Kat) Minor Revision. Added flush() call to drop all inflight requests immediately | Ā© 2013 Aptina Imaging Corporation
  • 38. Camera Version Saga (contd) ā€¢ platform/hardware/libhardware/include/camera_common.h ā€¢ Camera HAL version = CAMERA_DEVICE_API_VERSION ā€¢ CAMERA_MODULE_API_VERSION is different CAMERA_MODULE_API_ VERSION CAMERA_DEVICE_A PI_VERSION Android Version (Camera HAL Version) 1.0 1.0 Android 4.0 (Ice-cream Sandwich) 2.0 2.0 Android 4.2 (Jelly Bean MR1) 2.1 3.0 Android 4.3 (Jelly Bean MR2) 2.2 3.1 Android 4.4 (Kit Kat) ā€¢ CAMERA_DEVICE_API_VERSION 2.x is outdated. 38 | Ā© 2013 Aptina Imaging Corporation
  • 39. Camera 3 HAL ā€¢ Supports 2 modes ā€“ Limited and Full ā€¢ Limited just means Camera version 1 ā€¢ Camera HAL version 3 and 1 can co-exist. For example, a front facing camera may be a version 1 device, whereas the rear facing one could be a version 3 device. 39 | Ā© 2013 Aptina Imaging Corporation
  • 41. Camera 3 Core Operation Model http://source.android.com/devices/camera/camera.html 41 | Ā© 2013 Aptina Imaging Corporation
  • 42. Camera 3 HAL Model http://source.android.com/devices/camera/camera.html 42 | Ā© 2013 Aptina Imaging Corporation
  • 44. 3A ā€¢ 3A = Auto Focus, Auto Exposure, Auto White Balance ā€¢ Along with demosaicing and denoising, forms a crucial part of the image pipeline. ā€¢ The 3A algorithms are typically the ā€œsecret sauceā€ of the ISP ā€¢ The State Machine for each of the 3A is defined by the HAL. ā€¢ When a device is opened the 3A is INACTIVE ā€¢ 3A algorithms at the top level are controlled by ANDROID_CONTROL_MODE key 1. ANDROID_CONTROL_MODE_OFF 2. ANDROID_CONTROL_MODE_AUTO 3. ANDROID_CONTROL_USE_SCENE_MODE ā€¢ 44 | SCENE_MODE_FACE_PRIORITY -the AE/AWB/AFMODE controls work as in ANDROID_CONTROL_MODE_AUTO, but the 3A routines must bias toward metering and focusing on any detected faces in the scene. Ā© 2013 Aptina Imaging Corporation
  • 45. Open Source Implementation of HAL3 Nexus 5 ā€¢ https://android.googlesource.com/platform/hardware/ qcom/camera/+/kitkat-release/QCamera2/HAL3/ ā€¢ Released for the Qualcomm MSM8974 Snapdragon 800 based device 45 | Ā© 2013 Aptina Imaging Corporation
  • 46. Implementing Camera3 HALs ā€¢ Overall with Camera3 specification, the Camera HAL implementations have become simpler, since most of the functionality like stream management, etc. are defined and have moved into the Service Layer ā€¢ Most Camera HAL implementations have had required considerable amount of cleanup and refactoring. ā€¢ Most of the work is getting the Hardware vendors (AP, ISPs) ready to support these features ā€¢ Devices with Camera 3 implementations - Nexus 7 (4.3) and Nexus 5 ā€¢ Major progress but there are areas of investigations - like processing of non-Bayer sensors, multi-stream, multi ā€“ array sensors etc. 46 | Ā© 2013 Aptina Imaging Corporation
  • 47. A Peek into the Future 47 | Ā© 2013 Aptina Imaging Corporation
  • 48. Emerging Trends ā€¢ Photography is going to become a lot about the software as processing from offline computers to smart devices ā€¢ Imagers for information ā€£ Computer Vision, Gesture Recognition, Augmented Reality ā€¢ Non-Bayer Sensors ā€£ Clarity+ ā€¢ High Dynamic Range ā€£ HDR in Preview, Video ā€¢ Multi Sensor Imagers ā€“ Array imagers, Stereo 48 | Ā© 2013 Aptina Imaging Corporation
  • 49. DEMO 49 | Ā© 2013 Aptina Imaging Corporation
  • 50. Q&A 50 | Ā© 2013 Aptina Imaging Corporation
  • 52. About Aptina is a global provider of CMOS imaging solutions that enable Imaging Everywhereā„¢. Using performance enhancing technologies like Aptina A-Pixā„¢, Aptina A-PixHSā„¢ , DR-Pixā„¢ and Clarity+ā„¢ technology, Aptina has created a market-leading portfolio of image sensor products found in leading consumer electronics like smart phones, tablets, laptops, digital and video cameras, as well as applications in surveillance, automotive, medical, video conferencing, and gaming. Clarity+ is Aptinaā€™s breakthrough clear pixel technology that provides 2x improvement in image quality under low light conditions. Contact Information Balwinder Kaur bkaur@aptina.com 52 | Ā© 2013 Aptina Imaging Corporation