Record
不觉
这个作者很懒,什么都没留下…
展开
-
视频的字幕叠加
每个视频Sample都有一帧未压缩的图像数据,字符叠加实际上就是将指定位置的图像的像素值替换为字符图像的像素值。一种直观的想法是将图像帧选入GDI的DC中,再使用GDI函数TextOut和DrawText等直接在图像帧上输出字符,这种做法效率不理想,很难达到实时渲染。另一种可选的方法是在内存中创建一个二位位图,在位图上画出字符内容,于是我们就拿到了字符内容的一块点阵信息。如0表示背景,1表原创 2016-11-23 13:58:26 · 3191 阅读 · 0 评论 -
采集卡去水波纹(去交织)
使用sony camera+采集卡+render之后发现视频存在很多水波纹,开始以为是帧率的问题,调了之后效果还是不太理想。 看了下XX的源码,发现预处理有去交织这个东西,一切就迎刃而解了。 代码修改主要包含两部分,一部分是帧场检测,一部分是去交织算法。 1)帧场检测 帧逐行,场隔行。假设123行分别为ABC,则通过比较A-B原创 2016-11-17 13:59:11 · 1667 阅读 · 0 评论 -
采集卡连摄像机选择模拟输入源
用AMCAP看,发现了两个输入源,默认的那个总是出不来数据,需要在DS采集模块里设置一下。 IAMCrossbar *pXBar1 = NULL; hr = _dsInfo.GetCpatureGraphBuilder2Ptr()->FindInterface(&LOOK_UPSTREAM_ONLY, NULL, _captureFilter,IID_IAMCrossbar, (void原创 2016-11-17 14:36:24 · 1393 阅读 · 0 评论 -
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 · 779 阅读 · 0 评论 -
BindToObject失败
线上用户遇到的问题,Failed to bind to the selected capture device。BindToObject的返回值为 800700c1。 暂时分析有两种可能,1是filter注册失败,这可以通过GraphStudio里的VideoCaptureSource来看。原创 2016-10-08 14:47:22 · 1731 阅读 · 0 评论 -
传递元素为指针的二维数组
早上朋友问的问题,开始以为是一维数组 A* array[10]就让他参数设为A** 传f(array)然后他说还不对,发了截图过来,才发现是二维数组 A* array[10][10]很自然的以为传 A*** 然而编译不过正确的应该是参数设为 A* array[][10] 传 f(array)原创 2016-10-20 10:49:21 · 403 阅读 · 0 评论 -
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 · 1150 阅读 · 0 评论 -
线程的创建与终止
Tips: 1 线程里不要对成员变量赋值,并用这个赋值作为线程终止条件; 2 在关闭线程的时候,需要等待线程终止,也就是说必需满足线程函数终止条件,没有条件要创造条件; 3 在CreateProc的时候有个默认参数是分配内存大小,以前有遇到过默认内存不够的情况,需要改变这个值。原创 2016-09-23 10:50:13 · 758 阅读 · 0 评论 -
读文本文件
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 · 508 阅读 · 0 评论 -
variant类型
typedef struct tagVARIANT { VARTYPE vt; //存储数据类型 unsigned short wReserved1; unsigned short wReserved2; unsigned short wReserved3; union原创 2016-09-07 10:08:40 · 702 阅读 · 0 评论 -
关于buffer overrun
这两天遇到一个bug,attach的时候发现是stack overrun,完全没有任何头绪。网上搜了一下,这种问题大概是sting或者循环数组越界,找了挺长时间没有找出问题,上面又在催,就只有用笨办法了。attach的时侯会大概知道出现在哪个函数。在这个函数中可能出现overflow的代码段一一注释,缩小范围。虽然比较费力,但也比没有头绪好。真心觉得需要看下汇编相关的东原创 2016-09-21 10:52:53 · 3384 阅读 · 0 评论 -
IOS前后台切换检测
if ([UIApplication sharedApplication].applicationState != UIApplicationStateActive) { return true; } IOS后台的时候,一些OPEN GL的函数禁止调用。这时候渲染的话会造成crash。通常的处理方法是render的时候检测一下状态,处于后台直接返回。原创 2016-09-09 10:58:21 · 1876 阅读 · 0 评论 -
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 · 757 阅读 · 0 评论