Android Camera架構淺析

1Camera成像原理介紹java

Camera工做流程圖linux

image

Camera的成像原理能夠簡單歸納以下:android

景物(SCENE)經過鏡頭(LENS)生成的光學圖像投射到圖像傳感器(Sensor)表面上,而後轉爲電信號,通過A/D(模數轉換)轉換後變 爲數字圖像信號,再送到數字信號處理芯片(DSP)中加工處理,再經過IO接口傳輸到CPU中處理,經過DISPLAY就能夠看到圖像了。架構

電荷耦合器件(CCD)互補金屬氧化物半導體(CMOS)接收光學鏡頭傳遞來的影像,經模/數轉換器(A/D)轉換成數字信號,通過編碼後存儲。app

流程以下: 
一、CCD/CMOS將被攝體的光信號轉變爲電信號—電子圖像(模擬信號) 
二、由模/數轉換器(ADC)芯片來將模擬信號轉化爲數字信號 
三、數字信號造成後,由DSP或編碼庫對信號進行壓縮並轉化爲特定的圖像文件格式儲存框架

數碼相機的光學鏡頭與傳統相機相同,將影像聚到感光器件上,即(光)電荷耦合器件(CCD) 。CCD替代了傳統相機中的感光膠片的位置,其功能是將光信號轉換成電信號,與電視攝像相同。ide

CCD是半導體器件,是數碼相機的核心,其內含器件的單元數量決定了數碼相機的成像質量——像素,單元越多,即像素數高,成像質量越好,一般狀況下像素的高低表明了數碼相機的檔次和技術指標。ui

2Android Camera框架編碼

Android的Camera子系統提供一個拍照和錄製視頻的框架。.net

它將Camera的上層應用與Application Framework、用戶庫串接起來,而正是這個用戶庫來與Camera的硬件層通訊,從而實現操做camera硬件。

image

三、Android Camera的代碼結構

Android的Camera代碼主要在如下的目錄中: 
Camera的JAVA部分 
packages/apps/Camera/。其中Camera.java是主要實現的文件。這部份內容編譯成爲目標是Camera.apk 
com.android.camera這個包,幾個主要的類文件以下: 
PhotoViewer:GalleryPicker.java(全部圖片集)--->ImageGallery.java(某個Folder下圖片列表)--->ViewImage.java(看某張具體圖片) 
VideoPlayer:GalleryPicker.java(全部視頻集) --->MovieView.java(看某一個視頻) 
Camera:Camera.java(Camera取景及拍照) 
VideoCamera:VideoCamera.java(VideoCamera取景及攝像)

 

Cameraframework供上層應用調用的部分

 

base/core/java/android/hardware/Camera.java

這部分目標是framework.jar

 

Camera的JNI部分 
frameworks/base/core/jni/android_hardware_Camera.cpp 
這部份內容編譯成爲目標是libandroid_runtime.so。

Camera UI庫部分 
frameworks/base/libs/ui/camera 
這部分的內容被編譯成庫libcamera_client.so。

Camera服務部分 
frameworks/base/camera/libcameraservice/ 
這部份內容被編譯成庫libcameraservice.so。

Camera HAL層部分 
hardware/msm7k/libcamera 
或 
vendor/qcom/android-open/libcamera2 
爲 了實現一個具體功能的Camera,在HAL層須要一個硬件相關的Camera庫(例如經過調用video for  linux驅動程序和Jpeg編碼程序實現或者直接用各個chip廠商實現的私有庫來實現,好比Qualcomm實現的libcamera.so和 libqcamera.so),實現CameraHardwareInterface規定的接口,來調用相關的庫,驅動相關的driver,實現對 camera硬件的操做。這個庫將被Camera的服務庫libcameraservice.so調用。

未完待續

在下一篇中,我會以兩條路徑來詳細介紹Camera HAL的實現:本身依據V4l2規範來實現CameraHardwareInterface;   Qualcomm的Camera架構(QualcommCameraHardware和mm-camera/mm-still)。固然,在涉及到 Qualcomm私有庫部分,爲避免沒必要要的麻煩,我會一筆帶過。敬請見諒!

相關文章
相關標籤/搜索