自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 用python批量过滤logcat中的关键字

一、意义 一般产品出货前都会进行压测,测试某项功能的稳定性,但是压测产生的log文件会非常大且多,还不知道问题是出现在哪个文件中的,因此每次分析压测的log就压力山大(有时候因为文件太大,用NotePad++都没法打开,甚是尴尬)。我这里自己写了一个python脚本,用于批量将每个文件中的关键字过滤出来,并去除无用的log。二、具体实现代码如下():import statimport sysimport osimport re TEMPDIRNAME = r"new...

2022-01-14 16:39:34 3621

原创 Android通用C++线程池

一、背景意义 项目中可能需要处理一些比较繁琐的事,而这些事正好可以使用线程来解决,如tv上经常会去dump raw data,若直接在解码线程中dump raw data会导致每一帧的处理时间变长,如果大幅超出33ms,就会出现丢帧情况,而对于h264格式数据来说,丢帧会导致马赛克产生。下面列出线程池的一种实现(部分功能可以再完善下,比如添加job的优先级,然后根据该优先级顺序来处理job......),此文件导入到项目中就可以使用。二、具体实现ThreadCore...

2022-01-06 17:09:29 2051 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 2084 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 1441

原创 通过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 5509 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 2524

原创 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 3962

原创 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 2838 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 3634

原创 camera framework configure流程分析

应用层通过createCaptureSession来配置流:mCameraDevice.createCaptureSession(Arrays.asList(mImageReader.getSurface()), new CameraCaptureSession.StateCallback() { @Override public void onConfig...

2021-12-04 18:57:29 1182

原创 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 2483

转载 公告板技术

       在看完了毛星云的《实时渲染提炼总结》9.6-9.7与冯乐乐的《Unity Shader入门精要》后,我对公告板技术有了大概的认识,在这里总结一下。       公告板,英文名Billboarding,是一项让着色四边形根据视角方向来旋转的技术,这样看起来似乎物体总是面向观察者。与alpha纹理和动画技术结合,可用公告板创建许多不具有平滑实体表面的现象,比如常见的烟雾,云朵,爆炸效果,...

2018-05-06 14:48:26 1227

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除