- 博客(84)
- 资源 (11)
- 收藏
- 关注
原创 360开发中遇到的问题
原因:非四合一,开发的时候,将实际的camera id 和 算法 camera id未对齐,导致释放和输入的camera index有误,出现了闪屏。解决方案:用个队列去记录输入和输出的buffer个数,当退出360后,如果算法没有通知释放buffer,就主动把队列中的buffer都释放掉。原因:画面退出的时候,算法会偶尔没有通知释放buffer,逐渐的导致分配的buffer都被算法持有,而无法填充camera data。解决方案:在360启动后,先调用算饭接口,主动清理一次egl环境。
2025-12-08 16:35:10
208
原创 如何在android framewrok dump camera data
【代码】如何在android framewrok dump camera data。
2025-07-28 09:57:57
261
原创 camera 问题:Can‘t get next output buffer from buffer manager
发现camera app 中使用ImageReader去获取camera data之后仍给了sdk去处理,sdk第一帧的时候要加载资源,导致处理时间过长,consumer buffer阻塞了,导致Producer 获取buffer给camera hal的时候等待超时了。1、增大kDequeueBufferTimeout的时长,让BufferQueueProducer::dequeueBuffer的时候,对等一会,不要上报TIMED_OUT。以上方案中结合cpu/内存最后选择了方案1。
2025-03-27 16:05:56
550
原创 BufferItem 和 BufferSlot的关系
BufferSlot 是缓冲区槽(Slot)的概念,是 BufferQueue 中固定数量的缓冲单元。在 Android 中,每个 BufferQueue 通常由一组固定数量的 BufferSlot(例如 3 个)组成。每个 BufferSlot 保存一个具体的 GraphicBuffer,即实际存储图像数据的缓冲区。BufferSlot 的主要作用存储和管理缓冲区(GraphicBuffer):每个 BufferSlot 维护一个缓冲区,并记录该缓冲区的元数据(如当前状态、引用计数等)。
2025-03-25 16:55:14
943
原创 android camera framework调式
/dump 拍照jpeg,同时需要setenforce 0,jpeg文件保存在/data/misc/cameraserver 下。会在这里dump 图。
2025-03-25 10:19:40
351
原创 ais_server 学习笔记
分别会调用RegisterDeviceFromLib()、RegisterDevice()将libais_nio_*.so 和 IFE 、CSIPHY open#endif这里继续调用到RegisterDevice,将保存在registeredDevices中。
2024-11-28 19:52:50
2019
8
原创 ais_v4l2_proxy dma fd 泄露问题调查
如上时序图:在app open camera 的时候,就会调用到camera的openCamera(),最后会调用到v4l2_wrapper的CreateInputSurface(), 在这个方法里面会根据当前为这个camera 分配对应的MAX_BUFFER_NUM。
2024-11-22 13:41:07
631
原创 Camera hal
Camera hal 整体相对于ais_server 来说其实也是一个 camera client,主要分为以下几个模块。
2024-11-04 14:28:31
1719
3
原创 ubutun 自定义命令
ll"然后 保存退出文本,执行surce ~/.bashrc 命令立即生效如下:找文件的时候直接findh 文件名即可,greph 一样。
2023-05-25 09:38:14
898
原创 ActivityStackSupervisor、ActivityStack、ActivityDisplay、TaskRecord、ActivityRecord
ActivityRecord -> TaskRecord -> ActivityStack -> ActivityDisplay -> ActivityStackSupervisor
2022-11-11 10:41:29
1498
原创 androidP Surface到SurfaceFlinger -->surface -> BufferQueue(一)
BufferQueue前言介绍BufferQueue::createBufferQueue前言结合前面的一篇文章创建Surface, 我们知道最后会调用到SurfaceFlinger的CreateLayer() 方法,然后会层层调用到 BufferQueue::createBufferQueue(),今天我们就来理理BufferQueue。介绍首先我们要知道BufferQueue的大致工作原理,一个surface会和一个Producer及生产者App进行绑定去产生view数据,然后会通过onFram
2021-12-28 22:04:19
2106
原创 androidP Surface到SurfaceFlinger -->创建Surface (二)
创建Surface (二)前言SurfaceFlinger createLayer前言我们接着androidP Surface到SurfaceFlinger -->创建Surface (一)来看,当new SurfaceControl之后在其构造函数内都做了什么?这一步跟下去就到了SurfaceFlinger了。SurfaceFlinger createLayer对于上层应用所建立的Surface对应到SurfaceFlinger 就是 createLayer我们来跟代码吧,还是从 Surface
2021-12-21 21:21:16
1482
原创 androidP Surface到SurfaceFlinger -->创建Surface (一)
创建Surface前言ViewRootImpl创建Surface前言 我们前面已经分析过Activity启动如何去连接到SurfaceFlinger了,接下来就看Activity的Surface的创建到SurfaceFlinger的过程。ViewRootImpl创建Surface 在调用了WindowManagerGlobal的addView方法之后会首先去创建一个ViewRootImpl将View和Window关联起来,在new ViewRootImpl的时候就创建了一个Surface对象
2021-12-20 20:56:42
2982
原创 androidP Surface到SurfaceFlinger --> Activity 连接 SurfaceFlinger(二)
Activity 连接 SurfaceFlingerSurfaceSession持有SurfaceComposerClientSurfaceSession持有SurfaceComposerClient紧接这上面段落继续跟踪SurfaceComposerClient,我们从Activity 连接 SurfaceFlinge(一)知道,在addWindow的时候都会去重新创建一个Session去和SurfaceFlinger进行连接,在Session的构造函数里面就会去new SurfaceComposer
2021-12-17 20:46:30
1359
原创 androidP Surface到SurfaceFlinger --> Activity 连接 SurfaceFlinge(一)
Activity 连接 SurfaceFlinger前言一、Activity 连接 SurfaceFlinger前言一直想要分析一下surface 的创建到SurfaceFlinger之间的关系,由于它们之间牵扯的东西比较多,终于感觉理的差不多了,记录一下。一个应用想要完成一个View的显示大致需要以下三部1、应用需要先和SurfaceFlinger建立通道,及连接SurfaceFlinger 拿到SurfaceFlinger 的远端代理。2、向SurfaceFlinger申请去创建Surface
2021-12-15 21:16:42
3510
原创 camera 之 createCaptureSession
camera 之 createCaptureSession1、createCaptureSession 参数解析2、createCaptureSession 流程分析3、时序图1、createCaptureSession 参数解析1.1、结合上一篇 [openCamera](https://blog.csdn.net/lisiwei1994/article/details/119999793?spm=1001.2014.3001.5501) 成功之后就会通知回调到 CameraDevice.StateC
2021-08-31 20:57:02
4227
3
原创 camera 之 openCamera
openCameraopenCamera() 方法参数解析openCamera() 代码跟踪openCamera() 方法参数解析1、 打开 camera我们可以直接调用系统service,获得CameraManager,然后调用openCamera();CameraManager cameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);cameraManager.openCamera(mC
2021-08-30 20:50:44
5340
转载 Camera hal 之 CameraProvider
Camera hal 之 CameraProvider 一、CameraProvider的作用二、CameraProvider的启动、初始化一、CameraProvider的作用cameraProvider的主要作用就是向下调用CameraModule,通过CameraModule 来和 Camera driver 交流,向上通过binder会被framework java 层的CameraProviderManager调用,然后CameraProviderManager 最终会被CameraServi
2021-08-26 10:28:48
3322
原创 camera hal 之 CameraModule
camera之 hal CameraModuleCameraModule的作用加载camera hal soCameraModule的作用 我理解的CameraModule的主要作用就是承上启下的作用,在Android 开源规则下hal层各个厂商可以根据知识产权将自己的hal层实现不对外公开,这个CameraModule就是负责加载厂商hal camera so,然后调用相关方法的。加载camera hal so 在 CameraProvider 中持有 CameraModule的对象,在Cam
2021-08-24 20:14:41
1644
原创 c++注册c语言回调
c++ 注册 c 语言回调最近在做项目遇到了一个问题,我使用c++ class 调用c语言写得一个so注册回调,然后这个c 的so ,callback 通知c++ 类。test.hclass test{public: test(); void functionCallback(int type, int size, void *data);private: struct dsi_registry_listener instrumentListener; //c so
2021-02-03 16:08:16
1448
原创 android / liunx 性能问题排查
android 性能异常排查查询主要异常的进程查询主要异常进程的线程给线程标上名字查询主要异常的进程1、使用top命令查看主要cpu使用情况如图 VehicleDeamon cpu使用率异常查询主要异常进程的线程2、使用命令 top -H -p pid, 如 top -H -p 2549如图可以看到 线程名为 emulatorSendWL的线程cpu的使用率是比较高的。给线程标上名字头文件 #include <sys/prctl.h>在线程代码中使用 prctl(PR_S
2021-01-21 16:03:37
958
原创 AndroidP RRO overlay (四)
AndroidP RRO overlay (四)应用重新创建之后,加载overlay资源应用重新创建之后,加载overlay资源我们overlay原理二和三,分别说明了应用createIdmap和如何通知重启应用,这篇就紧接着分析,应用重启之后如何去调用overlay apk的资源。我们这边假设havc.apk在res/values/colors.xml里面定义了一个color值为<color name="havc_icon">#fff4b400</color>然后在 h
2021-01-19 13:57:37
1082
1
AndroidP CarUxRestrictionsService.xlsx
2020-03-17
BottomNavigationView》底部导向栏 和 《viewPager》的结合使用
2018-12-14
android touch事件解析
2018-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅