自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Camera基础硬件知识

目录前言一、sensor1.曝光时间2.硬同步3.白平衡二、ISP1.SOF和EOF中断前言本文主要记录一些Camera基础硬件知识一、sensor包括曝光时间、硬同步等1.曝光时间 关于卷帘曝光,也就是行曝光,之前一个错误的认为一行曝光完成之后再曝光下一行,其实思索一下,如果是这样的话,岂不是整个sensor全部曝光的时间=曝光时间 * 行数,显然是不对的,其实相邻两行的曝光起始时间只差一个......

2022-04-29 20:28:40 3657

原创 如何写一个相机APP的demo

Camera App Demo开发

2022-04-17 18:49:44 2999

原创 Android常用调试方法总结

Android常用调试方法总结

2022-11-05 11:19:33 1096 1

原创 设计模式读书笔记

希望通过记录一些关键点做到实际开发中能够得心应手。状态模式这个模式可能工作中会遇到,将可以互换的行为封装起来,然后使用委托的方法,决定使用哪一个行为,状态基转移场景这种设计会大量新增状态类,对于一些复杂场景会非常管用;对一些简单场景,比如状态里面只有一个处理函数,状态基转换也比较简单,顺序递增,可能只需要封装函数即可。int state = 0;switch (state) { case 0: DoStateStart(); break;

2022-05-29 22:09:58 236

原创 Linux学习总结

虽然工作中一直在写用户层代码,但工作中也凭兴趣看下kernel代码,提高自己,毕竟懂得越多,对工作和业务了解、架构设计就越有帮助,而且很多东西看到最后都是借助kernel实现,所以掌握kernel也是非常必要。从业以来也陆陆续续看过,解决一些疑问,但没有记录,也没想的特别明白,还有一些是没有认真想过的东西,现在有时间认真思考下,本文相当于十万个为什么,记录我对linux内核和驱动的一些学习。内核概述linux内核分为进程管理系统 、内存管理系统 、 i/o管理系统 和文件管理系统四.........

2022-05-29 09:56:29 1070

原创 程序员修炼内功

入行以来比较系统看过的书单,给自己定个目标,每年要至少新增两本书。1、编程基础《C++ Primer》《C++编程思想》《代码大全》《Clean Code》《深入理解C++对象模型》《大规模C++程序设计》《Effective C++》2、LINUX基础《鸟哥的linux私房菜》《UNIX环境高级编程》《深入剖析Linux设备与驱动程序》《Linux kernel development》3、算法和数据结构《算法导论》leetcode刷题4

2022-05-22 18:58:39 1224

原创 Camera HAL Service流程总结

目录前言一、HIDL接口1.CameraProvier1.setCallback(ICameraProviderCallback callback)2.getVendorTags3.getCameraIdList4.isSetTorchModeSupported5.getCameraDeviceInterface_V3_x2.CameraDevice1.getResou...

2022-04-30 23:41:30 2796 2

原创 Camera Framework Service流程总结

文章目前言 本文主要记录些Camera Servie的一些问题的理解,对几个问题进行讨论,一些参考Camera Service一、代码位置向上暴露的接口具体实现二、关系类图三、问题讨论1.Buffer是在哪分配的,它是怎么轮转的 1.Buffer的数量status_t Camera3Device::HalInterface::configureStreams(const came.........

2022-04-28 23:19:02 925

原创 Camera Framework Client流程总结

文主要一起看下之前一篇app demo涉及的一些接口函数

2022-04-22 23:46:58 475

原创 UNIX环境高级编程读书笔记

主要记录关键知识点,方便日后查阅第一章 UNIX基础知识UNIX体系结构,书中是这样画的:这篇文章认为这样画不合理https://blog.csdn.net/lyndon_li/article/details/116956043应该这样,我也赞同shell是特殊的一种应用程序errno:在支持多线程的环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部errno以避免一个线程干扰另一个线程,定义为extern int __errno_location(void)#define

2022-02-20 11:49:39 221

原创 高通CamX架构分析

参考资料:1、https://www.cnblogs.com/programandriod/p/13868585.html该文档中的高价值点有介绍file: vendor/qcom/proprietary/camx/src/csl/hw/camxsyncmanager.cpp2、https://www.zhihu.com/people/hei-niu-o

2021-03-14 13:34:17 544

原创 hidl相关数据类型Return

在hidl相关接口接口调用时候,看到了一个数据类型Returnhttp://androidxref.com/8.0.0_r4/xref/system/libhidl/base/include/hidl/Status.h在编码中可以借鉴其设计有时候函数返回值需要返回多个状态,比如:1、有没有调用成功 2、调用成功之后的返回值,所以可以仿照Return的定义,用来包装返回值,同时增加成员函数i...

2019-01-06 21:51:46 1396

原创 android定位卡死问题

今天调试发现进入某个模块后没有出来,然后看了这个模块函数非常多,如果使用加log的方法,感觉无处下手分析,加log的地方太多了,遇到这种无法退出、卡死、卡住、不知道跑到哪的问题,定位方法:1、使用ps -ef打印出进程号,可以使用grep 过滤下形如:ps -ef | grep **2、使用debuggerd将对进程运行时的信息dump到文件或者控制台中输出到控制台:debuggerd p...

2018-09-30 07:45:54 2810

原创 android::CallStack代码分析

android::CallStack用于代码分析C++代码架构经常特别复杂,可以使用android::CallStack将调用栈打印出来基本用法:#inclucde<utils/CallStack.h>#include<utils/Log.h>android::CallStack stack;stack.update();stack.dump(1); //输.

2018-09-20 00:20:56 4664

原创 section使用方法

几年之前,看到关于section的使用百思不得其解,最近又重新探究了。 形如: struct A { int a; int b; };A attribute((used, section(“test”))) a; A attribute((used, section(“test”))) b;extern “C” attribute((visibility(“h...

2018-08-08 03:34:27 8959

原创 C++11常用语法

1、Lamda函数 在工作中Lamda函数的一个使用场景:一个函数中重复代码比较多,并且需要减少圈复杂度,又不想独立成函数(上下文不够清晰,函数抽象也比较蹩脚),这时候Lamda函数就派上用场了。 C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下:     capture->return-type{body}   如果......

2018-06-27 07:46:44 267

原创 android::sp和boost::shared_ptr设计模式区别

两者都是采用引用计数的方式实现的智能指针,但是两者所使用的设计模式确实不同的。boost::shared_ptr使用组合的实现方式, class shared_ptr { private: boost::detail::shared_count pn; // reference counter }; 任何对象都可以用shared_ptr来维护android:...

2018-05-29 23:45:09 1457

原创 编码总结

1、分层 对外接口函数和内部调用函数一定要分好层次,对外接口函数内不要再去调用对外接口函数,如果出现这种情况,就说明函数设计有问题,需要将公共部分独立成内部调用,否则就可能出现各种问题。 形如 class A { public: void getOut() { AutoLoc

2018-04-03 00:39:23 167

原创 property_get使用注意事项

之前虽然一直使用property_get函数,但是没有真正了解过,所以写出了这样一个bugchar buf[PROPERTY_VALUE_MAX] = {‘\0’}; if(property_get(“debug.property.test”, buf, “0”)) { ALOGI(“true”); } else { ALOGI(“false”); }结果就是一直...

2018-03-02 23:10:07 27929

原创 Android Thread使用注意事项

通过继承android::Thread,可以轻松定义一个自己想要的线程。 例如: class MyThread : public android::Thread { public: virtual bool threadLoop(); //重写threadLoop方法 }; 问题关键我应该怎么实例化呢? 1、栈上定义,MyThread instance(); 2、堆上定义...

2018-02-08 08:14:06 958

原创 顺序链表插入

顺序链表插入一个简单实现 struct ListNode { ListNode* next; int value; };ListNode* insertList(ListNode* head, ListNode* node) { ListNode* start = head; ListNode* pre = start; for(; star

2017-12-26 23:39:32 847

原创 定位crash问题

使用反汇编精确到一条汇编指令 addr2line可以精确到哪一行代码,但是一行代码可能对应多条指令,所以如果条件允许的话,拿到带有符号表的算法库,反汇编到具体指令。 工作中出现一个crash,首先定位到具体语句 mDevice->getPixFmt(frameMsg->mFrame, &frameFmt); 如果单看这条语句,涉及两个指针,那究竟是哪个指针有问题,通过反汇编+上下文,我们可以

2017-09-16 09:32:53 301

原创 函数指针

函数指针的声明和定义,

2017-08-25 19:58:42 143

原创 C++编程思想之运算符重载

class A { public: int* a; public: operator bool() { if(a != NULL) return true; else return false; } }int main() { A aa; i

2017-08-10 22:44:58 170

原创 C++编程思想之虚函数

通过动态库dlsym一个类,如果这个类有虚函数,外面引用的头文件和类中定义的头文件虚函数声明顺序不一样,会不会有问题? 例如: DynamicLib.h class A { virtual int funcA() = 0; virtual int funcB() = 0; virtual int funcC() = 0; };class B : public

2017-08-04 22:09:10 293

原创 进入Java的世界

2016/11/17: 开发环境搭建 相关参考:http://blog.csdn.net/21aspnet/article/details/18815397

2016-11-17 22:00:03 308

原创 程序员常用的命令和工具

1、g++编译编译C++     g++ XX.cpp -o test     执行: ./test2、

2016-11-11 00:02:26 422

原创 探究std::stringstream

string myStr(“98 99 999”); stringstream strStream; strStream>>myStr; int a, b, c; strStream>>a>>b>>c; a = 98 b = 99 c = 999; 这都比较好理解 ,但正好有个变量是unsigned char类型的。 char d; strStream>>d; printf(“d

2016-11-10 23:59:37 531

原创 探究struct对齐

一直犯了一个想当然的错误 struct A { int a; char b; }; 一直认为a是四字节对齐,b是1字节对齐,所以A的size是5个字节。 struct A自身也需要对齐,是4字节对齐,所以A的size是8个字节。 参考:http://blog.chinaunix.net/uid-14802518-id-2784907.html

2016-11-02 22:58:30 223

原创 探究std::string

今天写了一句 static std::string myString = NULL; 直接崩溃了,太大意了。std::string的构造函数 string(const char* s) 里面会调用strlen(s),直接crash

2016-10-26 22:47:07 194

原创 探究mmap

关于内存映射mmap的原理介绍非常多,之所以想了解mmap的原因是看到进程间通信,使用mmap内存映射实现消息队列。 1、相关链接 http://blog.csdn.net/joejames/article/details/37958017 里面提到了内核空间和用户空间的概念,好久不看内核先关的书籍,有点遗忘。 里面提到read/write会出现两次拷贝,第一次拷贝是将文件拷贝到内核空间,第

2016-04-22 22:11:26 242

原创 探究fork函数

问题起源:在看mediaserver进程的创建时,它用fork函数创建了子进程跑log的service.从而想研究一下fork函数怎么会出现两个返回值这么神奇的事情。 示例代码: int main() { pid_t pid; pid = fork(); if(pid == 0) { sleep(2); printf(“chlid\n

2016-04-19 23:16:18 177

原创 探究printf

对printf的探究始于几个问题 1、 short a, b; printf(“a=%d b=%d”, a, b); %d是用来打印有符号整型int类型,那它这样打印会不会有问题,比如寻址越界,但是发现其实都能够打印正常,所以应该不会有寻址越界问题。 2、printf的实现原理究竟是怎样的,它是如何实现可变参数的。 现在我们仍然采用汇编语言以及阅读printf源码来解决疑问。 type

2016-04-15 23:35:03 328

原创 编译和链接

我们经常说编译不过,这里的编译应该是个笼统的大的概念。 参考博文: http://blog.chinaunix.net/uid-26548237-id-3839979.html 编译生成的的是汇编语言,.S文件,可以编译命令g++ -s 汇编生成的是目标文件, .o文件,g++ -o,o的意思应该是object,目标的意思 链接是将各个目标文件.o组装起来。 每个目标文件还提供了三个表:

2016-03-30 23:31:12 214

原创 从编译原理理解数组名

参考文章: http://blog.chinaunix.net/uid-27004869-id-3301282.html编译器在做词法分析和语法分析的时候,遇到一个数组的定义,就会把数组的有关信息汇集在一个叫做“内情向量”或“信息向量”的表格中,其中的信息包括数组的类型,维数,各维的上、下边界,以及数组的首地址,然后将这个“内情向量”相关信息存储在符号表中。 数组定义后位置就是固定的,因此其首地

2016-03-24 23:54:36 1607

原创 ubuntu下载编译android5.0

虽然现在到了6.0,但是考虑到空间、第一次编,还是谨慎点,用5.0试一下手参考文章:http://www.cnblogs.com/bluestorm/p/4419135.htmlhttp://blog.csdn.net/sunao2002002/article/details/478692810、安装repo清华的源和google的源都无法访问,可以参考如下;htt

2016-03-05 10:50:34 293

原创 在win10上使用VMware workstation安装ubuntu12.04

1.、VMwareworkstation_full_12.1.0.2487.1453173744     永久密码 VY1DU-2VXDH-08DVQ-PXZQZ-P2KV82、ubuntu-12.04-desktop-amd64参考文档:http://jingyan.baidu.com/article/14bd256e0ca52ebb6d26129c.html遇到的几个问题:

2016-02-29 23:36:54 1694

空空如也

空空如也

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

TA关注的人

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