自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C__Allen的程序人生

身无立锥地_常怀四海心

  • 博客(31)
  • 资源 (4)
  • 收藏
  • 关注

转载 MakeFile脚本和shell脚本的一些差异

在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的。本文试着归纳一下Makefile和shell脚本的不同。1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。实例如下:MakefilePATH="/data/"SUBPATH=$(PATH)ShellPATH="/data/"SUB

2014-12-24 16:15:38 787

原创 onvif Device端开发

这篇文章不是对onvif device端开发的步骤和基本知识的说明,而是我在开发过程中遇到的一些问题。很多问题,比如序列化、比如内存管理都在user guide中详细说明了,因此多看文档还是比较重要的。关于wsdl2h和soapcpp2的使用还是比较重要的,其中我遇到的最重要的一个实际问题是:如何把生成的多个服务端的类联系起来,去监听同一个端口,接收并分发同一份消息。gSO

2014-03-28 11:18:42 3678

原创 QuickTime RTP流

之前做的RTP服务端在QuickTime播放的时候出了问题,会话可以建立,也可以接收到数据,但是QuickTime死活不播放,后来更改了QuickTime的设置,在偏好设置->高级中,把“启用Direct3D视频加速”的勾选取消,便解决问题了..QuickTime不像VLC的容错好,需要在RTSP会话中给定码流的参数,如:“a=fmtp:98 packetization-mode=1;

2014-01-25 14:45:33 1437

原创 opengl glBindTexture为何失败

半年没有写点东西总结下了。有时候脑中想法很多,却又感觉文字功底着实有限,无法把自由散漫的思想分门别类地记下来,好在可以与人交流,掏空自己,然后吸收些新东西;有时候却什么都不想,就翻翻书,享受前人的精神盛宴。      还是写技术性的东西好,可以有章可循,写得不好,就算别人看不大懂,自己肯定是理解,若干日月后翻出来看还可以嘲笑以前的自己,知道自己走过了哪些里程碑。      这一两年涉及太广

2013-12-31 10:32:50 5148

转载 socket bind 之 INADDR_ANY

在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行;而IP地址,需要填本机的IP,但是也可以用一个宏INADDR_ANY代替,用这个宏就可以不用查找本机的IP,它就可以代替本机的IP。当时只觉得这个INADDR_ANY比较神奇,但是由于

2013-06-14 17:16:16 4484

原创 小工具,从wireshark中导出原始16进制数据,进而导出RTPPayload数据

wireshark抓到的包可以导出:file->export->file在packet format下可以选择导出的格式,但如果需要的数据是多个包的组合那就麻烦了,因为导出的数据无论如何都会加上链路层、IP层和传输层的头信息,手动删除基本可能。比如,我捕获了很多RTP包,但我只想取出RTP的payload来分析数据是否正确,我可以这样做:首先导出packet byte格式的数据

2013-06-14 17:06:34 14050

原创 GBT28181中的RTP

国标中说h264数据按照RFC3984打包,但是国标的测试工具——SPVMN,却不支持RFC3984的打包方式。无奈之下直接用RFC3550的方式打包,其实就是分包,然后加上RTP头,对于一帧的结束,在RTP头中把MARK置1,并且在一帧的开始把时间戳增加而已。这种打包方式其实和RFC有冲突,打包处理的RTP数据用VLC播放解码不正常,但用SPVMN是可以播的。这种方式下没有测试音视频

2013-05-22 15:50:21 3540 1

原创 编译jrtp和jthread

jrtp和jthread中建议使用CMake来编译,尝试了下,确实简单方便。首先在http://www.cmake.org/cmake/resources/software.html下载Cmake,我需要的是windows版的库,所以使用的是windows版的Cmake如图,选择好jrtp或jthread的路径,Cmake会在该路径下搜索CmakeList.txt,/cc是我自己建

2013-05-14 08:45:04 1234

转载 SSL介绍

1引言        SSL是一种在客户端和服务器端之间建立安全通道的协议。SSL一经提出,就在Internet上得到广泛的应用。SSL最常用来保护Web的安全。为了保护存有敏感信息Web的服务器的安全,消除用户在Internet上数据传输的安全顾虑。OpenSSL是一个支持SSL认证的服务器.它是一个源码开放的自由软件,支持多种操作系统。OpenSSL软件 的目的是实现一个完整的、健壮的

2013-04-22 14:10:38 926

原创 一些面试可能会考到的问题

std::sort用法:std::sort的原型是这样template void sort( RandomAccessIterator _First, RandomAccessIterator _Last );template void sort( RandomAccessIterator _First, Rand

2013-03-18 15:21:19 987

原创 SDP的fmtp部分

之前做的SDP对于h264编码的视频没有做"a=fmtp"字段的解析,今天加上,主要是为了解析出视频的宽高信息。RFC3984的8.2节对field做了介绍,这里只介绍sprop-parameter-sets字段的解码方法,因为我的主要目的是解析出视频宽高信息该字段用BASE-64编码,因此,首先解码BASE-64,这里给出解码方法:long CBase64

2013-02-27 20:28:56 8127

原创 内存分配管理(一)

看jrtplib源码时,对其中的内存管理不理解,遂向高手请教,把所得记于此:主要的两个类:class RTPMemoryManager{public: RTPMemoryManager() { } virtual ~RTPMemoryManager() { } virtual void *AllocateBuffer(size_t numb

2012-10-09 19:31:02 1347

原创 程序员的路

程序员的路太多:无数的语言、无数的平台、加上无数的行业。虽然知识都是相通的,在语言、平台和行业间跳转未必不能成功,但是,在陌生的领域难免要比别人花更多的功夫、投入更多的时间和机会的成本,因此程序员被人认为是“吃青春饭”的行业,因此企业不大愿意培养新人。这就造成了大多数猿类的迷茫——未来的路怎么走?        程序员大多很聪明,这种聪明给我们带来更多的思考:哪种技术收益最大?哪个行业发展更好

2012-09-24 21:14:31 622

原创 STL之erase

今天发现有段STL::map的代码在windows下运行得好好的,但在linux下编不过:“no match for 'operator=' in 'iter = ”。其实就是一行简单的代码:iter = map.erase(iter)而MSDN上对map::erase的说明是这样的:iterator erase(iterator it);iterator erase(

2012-09-21 17:57:05 1346

原创 RTP时间戳相关

通过RTSP建立好会话之后,就可以开始传输RTP数据和RTCP SR包了(用来同步音视频)。这两者涉及到很重要的问题:时间戳。下面是《rtp_audio_and_video_for_the_internet》上的一个时间图。TimeStamp的初始值是随即生成的,然后每一帧数据固定增加一个增量,客户端在接收到数据时,根据这个时间戳就能以正确的时间恢复(其中被分包的视频桢是没有时间戳

2012-09-17 20:26:46 3690

原创 RTSP会话

首先说说程序的大体结构。这是个服务端程序,客户端用的是VLC,因此首先需要开个线程来不断监听客户端的请求,也就是RTSP的请求与应答了(其实就是监听554端口)。RTSP的指令格式很多,最小系统的指令支持做到这几个就差不多了:OPTIONS,DESCRIBE,SETUP,TEARDOWN,PALY。下面是实际的请求与应答:RTSPRecvData : OPTIONS rtsp://192.16

2012-09-14 14:02:36 4929 2

原创 创建和使用DLL

首先创建个DLL工程(win32控制台——DLL工程)添加头文件和CPP文件,如下:#ifndef __DLL_TEST_H__ #define __DLL_TEST_H__ class __declspec(dllexport)CTest {public: CTest(); ~CTest(); void print();protected:private:};

2012-07-12 17:08:14 796

原创 CPaintDC和CDC

今天在对话框上绘制图形时遇到了一个问题,直接上代码:下面是对话框重载的OnPaint函数: CRect rect; CDC *pDC = GetDC(); CDC memDC; GetClientRect(&rect); CBitmap memBitmap; memDC.CreateCompatibleDC(NULL); memBitmap.CreateCompatible

2012-06-30 11:24:31 9533 4

原创 对话框多国语言的支持

在实现对多国语言支持的时候,使用了一种根据选择不同语言,读取不同文件的方式,设置界面中的语言的方法。文件的格式如下:[Setting]Language=0[String]IDD_1=AAAIDD_2=BBBIDD_3=CCC其中Setting是"section name"用来区分关键字,language则是关键字,0是它的值通过不同的值,来区分不同的语言。

2012-06-28 19:48:42 1498

原创 Pictrue Control和TreeCtrl的拖动

Pictrue Control实际上就是CStatic,它的动态创建过程如下: m_Static.Create(_T(""), WS_VISIBLE|WS_CHILD|SS_BITMAP|SS_CENTERIMAGE, CRect(200,200,300,300), this); HBITMAP hBitMap = ::LoadBitmap(AfxGetInstanceHandle(),

2012-06-14 19:47:54 1263

原创 使用python输出pdf

第一种:直接输出PDF——使用reportlab库在https://www.reportlab.com/software/installation/上面有完整的说明首先,下载和安装python,推荐2.5/2.6/2.7然后下载和安装Python Image Library——http://www.pythonware.com/products/pil/,以便在PDF中使用bitmap

2012-06-10 22:13:08 10076 1

转载 构造函数初始化列表和函数内部赋值的区别

转自:http://www.cnblogs.com/BlueTzar/articles/1223169.html构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:class CExample {public:    int a;    float b;    //构造函数初始化列表

2012-06-05 11:18:08 1205

转载 C++实现Singleton设计模式

这个设计模式主要目的是想在整个系统中只能出现一个类的实例。,比如你的软件的全局配置信息,或是一个主控类,等等。// Singleton.h// C++:最简单的方式实现Singleton设计模式#include #include using namespace std;class Singleton{private:

2012-05-29 14:37:14 731

原创 自写PNGButton类,实现透明按钮

主要通过GDIPlus的Image类来加载图片资源,使之支持bmp以外的图片。GDIPlus的初始化方式网上都是用的如下方法:1、在stdafx.h中添加以下声明://引入GDI+头文件 #include  using namespace Gdiplus;#pragma comment(lib, "gdiplus.lib" )2、在应用程序类初始化的地方(最

2012-05-24 19:54:36 5961

原创 windows和linux获取文件夹内容的一种方法

windows:使用头文件:、关键函数:_findfirst、_findnext关键结构体:_finddata_t _finddata_t fileinfo; intptr_t hFile; string root; root.assign(Path);//文件夹绝对路径 int len = root.length(); if ( !IsEndObliqueLin

2012-05-21 19:29:48 12678 2

原创 MakeFile中使用linux命令和MakeFile函数

MakeFile的一些基本规则就不说了,一些makefile中混用了linux命令和函数,有时候让人摸不着头脑。下面是一个实际中用到的例子:例1(使用linux命令):#SDK MAKEFILE 1.0DIR:=../..OBJECT:=$(DIR)/lib/libui.a 这是输出的目标文件的路径和文件名-include $(DIR)/main/Comdef 包含

2012-05-16 20:29:25 2684

原创 一些常用的字符转换

最近做FTP相关的东西,遇到各种转换:1.utf-8与unicode的转换:Unicode是定长,而utf-8是变长。转换原理: U-00000000 - U-0000007F: 0xxxxxxx  //以0开头的为ASCII码(        U-00000080 - U-000007FF: 110xxxxx 10xxxxxx //开头两个“1”,表示有两个字

2012-05-15 20:14:51 968

转载 CListCtrl使用技巧(转)

以下未经说明,listctrl默认view 风格为report1. CListCtrl 风格      LVS_ICON: 为每个item显示大图标      LVS_SMALLICON: 为每个item显示小图标      LVS_LIST: 显示一列带有小图标的item      LVS_REPORT: 显示item详细资料      直观的理解

2012-05-02 20:31:26 489

原创 读书笔记

断断续续读完一本《我也能做CTO之程序员职业规划》,恰巧又读到一篇相似的文章——《禅道程序员的十条规则》,不忍想写点东西,反思反思前人的心得。也检讨一下上一篇记得流水账。        依旧不善于写“解决方案”性质的东西,一方面是因为解决问题的时候不会去想该问题要怎么写出来,也是因为自己觉得程序员的成长不是靠比解决了多少问题、掌握了多少技术,而是内在的修炼,所谓“态度决定高度,心态决定成败”,

2012-04-30 21:17:11 516

原创 C++学习笔记

从单片机的纯C转到C++还真是一段很长的学习路,记录一点比较生僻和比较重要的知识点,只是加深点印象罢了,也能知道自己哪些地方不足,读书百遍其义自见嘛....1.一个类的所有数据成员都是公有的,则它不需要提供构造函数(这样的类,不知道有什么存在的意义...)2.explicit只能被应用在构造函数上,防止隐式转换是很有必要的3.即使是一个const对象,当这个对象的数据成员被

2012-04-22 23:31:36 624

原创 程序人生

很早就有写点东西来总结、展望的想法,一直被肚子里的懒虫影响,无法付诸行动。有人说技术性的东西写出来只是整理的作用,帮助记忆而已。虽然也有点道理,不过个人还是更倾向于积极的一面:写出来是为了对自己更负责,重新思考、回味一遍,或许理解深了、思考透了,也更有动力和乐趣了。        突然想到程序人生,是因为觉得一个人很难认识自己,知道自己在这短短几十年究竟想达到什么境界,完成什么目标太难,必须尽

2012-04-16 22:57:03 677

glew1.9.0库和头文件

glew1.9.0的库 包括mx版,静态、动态都有

2013-12-18

PNGButton类

两个PNGButton类,一个继承与CWnd,一个继承与CButton。实现按钮透明,即按钮上的图片是可有透明度的,方便不规则图形的显示,并且可给鼠标悬停、点击等操作赋予不同的图片

2012-05-24

常用硬件模块(DXP制作)

用DXP制作 常用硬件模块 包括 电路图原理图 封装图

2010-06-23

空空如也

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

TA关注的人

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