
C/C++
文章平均质量分 58
zhangwu1241
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Camera模块解析之驱动篇
Camera模块解析之驱动篇1 手机摄像头功能概述手机摄像头功能由多个功能模块组成,主要三个部分,采集,加工,显示。(1)采集部分由感光的sensor完成,通过CAM IF接口与手机芯片内的CAM连接。(2)CAM对CAM IF数据进行加工,主要是格式转换,特殊效果等。最终处理出来的一帧数据,存在内存中。(3) 手机的刷新线程,使用手机内部的DMA功能,或者OVERLAY技术转载 2017-02-27 20:07:29 · 2911 阅读 · 0 评论 -
Linux驱动层调用应用层程序--call_usermodehelper()
Linux驱动层调用应用层程序–call_usermodehelper()在驱动层想要调用用户空间程序主要还是通过call_usermodehelper()原创 2017-07-31 17:54:57 · 3112 阅读 · 0 评论 -
linux之V4L2摄像头应用流程
原博地址: http://blog.csdn.net/eastmoon502136/article/details/8190262/对于V4L2,上次是在调试收音机驱动的时候用过,其他也就只是用i2c配置一些寄存器就可以了。那时只是粗粗的了解了,把收音机当作v4l2的设备后会在/dev目录下生成一个radio的节点。然后就可以操作了。后来就没怎么接触了。这周,需要调试下usb的转载 2017-03-10 15:13:09 · 760 阅读 · 0 评论 -
理解Linux contain_of()宏
Linux contain_of()宏container_of()函数1.该宏定义在include/linux/kernel.h中439/**440 * container_of - cast a member of a structure out to the containing structure441 * @ptr: t转载 2017-02-27 10:10:09 · 847 阅读 · 1 评论 -
宏定义中使用do{}while(0)的好处
宏定义中使用do{}while(0)的好处#define MACRO_NAME(para) do{macro content}while(0) 关于为何使用上面格式,总结了以下几个原因: 1,空的宏定义避免warning:#define foo() do{}while(0)2,存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。3转载 2017-02-25 15:48:18 · 422 阅读 · 0 评论 -
Linux中关于函数__stringify(x)
linux中关于函数__stringify(x)在linux中,有一个很有意思的函数,叫__stringify,这个函数的功能叫做stringification,没有查到它合适的中文翻译,我把它叫做参数“字符串化”。它的功能就是把参数x转换成一个字符串,这个函数的实现是由两部分组成的,如下:define __stringify_1(x) #xdefine __stringify(x) __stri转载 2017-02-25 15:24:14 · 1729 阅读 · 0 评论 -
Linux下线程的调度-理解
原博地址:有关Linux下线程的调度由于Linux对线程实现的一些特殊性,所以会给我们理解线程及其相关的一些函数带来疑惑,这里做个解答: 1、关于sleep 很多书籍上都说sleep这个系统调用会使整个进程sleep,而不单是sleep一个线程。这样说没错,但我们要是在Linux下写一个多线程 的程序,在一个线程中调用sleep,你会发现其他线程照样运行,这是怎么回事呢?这就是由于Linux下的线程转载 2016-12-01 09:32:53 · 386 阅读 · 0 评论 -
Win32下定时器与多线程
Windows环境下,CreateThread是操作系统级函数,而在C/C++开发时应该调用C/C++的运行库函数_beginthread或者更为安全的_beginThreadEx; 对于定时器CreateWaitableTimer相对于SetTimer,会大大减少系统资源;具体用法大致如下:#include<iostream>#include <Windows.h>#include <str原创 2017-02-24 09:58:35 · 1629 阅读 · 0 评论 -
C/C++ 回调函数 讲解
最近看了一篇对C/C++ 回调函数比较详细的讲解,特意转载学习一下,方便以后查阅。原文链接:http://www.cnblogs.com/chenyuming507950417/C/C++之回调函数 今天讨论下C/C++中的回调函数。 在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址转载 2016-09-08 10:06:48 · 504 阅读 · 0 评论 -
FFMPEG合两帧YUV420P为一帧
FFMPEG合两帧YUV420P为一帧Linux下,利用FFMPEG库函数合两帧YUV420P为一帧; 在项目中需要用到相关方面的知识,看见一篇博客转载学习以下; FFMPEG合两帧为一帧 原博地址: http://blog.csdn.net/lcalqf/article/details/22989777pSum_FrameYUV为目的帧,pFrameYUV是被合帧。把pFrameYUV合到p转载 2016-10-18 16:51:03 · 1855 阅读 · 0 评论 -
关于C++ const 的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。No.作用说明参考代码1转载 2016-12-09 10:14:40 · 398 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号_imp__MessageBoxA@16,该符号在函数 _WinMain@16 中被引用
vs编译器报错: error LNK2019: 无法解析的外部符号_imp__MessageBoxA@16,该符号在函数 _WinMain@16 中被引用这一类问题都是项目缺少对应依赖库导致的,在项目中添加对应lib库就可以了; 解决方法:在项目属性Properties>>Linker>>Input–>Additional Dependencies中添加User32.lib代码中添加依赖库原创 2017-02-17 13:41:08 · 2761 阅读 · 0 评论 -
标准C的标记化结构初始化语法
以前在看Linux代码时,就对它的结构体初始化写法感到奇怪,所有的初始化代码都写清了变量名,并且变量名前面还有一个诡异的点。最近学习Linux设备驱动,又遇到了,就查了一下,发现自己的知识果然纰漏不少,此种初始化写法并不是什么特殊的代码风格,而是所谓的C语言标记化结构初始化语法(designated initializer),而且还是一个ISO标准。 [cpp] view转载 2017-02-28 15:12:13 · 368 阅读 · 0 评论 -
C语言宏与单井号(#)和双井号(##)
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if转载 2017-02-28 10:01:35 · 515 阅读 · 0 评论 -
struct和typedef struct 总结
看见一篇介绍struct和typedef struct的,讲的很详细,因此转载记录一下。 原博地址:http://www.cnblogs.com/qyaizs/articles/2039101.htmlstruct和typedef struct 总结分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typede转载 2017-08-08 09:47:39 · 388 阅读 · 0 评论