linux 应用编程
qq160816
这个作者很懒,什么都没留下…
展开
-
在CMake中使用C++11
C++11标准已经正式发布了,Ubuntu 13.04自带的C++编译器组件g++ 4.7.3对C++11有着良好的支持。要在CMake中使用C++11,只要在CMakeLists.txt中添加一行:add_definitions(-std=c++11)转载 2017-01-13 17:18:04 · 24503 阅读 · 2 评论 -
getopt(分析命令行参数)
相关函数表头文件 #include定义函数 int getopt(int argc,char * const argv[ ],const char * optstring);函数说明 getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数optstring 则代表欲处理的选项字符串。此函转载 2016-03-15 10:37:48 · 241 阅读 · 0 评论 -
android 5.0 Camera 之 ZSL说明
ZSL的概念ZSL (zero shutter lag) 中文名称为零延时拍照,是为了减少拍照延时,让拍照&回显瞬间完成的一种技术。Single Shot当开始预览后,sensor 和 VFE 会产生 preview 和 snapshot帧, 而最新的snapshot 帧数据会被存储在buffer 中。当拍照被触发,系统计算实际的拍照时间,找出在buffer中的相应帧,然后返回帧到用户转载 2016-02-24 10:29:06 · 12093 阅读 · 0 评论 -
一篇不错的v4l2入门文档
原帖地址: http://www.isongzi.com/2009/02/23/v4l2/ 前言:目前正在忙于ARM平台的Linux应用程序的开发(其实是刚刚起步学习啦)。底层的东西不用考虑了,开发板子提供了NAND Bootloader,和Linux 2.6的源码,而且都编译好了。自己编译的bootloader可以用,但是Linux编译后,文件很大,暂且就用人家编译的系统,先专心转载 2016-03-31 12:22:53 · 549 阅读 · 0 评论 -
HDR 拍照模式的原理,实现及应用
HDR 拍照: (High Dynamic Range Imaging)高动态范围成像,是用来实现比普通数字图像技术更大曝光动态范围(即更大的明暗差别)的一组技术。高动态范围成像的目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。现在一般的数码相机和手机中都实现这种拍照模式。适合场景: 比较适合在阴暗变化明显的场景下使用,这转载 2016-03-03 16:50:51 · 1269 阅读 · 0 评论 -
android媒体--stagefright概述【一】
最近杂七杂八的忙碌着,前几天看了下这部分主要是stagefright模块的,所以更改下名字 做了挺长时间的android平台的媒体开发,对之前的分析进行一个阶段性的总结。 一、android结构图(上下文关系) 二、android目录结构 自从android4.2版本之后,媒体的相关代码都放到framework/av/的目录中,俗称"AV工作者",呵呵(转载 2016-03-01 14:24:19 · 372 阅读 · 0 评论 -
(综合)xorg-xserver相关完全解析
本文主要是从以下几个方面介绍xorg-xserver 相关的知识 1.linux系统图形界面框架2.xserver 和x client启动过程3.图形2d,3d加速原理简介4.xserver主分支代码解析。5.xserver,xclient协议简介6.一个基于Xlib的简单例子解析7.radeon驱动初始化代码解析.1.l转载 2015-09-21 11:24:48 · 7096 阅读 · 0 评论 -
vsftp添加新用户;限定ftp用户只能访问自己的家目录
一、vsftp添加用户[root@ www.codesky.net ~]# adduser -g ftp -s /sbin/nologin mmc[root@ www.codesky.net ~]# passwd mmc输入密码。这样添加了一个用户名为:mmc 的新用户,新添加的用户只能登录FTP,不能作为系统用户登录。新添加的用户默认家目录是在/home原创 2014-12-16 23:57:28 · 1365 阅读 · 0 评论 -
Nouveau源码分析(四):NVIDIA设备初始化之nouveau_drm_load (1)
Nouveau源码分析(四)probe函数成功返回之后,DRM模块就会调用struct drm_driver的load函数,对应nouveau的nouveau_drm_load.这个函数虽然看起来不是特别长,但每一个调用的函数展开后就会变得非常长了![cpp] view plaincopyprint?// /drive转载 2015-09-01 16:38:44 · 896 阅读 · 0 评论 -
GPU/DRM 简介
原文地址:https://www.kernel.org/doc/htmldocs/drm/index.htmlDRM - Direct Rendering ManagerDRM是一个内核级的设备驱动,既可以编译到内核中也可以作为标准模块进行加载。DRM最初是在FreeBSD中出现的,后来被移植到Linux系统中,并成为Linux系统的标准部分。DRM可以直接转载 2015-08-19 11:16:32 · 1387 阅读 · 0 评论 -
Nouveau源码分析(二):Nouveau结构体的基本框架
Nouveau源码分析(二)在讨论Nouveau对Nvidia设备的初始化前,我准备先说一下Nouveau结构体的基本框架Nouveau的很多结构体都可以看作是C++中的类,之间有很多相似的东西,比如继承关系,virtual成员函数等.模拟继承先尝试阅读一下这个代码:[cpp] view plaincopyprint?转载 2015-09-01 16:37:01 · 736 阅读 · 0 评论 -
Nouveau源码分析(七): 各SUBDEV/ENGINE初始化 (1)
Nouveau源码分析(七)虽然各个SUBDEV/EGINE的初始化实际还是在nouveau_drm_load里,但还是换个标题吧. 等把各个SUBDEV/ENGINE之类的说完再换回去.上次已经按着初始化的顺序介绍了一下各个subdev的用途,现在按顺序,首先来看VBIOS的ctor函数:[cpp] view plaincopyprint?转载 2015-09-01 16:41:49 · 522 阅读 · 0 评论 -
Nouveau源码分析(五):NVIDIA设备初始化之nouveau_drm_load (2)
Nouveau源码分析(五)接着上一篇来,先把nouveau_drm_load再贴出一遍来吧:[cpp] view plaincopyprint?// /drivers/gpu/drm/nouveau/nouveau_drm.c 364 static int 365 nouveau_drm_load(struct drm_转载 2015-09-01 16:39:53 · 1103 阅读 · 0 评论 -
Nouveau源码分析(零)
前言:最近在尝试操作系统图形化的驱动加速方面,因为我家电脑是NVIDIA的,所以就先研究一下NVIDIA方面的吧.Intel和AMD的显卡都有丰富的文档,因此相对来说比较简单.而NVIDIA则十分保守,甚至于没有一点公开官方文档可供查阅.非官方文档也是屈指可数,至于网上的微型驱动实现更是一个不个. [曾经找过支持intel显卡的小型操作系统,还真找到了一个,对照intel文档看起来转载 2015-09-01 16:43:33 · 1286 阅读 · 1 评论 -
Nouveau源码分析(六):NVIDIA设备初始化之nouveau_drm_load (3)
Nouveau源码分析(六)上一篇中我们暂时忽略了两个函数,第一个是用于创建nvif_device对应的nouveau_object的ctor函数:[cpp] view plaincopyprint?// /drivers/gpu/drm/nouveau/core/engine/device/base.c 488 static stru转载 2015-09-01 16:40:44 · 997 阅读 · 0 评论 -
Nouveau源码分析(一):从module_init开始
Nouveau源码分析(一)[cpp] view plaincopyprint?// /drivers/gpu/drm/nouveau/nouveau_drm.c 1089 module_init(nouveau_drm_init); 1090 module_exit(nouveau_drm_exit); 相信只转载 2015-09-01 16:34:44 · 824 阅读 · 0 评论 -
Nouveau源码分析(三):NVIDIA设备初始化之nouveau_drm_probe
Nouveau源码分析(三)向DRM注册了Nouveau驱动之后,内核中的PCI模块就会扫描所有没有对应驱动的设备,然后和nouveau_drm_pci_table对照.对于匹配的设备,PCI模块就调用对应的probe函数,也就是nouveau_drm_probe. [cpp] view plaincopyprint?//转载 2015-09-02 10:12:59 · 1051 阅读 · 0 评论 -
Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一转载 2016-04-14 14:37:44 · 360 阅读 · 0 评论 -
linux 内存泄漏检查工具
在使用C/C++编程时,有时内存泄漏问题对程序会形成灾难,这种问题往往要仔细检查。linux下有方便测试程序内存管理的工具:valgrindvalgrind包含几个标准的工具,它们是: 1、memcheck memcheck探测程序中内存管理存在的问题。它检查所有对内存的读/写操作,并截取所有的malloc/new/free/delete调用。因此memcheck工具能够探测到以下转载 2016-04-11 12:24:16 · 383 阅读 · 0 评论 -
android之MTP框架和流程分析
Android之 MTP框架和流程分析 概要本文的目的是介绍Android系统中MTP的一些相关知识。主要的内容包括:第1部分 MTP简介 对Mtp协议进行简单的介绍。第2部分 MTP框架 介绍Android系统下MTP的框架。第3部分 MTP启动流程 详细分析MTP服务的启动流程,包括Java层转载 2016-05-24 13:54:24 · 493 阅读 · 0 评论 -
ORB-SLAM: a Versatile and Accurate Monocular SLAM System
摘要: 本文主要讲了ORB-SLAM,一个基于特征识别的单目slam系统,可以实时运行,适用于各种场合,室内的或者室外的,大场景或小场景。系统具有很强的鲁棒性,可以很好地处理剧烈运动图像、可以有比较大的余地自由处理闭环控制、重定位、甚至全自动位置初始化。基于近年来的优秀算法,我们对系统做了精简,采用了所有SLAM相同功能:追踪,地图构建,重定位和闭环控制。选用了比较适合的转载 2017-01-09 10:57:58 · 1445 阅读 · 0 评论 -
SLAM: 单目视觉SLAM的方案分类
单目视觉SLAM方法在是否引入概率框架方面分为基于概率框架的方法和基于非概率框架的方法。其中前者的代表方法是基于Kalman滤波(KF)的方法,基于粒子滤波(PF)的方法等;后者的代表方法是基于关键帧和稀疏捆绑调整优化的方法,基于图优化的方法等。 文章链接:http://www.opencv.org.cn/forum.php?mod=viewthread&tid=37672转载 2017-01-09 10:44:00 · 1267 阅读 · 0 评论 -
使用libjpeg库实现jpeg图片的缩放(缩略图)
libjpeg库的交叉编译libjpeg库主要用于jpeg格式图片的编解码,其交叉编译过程如下1. 下载源码从官方网站http://www.ijg.org/files/ 下载libjpeg库的源码,本次编译过程使用的是 jpegsrc.v9a.tar.gz2. 解压源码2.1 切换到下载目录,执行tar -xzvf jpegsrc.v9a.tar.转载 2016-09-28 11:24:32 · 6075 阅读 · 2 评论 -
H264(NAL简介与I帧判断)
1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。因此我们平时的每帧数据就是一个NAL单元(SPS与PPS除外)。在实际的转载 2016-09-25 15:45:03 · 281 阅读 · 0 评论 -
H264--2--语法及结构
名词解释场和帧 : 视频的一场或一帧可用来产生一个编码图像。在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。片: 每个图象中,若干宏块被排列成片的形式。片分为I片、B片、P片和其他一些片。 I片只包含I宏块,P片可包含P和I宏块,而B片可包含B和I宏块。 I宏块利用转载 2016-09-25 16:00:04 · 317 阅读 · 0 评论 -
H264--1--编码原理以及I帧B帧P帧
----------------------前言----------------------- H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像转载 2016-09-25 15:59:39 · 518 阅读 · 0 评论 -
AVC (高级视频编码Advanced Video Coding)
Advanced Video Coding 高级视频编码视频编解码技术有两套标准,H.261、国际电联(ITU-T)的标准H.263、H.263+等;还有ISO 的MPEG标准Mpeg1、Mpeg2、Mpeg4等等。H.264/AVC是两大组织集合H.263+和Mpeg4的优点联合推出的最新标准,最具价值的部分无疑是更高的数据压缩比。在同等的图像质量条件下,H.264的数据压缩比能比H.263转载 2016-09-25 15:59:06 · 1539 阅读 · 0 评论 -
OpenCv目标跟踪_cvGoodFeaturesToTrack()寻找角点
在OpenCv中提供了两种实现目标跟踪的关键算法,LK算法和HS算法,也就是通常所说的稀疏光流和稠密光流。寻觅角点角点,其实也就是1幅图象中,容易被跟踪的特点点,通常来讲,这个点在两个正交方向上都有明显的倒数,该点在图象中我们认为是唯一无2的。 从直观上讲,角点是1类有足够信息并且能够从当前帧和下1帧都能提取出来的点。关于角点的定义,是由Harris提出的,其基础是图象灰度强度的2转载 2016-10-10 17:44:01 · 715 阅读 · 1 评论 -
ubuntu14.04中安装opencv2.4.9
1. 先从sourceforge上下载OpenCV的源码http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.9/opencv-2.4.9.zip2. 解压到任意目录unzip opencv-2.4.9.zip3. 进入源码目录,创建release目录c转载 2016-10-10 14:28:00 · 608 阅读 · 0 评论 -
RTP 和 RTSP的区别
RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作。其目的是提供时间信息和实现流同步。但RTP通常使用UDP来传送数据。但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP一个给 RTCP。RTP本身并不能为接顺序传送数据包提转载 2016-09-06 10:08:13 · 595 阅读 · 0 评论 -
RTP timestamp与帧率及时钟频率的关系
RTP timestamp是用时钟频率(clock rate)计算而来表示时间的。RTP timestamp表示每帧的时间,由于一个帧(如I帧)可能被分成多个RTP包,所以多个相同帧的RTP timestamp相等。(可以通过每帧最后一个RTP的marker标志区别帧,但最可靠的方法是查看相同RTP timestamp包为同一帧。) 两帧之间RTP timestamp的增量转载 2016-09-09 16:27:09 · 1008 阅读 · 0 评论 -
Linux之V4L2基础编程
本文内容来源于网络,本博客进行整理。1. 定义V4L2(Video For Linux Two) 是内核提供给应用程序访问音、视频驱动的统一接口。2. 工作流程:打开设备-> 检查和设置设备属性-> 设置帧格式-> 设置一种输入输出方法(缓冲 区管理)-> 循环获取数据-> 关闭设备。3. 设备的打开和关闭:#include int open(const char转载 2016-08-15 20:30:04 · 378 阅读 · 0 评论 -
使用GPIO模拟I2C总线进行通信
I2C总线的通信过程(见图4-8)主要包含三个主要阶段:起始阶段、数据传输阶段和终止阶段。1. 起始阶段在I2C总线不工作的情况下,SDA(数据线)和SCL(时钟线)上的信号均为高电平。如果此时主机需要发起新的通信请求,那么需要首先通过SDA和SCL发出起始标志。当SCL为高电平时,SDA电平从高变低,这一变化表示完成了通信的起始条件。在起始条件和数据通信之间,通常会有转载 2016-06-06 22:14:41 · 599 阅读 · 0 评论 -
shell脚本判断设备节点是否存在
今天有个朋友问我如何判断一个设备节点是否存在,觉的很简单的问题,结果破费周折。那个朋友首先发过来一个脚本说不行:#!/bin/shecho "Find usb disk......." if [ -f /dev/sda1 ]; then echo "Runing mount > /udisk" else echo "Runing WLAN...转载 2016-06-12 11:48:48 · 8183 阅读 · 0 评论 -
Linux应用层直接操作GPIO
Linux应用层直接操作GPIO在一个老手的指导下,应用层可以直接操作GPIO,具体指设置GPIO的输入输出以及输出电平高或者低。这个大大地提高了灵活性,官方的文档有GPIO Sysfs Interface for Userspace,GPIO Sysfs。这里我记录一下使用过例子:# RK30_PIN0_PD4# A0-7 -> 0-7 / B0-7 -> 8-15 / C0-转载 2016-06-06 10:19:59 · 2333 阅读 · 0 评论 -
camera基本代码架构
camera基本代码架构转自:http://www.cnblogs.com/thjfk/p/4086001.html Camera原理:外部光线穿过lens后,经过color filter滤波后照射到sensor面上,sensor将从lens上传到过来的光线转换成电信号,再通过内部的AD转换为数字信号,如果sensor没有集成DSP,则通过DVP的方式传输到baseband,此转载 2016-06-06 10:13:09 · 1462 阅读 · 0 评论 -
linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)
转载:http://apps.hi.baidu.com/share/detail/11596555LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系。常常混淆概念,本文以比较易于理解的方式来解释X,X11,XFREE,WM,KDE,GNOME等之间的关系。一、linux本身没有图形界面,linux现在的图形界面转载 2015-07-24 14:14:29 · 1839 阅读 · 0 评论 -
板子启动ubuntu无法进入命令行
板子启动ubuntu无法进入命令行,并打印如下log: 25 [ 6.921205] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities 26 [ 6.931860] EXT4-fs (mmcblk0p2): couldn't mount as ext2 due to feat原创 2015-08-24 16:21:17 · 1832 阅读 · 0 评论 -
[原]通过 dumpsys SurfaceFlinger 分析Android 系统图层
一、通过 dumpsysSurfaceFlinger 分析Android 系统图层:从下面的dumpsys log看出当前系统有三个图层(红色部分是每个图层的坐标和大小),从最底层到上层分别是ImageWallpaper(壁纸), SurfaceView(视频小窗口), launcher(桌面)。其中视频小窗口用Overlay的方式独立输出到视频层,这样的话只有壁纸层和桌面层通过GPU混合转载 2015-06-30 15:48:01 · 16971 阅读 · 0 评论 -
error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: 的解决办法
在centos下运行操作mysql的c代码时报错error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory。我的解决办法比较低级,不过方便些,解决办法:在ubuntu系统下拷贝/usr/lib/i386-linux-原创 2012-09-10 16:53:22 · 2479 阅读 · 0 评论