Andorid Camera framework学习笔记
文章平均质量分 86
主要是日常学习笔记,讲的会比较详细。
haodada1226
我不曾优秀过,但也从没放弃过。
展开
-
简介Component框架在qcom driver中的应用
简介Component框架在qcom driver中的应用原创 2024-02-27 16:18:35 · 67 阅读 · 0 评论 -
用python批量过滤logcat中的关键字
一、意义 一般产品出货前都会进行压测,测试某项功能的稳定性,但是压测产生的log文件会非常大且多,还不知道问题是出现在哪个文件中的,因此每次分析压测的log就压力山大(有时候因为文件太大,用NotePad++都没法打开,甚是尴尬)。我这里自己写了一个python脚本,用于批量将每个文件中的关键字过滤出来,并去除无用的log。二、具体实现代码如下():import statimport sysimport osimport re TEMPDIRNAME = r"new...原创 2022-01-14 16:39:34 · 3801 阅读 · 0 评论 -
Android通用C++线程池
一、背景意义 项目中可能需要处理一些比较繁琐的事,而这些事正好可以使用线程来解决,如tv上经常会去dump raw data,若直接在解码线程中dump raw data会导致每一帧的处理时间变长,如果大幅超出33ms,就会出现丢帧情况,而对于h264格式数据来说,丢帧会导致马赛克产生。下面列出线程池的一种实现(部分功能可以再完善下,比如添加job的优先级,然后根据该优先级顺序来处理job......),此文件导入到项目中就可以使用。二、具体实现ThreadCore...原创 2022-01-06 17:09:29 · 2134 阅读 · 1 评论 -
解决使用uvcCamera库传输数据时遇到的oom问题
项目需求: 应用端能直接获取h264格式的4k图像数据,但是谷歌没有提供获取h264格式图像的接口,于是只能使用uvcCamera私有库来解决该问题。项目难点:前提:根据uvc协议,当相机的interface→num_altsetting > 1时,会走同步传输来传输数据,速率为24MB/s;当interface→num_altsetting = 1时,会走bulk传输来传送视频数据,速率为48MB/s。因为是传输4k压缩数据,iso传输可能带宽不够,所以所使用的相机选择了b...原创 2021-12-31 15:27:37 · 2474 阅读 · 4 评论 -
使用jni实现java调用c/c++方法
一、通过CmakeList.txt来创建jnips:在android studio中可以通过创建一个Native C++工程来快速创建一个jni文件,实现java调用c++方法,这里自己手动创建。步骤:① 新建一个empty Activity项目,编写MainActivity如下:package com.hoho.android.jni_test;import androidx.appcompat.app.AppCompatActivity;import android.os.Bun原创 2021-12-23 12:22:02 · 1516 阅读 · 0 评论 -
通过i2c控制摄像机马达升降
项目任务:1. i2c控制摄像头马达升降及查询升降状态;2. i2c控制usb hub复位一、i2c总线协议简介:①i2c硬件结构:i2c总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信。②i2c主从设备:I2C总线上的每一原创 2021-12-13 15:10:22 · 6393 阅读 · 1 评论 -
camera framework open流程
一、camera app连接cameraservice1. framework/core/java/android/hardware/camera2/CameraManager.java@RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String cameraId, @NonNull final CameraDevice.StateCallback ca...原创 2021-12-12 18:16:13 · 2651 阅读 · 0 评论 -
shared_ptr和weak_ptr的区别与联系
头文件:#include <memory>(1) 智能指针shared_ptr:①不用手动释放对象占用的内存;②避免浅拷贝带来的内存重复释放问题。③get函数用于返回指向的实际对象的指针,基本上等同于->操作符; std::shared_ptr<Abase> sp(new Abase()); A* pa = sp.get(); pa->print(); // 类中的方法④实现了*和->方法,因此可以操作实际对象。...原创 2021-12-11 14:29:50 · 4806 阅读 · 0 评论 -
camera framework request流程
前面分析了configure stream过程,接下来分析下如何request stream。1、应用层request api调用:private void createCameraPreviewSession() { try { SurfaceTexture texture = getSurfaceTexture(); if(texture == null){ Log.d(TAG, "createCa原创 2021-12-10 22:30:15 · 3066 阅读 · 2 评论 -
BufferQueueProducer和surface联系
一、Surface::dequeueBuffer申请图形缓冲区(buffer类型为buffer_handle_t handle)详情参考1:android graphic(8)—surface申请GraphicBuffer过程_lyf's blog-CSDN博客详情参考2:Android SurfaceFlinger 学习之路(七)----创建图形缓冲区GraphicBuffer_STN_LCD的专栏-CSDN博客总结:1.surface先调用dequeueBuffer向Buf...原创 2021-12-04 21:07:43 · 4791 阅读 · 0 评论 -
camera framework configure流程分析
应用层通过createCaptureSession来配置流:mCameraDevice.createCaptureSession(Arrays.asList(mImageReader.getSurface()), new CameraCaptureSession.StateCallback() { @Override public void onConfig...原创 2021-12-04 18:57:29 · 1430 阅读 · 0 评论 -
ImageReader相关函数分析
一、前提知识: App中的一个surface对应SufaceFlinger中的一个layout,surface需要申请GraphicBuffer来绘制UI内容,然后交给SurfaceFlinger去合成,然后显示;ImageReader中获得的image,也就是GraphicBuffer,用于绘制surface中的UI。应用层经常会搭配如下两个函数来获取camera数据:mImageReader = ImageReader.newInstance(1920, 1080, ImageF...原创 2021-12-03 17:34:43 · 2938 阅读 · 0 评论