自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

发展是曲折的但也是前进的

人生路漫漫 只能上下求索

  • 博客(998)
  • 资源 (3)
  • 收藏
  • 关注

转载 大端和小端RTP头结构体定义区别

/* * RTP data header */typedef struct {#if 0//BIG_ENDIA    unsigned int version:2;   /* protocol version */    unsigned int p:1;         /* padding flag */    unsigned int x:1;        

2017-01-19 09:36:13 1124

转载 mutex与semaphore的区别

"互斥(mutext)和旗语(semaphore)之间有什么不同?"这样的问题简短而有力,但要回答却相当困难.即使有经验的实时操作系统(RTOS)用户在区别如何正确使用mutex和semaphore时也存在着困难.但这一点很不幸而且很危险,因为无任这两种原生RTOS中的哪一种被错误使用,都会导致嵌入式系统出现意想不到的错误,特别是这些系统为有关生命安全的产品时.有关mutex和semaph

2017-01-18 11:21:18 807

转载 DTS和PTS

FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顾名思义,前者是解码的时间,后者是显示的时间。要仔细理解这两个概念,需要先了解FFmpeg中的packet和frame的概念。FFmpeg中用AVPacket结构体来描述解码前或编码后的压缩包,用AVFrame结构体来描述解码后或编码前的信号帧。 对于视

2017-01-17 11:17:24 517

转载 实现RTP协议的h.264传输

1.  引言       随着信息产业的发展,人们对信息资源的要求已经逐渐由文字和图片过渡到音频和视频,并越来越强调获取资源的实时性和互动性。但人们又面临着另外一种不可避免的尴尬,就是在网络上看到生动清晰的媒体演示的同时,不得不为等待传输文件而花费大量时间。为了解决这个矛盾,一种新的媒体技术应运而生,这就是流媒体技术。流媒体由于具有启动时延小、节省客户端存储空间等优势,逐渐成为人们的首选,流媒

2017-01-16 17:26:54 928

转载 理解互斥量和信号量

互斥量(Mutex) 互斥量表现互斥现象的数据结构,也被当作二元信号灯。一个互斥基本上是一个多任务敏感的二元信号,它能用作同步多任务的行为,它常用作保护从中断来的临界段代码并且在共享同步使用的资源。 Mutex本质上说就是一把锁,提供对资源的独占访问,所以Mutex主要的作用是用于互斥。Mutex对象的值,只有0和1两个值。这两个值也分别代表了Mutex的两

2017-01-16 17:15:38 499

转载 c++ 中__declspec 的用法

语法说明:__declspec ( extended-decl-modifier-seq )扩展修饰符:1:align(#)    用__declspec(align(#))精确控制用户自定数据的对齐方式 ,#是对齐值。e.g__declspec(align(32)) struct Str1{int a, b, c, d, e;};

2017-01-16 15:46:51 651

转载 C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别

C++ 调用.lib的方法:一: 隐式的加载时链接,有三种方法    1  LIB文件直接加入到工程文件列表中  在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入DLL的LIB文件。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即

2017-01-16 15:36:58 3507

转载 从海康7816的ps流里获取数据h264数据

http://blog.csdn.net/wwyyxx26/article/details/15224879

2017-01-16 14:29:40 2065

转载 RTP协议全解析(H264码流和PS流)

写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析,其中借鉴了很多文章,我都列在了文章最后,在此表示感谢。互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持。原创不易,转载请附上链接,谢谢http://blog.csdn.net/chen495810242/article/details/39207305

2017-01-16 13:14:15 699

转载 关于对H264码流的PS的封装的相关代码实现

http://blog.csdn.net/max_min_go/article/details/360573131、写在开始之前:           最近因为新工作要维护别人留下的GB模块代码,先熟悉了流程,然后也试着封装了下ps流,结果也能通过测试正常预览了,当然,其中开发读文档的头疼,预览花屏,卡帧的事情都有遇到,当时慢慢的看文档,整理逻辑,也就都顺利解决了,

2017-01-16 13:05:02 929 1

转载 H264视频流的RTP封包

1.RTP打包原则RTP的包长度必须要小于MTU(最大传输单元),IP协议中MTU的最大长度为1500字节。除去IP报头(20字节)、UDP报头(8字节)、RTP头(12字节),所有RTP有效载荷(即NALU内容)的长度不得超过1460字节。2.RTP协议的报文结构 开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合

2017-01-11 18:05:59 3310

转载 解决链接错误:error LNK2001: 无法解析的外部符号 __iob

该错误主要是由于静态库在VC6编译而主程序在VC2005编译,大家用的CRT不同。解决办法,代码中增加#ifdef __cplusplusextern "C" #endifFILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};此错误的产生根源:在VC6的stdio.h之中有如下定义

2017-01-11 16:14:56 3149

转载 对H264进行RTP封包原理

http://blog.csdn.net/rankun1/article/details/526816291.  引言       随着信息产业的发展,人们对信息资源的要求已经逐渐由文字和图片过渡到音频和视频,并越来越强调获取资源的实时性和互动性。但人们又面临着另外一种不可避免的尴尬,就是在网络上看到生动清晰的媒体演示的同时,不得不为等待传输文件而花费大量时间。为了解决这个矛盾,一

2017-01-11 15:39:50 381

转载 rtp头之时间戳的确定!

RTP的头部格式如下:版本号(V):2比特,用来标志使用的RTP版本。填充位(P):1比特,如果该位置位,则该RTP包的尾部就包含附加的填充字节。扩展位(X):1比特,如果该位置位的话,RTP固定头部后面就跟有一个扩展头部。CSRC计数器(CC):4比特,含有固定头部后面跟着的CSRC的数目。标记位(M):1比特,该位的解释由配置文档(Profile)来承担

2017-01-11 14:27:28 1242

转载 ES、PES、PS、TS流

一、基本概念1)ES     ES--Elementary  Streams  (原始流)是直接从编码器出来的数据流,可以是编码过的视频数据流(H.264,MJPEG等),音频数据流(AAC),或其他编码数据流的统称。ES流经过PES打包器之后,被转换成PES包。    ES是只包含一种内容的数据流,如只含视频或只含音频等,打包之后的PES也是只含一种性质的ES,如只含视频

2017-01-10 16:23:38 432

转载 VLC 接收H264、TS、PS流SDP写法

博主封装的是PS流,之前用vlc只是播放了h264流,写法如下:m=video 8002 RTP/AVP 96a=rtpmap:96 H264/90000用这个测试了半天,不是绿屏就是白板,一直在找是不是封包的问题,百度了一下,找到TS写法:m=video 8002 RTP/AVP 96a=rtpmap:96 MP2T/90000

2017-01-10 15:56:39 1718 1

转载 VS2015下解决:无法解析的外部符号 __imp___vsnprintf 及__iob_func

1、解决:无法解析的外部符号 __imp___vsnprintf在vs2015工程选项,链接器附加依赖项里面添加legacy_stdio_definitions.lib即可。出现这个问题的原因是vs2015默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数。2、解决:无法解析的外部符号_

2017-01-06 09:01:12 3854

转载 Linux进程间通信——使用信号量

这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行

2017-01-03 17:01:28 518

转载 Linux进程间通信——使用共享内存

下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc

2017-01-03 16:43:36 341

转载 共享内存

共享内存    共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。原理图如下:共享内存的实现分为两个步骤:一、 创建共享内存,使用shmget函数。二、 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。

2017-01-03 16:32:22 420

转载 Linux生成和打上patch的方法

在团队开发的过程中,经常需要生成patch,或者打上别人提供的patch,那么一般情况是如何操作的呢。首先生成patch需要有两个工程,一个修改前的A工程,一个修改后的B工程。使用linux命令diff就可以生成patch了。格式如下:diff -Naur path/to/A_Project  path/to/B_Project > Project.patch   -N 选

2017-01-03 16:23:11 2700

转载 .NET 4.0中使用内存映射文件实现进程通讯

操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段。Win32 API中也包含有创建内存映射文件的函数,然而,这些函数都运行于非托管环境下,在.NET中只能通过平台调用机制来使用它们,用起来很不方便。幸运的是,.NET 4.0新增加了一个System.IO. MemoryMappedFiles命名空间,其中添加了几

2017-01-03 16:16:42 706

转载 内存映射文件

在做科研,实现一些大数据的算法的时候,经常要调用一些文件的I/O函数,在数据量很大的时候,除了设计的算法和数据结构的耗时以外,其实主要的耗时还是文件的I/O。因为一般常规的方法就是先读出磁盘文件的内容到内存中,然后修改,最后写回到磁盘上。读磁盘文件是要经过一次系统调用,先将文件的内容从磁盘拷贝到内核空间的一个缓冲区,然后再将这些数据拷贝到用户空间,实际上是两次数据拷贝。写回同样也需要经过两次数据拷

2017-01-03 16:00:51 507

转载 Windows/Linux下C/C++内存泄露检测工具

一 Window下的内存泄露检测(以VC++环境为例)灵活自由是C语言的一大特色,但这个特色也难以避免的带来一些副作用,比如内存泄露。众所周知,内存泄露的问题比较复杂,程序正常运行时你看不出它有任何异常,但长时间运行或在特定条件下特定操作重复多次时,它才暴露出来。所以,内存泄露往往是难以发现,也难以定位解决的。Visual Leak Detector(VLD)是一款用于Visual

2016-12-30 14:11:45 349

转载 DllImport System.DllNotFoundException 问题分析与解决

自己实验了一下,感觉以下几种解决办法是可行的:方法一:在类似C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:msvcm80d.dllmsvcp80d.dllmsvcr80d.dllMicrosoft.VC

2016-12-29 10:41:01 6873

转载 C语言使用pthread多线程编程(windows系统)

我们进行多线程编程,可以有多种选择,可以使用WindowsAPI,如果你在使用GTK,也可以使用GTK实现了的线程库,如果你想让你的程序有更多的移植性你最好是选择POSIX中的Pthread函数库,我的程序是在Linux下写的,所以我使用了Pthread库运行之前需要做一些配置: 1.下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release

2016-12-28 21:24:31 2269

转载 C++中智能指针的设计和使用

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7561235     智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对

2016-12-28 21:15:16 289

转载 C/C++内存泄漏及检测(三)

方法一、1、头文件:#define _CRTDBG_MAP_ALLOC#include #include  注意 #include 语句必须采用上文所示顺序。如果更改了顺序,所使用的函数可能无法正确工作。  2、在添加了上面所示语句之后,可以通过在程序中包括以下语句来转储内存泄漏信息:_CrtDumpMemoryLeaks();//在最后一个语句添加或通

2016-12-26 15:52:16 468

转载 C/C++内存泄漏及检测(二)

内存管理:_CrtDumpMemoryLeaksCrtDumpMemoryLeaks()就是显示当前的内存泄漏。     注意是“当前”,    也就是说当它执行时,     所有未销毁的对象均会报内存泄漏。       因此尽量让这条语句在程序的最后执行。它所反映的是检测到泄漏的地方。一般用在MFC中比较准确,在InitInstance里面调用_CrtDump

2016-12-26 15:51:24 801

转载 C/C++内存泄漏及检测(一)

“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要服务器不宕机就一

2016-12-26 15:32:29 522

转载 64位进程调用32位dll的解决方法

在Windows7 X64,VS2008环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题。由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题。相关资料:微软公司的官方网站针对这个问题描

2016-12-26 11:38:19 12740

转载 Thread.Abort方法的误区

大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Thread.Abort方法后线程就立刻停止了吗? 答案是:不是! 下面我们来解释一下Abort方法是如何工作的。因为公用语言运行时管理了所有的托管的线程,同样它能在每个线程内抛出异常。Abor

2016-12-26 10:58:21 5446

转载 C语言中利用setjmp和longjmp做异常处理

错误处理是任何语言都需要解决的问题,只有不能保证100%的正确运行,就需要有处理错误的机制。异常处理就是其中的一种错误处理方式。1 过程活动记录(Active Record)C语言中每当有一个函数调用时,就会在堆栈(Stack)上准备一个被称为AR的结构,抛开具体编译器实现细节的不同,这个AR基本结构如下所示。 每当遇到一次函数调用的语句,C编译器都会产生出汇编代码来在

2016-12-23 17:16:18 487

转载 内存申请和释放及堆连续

C语言有两种内存申请方式:1、静态申请:当你声明全局或静态变量的时候,会用到静态申请内存。静态申请的内存有固定的空间大小。空间只在程序开始的时候申请一次,并且不再释放(除非程序结束)。2、自动申请:当你声明自动变量的时候会使用自动申请。函数参数、局部变量都属于自动变量。这些变量空间在程序执行致相关语句块申请,离开语句块时释放。  还有一种内存申请方式:动态内存申请。C语言变

2016-12-21 22:54:10 2299

转载 C程序内存管理

C程序的内存管理熟悉Java语言的肯定知道,Java中内存管理是由虚拟机帮助我们完成的,在C/C++中可不是这样,程序员需要自己去分配和回收内存空间。本文记录了C程序可执行文件的存储结构、在内存中的存储结构等方面的内容。以下C程序所使用的编译器版本是GCC 4.4.7。从一个C程序说起文件的结构对于以下这段Hello.c程序再熟悉不过了[cp

2016-12-21 21:42:58 469

转载 VS2010进行远程调试方法总结

假设现在有A、B两台PC机。VS2010安装在A机器上,也就是说A机器是开发使用的机器。B机器是程序运行部署使用的机器,其IP为:192.168.1.129(局域网IP)说明:如果B机器是外网IP下面方法照样适合,不过在使用的适合可能会出现无法附加到进程的错误。如果出现无法附加到进程的错误、无法连接到设备.请按照步骤13进行设置。 1、根据vs2010安装目录倒找Remot

2016-12-20 22:48:40 419

转载 vs2010设置堆栈大小

在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个部分:1、栈区(stack segment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的是1M,总之是一个编译时就确定的常数),如果申请

2016-12-20 22:45:12 1544

转载 关于.NET编译的目标平台(AnyCPU,x86,x64)

1.关于.NET编译的目标平台(AnyCPU,x86,x64)(转) 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU 。 下面我们一起看看这个目标平台有什么作用,各选项有什么差别吧。在VisualStudio中,在编译设置中有如下选项: x86: 将程序

2016-12-20 17:09:29 700

转载 编译c#项目,在项目属性中,平台与目标平台的区别是什么?

.NET编译、WOW64注册表访问、同时在X86和X64平台上部署应用程序[翻译文章,原文请参考:http://www.codeproject.com/Articles/51326/Net-Compilation-registry-accessing-and-application.aspx]多长的一个标题,不是吗?这是因为在一些情况下,你必需要做一大堆事情才能让你的.NE

2016-12-20 17:08:44 3308

转载 32位模式下C/C++程序可用最大内存

关于32位程序申请大内存问题(1.6G). 我在win7 64系统上面测试Visual studio 10int* Test=new int[1024*1024*200];int* Test2=new int[1024*1024*200];申请1.6G内存.抛出:cpptest2.exe 中的 0x770e15ee 处有未经处理的异常: Micros

2016-12-20 16:30:47 908

敏捷软件开发 中文版

agile software development

2013-09-27

精通Direct3D图形与动画程序设计

Direct3D 图形与动画 精通,属于入门级别的吧 ,别人推荐的,是一本不错的书

2012-06-23

TINDEM线性内插不确定性模型

TINDEM线性内插不确定性的随机过程模型

2010-06-21

空空如也

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

TA关注的人

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