精华内容
下载资源
问答
  • camera框架流程.drawio

    2021-08-09 09:56:58
    camera框架流程.drawio
  • 高通平台camera框架分析,详细的camera hal和驱动之间的关系。
  • Android Camera框架

    2021-08-24 15:09:12
    Android Camera框架 参考文档 https://source.android.google.cn/devices/camera

    Android Camera框架

    参考文档
    https://source.android.google.cn/devices/camera

    展开全文
  • camera系列-Camera框架概述

    千次阅读 多人点赞 2019-07-13 17:35:53
    文章目录Camera 框架分析一、Camera子系统层次结构二、Camera 子系统系统结构 Camera 框架分析 Camera子系统是Android系统中比较复杂的子系统之一。在系统集成方面,Camera子系统除了实现camera功能外其作为多媒体...

    Camera 框架分析

    Camera子系统是Android系统中比较复杂的子系统之一。在系统集成方面,Camera子系统除了实现camera功能外其作为多媒体实现的基础模块,与声音控制系统(Audio),视频编解码系统(Video Codec),显示系统(Display),存储系统(Storage)以及输入输出系统(I/O)都有密切的联系。在Camera模块内部,Camera系统也不仅仅是实现视频数据获取及存储。为了达到良好的视频(照片)质量。Camera系统中往往包含大量的图像处理算法程序库,根据不同的需要这些算法库可以放在不同的处理层。

    一、Camera子系统层次结构

    Camera作为一个子系统,提供了取景器、视频录制和拍摄照片等功能,并且提供各种控制类借口,如Java层的接口和本地接口。其中Java框架中的camera类实行了Java层相机接口,为拍照和扫描等功能业务使用。本地接口可以给本地程序调用,如存储、编解码、视频通话、显示等。基本层次结构如下图:
    在这里插入图片描述

    二、Camera 子系统系统结构

    Camera子系统从下往上包括了驱动层、框架层和APP层。系统结构如图所示:
    在这里插入图片描述

    • 应用层LenovoCamera、其他美颜相机等,对相机做一些基本初始化,之后调用setPreviewwindow,然后调用到framework层的方法。
    • 框架层:由camera Java层接口、Java本地调用接口(JNI)、camera本地框架(client端)、camera本地服务及camera HAL组成。
    1. Camera Java层向应用层接口提供的类为android.hardware.Camera,对应的源代码文件为:camera.java,此类有些方法通过JNI调用本地框架中的代码实现。
    2. Java本地调用接口(JNI),代码路径:frameworks/base/core/jni/android_hardware_Camera.cpp,这一部分被编译成为libandroid_runtime.so,它不做任何处理相当于一个中间站,转去到下一层camera本地框架(client端)中实现
    3. camera本地框架(client端),代码路径:frameworks/av/camera/Camera.cpp,这一部分内容被编译成库libcamera_client.so,同样这一部分可以理解为一个中转站,通过binder机制调用与camera本地服务进行通讯。
    4. camera本地服务,代码路径:frameworks/av/services/camera/libcamearservice/CameraService.cpp,这一部分被编译成libcameraservice.so, 本部分配合底层相关的硬件驱动框架和编解码库实现一个具体的camera
    5. camera HAL,硬件抽象层,代码路径:frameworks/av/services/camera/libcamearservice/device1/CameraHardwareInterface.h,基于此接口完成的HAL来实现camera数据传输及功能控制。
    • 驱动层,基于Linuxvideo for Linux视频驱动框架即(V4L2),通过V4L2接口实现数据采集、格式转换、大小缩放、数据传输的功能。
    展开全文
  • android_Camera框架分析

    2015-10-30 15:56:14
    android_Camera框架分析
  • Android多媒体开发08-Camera框架.ppt
  • Android_Camera框架

    2011-10-18 18:14:07
    Android_Camera框架分析,介绍的非常好
  • Camera框架初探

    2017-08-07 10:34:50
    先解释一些概念,然后带着思考去解读 ...废话不说,明白了以上对象后,对于camera框架的理解就会上一个档次。网上很多人,都是抄来抄去,真正去看代码的时候,发现纸上得来终觉浅,觉知此事要躬行。

    先解释一些概念,然后带着思考去解读

    1.CameraService。

    2.Camera

    3.BnCameraClient

    4.BnCamera

    5.Client

     

    不得不说的是android对于binder的使用,真是出神入化。废话不说,明白了以上对象后,对于camera框架的理解就会上一个档次。网上很多人,都是抄来抄去,真正去看代码的时候,发现纸上得来终觉浅,觉知此事要躬行。

    下面依次解释:

     

    1.CameraService

    Camera的服务端,是一个BnCameraService,同时还是一个BinderService。代码就不贴了,自行看吧。看到Bn两个字母,大家的第一印象肯定是onTransact接口。而事实也是如此:

     

    class BnCameraService: public BnInterface<ICameraService>
    {
    public:
        virtual status_t    onTransact( uint32_t code,
                                        const Parcel& data,
                                        Parcel* reply,
                                        uint32_t flags = 0);
    };

    2.Camera

    继承于BnCameraClient.大家又看到一个Bn。很是纳闷,那么是不是也是个服务端呢。答案也是肯定的。

     

    class Camera : public BnCameraClient, public IBinder::DeathRecipient

     

     

    class BnCameraClient: public BnInterface<ICameraClient>
    {
    public:
        virtual status_t    onTransact( uint32_t code,
                                        const Parcel& data,
                                        Parcel* reply,
                                        uint32_t flags = 0);
    };

     

    既然都是服务端,那么客户端在哪里呢。下面继续。

     

    3. BnCameraClient

    这个不说了,上面已经讲了,是个服务端

    4.BnCamera

    同样是服务端:

     

     

    class BnCamera: public BnInterface<ICamera>
    {
    public:
        virtual status_t    onTransact( uint32_t code,
                                        const Parcel& data,
                                        Parcel* reply,
                                        uint32_t flags = 0);
    };
    

     

    5.Client

     

    同样是服务端:

     

        class Client : public BnCamera

    那么客户端在哪里?为什么全是服务端?

     

    其实这些都是服务端,同时又是客户端。Binder是一个单向通信的东西,要想实现双向通信,那么自己也必须是一个服务端。这就是为什么全是服务端了。网上介绍说CameraService是一个sevice,Camera这个就是一个client,这是不对的。

    这两个都是service,又是client。这样才能支持双向通信。

     

     

    使用流程如下:首先要new一个Camera对象,这个对象实际上是个Manager,负责对camera进行一些管理。

    然后通过connect方法,获得到一个ICamera的对象,这个对象在服务端就是Client。于此同时,由于自己是一个BnCameraClient,注意是Bn,可以通过binder传过去,那么传过去之后是什么呢。是ICameraClient.这样服务端和客户端都得到了一个对方的句柄,从而建立了双向通信的渠道。下面这个图说明了这个思想:

     


    • 大小: 12.7 KB
    展开全文
  • Camera框架相关知识点

    2019-04-10 17:04:00
    camera框架为android自带拍摄框架,可以用来拍摄及录像。 camera类为摄像头类,接受框架层反馈的,由手机摄像头采集到的数据。 camera采集到的数据,需要一个视图类进行解析和显示。 视图类最基本的就是...
    1. camera框架为android自带拍摄框架,可以用来拍摄及录像。
    2. camera类为摄像头类,接受框架层反馈的,由手机摄像头采集到的数据。
    3. camera采集到的数据,需要一个视图类进行解析和显示。
    4. 视图类最基本的就是surfaceview。
    5. Surfaceview是android自带的视图类,可以用来显示图像,图像不仅限于图片,还可以用来播放视频,一般用于动画播放,视频播放,摄像头显示,以及游戏。
    6. Surfaceview与普通的view不同的是,它并不是直接显示在屏幕上,而是在窗口上再开一个窗口,窗口大小与surfaceview大小相同,位置相同。
    7. Surfaceview的独立窗口为独立线程,与主线程相区别,类似游戏之类的大量数据处理用surfaceview可以一定程度的避免主线程堵塞造成的卡顿。
    8. Surfaceview不同于普通的view,并不是直接将视图显示在自身上,所以部分view的方法无效,例如view的截图方法,surfaceview调用会返回一张全黑的bitmap。
    9. 其中需要注意的是,如果你要对图像进行处理,比如旋转90度进行视频播放,对surfaceview调用旋转方法是无法改变图像的播放状态的,因为实际显示图像的是surfaceview创建的窗口,而不是surfaceview。
    10. Surfaceview有很多延伸类,例如GLSurfaceview,GLSurfaceview有使用到手机芯片中的图形加速模块,故而效率会比surfaceview高很多,相对的,消耗也会大很多。
    11. 相对surfaceview,存在另一个类,Textureview。此类由android4.0之后推出。
    12. Textureview继承于View,与surfaceview不同的是他并不会新开窗口,而是像普通的view一样将图像绘制并在自身上显示,比起surfaceview,他的消耗大,而且需要在清单文件中对此类控件存在的activity注册硬件加速,否则在一些低配手机上容易造成卡顿,优势是可以更加直观的对图像进行处理。
    13. 开发摄像头应用时,将camera与视图类进行关联,比如surfaceview有一个叫SurfaceView.Holder的,将他与camera相关联,等到确认视图初始化完成,即可开始预览。
    14. 在camera框架开发中,有两个重要的概念,即预览像素PreviewSize与拍摄像素PictureSize。
    15. 预览像素previewsize即在视图类中显示的像素,此像素需要camera从框架层中获取设备支持的预览像素。
    16. 因为现在的安卓设备的开放性,所以存在各种各样比例的像素,例如4:3 16:9 18:9。
    17. 像素的比例尤为重要,预览像素的比例若与视图控件的宽高比不相同,则会出现画面扭曲的现象。
    18. 预览像素的比例若与拍摄像素比例不相同,则会出现拍摄的照片和看到的照片尺寸不一样的问题,例如拍摄的照片实际上比看到的图像更加广。或者拍摄的照片比看到的图像小,导致看得见拍不下来的情况。
    19. 预览像素需要从框架层获取支持像素,然后进行筛选,值得注意的是,因为手机的二次开发系统不同,会导致各种各样的问题,比如a系统不存在4:3比例的像素,比如B手机不能获取500W以上的像素。
    20. 预览像素不影响录像与拍照的图像尺寸,仅影响用户看到的屏幕上的图像清晰度。
    21. 拍摄像素PictureSize,与预览像素类似,由camera从框架层中获取,然后根据开发需求计算需要的比例,实际控制拍摄的照片尺寸。
    22. 需要注意的是camera的设置都是需要从框架层中获取设置范围,此范围由系统工程师写入框架层中,根据系统的不同参数也不尽相同,若强行设置一个自定义的参数,就会报错,包括像素,聚焦方式,测光方式等,都需要去验证camera是否支持然后再进行设置。
    23. 关于照片方面,拍摄的照片质量和像素共同决定了一张照片的大小,质量会决定图像中一个像素点所包含的颜色深度,像素会决定一张照片所包含的像素点的数量。
    24. 同等像素大小的情况下,体积越大,颜色越深越清晰。体积越小,颜色越浅,达到一个范围值时会导致失真,所以质量压缩需要控制,不可以无限压缩。
    25. 一定程度的质量压缩是肉眼无法区别的。
    26. Camera框架主要的职责是获取到手机摄像头所采集的图像并解析成数据供开发者处理。
    27. 通过视频录制类可以将camera采集到的图像数据录制成视频。
    28. 视频录制类由很多,例如MediaRecord等。
    29. MediaRecord框架存在很多问题,如果有更好的,更习惯的视频录制类,可以使用其他的。
    30. 视频录制需要将camera关联的holder设置给MediaRecord,然后才能开始录制,摄前准备与拍摄照片一致。
    31. 拍照像素PictureSize不会影响录制视频。
    32. MediaRecord可以选择是否录制音频或视频,可以设置录制视频的封装格式与编码格式。
    33. 关于编码格式与封装格式是视频的两个格式,封装格式即视频的文件后缀MP4一类的。
    34. 编码格式即视频图像每一帧的编码格式,将图像进行编码写入文件中,不同的编码格式会导致画面的清晰度与文件大小的不同。
    35. 编码格式常用的有MPEG4中的H264 H263等,在清晰度方面比较有优势,但体积稍微偏大。

    转载于:https://www.cnblogs.com/orders/p/10684607.html

    展开全文
  • msm8996平台的 camera 框架笔记

    千次阅读 2018-12-24 18:36:46
    msm8996平台的 camera 框架笔记 标签(空格分隔): camera 文章目录msm8996平台的 camera 框架笔记@[toc]0 前言 1 kernel中的camera结构 1.1 qcom的v4l2节点结构 1.2 一个zsl的session和stream 2 hal层中的camera...
  • Camera框架的简介

    2015-02-23 20:14:32
    主要介绍android camera系统的整体框架
  • camera框架简介

    2017-04-19 21:03:45
    Camera CameraService CameraService::Client CameraClient
  • Camera框架之Camera2

    2017-10-20 14:10:42
    转载请把头部出处链接和尾部...前言:监于5.0之后Google用的是Camera2相关API取代之前的Camera,过时的Camera虽然精典,但不再进行介绍,可自行查阅相关资料。今天本文是在正式深入代码前对Camera2的一个补充。上篇中
  • 一 Android Camera框架

    千次阅读 2012-12-20 16:59:46
    一 Android Camera框架 要了解AndroidCamera架构,还是得先从Android本身的架构说起。 图1 Android Architecture 从Android框架看,分为四层:应用层、应用框架层、库层、内核层。 应用层主要...
  • 介绍 Android 的 Camera 框架

    千次阅读 2016-08-31 20:22:35
    Android Camera 框架从整体上看是一个 client/service 的架构,有两个进程: 一个是 client 进程,可以看成是 AP 端,主要包括 JAVA 代码与一些 native c/c++代码; 另一个是 service 进 程,属于服务端,是 native c/c++...
  • Android camera框架理解

    2021-01-10 23:05:23
    应用框架:应用代码位于应用框架级别,它使用 Camera 2 API 与相机硬件进行交互。在内部,这些代码会调用相应的 Binder 接口,以访问与相机互动的原生代码。AIDL:与 CameraService 关联的 Binder 接口可在 ...
  • android camera框架

    2011-11-01 23:05:16
    android camera技术介绍,包括框图,值得下载
  • 高通camera框架_流程浅析(1)

    千次阅读 2017-04-18 22:47:32
    该文档主要浅析camera框架,后续会增加机制相关内容: 1.  Introduction 本文档主要讲解高通Camera整体框架。 部分内容或参考资料可参考个人博客Android开发栏目:...
  • Android之 Camera 框架

    千次阅读 2011-12-13 16:09:32
    Android Camera 框架从整体上看是一个 client/service 的架构,有两个进程:一个是 client 进 程,可以看成是 AP 端,主要包括 JAVA 代码与一些 native c/c++代码;另一个是 service 进 程,属于服务端,是 native c/c++...
  • 前言:监于5.0之后Google用的是Camera2相关API取代之前的Camera,过时的Camera虽然精典,但不再进行介绍,可自行查阅相关资料。今天本文是在正式深入代码前对Camera2的一个补充。
  • Camera框架初识

    2017-06-05 14:30:02
    Camera类被用于获取图片设置,start/stop 预览,快照图片,恢复视频编码的帧,Camera是一个client对于Camera Service来说,将管理Camera 硬件相关, 为了使用设备的camera, 须要在Manifest中加上相应的权限,如你...
  • 一:Android Camera框架分析: (1).Android Camera框架层结构是C/S结构,客户端提供调用 接口,服务器端实现具体的功能。客户端和服务器端是通过Binder机制进行通信的。 (2).首先客户端取得Binder机制的代理,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,218
精华内容 11,687
关键字:

camera框架