<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[C__Allen的程序人生]]></title><description><![CDATA[身无立锥地_常怀四海心]]></description><link>https://blog.csdn.net/C__Allen</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; C__Allen]]></copyright><item><title><![CDATA[MakeFile脚本和shell脚本的一些差异]]></title><link>https://blog.csdn.net/C__Allen/article/details/42125179</link><guid>https://blog.csdn.net/C__Allen/article/details/42125179</guid><author>C__Allen</author><pubDate>Wed, 24 Dec 2014 16:15:38 +0800</pubDate><description><![CDATA[在Makefile可以调用shell脚本，但是Makefile和shell脚本是不同的。本文试着归纳一下Makefile和shell脚本的不同。
1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。实例如下：
Makefile
PATH="/data/"
SUBPATH=$(PATH)
Shell
PATH="/data/"
SUB]]></description><category></category></item><item><title><![CDATA[onvif Device端开发]]></title><link>https://blog.csdn.net/C__Allen/article/details/19613055</link><guid>https://blog.csdn.net/C__Allen/article/details/19613055</guid><author>C__Allen</author><pubDate>Fri, 28 Mar 2014 11:18:42 +0800</pubDate><description><![CDATA[这篇文章不是对onvif device端开发的步骤和基本知识的说明，而是我在开发过程中遇到的一些问题。

很多问题，比如序列化、比如内存管理都在user guide中详细说明了，因此多看文档还是比较重要的。


关于wsdl2h和soapcpp2的使用还是比较重要的，其中我遇到的最重要的一个实际问题是：如何把生成的多个服务端的类联系起来，去监听同一个端口，
接收并分发同一份消息。gSO]]></description><category></category></item><item><title><![CDATA[QuickTime  RTP流]]></title><link>https://blog.csdn.net/C__Allen/article/details/18767703</link><guid>https://blog.csdn.net/C__Allen/article/details/18767703</guid><author>C__Allen</author><pubDate>Sat, 25 Jan 2014 14:45:33 +0800</pubDate><description><![CDATA[之前做的RTP服务端在QuickTime播放的时候出了问题，会话可以建立，也可以接收到数据，但是QuickTime死活不播放，后来更改了QuickTime的设置，在偏好设置->高级中，把“启用Direct3D视频加速”的勾选取消，便解决问题了..


QuickTime不像VLC的容错好，需要在RTSP会话中给定码流的参数，如：“a=fmtp:98 packetization-mode=1;]]></description><category></category></item><item><title><![CDATA[opengl glBindTexture为何失败]]></title><link>https://blog.csdn.net/C__Allen/article/details/17687513</link><guid>https://blog.csdn.net/C__Allen/article/details/17687513</guid><author>C__Allen</author><pubDate>Tue, 31 Dec 2013 10:32:50 +0800</pubDate><description><![CDATA[半年没有写点东西总结下了。有时候脑中想法很多，却又感觉文字功底着实有限，无法把自由散漫的思想分门别类地记下来，好在可以与人交流，掏空自己，然后吸收些新东西；有时候却什么都不想，就翻翻书，享受前人的精神盛宴。
      还是写技术性的东西好，可以有章可循，写得不好，就算别人看不大懂，自己肯定是理解，若干日月后翻出来看还可以嘲笑以前的自己，知道自己走过了哪些里程碑。
      这一两年涉及太广]]></description><category></category></item><item><title><![CDATA[socket bind 之 INADDR_ANY]]></title><link>https://blog.csdn.net/C__Allen/article/details/8845093</link><guid>https://blog.csdn.net/C__Allen/article/details/8845093</guid><author>C__Allen</author><pubDate>Fri, 14 Jun 2013 17:16:16 +0800</pubDate><description><![CDATA[在最开始接触bind的时候，只是在写基于tcp的server端的时候，知道在listen之前需要先bind一下，用来确保socket能在某个固定的端口监听。而bind的时候，函数参数中的端口填自己将要绑定的端口就行；而IP地址，需要填本机的IP，但是也可以用一个宏INADDR_ANY代替，用这个宏就可以不用查找本机的IP，它就可以代替本机的IP。当时只觉得这个INADDR_ANY比较神奇，但是由于]]></description><category></category></item><item><title><![CDATA[小工具，从wireshark中导出原始16进制数据，进而导出RTPPayload数据]]></title><link>https://blog.csdn.net/C__Allen/article/details/9092119</link><guid>https://blog.csdn.net/C__Allen/article/details/9092119</guid><author>C__Allen</author><pubDate>Fri, 14 Jun 2013 17:06:34 +0800</pubDate><description><![CDATA[wireshark抓到的包可以导出：file->export->file
在packet format下可以选择导出的格式，但如果需要的数据是多个包的组合那就麻烦了，因为导出的数据无论如何都会加上链路层、IP层和传输层的头信息，手动删除基本可能。
比如，我捕获了很多RTP包，但我只想取出RTP的payload来分析数据是否正确，我可以这样做：


首先导出packet byte格式的数据]]></description><category></category></item><item><title><![CDATA[GBT28181中的RTP]]></title><link>https://blog.csdn.net/C__Allen/article/details/8960631</link><guid>https://blog.csdn.net/C__Allen/article/details/8960631</guid><author>C__Allen</author><pubDate>Wed, 22 May 2013 15:50:21 +0800</pubDate><description><![CDATA[国标中说h264数据按照RFC3984打包，但是国标的测试工具——SPVMN，却不支持RFC3984的打包方式。
无奈之下直接用RFC3550的方式打包，其实就是分包，然后加上RTP头，对于一帧的结束，在RTP头中把MARK置1，并且在一帧的开始把时间戳增加而已。
这种打包方式其实和RFC有冲突，打包处理的RTP数据用VLC播放解码不正常，但用SPVMN是可以播的。
这种方式下没有测试音视频]]></description><category></category></item><item><title><![CDATA[编译jrtp和jthread]]></title><link>https://blog.csdn.net/C__Allen/article/details/8926333</link><guid>https://blog.csdn.net/C__Allen/article/details/8926333</guid><author>C__Allen</author><pubDate>Tue, 14 May 2013 08:45:04 +0800</pubDate><description><![CDATA[jrtp和jthread中建议使用CMake来编译，尝试了下，确实简单方便。


首先在http://www.cmake.org/cmake/resources/software.html下载Cmake，我需要的是windows版的库，所以使用的是windows版的Cmake
如图，选择好jrtp或jthread的路径，Cmake会在该路径下搜索CmakeList.txt，/cc是我自己建]]></description><category></category></item><item><title><![CDATA[SSL介绍]]></title><link>https://blog.csdn.net/C__Allen/article/details/8834257</link><guid>https://blog.csdn.net/C__Allen/article/details/8834257</guid><author>C__Allen</author><pubDate>Mon, 22 Apr 2013 14:10:38 +0800</pubDate><description><![CDATA[1引言 
       SSL是一种在客户端和服务器端之间建立安全通道的协议。SSL一经提出，就在Internet上得到广泛的应用。SSL最常用来保护Web的安全。为了保护存有敏感信息Web的服务器的安全，消除用户在Internet上数据传输的安全顾虑。
OpenSSL是一个支持SSL认证的服务器．它是一个源码开放的自由软件，支持多种操作系统。OpenSSL软件 的目的是实现一个完整的、健壮的]]></description><category></category></item><item><title><![CDATA[一些面试可能会考到的问题]]></title><link>https://blog.csdn.net/C__Allen/article/details/8686957</link><guid>https://blog.csdn.net/C__Allen/article/details/8686957</guid><author>C__Allen</author><pubDate>Mon, 18 Mar 2013 15:21:19 +0800</pubDate><description><![CDATA[std::sort用法：
std::sort的原型是这样

template
   void sort(
      RandomAccessIterator _First, 
      RandomAccessIterator _Last
   );
template
   void sort(
      RandomAccessIterator _First, 
      Rand]]></description><category></category></item><item><title><![CDATA[SDP的fmtp部分]]></title><link>https://blog.csdn.net/C__Allen/article/details/8619197</link><guid>https://blog.csdn.net/C__Allen/article/details/8619197</guid><author>C__Allen</author><pubDate>Wed, 27 Feb 2013 20:28:56 +0800</pubDate><description><![CDATA[之前做的SDP对于h264编码的视频没有做"a=fmtp"字段的解析，今天加上，主要是为了解析出视频的宽高信息。


RFC3984的8.2节对field做了介绍，这里只介绍sprop-parameter-sets字段的解码方法，因为我的主要目的是解析出视频宽高信息


该字段用BASE-64编码，因此，首先解码BASE-64，这里给出解码方法：



long CBase64]]></description><category></category></item><item><title><![CDATA[内存分配管理（一）]]></title><link>https://blog.csdn.net/C__Allen/article/details/8053397</link><guid>https://blog.csdn.net/C__Allen/article/details/8053397</guid><author>C__Allen</author><pubDate>Tue, 09 Oct 2012 19:31:02 +0800</pubDate><description><![CDATA[看jrtplib源码时，对其中的内存管理不理解，遂向高手请教，把所得记于此：


主要的两个类：
class RTPMemoryManager
{
public:	
	RTPMemoryManager()									{ }
	virtual ~RTPMemoryManager()								{ }
	virtual void *AllocateBuffer(size_t numb]]></description><category></category></item><item><title><![CDATA[程序员的路]]></title><link>https://blog.csdn.net/C__Allen/article/details/7700555</link><guid>https://blog.csdn.net/C__Allen/article/details/7700555</guid><author>C__Allen</author><pubDate>Mon, 24 Sep 2012 21:14:31 +0800</pubDate><description><![CDATA[程序员的路太多：无数的语言、无数的平台、加上无数的行业。虽然知识都是相通的，在语言、平台和行业间跳转未必不能成功，但是，在陌生的领域难免要比别人花更多的功夫、投入更多的时间和机会的成本，因此程序员被人认为是“吃青春饭”的行业，因此企业不大愿意培养新人。这就造成了大多数猿类的迷茫——未来的路怎么走？
        程序员大多很聪明，这种聪明给我们带来更多的思考：哪种技术收益最大？哪个行业发展更好]]></description><category></category></item><item><title><![CDATA[STL之erase]]></title><link>https://blog.csdn.net/C__Allen/article/details/8005118</link><guid>https://blog.csdn.net/C__Allen/article/details/8005118</guid><author>C__Allen</author><pubDate>Fri, 21 Sep 2012 17:57:05 +0800</pubDate><description><![CDATA[今天发现有段STL：：map的代码在windows下运行得好好的，但在linux下编不过：“no match for 'operator=' in 'iter = ”。
其实就是一行简单的代码：
iter = map.erase(iter)而MSDN上对map::erase的说明是这样的：



iterator erase(iterator it);
iterator erase(]]></description><category></category></item><item><title><![CDATA[RTP时间戳相关]]></title><link>https://blog.csdn.net/C__Allen/article/details/7836260</link><guid>https://blog.csdn.net/C__Allen/article/details/7836260</guid><author>C__Allen</author><pubDate>Mon, 17 Sep 2012 20:26:46 +0800</pubDate><description><![CDATA[通过RTSP建立好会话之后，就可以开始传输RTP数据和RTCP SR包了（用来同步音视频）。
这两者涉及到很重要的问题：时间戳。下面是《rtp_audio_and_video_for_the_internet》上的一个时间图。


TimeStamp的初始值是随即生成的，然后每一帧数据固定增加一个增量，客户端在接收到数据时，根据这个时间戳就能以正确的时间恢复（其中被分包的视频桢是没有时间戳]]></description><category></category></item><item><title><![CDATA[RTSP会话]]></title><link>https://blog.csdn.net/C__Allen/article/details/7958510</link><guid>https://blog.csdn.net/C__Allen/article/details/7958510</guid><author>C__Allen</author><pubDate>Fri, 14 Sep 2012 14:02:36 +0800</pubDate><description><![CDATA[首先说说程序的大体结构。这是个服务端程序，客户端用的是VLC，因此首先需要开个线程来不断监听客户端的请求，也就是RTSP的请求与应答了（其实就是监听554端口）。RTSP的指令格式很多，最小系统的指令支持做到这几个就差不多了：OPTIONS,DESCRIBE,SETUP,TEARDOWN,PALY。下面是实际的请求与应答：
RTSPRecvData : OPTIONS rtsp://192.16]]></description><category></category></item><item><title><![CDATA[创建和使用DLL]]></title><link>https://blog.csdn.net/C__Allen/article/details/7741153</link><guid>https://blog.csdn.net/C__Allen/article/details/7741153</guid><author>C__Allen</author><pubDate>Thu, 12 Jul 2012 17:08:14 +0800</pubDate><description><![CDATA[首先创建个DLL工程（win32控制台——DLL工程）
添加头文件和CPP文件，如下：
#ifndef __DLL_TEST_H__ 
#define __DLL_TEST_H__ 

class __declspec(dllexport)
CTest 
{
public:
	CTest();
	~CTest();
	void print();
protected:
private:

};]]></description><category></category></item><item><title><![CDATA[CPaintDC和CDC]]></title><link>https://blog.csdn.net/C__Allen/article/details/7704359</link><guid>https://blog.csdn.net/C__Allen/article/details/7704359</guid><author>C__Allen</author><pubDate>Sat, 30 Jun 2012 11:24:31 +0800</pubDate><description><![CDATA[今天在对话框上绘制图形时遇到了一个问题，直接上代码：
下面是对话框重载的OnPaint函数:

	CRect rect;
	CDC *pDC = GetDC();
	CDC memDC;
	GetClientRect(&rect);
	CBitmap memBitmap;
	memDC.CreateCompatibleDC(NULL);
	memBitmap.CreateCompatible]]></description><category></category></item><item><title><![CDATA[对话框多国语言的支持]]></title><link>https://blog.csdn.net/C__Allen/article/details/7700468</link><guid>https://blog.csdn.net/C__Allen/article/details/7700468</guid><author>C__Allen</author><pubDate>Thu, 28 Jun 2012 19:48:42 +0800</pubDate><description><![CDATA[在实现对多国语言支持的时候，使用了一种根据选择不同语言，读取不同文件的方式，设置界面中的语言的方法。
文件的格式如下：
[Setting]
Language=0
[String]
IDD_1=AAA
IDD_2=BBB
IDD_3=CCC

其中Setting是"section name"用来区分关键字，language则是关键字，0是它的值
通过不同的值，来区分不同的语言。]]></description><category></category></item><item><title><![CDATA[Pictrue Control和TreeCtrl的拖动]]></title><link>https://blog.csdn.net/C__Allen/article/details/7664169</link><guid>https://blog.csdn.net/C__Allen/article/details/7664169</guid><author>C__Allen</author><pubDate>Thu, 14 Jun 2012 19:47:54 +0800</pubDate><description><![CDATA[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(),]]></description><category></category></item></channel></rss>