Camera.java--->Camera.java(framework)--->android_hardware_camera.cpp(jni)---->Camera.cpp--->ICameraService ---(通過binder機制)---->CameraService.cpp---->CameraHardwareInterface.h->QualcommCamera->QualcommCameraHardware ---->gc2035.c
從QualcommCameraHardware 到 驅動的調用 沒有完全明白 請大神 指點我一下
我是在高通平台的
比如camera的初始化流程,HAL接口主要工作如下:
1、調用系統調用open()打開camera設備節點,前後攝像頭一般是/dev/video0或/dev/video1,這樣會調用到內核的v4l2子系統裡面的open函數,這個函數將會注冊camera模組(gc2035)的驅動並調用模組的初始化接口;
2、然後HAL會通過ioctl系統調用經過v4l2子系統查詢camera模組支持的各種格式、分辨率等參數,並設置自己用戶選擇的分辨率等參數;
3、經過一系列初始化後HAL最終通過ioctl系統調用打開camera的預覽功能,並通過poll等方式獲取圖像數據。