camera preview HAL-framework衔接部分梳理

来源:互联网 发布:化妆品淘宝批发 编辑:程序博客网 时间:2024/05/01 01:13

android上camera的功能分为预览(preview),拍照(take_picture),录像(recorder)。代码上也是分为这三部分实现。

关于preview流程由上到下,依次执行的代码文件是

/frameworks/base/core/java/android/harware/camera.java
        |
/frameworks/base/core/jni/android_hardware_Camera.cpp //JNI
        |
/hardware/platformXXX/CameraFactory.cpp
        |
/hardware/platformXXX/CameraHal.cpp
        |
/hardware/platformXXX/CameraHardware.cpp
        |
   /linuxkernel/driver/media/camera/...



startPreview() // --camera.java
        |
android_hardware_Camera_startPreview     //JNINativeMethod --android_hardware_Camera.cpp
        |
camera_start_preview(struct camera_device * device)//--CameraFactory.cpp
        |
CameraHal::startPreview()//--CameraHal.cpp
        |
CameraHardware::startPreview()//--CameraHardware.cpp
        |
      V4L2
        |
    linux camera device



这里是举例展示了startPreview()关于衔接android framework 与linux driver之间的重要部分,
其中CameraHardware::startPreview()//--CameraHardware.cpp 原理上是操作linux device 设备文件的代码

如open ,ioctrl等操作(其实中间还有一层V4L2的流程部分)。


第一层startPreview() // --camera.java 已经是 java代码供framework调用,最关键的就是JNI的作用,

JNI的方式是把cpp文件编译成.so库文件的形式,列出JNINativeMethod,通过JNI接口调用,这个不详细说了。






0 0
原创粉丝点击