美文网首页
camera pipeline

camera pipeline

作者: Summer_LJ | 来源:发表于2020-09-16 14:05 被阅读0次

    Android Camera System

    Android Camera硬件抽象层(HAL,Hardware Abstraction Layer)主要用于把底层camera drive与硬件和位于android.hardware中的framework APIs连接起来。Camera子系统主要包含了camera pipeline components 的各种实现,而camera HAL提供了这些组件的使用接口。

    注:camera HAL起着承上启下的作用。在camera HAL层实现中,芯片厂商一般将camera HAL层的实现分为两层:interface层和OEM层。OEM层为下层,它用于屏蔽不同的camera硬件。不同的camera硬件必须支持OEM层提供的对外接口。Interface层为上层,它调用OEM层的对外接口来实现camera HAL所定义的接口。对于Interface层,它并不知道底层camera硬件到底是哪一个版本。同时,interface层完成了屏蔽camera HAL版本的作用。对于OEM层,它也不知道上层是哪一个camera HAL版本,及android版本。两层分离架构,可以很容易地实现不同芯片支持同一个android版本和同一款芯片支持不同android版本(前提条件是该款芯片能够支持这些android版本的各个需求)。

    Camera System Architecture

    下图所示为Android官方给出的Camera System架构。

    技术分享图片

    图 1 Android Camera System Architecture

    从图 1中可以看出,Camera System主要包含如下几个重要组成部分:

    Application Framework

    Application framework层主要是应用代码(app‘s code),这个代码主要利用android.hardware.Camera API与Camera硬件进行交互。这些代码调用相关的JNI类来访问与Camera进行交互的原生代码(native code)。

    JNI

    与android.hardware.Camera有关的JNI代码主要frameworks/base/core/jni/ android_hardware_Camera.cpp。这些代码调用下一层的原生代码以获得物理camera的访问权,然后返回用于在framework层创建android.hardware.Camera对象的数据。

    Native framework

    Native framework的定义位于 frameworks/av/camera/Camera.cpp中,它提供了android.hardware.Camera类在本地的实现。这些类调用IPC binder来获得camera service。

    Binder IPC proxies

    IPC binder代理可以现实进程间通信。在frameworks/av/camera目录下有三个camera binder类的定义。ICameraService是cameraservice的接口,ICamera是被打开的camera设备的接口,ICameraClient是camera设备返回给application framework层的接口。

    Camera Service

    Camera service位于frameworks/av/services/camera/libcameraservice/CameraService.cpp,它是与HAL直接进行交互的真正代码。

    HAL

    硬件抽象层定义了一套标准接口,你必须实现这些接口,以保证你的APP能够与你的Camera硬件正确的协调工作,从而使保证你的Camera的所有功能能够正常进行工作。以下是google原文:

    The hardware abstraction layer defines the standard interface that the camera service calls into and that you must implement to have your camera hardware function correctly.

    Kernel Driver

    Camera驱动向下与真实的camera硬件进行交互,向上与HAL实现进行交互。Camera硬件和驱动必须能够提供YV12和NV21格式的图像数据,以支持camera图像数据在显示屏上的预览和视频录制。

    注:YV12是YUV420P,三个plane,即Y,V,U三个plane依次存储,如:YYYYYYYY VV UU;NV21是YUV420SP,两plane,即Y,VU作为两个plane存储,且VU交织,即一个V,一个U,依次存储,

    相关文章

      网友评论

          本文标题:camera pipeline

          本文链接:https://www.haomeiwen.com/subject/xkdfyktx.html