关闭

Hook参考源码

HOOK可以参考以下三个源码: mHook, minHook, Detours...
阅读(411) 评论(0)

x264_scan8 的理解

原文:http://blog.csdn.net/hevc_cjl/article/details/8273533 先上代码及注释 [cpp] view plaincopy #define X264_SCAN8_SIZE (6*8) //!   #define X264_SCAN8_0 (4+1*8) //!      static const i...
阅读(524) 评论(0)

I 帧和 IDR 帧的区别

I 帧和 IDR 帧的区别:     IDR 帧属于 I 帧。解码器收到 IDR frame  时,将所有的参考帧队列丢弃 (用x264_reference_reset 函数实现——在 encoder.c 文件中) 。这点是所有 I 帧共有的特性,但是收到 IDR 帧时,解码器另外需要做的工作就是:把所有的 PPS 和 SPS 参数进行更新。由此可见,在编码器端,每发一个 IDR ,就相...
阅读(4746) 评论(0)

X264如何阅读数

最近我也开始看 X264 的代码了,于是想到把我读代码的过程记录下来,因为总有很多新手问如何读代码,我这个帖子就是专为这些人写的。至于会读代码的人就完全没有必要看了。下面当然是以 X264 为例了。JM 以及其他代码的学习方法和技巧都是完全一样的。我所用的版本是在帖子 在VS2008下编译最新版的x264连接错误 里上传的版本。最新版本的代码基本结构应该变化不大。 首先肯定是要把 X264 ...
阅读(945) 评论(0)

Windows下编译x264

早期的版本有vc可以直接编译的, 现在的没有vc版本了; 如果希望在windows上学习x264,可以直接找到vc版本; 这里例举一下,网上的两个版本方法: 一:《VS2010编译x264(20091006)》 如果你仅仅需要使用x264的话你可以到这下载:http://x264.nl/ x264的源码下载地址:http://www.vid...
阅读(1316) 评论(0)

Win8+VS2012(32位)下编译x265

相信很多朋友都尝试过编译x265,本人之前总是一头雾水,根据其x265官网的介绍尝试了好几种办法,一直没有搞定,还装了很多东西,什么yasm、Intel编译器和Cmake之类的,后来发现我把问题想得太复杂了,现介绍我在VS2012平台下编译x265的方法。 前期准备工作: 1、x265开源代码。 2、系统预安装Cmake软件。 3、安装yasm和vld。 具体步骤如下...
阅读(1131) 评论(0)

SSE指令集入门

Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力。Visual Studio .NET 2003提供了对SSE指令集的编程支持,从而允许用户在C++代码中不用编写汇编代码就可直接使用SSE指令的功能。MSDN中有关SSE技术的主题[1]有可能会使不熟悉使用SSE汇编指令编程的初学者感到困惑,但是在阅读MSDN有关...
阅读(9009) 评论(0)

编写高效代码(8) 程序、数据访问符合Cache的时间、空间局部性

Cache正是利用了程序、数据访问时的时间局部性和空间局部性,为了使Cache的访问效率最高,程序和数据的组织,也应该要符合这两个特性。最典型的例子就是二维数组的访问,下面就是一个二维数组: 二维数组         如果a[i][j]在Cache中,那么a[i][j+1]就很可能也在Cache中,但是a[i+1][j]则不一定。于是代码这样写就不太好:   for...
阅读(758) 评论(0)

编写高效代码(7) 优化内存访问——别让包袱拖垮了你

从理论上看,每条运算指令的执行时间都很短,大多数指令一个Cycle就能完成,很多时候还能一个Cycle执行多条指令,可是实际上,执行指令只是处理器要做的很少一部分工作,处理器还要从存储器中取指令,从存储器中将数据导入到寄存器中,等算完后,再将结果存入到存储器中。         处理器运算的速度像兔子赛跑一样快,但是存储器的访问速度像乌龟走路一样慢,而且越是远离内核的存储器,访问速度越慢。...
阅读(635) 评论(0)

编写高效代码(6) 数据对齐访问

在32位处理器中,一个int型变量占4个byte,假设这个变量i在内存中占据2、3、4、5这4个byte的位置,如下图所示。   数据非对齐存储         内核在访问这个数据时,会先将从0开始的4个byte读入到寄存器A中,再将从4开始的4个byte读入到寄存器B中,再将有效的数据拼成一个int数据,放在寄存器C中,可见,这种访问效率是多么的低下啊,如果变量i存储在从0开始...
阅读(461) 评论(0)

编写高效代码(5) 尽量减少分支

我们在介绍处理器时,已经知道了,现在的处理器都是流水线结构,if和switch等语句会带来跳转,而跳转会打乱流水线的正常执行,影响程序的执行效率。          下面这段代码,把奇数赋一个值,把偶数赋一个值,可以用这种方式实现:  [cpp] view plaincopyprint? for(i=0; i    {         if...
阅读(428) 评论(0)

编写高效代码(4) 在精度允许的条件下,将浮点数定点化

浮点指令要比定点指令慢很多,功耗也大很多,在精度要求不那么高的情况下,就可以将浮点数定点化,用定点指令来代替浮点指令,一个典型的例子就是alpha混合。         《反恐精英》是很多人非常喜欢的游戏,在下面的游戏截图中,一个人扔了个烟雾弹,画面呈现出半透明的烟雾效果,随着时间的推移,烟雾逐渐散去,画面恢复到原来的状态。         这种效果如果让美工来实现,那会把人累死,其实...
阅读(741) 评论(0)

编写高效代码(3) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情

尺有所短,寸有所长,每种处理器都有自己擅长与不擅长的操作。         在与处理器配套发布的指令集手册中,都会描述每个指令的执行周期,单周期指令是处理器最喜欢的,不仅执行时间短,而且利于流水线执行。加、减、逻辑运算等,常常是单周期指令,乘、除、分支指令、浮点指令、内存存取操作等,常常需要较多的时钟周期。我们在编程时,就应该少使用执行时间长的指令。         Q:这些复杂指令都...
阅读(556) 评论(0)

编写高效代码(2) 空间换时间——我们总是在走,却忘了停留

时间和空间的关系,是霍金这种智商的人要研究的东西,我们只需要知道,在编程时,空间是可以换时间的,时间也是可以换空间的。          李开复在他的自传《世界因你不同》中描述了他小时候在美国学校里的一个故事,老师出了道题:“谁知道1/7等于多少?”小开复马上大声回答:“0.142857”,老师和同学们都惊呼开复是个天才,其实事实情况是,开复以前在台湾时就记下了这个答案。这就是一个典型的以空...
阅读(550) 评论(0)

编写高效代码(1) 减少函数调用——不要老打断我

函数是结构化程序设计的产物,它使代码更加模块化,耦合性更低,重用性更高。不过,函数调用会带来额外的开销,除了引起跳转外,还会产生额外的指令。         人都有这样的经验,做一件事情时,如果被人打断,重新再回来做这件事情,就需要一段恢复时间,如果老是被打断,那事情就没法做了。函数调用也是这样,要进行参数压栈出栈、寄存器保存、指令跳转等。多个步骤如果程序的性能要求较高,就可以将一些小的函数...
阅读(592) 评论(0)
313条 共21页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:424177次
    • 积分:5094
    • 等级:
    • 排名:第6025名
    • 原创:85篇
    • 转载:228篇
    • 译文:0篇
    • 评论:31条
    最新评论