2012年4月19日

摘要: 将x264静态库与DirectShow集成后。测试发现有内存泄露。代码如下。 静态库版本号为,VC++的最后一个版本:x264-snapshot-20091006-2245 intmainFun(){x264_param_tparam;cli_opt_topt;intret=0;constchar*outf="d:\\test.264";constchar*inf="d:\\a.yuv";SetFun();_setmode(_fileno(stdin),_O_BINARY);_setmode(_fileno(stdout),_O_BINARY);x264 阅读全文

posted @ 2012-04-19 19:59 我不是牛人 阅读(975) 评论(0) 推荐(0) 编辑

摘要: VC 编译器下(用2005试验)。.c文件用C的方式编译,所以在.c文件的头文件中加extern "C"来标识。.cpp文件用C++的方式编译。而将.cpp改为".a" 或者是其它的VC不能识别的名字,仍然是以C++的方式编译。 阅读全文

posted @ 2012-04-19 16:03 我不是牛人 阅读(188) 评论(0) 推荐(0) 编辑

摘要: 在创建派生类对象时:基类的构造函数→派生类的构造函数;1、如果在派生类的构造函数中显式调用父类构造函数,则必须写到初始化参数表里。2、如果在派生类的构造函数中未显式调用父类构造函数,则默认调用父类无函数的构造函数。3、如果在派生类的构造函数中未显式调用父类构造函数,而父类中未定义任何构造函数或必须有一个构造函数无任何参数。在析构派生类对象明:派生类的析构函数→基类的析构函数。 1.如果用父类指针指向的派生类对象,则父类的析构函数必须声明为virtual,否则无法调用派生类的析构函数。2.要用正确的参数调用直接基类的构造函数,以作为每个派生类构造函数的一部分(讨论)3.普通成员函数不能用这种语法 阅读全文

posted @ 2012-04-19 13:14 我不是牛人 阅读(1497) 评论(0) 推荐(0) 编辑

摘要: typedef struct { int i_csp; int i_plane; int i_stride[4]; uint8_t *plane[4]; } x264_image_t; x264_image_t 是原始数据的存放格式(猜测)。 i_csp: color space parameter 色彩空间参数 X264只支持I420。 i_plane 代表色彩空间的个数。一般为3。i_stride 不太清楚(猜测:plane数组中的指针 plane[0]亮度信息,plane[1]cb信息,plane[2]cr信息) x264_picture_t和x264_frame_t的区别.... 阅读全文

posted @ 2012-04-19 09:45 我不是牛人 阅读(1542) 评论(0) 推荐(0) 编辑

2012年4月17日

摘要: YV12 与 I420是有区别的。具体区别见上一篇。YV12 : 亮度(行×列) + U(行×列/4) + V(行×列/4) I420 : 亮度(行×列) + V(行×列/4) + U(行×列/4)如果用I420的解析器播放YV12格式的文件的话,会产生偏蓝的问题。 x264仅支持I420的压缩。YUY2 = YUYV(命名太不规范).YUY2转换成I420的方法如下,测试通过。 #defineuint8_tBYTEvoidYUY2toI420(intinWidth,intinHeight,uint8_t*pSrc,uint8_t*p 阅读全文

posted @ 2012-04-17 11:05 我不是牛人 阅读(2261) 评论(0) 推荐(0) 编辑

摘要: YV12和I420的区别 一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。 在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。但是这里需要注意的是,虽然YV12也是(4:2:0),但是YV12和I42 阅读全文

posted @ 2012-04-17 10:23 我不是牛人 阅读(1400) 评论(1) 推荐(1) 编辑

2012年4月16日

摘要: STDMETHODIMP BufferCB( double dblSampleTime, BYTE * pBuffer, long lBufferSize ) { // this flag will get set to true in order to take a picture // CBitmap bm; bm.CreateBitmap(640, 480, 1, 24, pBuffer); BITMAPFILEHEADER BMFileHeader; BITMAPINFOHEADER BMInfoHeader; BITMAP BM; bm.GetObject... 阅读全文

posted @ 2012-04-16 23:53 我不是牛人 阅读(1007) 评论(0) 推荐(0) 编辑

摘要: vs2008 x264-snapshot-20091006-2245编译成功2012-01-13 18:01x264-snapshot-20091006-2245 是包含vc的最后一个版本了,所以我对这个版本进行了编译,开始一大把错误;然后逐步排查,一一解决;(1)下载该版本 http://download.videolan.org/pub/videolan/x264/snapshots/(2)首先编译libx264,错误如下 2.1)主要是编译时,提示某个“;”分号之类的错误。 这种错误就是因为变量未声明成功。由于是C代码,VC中,一般要求C代码的变量在函数开头声明。所以,如果变量是在函数中 阅读全文

posted @ 2012-04-16 16:00 我不是牛人 阅读(2637) 评论(0) 推荐(0) 编辑

2012年4月11日

摘要: x264_param_default( &param );对参数进行初始化,并用设置CPU的类型param->cpu = x264_cpu_detect();Parse( argc, argv, &param, &opt )解析参数,我的输入参数如“--qp 0 -o test3.264 d:\b.yuv 640x480”。解析完成后,更改了param.i_width = 640 ;param.i_height= 480;param.rc.i_rc_method = 0;param.rc.i_qp_constand=0;并且opt参数都进行了赋值。opt.b_pr 阅读全文

posted @ 2012-04-11 23:31 我不是牛人 阅读(537) 评论(0) 推荐(0) 编辑

2012年4月5日

摘要: 说起视频捕 捉问题,我们先要来看一下视频捕捉卡。根据使用的驱动程序的不同来分类,目前市场上大致有两种捕捉卡: VFW (Video for Windows)卡和WDM (Windows Driver Model)卡。前者是一种趋于废弃的驱动模型,而后者是前者的替代模型;WDM还支持更多新的特性,比如直接支持电视接收、视频会议、1394接口的设 备、桌面摄像机、多条视频流(Line-21或Closed-Caption等)同时输出等等。采用VFW的一般都是些以前生产的卡;市面上新出现的,一 般都是采用了WDM驱动程序。另外,视频捕捉卡的接口,可以是以PCI或AGP的方式插入PC机箱,也可以... 阅读全文

posted @ 2012-04-05 23:56 我不是牛人 阅读(692) 评论(0) 推荐(0) 编辑