- 博客(43)
- 收藏
- 关注
翻译 Chromium多进程架构
浏览器引擎不可能绝对稳定,也不可能绝对安全。某种程度上,当前的Web浏览器类似于之前单用户、多任务协同工作的操作系统。
2016-03-20 17:57:51 1105
转载 Alpha deblocking & Beta Deblocking
Alpha deblocking effects the overal amount of deblocking to be applied to the picture, higher values deblock more effectively, but also destroy more detail and cause the entire image to be softened. T
2017-01-17 10:50:55 789
原创 视频的字幕叠加
每个视频Sample都有一帧未压缩的图像数据,字符叠加实际上就是将指定位置的图像的像素值替换为字符图像的像素值。一种直观的想法是将图像帧选入GDI的DC中,再使用GDI函数TextOut和DrawText等直接在图像帧上输出字符,这种做法效率不理想,很难达到实时渲染。另一种可选的方法是在内存中创建一个二位位图,在位图上画出字符内容,于是我们就拿到了字符内容的一块点阵信息。如0表示背景,1表
2016-11-23 13:58:26 3310
原创 采集卡连摄像机选择模拟输入源
用AMCAP看,发现了两个输入源,默认的那个总是出不来数据,需要在DS采集模块里设置一下。 IAMCrossbar *pXBar1 = NULL; hr = _dsInfo.GetCpatureGraphBuilder2Ptr()->FindInterface(&LOOK_UPSTREAM_ONLY, NULL, _captureFilter,IID_IAMCrossbar, (void
2016-11-17 14:36:24 1492
原创 采集卡去水波纹(去交织)
使用sony camera+采集卡+render之后发现视频存在很多水波纹,开始以为是帧率的问题,调了之后效果还是不太理想。 看了下XX的源码,发现预处理有去交织这个东西,一切就迎刃而解了。 代码修改主要包含两部分,一部分是帧场检测,一部分是去交织算法。 1)帧场检测 帧逐行,场隔行。假设123行分别为ABC,则通过比较A-B
2016-11-17 13:59:11 1785
原创 传递元素为指针的二维数组
早上朋友问的问题,开始以为是一维数组 A* array[10]就让他参数设为A** 传f(array)然后他说还不对,发了截图过来,才发现是二维数组 A* array[10][10]很自然的以为传 A*** 然而编译不过正确的应该是参数设为 A* array[][10] 传 f(array)
2016-10-20 10:49:21 434
原创 UMDH分析heap上的内存泄漏
1、需要安装windbg,我的安装目录是D:\Program Files\Debugging Tools for Windows (x86)2、在cmd里设置你的应用程序目录,将一些必需的pdb文件也拷贝到同一目录里 3、设置gflags gflags -i 应用程序名 +ust 4、启动应用程序 5、记录软件初始状态,umdh -p:进程号 -f:文件
2016-10-12 11:38:56 1206
原创 BindToObject失败
线上用户遇到的问题,Failed to bind to the selected capture device。BindToObject的返回值为 800700c1。 暂时分析有两种可能,1是filter注册失败,这可以通过GraphStudio里的VideoCaptureSource来看。
2016-10-08 14:47:22 1807
原创 线程的创建与终止
Tips: 1 线程里不要对成员变量赋值,并用这个赋值作为线程终止条件; 2 在关闭线程的时候,需要等待线程终止,也就是说必需满足线程函数终止条件,没有条件要创造条件; 3 在CreateProc的时候有个默认参数是分配内存大小,以前有遇到过默认内存不够的情况,需要改变这个值。
2016-09-23 10:50:13 793
原创 关于buffer overrun
这两天遇到一个bug,attach的时候发现是stack overrun,完全没有任何头绪。网上搜了一下,这种问题大概是sting或者循环数组越界,找了挺长时间没有找出问题,上面又在催,就只有用笨办法了。attach的时侯会大概知道出现在哪个函数。在这个函数中可能出现overflow的代码段一一注释,缩小范围。虽然比较费力,但也比没有头绪好。真心觉得需要看下汇编相关的东
2016-09-21 10:52:53 3459
原创 IOS前后台切换检测
if ([UIApplication sharedApplication].applicationState != UIApplicationStateActive) { return true; } IOS后台的时候,一些OPEN GL的函数禁止调用。这时候渲染的话会造成crash。通常的处理方法是render的时候检测一下状态,处于后台直接返回。
2016-09-09 10:58:21 1917
原创 variant类型
typedef struct tagVARIANT { VARTYPE vt; //存储数据类型 unsigned short wReserved1; unsigned short wReserved2; unsigned short wReserved3; union
2016-09-07 10:08:40 723
原创 读文本文件
ifstream in; string ip = ""; string address = ""; in.open("C:\\ip_dict.txt"); if (!in) { cout << "打开文件失败!" << endl; return -1; } while(!in.eof()) { in >> ip >>address; analyzeIpAndAddr
2016-09-07 09:46:29 532
原创 LeetCode 3 Longest Substring Without Repeating Characters
能最快想出来的解法,性能肯定不是太好class Solution {public: int lengthOfLongestSubstring(string s) { string s1; int result = 0; int max = 0; int len = s.length(); for(int i =0 ;i<len;++i) { resul
2015-12-26 21:38:49 589
原创 LeetCode 2 Add Two Numbers
代码写的有点乱,删了个delete之后快了4ms开始题目都没看懂,借助百度翻译 汗就是倒着加7 8 91 0 18 8 0 1/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)
2015-12-23 21:05:10 508
原创 LeetCode 1 Two Sum
开始刷LeetCode刷完换工作!!!先排序后左右搜索struct Element{ int iNumber; int iIndex;};bool compareFunc(const Element& arg1, const Element& arg2){ return arg1.iNumber<arg2.iNumber;}class Solution {pub
2015-12-23 20:12:48 460
原创 MXF crcf
工作中遇到了这个问题,记录一下crcf:CRC flag 使用循环冗余校验算法检查文件传输过程中是否有错误crcf == 0 CRC shall not be present in EOF signature 不检查crcf == 1 CRC shall be present in EOF signature 检查EOF是每帧或每场的末位四个字节
2015-12-17 21:54:47 836
原创 POJ 1753 FlipGame
这道题和之前做的熄灯问题很像,但还是花了很长时间,可能现在使用的算法还不是很好,等有时间再看看有什么其它好的解法。犯的几个错误:1、在做枚举的时候,终止条件设成了Press[1][4] ==1 2、第二次枚举之前,没有将Press数组重置3、输入数据的时候 用%c一个一个输入,这样的话会将回车也算到数组当中去,导致赋值不正确真的需要多练习啊#
2015-08-26 16:34:52 594
原创 POJ 1006
首先将题目变成以下方程组,相当于要求这个同余方程的最小解(n+d)%23 = p; -> x%23 = p; (n+d)%28 = e; -> x%28 = e; (n+d)%33 = i; -> x%33 = i; 另 M = 23*28*33 http://www.cnblogs.com/walker01/archive
2015-08-09 18:16:36 478
原创 枚举
基于已有知识进行答案猜测的一种问题求解策略从可能的集合中一一列举各元素根据所知道的知识,给一个猜测的答案枚举算法对问题可能解集合的每一项根据问题给定的检验条件判定哪些是成立的使条件成立的即是问题的解判断猜测的答案是否正确进行新的猜测:有两个关键因素需要注意1、猜测的结果必须是之前没出现过的2、猜测过程要及早排除错误的答案
2015-08-09 18:02:02 587
原创 fread 相关
if( fread( pic->plane[0], 1, param->i_width * param->i_height, fyuv ) <= 0 || fread( pic->plane[1], 1, param->i_width * param->i_height / 4, fyuv ) <= 0 || fread( pic->plane[2]
2015-05-27 10:18:17 668
原创 _makepath and _splitpath 分析路径
makepath 和 splitpath 都是分析路径的函数 它们将一个完整路径分为 path, drive, dir,fname, ext 五部分void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );eg: c:/test/helloworld/make
2015-01-05 11:06:01 841
原创 图像处理--中值滤波
中值滤波 中值滤波就是是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,它的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的值,从而消除孤立的噪声点。中值滤波一般使用模板的方法实现,对模板内的像素按照像素值的大小进行排序,生成单调上升(或下降)的二维数据序列,并使用下面的公式进行输出: g(x,y)=med{f(x-
2013-05-24 15:14:59 12769
原创 图像处理--高斯滤波
部分内容整理自:http://blog.csdn.net/jianxiong8814/article/details/1562728http://www.cnblogs.com/pegasus/archive/2011/05/20/2052031.htmlhttp://blog.sina.com.cn/s/blog_640577ed0100yz8v.htmlhttp://blog.
2013-05-11 19:28:34 36979 1
原创 练习
1、两个已排序数组合并以后的中位数int getMedin(int A[],int m,int B[],int n) { int p1=0; int p2=0; int mid=p1; int flag=0; for(int i=0;i<(m+n)/2;) { while(p1<m&&p2<n&&i
2013-04-22 20:53:51 724
原创 编程范式学习笔记
#include#include#includevoid swap(void *vp1,void *vp2,int size){ char *buffer=(char *)malloc(size*sizeof(char)); memcpy(buffer,vp1,size); memcpy(vp1,vp2,size); memcpy(vp2,buffer,size);}voi
2013-04-10 19:30:00 1221
原创 对称子串的最大长度
首先写一个判断子串是否对称的函数//判断子串是否对称bool isSymmetrical(char *pbegin, char *pend) { if(!pbegin||!pend||pbegin>pend) return false; while(pbegin<pend) { if(*pbegin!=*pend) return false; pbegin++;
2013-04-10 12:44:38 808
原创 C/C++ Tips (2)
1、C++里的钻石结构 class A { }; class B : virtual public A { }; class C : virtual public A { }; class D : public B, public C { };2、long和float都是用四个字节表示3、关键字volatile的作用
2013-04-08 11:18:35 897
原创 C/C++ Tips(1)
1、关于vector的内部实现 对于vector,任何插入删除的操作都会使迭代器失效,所以要小心 vector内部实现其实就是一块连续的内存,它和传统的array不同的它可以扩容,不用考虑越界。 vector的迭代器就是最简单的指向容器内类型的指针。其内部有三个指针,start(指向数据存储区的首地址),finish(已使用数据区的尾端),e
2013-04-07 11:58:41 1148
原创 关于二叉树
1、二叉树的建立#include#includeusing namespace std;typedef struct BTNode{ char data; struct BTNode *lchild; struct BTNode *rchild;}BTNode;void createBTree(BTNode *&root){ char c; cin>>c;
2013-04-03 12:57:03 829
原创 小顶堆实现求无序数组中的最大k个数
//建立含有n个元素的小顶堆 void MakeMinHeap(int a[], int n) { for (int i = n / 2 - 1; i >= 0; i--) MinHeapFixdown(a, i, n); }//在最小堆中加入新的数据nNum void MinHeapAddNumber(int a[], int n, int n
2013-03-30 15:35:53 1160
原创 输入一个升序数组和一个整数,在数组里面找两个数使它们相加的和为这个整数
思路:因为数组为升序数组,就可以在数组前端和尾端分别设置一个标记,依次来控制相加所得整数的大小,并与所给数比较,这样调整起来会比较快。void getData(int data[],int n,int M){ int i=0,j=n-1; while(i!=j) { if(data[i]+data[j]==M) { cout<<data[i]<<" "<<da
2013-03-30 12:08:50 1080 1
原创 关于堆栈
堆栈是一种后进先出的数据结构,当你从堆栈中取出一个元素的时候,你得到的是最后进入堆栈的那个元素。堆栈这种数据结构特别适用于那些由多层子任务构成的任务。堆栈比较常见的用法有1)保存子例程中的返回地址,参数,局部变量。2)用编译器分析语法时保存各种语法元素记号。动态数组与链表的主要区别为其随机存取性,但因为堆栈上的操作永远集中在数据元素的尾部,所以使用动态数组体现不出它的优势。随着元素的增加,
2013-03-24 14:52:12 757
原创 各种排序的比较
1)插入排序 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序,直到待排序数据元素全部插入完为止//假定a[0...i-1]有序,a[i]为待插入元素void insertSort(int a[],int n){ int i,j,k; for(i=1;i!=n;++i) { //为a[i]在前面的a[0...i-1]有序区间中找一个
2013-03-19 11:08:41 1858
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人