資源描述:
《手機(jī)開發(fā)培訓(xùn) 08_Android的Video 輸入輸出系統(tǒng).pdf》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Android的Video輸入輸出系統(tǒng)Android的Video輸入輸出系統(tǒng)?第一部分Video輸入輸出系統(tǒng)的綜述?第二部分Overlay系統(tǒng)?第三部分Overlay的硬件抽象層?第四部分Camera系統(tǒng)與上層接口?第五部分Camera的硬件抽象層第一部分Video輸入輸出系統(tǒng)的綜述在Android系統(tǒng)中,視頻的輸入、輸出具有特定的架構(gòu)。視頻輸入輸出的兩個(gè)部分是:?視頻輸入:Camera系統(tǒng)既作為視頻輸入的接口,也作為照相機(jī)應(yīng)用的下層實(shí)現(xiàn)。?視頻輸出:Overlay系統(tǒng)一般作為視頻輸出的單獨(dú)層次,在硬件支
2、持中實(shí)現(xiàn)。第一部分Video輸入輸出系統(tǒng)的綜述Android的Overlay系統(tǒng)結(jié)構(gòu)OverlayAPIlibui.soOverlaySurfaceFlingerOverlayHardwareInterfaceOverlayHAL實(shí)現(xiàn)C框架內(nèi)核空間VideoOutputDriver第一部分Video輸入輸出系統(tǒng)的綜述Overlay相關(guān)的代碼路徑:Overlay框架部分的頭文件和源文件:frameworks/base/include/ui/frameworks/base/libs/ui/主要為類是IOver
3、lay和Overlay,源代碼被編譯成庫libui.so。與Overlay相關(guān)的SurfaceFlinger:framework/base/libs/surfaceflinger/主要的類是LayerBuffer。Overlay的硬件抽象層的接口:hardware/libhardware/include/hardware/overlay.h第一部分Video輸入輸出系統(tǒng)的綜述Android的Camera系統(tǒng)結(jié)構(gòu)JavaCameraClass(android.hardware.camera)Java框架Ca
4、meraJNICameraAPIIPClibui.soCameraServiceCameraCameraHardwareInterfaceCameraHAL實(shí)現(xiàn)C框架內(nèi)核空間CameraDriver第一部分Video輸入輸出系統(tǒng)的綜述Camera相關(guān)的代碼路徑:Camera框架部分的頭文件和源文件:frameworks/base/include/ui/frameworks/base/libs/ui/這部分的內(nèi)容被編譯成庫libui.so。Camera服務(wù)部分:frameworks/base/camera/
5、libcameraservice/這部分內(nèi)容被編譯成庫libcameraservice.so。第一部分Video輸入輸出系統(tǒng)的綜述Camera的JAVA本地調(diào)用部分(JNI):frameworks/base/core/jni/android_hardware_Camera.cppCamera的JAVA類:frameworks/base/core/java/android/hardware/Camera.javaCamera的硬件抽象層的定義:frameworks/base/include/ui/目錄之中的
6、CameraHardwareInterface.h第二部分Overlay系統(tǒng)在Android中,Overlay系統(tǒng)提供overlay接口,這個(gè)接口的含義是疊加在主的顯示層上的另外一個(gè)顯示層,這個(gè)疊加的顯示層通常作為視頻的輸出或者照相機(jī)取景器的預(yù)覽界面來使用。Overlay通過ISurface接口來使用,這個(gè)Overlay的使用與ISurface中的registerBuffers,postBuffer,unregisterBuffers幾個(gè)接口是并立的,使用Overlay接口將和SurfaceFlinger
7、中的顯示等功能無關(guān)。第二部分Overlay系統(tǒng)標(biāo)題標(biāo)題第二部分Overlay系統(tǒng)ISurface接口的定義:classISurface:publicIInterface{public:DECLARE_META_INTERFACE(Surface);/*......*/virtualstatus_tregisterBuffers(constBufferHeap&buffers)=0;virtualvoidpostBuffer(ssize_toffset)=0;//one-wayvirtualvoidunre
8、gisterBuffers()=0;virtualspcreateOverlay(uint32_tw,uint32_th,int32_tformat)=0;};Overlay接口雖然通過SurfaceFlinger的LayerBuffer來實(shí)現(xiàn),但是Overlay是一個(gè)獨(dú)立接口和SurfaceFlinger的其他部分沒有依賴關(guān)系。第二部分Overlay系統(tǒng)在文件Overlay.h中,定義了兩個(gè)類Over