自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(45)
  • 资源 (2)
  • 收藏
  • 关注

原创 如何从DLL文件导出对应的LIB文件

在Windows平台上使用MSYS编译一些开源代码时经常只会生成DLL文件,而如果打算在VS中使用该DLL则需要有对应的LIB文件,下面以编译oRtp为例来看看如何从DLL文件中导出LIB文件。一、通过pexports或微软编译环境自带的dumpbin.exe导出DLL对应的def文件:方法一: pexports ***.dll > ***.def方法二: dumpbin /expor

2013-10-07 17:00:35 4334

转载 linux系统管理命令之----高效使用top命令

对桌面用户来说,监视系统资源使用是一项重要的工作。通过这项工作,我们可以找到系统瓶颈所在、针对性的进行系统优化、识别内存泄露等。问题是,我们应该使用什么工具,以及如果针对我们的需求来使用它。在众多备选的监测工具中,多数人使用“top”(procps 包的一部分)。Top 提供了几乎可以说是所有的我们所需要的系统资源使用监测。本文中的所有信息都是基于运行在 Linux 2.6.x 内核上的版本号

2013-04-13 19:29:18 1742

转载 freeswitch 内核模块开发

我建了一个 Freeswitch 内核研究 交流群, 45211986, 迎加入, 另外,提供基于SIP的通信服务器及客户端解决方案。这里以模块 helloworld 为例。1. 创建模块目录  freeswitch/src/mod/applications/mod_helloworld2. 把模块名放在 freeswitch/modules.conf文件中,make时

2013-04-01 21:37:22 1005

转载 epoll

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明: #define

2013-04-01 21:32:31 421

转载 epoll学习:思考一种高性能的服务器处理框架

终于开始学习epoll了,虽然不明白的地方还是很多,但从理论到实践,相信自己动手去写一个具体的框架后,一切会清晰很多。1、首先需要一个内存池,目的在于:·减少频繁的分配和释放,提高性能的同时,还能避免内存碎片的问题;·能够存储变长的数据,不要很傻瓜地只能预分配一个最大长度;·基于SLAB算法实现内存池是一个好的思路:分配不同大小的多个块,请求时返回大于请求长度的最小块即可,对于

2013-04-01 21:25:42 504

转载 在Linux上开发网络服务器的一些相关细节:poll与epoll

随着2.6内核对epoll的完全支持,网络上很多的文章和示例代码都提供了这样一个信息:使用epoll代替传统的 poll能给网络服务应用带来性能上的提升。但大多文章里关于性能提升的原因解释的较少,这里我将试分析一下内核(2.6.21.1)代码中poll与 epoll的工作原理,然后再通过一些测试数据来对比具体效果。 POLL: 先说poll,poll或select为大部分Unix/

2013-04-01 21:24:30 465

转载 Linux的epoll模型

Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内核中,该值是1024,搜索内核源代码得

2013-04-01 21:19:09 457

转载 epoll使用详解(精髓)

epoll - I/O event notification facility    在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。    相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自

2013-04-01 20:50:51 462

原创 从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题

近日在做一个分布式转码服务器,解码器是采用开源的ffmpeg,在开发的过程中遇到一个问题:编码延迟多大5、6秒钟,也就是最初编码的几十帧并不能马上取出,而我们的要求是实时编码!虽然我对视频编码方面不是很熟悉,但根据开发的经验,我想必定可以通过设置一些参数来改变这些情况。但我本人接触ffmpeg项目时间并不长,对很多与编解码方面参数的设置并不熟悉,于是google了很久,网上也有相关方面的讨论,说什

2013-02-02 23:24:38 15825 14

原创 Eclipse在线安装ADT等Android插件连接不上的解决方案

近日重新安装Android开发环境时,遇到Eclipse在线安装ADT等Android插件时无法连接的问题,一开始使用https://dl-ssl.google.com/android/eclipse/不行,后来官网上说尝试一下http://dl-ssl.google.com/android/eclipse/ ,发现仍然无法打开。    于是在网上寻找答案,网上有人建议在hosts文件中添

2013-01-26 18:54:44 4094

转载 ffmpeg中的sws_scale算法性能测试

经常用到ffmpeg中的sws_scale来进行图像缩放和格式转换,该函数可以使用各种不同算法来对图像进行处理。以前一直很懒,懒得测试和甄别应该使用哪种算法,最近的工作时间,很多时候需要等待别人。忙里偷闲,对ffmpeg的这一组函数进行了一下封装,顺便测试了一下各种算法。    简单说一下测试环境,我使用的是Dell的品牌机,i5的CPU。ffmpeg是2010年8月左右的当时最新版本编译而成

2013-01-06 21:04:57 633

如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器原文地址:http://www.dranger.com/ffmpeg/ FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG几乎为你把所有的繁重工作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C编写的,快速的并且能够解码几乎所有你能用到的格式,当然也

2012-12-29 20:13:09 194

转载 C语言的面向对象设计-对X264/FFMPEG架构探讨

本文贡献给ZSVC开源社区(https://sourceforge.net/projects/zsvc/ ),他们是来自于中国各高校的年轻学子,是满怀激情与梦想的人,他们将用自己的勤劳与智慧在世界开源软件领域为中国留下脚步,该社区提供大量视频编解码和图像处理的学习实践机会,让广大参与者能够体验理论转变为实际的过程。欢迎任何感兴趣的朋友联系他们。正文类似题目的文章已经不新鲜了,这里,

2012-12-29 19:58:13 691 1

转载 FFMpeg的output_example.c例子分析

该例子讲了如何输出一个libavformat库所支持格式的媒体文件。(1)av_register_all(),初始化libavcodec库,并注册所有的编解码器和格式。(2)guess_format(),根据文件名来获取输出文件格式,默认为mpeg。(3)av_alloc_format_context()分配输出媒体内容。  ov->oformat = fmt;

2012-12-29 19:50:09 1038

转载 FFMpeg 中重要的函数以及数据结构

FFMpeg 中比较重要的函数以及数据结构如下:1. 数据结构:(1) AVFormatContext(2) AVOutputFormat(3) AVInputFormat(4) AVCodecContext(5) AVCodec(6) AVFrame(7) AVPacket(8) AVPicture(9) AVStr

2012-12-29 19:42:00 714

转载 FFMpeg框架代码阅读

简介FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持 MPEG 、 DivX 、 MPEG4 、 AC3 、DV 、 FLV 等 40 多种编码, AVI 、 MPEG 、 OGG 、 Matroska 、 ASF 等 90 多种解码 .TCPMP, V

2012-12-29 19:36:44 513

转载 FFMpeg的解码流程

1. 从基础谈起先给出几个概念,以在后面的分析中方便理解Container:在音视频中的容器,一般指的是一种特定的文件格式,里面指明了所包含的音视频,字幕等相关信息Stream:这个词有些微妙,很多地方都用到,比如TCP,SVR4系统等,其实在音视频,你可以理解为单纯的音频数据或者视频数据等Frames:这个概念不是很好明确的表示,指的是Stream中的一个数据单元,要真正对这个概

2012-12-29 19:32:39 570

转载 Windows下FFmpeg-full-SDK-3.2开发环境搭建

网上有很多编译ffmpeg源码的文章,但是通常我们不研究ffmpeg的话,目的就是直接用ffmpeg:编程环境:win7  + VC6 + FFmpeg-full-SDK-3.2 ; 1: 下载 FFmpeg-full-SDK-3.2.rar(目前较新的版本),可以到http://www.ffmpeg.com.cn/index.php/%E9%A6%96%E9%A1%B5这里下载;

2012-12-29 19:14:26 3412

原创 基于ffmpeg的简单音视频编解码的例子(代码转自ffmpeg官方网站)

近日需要做一个视频转码服务器,对我这样一个在该领域的新手来说却是够我折腾一番,在别人的建议下开始研究开源ffmpeg项目,下面是在代码中看到的一段例子代码,对我的学习非常有帮助。该例子代码包含音频的解码/编码和视频的编码/解码,其中主要用到编解码的libavcodec组件。以下是完整的例子,代码自身的注释足够清晰了。/** * @file * libavcodec API use exam

2012-12-29 17:38:29 6219 4

转载 YUV数据入门简介

做视频采集与处理,自然少不了要学会分析YUV数据。因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264、MPEG视频编解码)的角度来说,也是在原始YUV码流进行编码和解析,所以,了解如何分析YUV数据流对于做视频领域的人而言,至关重要。本文就是根据我的学习和了解,简单地介绍如何分析YUV数据流。    YUV,分为三个分量,“Y”表示明

2012-12-29 10:49:10 1030

原创 UNIX网络编程书中源代码测试环境搭建

Steven在书中例子都包含一个#include "unip.h",从书中附录可以看出该头文件包含了网络程序中所使用到的各种相关头文件,所以如果想自己测试书中的源代码的话,我们需要需要搭建一个环境,以下是自己的实践过程,记录下来,以便以后参考:1、下载书中源代码unpv13e.tar.gz:这个可以在书中前言给出的地址下载:http://www.unpbook.com/unpv13e.ta

2012-12-19 15:28:03 2720 1

原创 关于C++中处理new操作失败的处理方法

经常会看到下面这样的C++代码:int* p = new int [1024];if (p == NULL) { // new failure handle}其实,在现在C++中,无论new失败与否,这段if代码永远没有机会执行。现代C++标准指出,new操作要么成功,要么抛出异常(抛出异常意味着异常语句后面的普通语句都无法执行)。较早的C++确实在new失败后会返回NULL

2012-10-26 00:46:41 665

转载 Linux下的各种类型I/O总结

Linux的I/O机制经历了一下几个阶段的演进:(1)同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。(2)同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。(3)异步阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等函数

2012-10-23 15:56:26 973

Linux的I/O机制经历了一下几个阶段的演进:(1)同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。(2)同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。(3)异步阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等函数

2012-10-23 15:31:43 104

原创 求解n个元素的m元素子集(部分元素组合)

前几天面试百度的一道算法题,大概是说一个密码由三个不同字符组成,其密码字符由"0-9"以及"a-z"的字符集组成,要求找出所有可能的密码。这道题比较简单,是常见的排列组合问题,由于之前的博客文章已经讨论的排列问题(集合的全排列),在此我们仅仅讨论一下组合的问题,n个元素集合中求m个元素的子集合:我们在这里介绍的是递归的方法,思路如下:问题可分解为:1. 首先从n个数中选取编号最大的

2012-10-23 00:15:58 1870

主要参考《Using GNU's GDB Debugger》。

2012-10-22 23:14:05 107

转载 明明白白看MFC之程序框架(二)

二、         MFC应用程序结构借助向导,可以快速的生成一个SDI的Windows应用程序。在使用向导生成应用程序后,会发现有好几个文件, 其主要代码如下:CHelloWorldApp theApp;int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, i

2012-10-22 23:10:00 95

转载 明明白白看MFC之程序框架(一)

最近一直在学习VC,因为是自学,有许多问题都是在经过一番辛苦的查找资料才得以解决的,现在,把这些学习VC入门刚刚弄懂得问题贴出来,希望可以得到更多的指教,如果能够帮助到跟我有过同样困惑的人,那就是万幸了!在VC中借助MFC可以方便的创建Windows应用程序,但是,要弄清楚MFC的来龙去脉还真是不容易,首先,需要知道Windows程序的基本框架,然后才有可能更深入的去了解MFC框架中的Wind

2012-10-22 23:05:43 108

转载 用GDB调试程序

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。与VS下的图形界面形式的调试工具相比,GDB毫不逊色,使用更为自由。本文是学习使用GDB调试程序过程中的一些记录,主要参考《Using GNU's GDB Debugger》。------------------------------------------------------------------------------

2012-10-22 22:50:18 166

原创 给定一个英语词典,求出所有的变位词(兄弟单词)集合

《编程珠玑》第一册第二章的开头提出的一个问题所谓变位词就是组成单词的字母完全一样,仅仅是字母的顺序不同,这些单词称为变位词,又叫兄弟单词。如pots、stop及tops互为变位词书中提到的方法思路为:注:上述图片引用了博客http://www.cnblogs.com/biyeymyhjob/archive/2012/08/14/2636962.html中的图片根据该思想,使用C

2012-10-13 19:00:27 1279

转载 由1-7的随机整数函数构造1-10随机整数函数

题目:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数。由于(rand7()-1)*7+rand7

2012-10-11 17:54:07 431

原创 不用循环、三元操作符、判断及分支结构用用printf输出1-1000间的所有数

今天在某公司面试遇到的题目当时想了一会,应该是用递归做,关键在于递归怎么结束.。于是写下了如下的代码,代码比较丑陋,求甚解void Print_Go(int cur, int end);void Print_Stop(int cur, int end);typedef void (*pFunc)(int, int);pFunc Funcs[] = {Print_Go, Prin

2012-10-10 23:08:12 410

原创 求集合的全排列

设R={r1,r2,...,rn}是要进行排列的n个元素,Ri = R-{ri}.集合 X 中元素的全排列记为Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一个排列上加前缀ri得到的排列。R的全排列可归纳定义如下:1)、当 n = 1时, Perm(R) = (r),其中r是集合R中唯一的元素;2)、当 n >1时, Perm(R)由(r1)Perm(R1),(r

2012-10-05 17:57:20 734

原创 算法之旅(四):硬币找零问题

硬币找零问题一个经典问题,也是阐述动态规划法几乎必讲的一个例子。硬币找零问题描述:现存在一堆面值为 V1、V2、V3 … 个单位的硬币, 各单位的硬币数目不限,问最少需要多少个硬币才能找出总值为 T 个单位的零钱?比如: 假设这一堆面值分别为 1、2、5、21、25 元,需要找出总值 T 为 63 元的零钱。基于动态规划的思想,我们可以从目标值为 1 元开始计算出最少需要几个硬币,

2012-09-30 22:56:36 1438

原创 位运算的应用

1、求两整数的平均数如果直接使用(x+y)/2,则容易发生溢出,使用下面的位运算则可以避免这种情况:int average(int x, int y){ return (x&y + (x^y)>>1);}或者定义为宏:#define AVERAGE(x, y) (((x)&(y) + ((x)^(y))>>1))分析:从二进制相加的角度来观察,我们可以将x和y都

2012-09-22 21:36:00 300

原创 位运算的应用

1、求两整数的平均数如果直接使用(x+y)/2,则容易发生溢出,使用下面的位运算则可以避免这种情况:int average(int x, int y){ return (x&y + (x^y)>>1);}或者:

2012-09-22 21:01:56 49

原创 算法之旅(三):求一个数组的最长递减子序列

创新工场面试题:求一个数组的最长递减子序列,例如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}    思路:这是很经典的一个问题,用动态规划解决。设源数组为A,我们定义一个长度与A相同的辅助数组为B,B[i]表示以A[i]结尾的最长递减序列的长度。举个简单的例子,如果A[i]大于之前的所有元素,那么以A[i]为结尾的最长递减序列只能为A[i]本身,则B[i] =

2012-09-12 21:58:51 1324

原创 求一个数组的最长递减子序列

创新工场面试题:求一个数组的最长递减子序列,例如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}思路:这是很经典的一个问题,用动态规划解决。设源数组为A,我们定义一个长度与A相同的辅助数组为B,B[i]表示以A[i]结尾的最长递减序列的长度。举个简单的例子,如果A[i]大于之前的所有元素,那么以A[i]为结尾的最长递减序列只能为那么B[i] = 1。

2012-09-12 21:34:01 830

原创 算法之旅(二):输入一个正数n,输出所有和为n 连续正数序列

题目:输入一个正数n,输出所有和为n 连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。分析:这是网易的一道面试题。这道题和本微软面试100 题系列V0.1 版的第14 题有些类似。我们可用两个数small 和big分别表示序列的最小值和最大值。首先把small 初始化为1,big 初始化为2。如果从small

2012-09-12 14:20:37 1413

转载 Boost Getting Started 安装文档(翻译1.33版本)

<!--.STYLE1 {font-family:"宋体"}--> . 首页. Boost库介绍. 开发者. FAQ                     . 了解更多概要下载.zip 文件.tar.gz and .tar.bz2 文

2012-08-31 23:03:36 348

windows程序设计

windows编程大师经典著作,外国经典计算机图书中文版本

2009-08-01

改变按钮背景和文字的自定义类

制作精美按钮的自定义类的源代码及一个使用例子的代码

2009-07-02

空空如也

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

TA关注的人

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