摘要:
一、OpenCV中的硬编码 OpenCV2.4.6中,已实现利用GPU进行写视频,编码过程由cv::gpu::VideoWriter_GPU完成,其示例程序如下。 1 int main(int argc, const char* argv[]) 2 { 3 if (argc != 2) 4 { 5 std::cerr " > frame; 28 ... 阅读全文
摘要:
前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码。 一、DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范。DXVA规范制定硬件加速解码可分四级:VLD,控制BitStream;IDCT,反余弦变换;Mocomp,运动补偿,Pixel Prediction;PostProc,显示后处理。其中,VLD加速等级最高,所以其包含IDC... 阅读全文
摘要:
1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别。偶然在网上搜到“faq ARM assembly”,其中描述的几个问题还是值得好好研究一下。 2. 慢慢的发现自己也不再害怕英文的文档了,耐心看至少也能懂个大概。大批经典的文章和书籍都是en文的,所以经常看英文文档是一个非常好的习惯。看看GNU的一些reference manual,哪个不是经典而又值得学习并研究的! 3. ... 阅读全文
摘要:
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0中。而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。x86中没有ld... 阅读全文
摘要:
在程序的不同位置,可能会声明各种不同类型(这里指静态或非静态)的变量。然而,声明的位置不同、类型不同导致每个变量在程序中可以被使用的范围不同。我们把变量在程序中可以使用的有效范围称为变量的作用域。 任何变量都必须在声明之后才能被使用,所以一切变量的作用域都始于变量的声明之处。那么,它到什么地方终止呢?我们知道C++的程序是一个嵌套的层次结构,即语句块里面还能有语句块。最终语句块由各条语句组成,而语... 阅读全文
摘要:
这篇文档向大家介绍 GNU Libtool 的用途及基本使用方法,同时描述如何结合 GNU Autoconf 和 Automake 来使用 Libtool。 3 评论: 吴 小虎, 程序员, 天用唯勤 2010 年 7 月 12 日 内容 介绍 在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对... 阅读全文
摘要:
关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。 内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library:标准模板库 C POSIX library :... 阅读全文
摘要:
以NASM为例,软件安装完毕后,启动Windows操作系统的命令窗口,在安装目录(比如C:\Program Files\NASM)下运行nasm是ok的,但是在其他任意目录下运行nasm就会报错. 这意味着我们还不能使用nasm命令,这是因为:虽然我们以经安装了nasm,而安装目录下也包含了nasm这个命令,但计算机不知道去哪里去找这两个命令。但是我们如果说进入到nasm的安装目录,再依次运行n... 阅读全文
摘要:
在window下查看动态库的导出函数可以用vs自带的Dependenc工具; 查看静态库的信息要用命令行来实现: dumpbin /LINKERMEMBER Test.lib > lib.txt 上面的功能是将静态库的信息导出保存在lib.txt文件中,这样就可以在lib.txt文件中查看相关的信息了 阅读全文
摘要:
一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆栈与用户态堆栈之间切换? 用户态堆栈指针:ss和esp; 内核态堆栈指针:ss0和esp0; 二者均位于任务的tss结构中。这里的任务是指除任务0和1之外的普通任务。 CPU进行用户态堆栈到内核态堆栈的切换操作时,CPU会从当前任务的任务状态段TSS中取得新堆栈的段选择符和偏移值,即从TSS的ss0和esp0字段中获取,在定位了新堆栈(... 阅读全文