<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[double_s_c的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/double_s_c</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; double_s_c]]></copyright><item><title><![CDATA[JEM中的SIMD优化]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/80356585</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/80356585</guid><author>double_s_c</author><pubDate>Thu, 17 May 2018 20:52:55 +0800</pubDate><description><![CDATA[SIMD是Single Instruction，Multiple Data的缩写——意为单指令多数据，是inter开发的多媒体指令集，采用C++封装接口，底层调用汇编语言，因此执行效率很高。适合重复且可以并行的计算场合。由于编码器在计算SAD操作需要反复读写数据，并且适合并行执行，因此JEM在计算SAD的时候使用了单指令多数据的优化（SIMD），以16*16块的SAD计算为例：UInt GetSA...]]></description><category></category></item><item><title><![CDATA[HEVC 码率控制]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/80349478</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/80349478</guid><author>double_s_c</author><pubDate>Thu, 17 May 2018 13:32:36 +0800</pubDate><description><![CDATA[   码率控制通常分为三个level，分别为GOP级、Frame级、LCU级，其中Frame级分为三种方案，分别为等bit码率分配、固定比例码率分配、自适应比例的码率分配，其中固定比例分配方案是李斌博士提出，自适应比例分配是其师弟在其基础上提出的，本文给出了李斌博士提出的方案。  GOP级码率分配如下式：    SW是窗的大小，建议设置成40，用于平滑码率。Frame级固定比例码率分配：     ...]]></description><category></category></item><item><title><![CDATA[H.266的进展]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/80285381</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/80285381</guid><author>double_s_c</author><pubDate>Fri, 11 May 2018 18:48:08 +0800</pubDate><description><![CDATA[   至此，H.266结束了长达3年的探索阶段，正式开始制定标准，并于4月的JVET会议中，确定了H.266的参考软件VTM，该参考软件有HHI研究院提出，后期将会有很多新技术出现，等新的参考软件及对应的技术草案公布后，本人将介绍一下VTM相比于JEM所做的改变。...]]></description><category></category></item><item><title><![CDATA[H.266中的双边滤波（Bilateral filter）]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/80056650</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/80056650</guid><author>double_s_c</author><pubDate>Mon, 23 Apr 2018 21:45:41 +0800</pubDate><description><![CDATA[   为了进一步消除因变换量化导致的振铃效应，在H.266的探索阶段，爱立信公司在第4次JVET会议中提出了一种双边滤波技术，并被JVET接受。该技术存在于反变换之后，提案JVET-D0069给出了具体的技术方案和编码性能，对于AI和RA结构的性能分别为0.45%和0.50%。        上图给出了滤波器的形状，呈现十字型。该技术用十字型的滤波器对反变换的重建块进行滤波操作，滤波器的系数与像素...]]></description><category></category></item><item><title><![CDATA[一个做视频编解码的求职之路]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/78528799</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/78528799</guid><author>double_s_c</author><pubDate>Tue, 14 Nov 2017 11:30:07 +0800</pubDate><description><![CDATA[秋招于10月15号左右结束了，现在为大将分享一下做视频编解码方面的公司和我面过的企业，整个校招我大概面了13家左右的公司，在北京的公司，这是为了找找求职经验的,很遗憾的互联网公司一家没面过，秋招最失败的地方。 
      据我了解招收视频编解码的公司有(仅我校招接触的，面过三四家)，仅列出部分大公司，还有很多小平台： 
      今日头条      三星 
      华为/华为海思  联发科......]]></description><category></category></item><item><title><![CDATA[H.266中的多核变换]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/77977579</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/77977579</guid><author>double_s_c</author><pubDate>Thu, 14 Sep 2017 11:07:15 +0800</pubDate><description><![CDATA[在HEVC标准中基本上仅仅使用DCT2作为变换核，只在帧内4*4的块的亮度分量使用了DST变换，而H.266的多核变换技术引入了更多的选择，新引入了DST7，DCT8,DCT5，DST1，目前仅仅帧间保留了DCT8和DST7，帧内全部存在，由于266不存在TU的概念，即CU=PU=TU那么就出现了非方形的变换块，且可以使用非对称的变换核，因此，以帧间为例出现了五组变换核（DCT2，DCT2）,（D]]></description><category></category></item><item><title><![CDATA[内存池、进程池、线程池]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76862176</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76862176</guid><author>double_s_c</author><pubDate>Mon, 07 Aug 2017 22:13:02 +0800</pubDate><description><![CDATA[池的概念

由于服务器的硬件资源“充裕”，那么提高服务器性能的一个很直接的方法就是以空间换时间，即“浪费”服务器的硬件资源，以换取其运行效率。这就是池的概念。池是一组资源的集合，这组资源在服务器启动之初就完全被创建并初始化，这称为静态资源分配。当服务器进入正式运行阶段，即开始处理客户请求的时候，如果它需要相关的资源，就可以直接从池中获取，无需动态分配。很显然，直接从池中取得所需资源比动态分配资]]></description><category></category></item><item><title><![CDATA[快速、插入、冒泡排序，二分查找]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76647824</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76647824</guid><author>double_s_c</author><pubDate>Thu, 03 Aug 2017 19:45:59 +0800</pubDate><description><![CDATA[void swap(int *a,int*b) 
{int temp = *a;
*a = *b;
*b = temp;
}void quicksort(int arr[],int left,int right) //快速排序 
{if (left>right)
{
    return;
}
int temp = arr[left];
int i = left;
int j = right;
wh]]></description><category></category></item><item><title><![CDATA[H.266中的Affine模式]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76585873</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76585873</guid><author>double_s_c</author><pubDate>Wed, 02 Aug 2017 17:04:15 +0800</pubDate><description><![CDATA[Affine模式是H.266新引进的帧间预测模式，针对旋转，缩放的场景有很好的预测效果，在参考软件中实现了简化版的affine transform motioncompensation prediction，affine模式在sub-cu级（4*4的块）起作用如下图：


curr块的运动信息均有左上角和右上角的MV计算得到，公式如下，跟curr块中的sub-cu的坐标有关系，而V0和V1是]]></description><category></category></item><item><title><![CDATA[顶层const和底层const]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76222167</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76222167</guid><author>double_s_c</author><pubDate>Thu, 27 Jul 2017 21:40:13 +0800</pubDate><description><![CDATA[const是一个限定符，只有在限定指针的时候才存在顶层和底层const，例子如下：
一、底层const
   指向常量的指针： int const *p=8;
   其中的const称为底层const，指针p指向的内容不可变，即
   *p=10;是错误的，不可通过*p改变p指向地址中的内容。
二、顶层const
    常量指针：int* const p=&a;
    其中的const称为顶层c]]></description><category></category></item><item><title><![CDATA[链表合并]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76166111</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76166111</guid><author>double_s_c</author><pubDate>Wed, 26 Jul 2017 21:55:17 +0800</pubDate><description><![CDATA[题目：输入两个单调递增的链表，输出两个链表合成后的链表，当然我们需要合成后的链表满足单调不减规则。 
解题：本题可有循环也可由递归实现，代码给出了递归实现的方式。 
代码： 
 class Solution { 
 public: 
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 
{if (pHead1 == NULL) return pHe]]></description><category></category></item><item><title><![CDATA[最大子段和问题的动态规划解法]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76151967</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76151967</guid><author>double_s_c</author><pubDate>Wed, 26 Jul 2017 16:13:30 +0800</pubDate><description><![CDATA[题目：给定一个一维数组，求出该数组最大字段和为多少？ 
解题:该题解法很多，本文仅提供一种动态规划的解法，复杂度为O（n）, 
        SUM=max{b[j-1]+a[j],a[j]} 
其中：     if b[j-1]>0          b[j]=b[j-1]+a[j] 
     else
         b[j]=a[j];
int MaxSum(int n, int *a)]]></description><category></category></item><item><title><![CDATA[H.266中的FRUC模式]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76148612</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76148612</guid><author>double_s_c</author><pubDate>Wed, 26 Jul 2017 15:37:36 +0800</pubDate><description><![CDATA[目前的H.266引入两个新的帧间预测模式，一个是有华为提出的AFFINE模式，另一个是有高通提出的FRUC（Frame rate up conversion）模式，本文主要介绍FRUC模式，以后会介绍AFFINE模式，FRUC大约给H.266带来了5%左右的性能（CTC下），FRUC模式包含两个解码端导出运动信息的技术，一个叫TM(template matching)，另一个叫BM(Bilater...]]></description><category></category></item><item><title><![CDATA[数组中只出现一次的数字]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76099625</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76099625</guid><author>double_s_c</author><pubDate>Tue, 25 Jul 2017 22:18:27 +0800</pubDate><description><![CDATA[题目：给定数组中只有两个数出现一次，其他的数都出现两次，请找出这两个数。 
解题：0^0^1=1, 1^1^0=0可知，异或运算可以找出数组中出现一次的数字（如果只有一个数字的话），a^a^b^b^c^d=c^d,可知数组异或运算的结果为出现一次数字的异或的结果，那么结合数组异或结果的数字就能找出这两个数字，可根据c^d的结果的第一个为1的二进制位（c，d中该二进制为一个为0，一个为1），将数组分成]]></description><category></category></item><item><title><![CDATA[判断一个数组是不是二叉搜索树的后序遍历]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76070267</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76070267</guid><author>double_s_c</author><pubDate>Tue, 25 Jul 2017 14:47:21 +0800</pubDate><description><![CDATA[题目：给定一个数组判断该数组是不是一个二叉搜索树的后序遍历结果 
解题：后序遍历的最后一个数为该树的根，且二叉搜索树有个特点，就是左结点的数都比根结点小，右结点的数都比根结点大，根据此特性就可以判断数组是否是二叉搜索树的后序遍历。 
代码如下： 
//判断一个数组是不是二叉搜索树的后序遍历 
bool VerifySequenceOfBST(int sequence[],int length) 
{]]></description><category></category></item><item><title><![CDATA[H.265帧内预测技术]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76038054</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76038054</guid><author>double_s_c</author><pubDate>Mon, 24 Jul 2017 21:01:31 +0800</pubDate><description><![CDATA[帧内预测一般每代标准提出的新技术或者改进都比较少，主要集中在扩展原有的预测模式（从264的9种->H.265的35->目前H.266的67），增加一些参考像素的滤波技术和预测像素在边界上的滤波技术等等，原因是帧内预测能够拿到的参考信息比较少，且实际中，全I帧的配置，应用场景很少，主要精力不在I帧上，公司都比较注重优化RA配置下的编码器，这个配置应用场景更加广。
H.265在帧内预测上并没有很新颖]]></description><category></category></item><item><title><![CDATA[1000！结果中0的个数]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76037421</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76037421</guid><author>double_s_c</author><pubDate>Mon, 24 Jul 2017 20:00:08 +0800</pubDate><description><![CDATA[题目：计算出1000！结果中0的个数。
解题：由于1*2*3*4*.....1000,0是有2*5产生，由于上式中2的个数远多于5，所以计算出5的个数，即是0的个数。
程序如下：
int ZeroNum(int n) 
{int num=0;
for (int i = 0; i < n;i++)
{
    int x = i;
    while (x/5!=0)
    {
        if]]></description><category></category></item><item><title><![CDATA[实现加法计算（不用加减乘除运算符）]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/76026511</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/76026511</guid><author>double_s_c</author><pubDate>Mon, 24 Jul 2017 16:43:39 +0800</pubDate><description><![CDATA[题目： 不用加减乘除实现两个数相加。 
解题：第一步:不考虑进位，两个数相加sum（例如：5+7=2） 
           第二步：求进位carry（例如：5+7有进位10） 
           第三步：sum加carry，若有进位返回第一步，若无进位，跳出。 
           代码实现中用异或（^）实现第一步，用与（&）实现第二步.int Add(int num1, int num2]]></description><category></category></item><item><title><![CDATA[HM代码中Z-order扫描和Raster扫描之间的地址映射问题]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/75967198</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/75967198</guid><author>double_s_c</author><pubDate>Mon, 24 Jul 2017 09:35:06 +0800</pubDate><description><![CDATA[HM中的CU划分过程是按Z-order处理的，所以预测中的很多信息是按z-order存储的，比如划分深度、预测方向、帧内模式等等，而我们人为的寻址都是习惯性按照光栅的顺序，所以在HM中存在Z-order到Raster之间的映射，也存在Raster到Zorder之间的映射，注意：HM中的信息都是按照4*4块的大小保存的，例如，一个CTU会保存256个深度信息，对应256个4*4块，显然会有很多值是重]]></description><category></category></item><item><title><![CDATA[H.265的帧间预测]]></title><link>https://blog.youkuaiyun.com/double_s_c/article/details/75907117</link><guid>https://blog.youkuaiyun.com/double_s_c/article/details/75907117</guid><author>double_s_c</author><pubDate>Sun, 23 Jul 2017 13:29:11 +0800</pubDate><description><![CDATA[H.265帧间预测帧分为：低延时P帧、低延时B帧，随机接入B帧，P帧为单向预测帧--前向预测，但是P帧中的编码单元可以为帧间预测块（前向预测）也可以为帧内预测快，对于H.265 P帧一般有四个参考帧，编码器根据率失真代价准则，在四个参考帧中搜索当前块的匹配块；B帧采用双向预测，B帧中的编码单元可以采用帧间预测（前向预测，后向预测，双向预测都可以）也可以是帧内预测，B帧一般会有两个参考帧列表（Lis]]></description><category></category></item></channel></rss>