- 博客(15)
- 收藏
- 关注
原创 x265中satd8和sa8d的MIPS向量指令实现
摘要satd8表示以4x4为单位进行哈达玛变换,sa8d则是以8x8为单位。需要优化的尺寸分别有8x8、16x16、32x32、64x64。基本思想相同,但实现上存在一定的差异。正文satd8首先是satd8,x86给出了8x4的实现方法,和4x4类似,但它可以作为后续的基础。因为对于4x4的尺寸,一个128位向量寄存器需要两行元素进行填充。而对于8x4的尺寸,主要是宽大于等于8时,一个向...
2019-08-09 11:20:38 900
原创 x265中dct8函数的向量实现
摘要上一篇文章已经基本讲明DCT系列函数的实现原理,同尺寸的IDCT(DCT反变换)、DST(离散正弦变换)、IDST的实现方法基本相同。本篇文章将要讲述8x8矩阵DCT变换的向量实现。原理类似,但仅仅因为尺寸扩展为8x8,导致数据的构造方式完全不同,而且变换系数的规律的不同也对其造成一定的影响。本文将详细描述其数据构造方式。正文原理8x8的变换系数矩阵为 。[6464646464646...
2019-08-09 11:20:26 441
原创 x265中dct4函数的向量实现
摘要对于DCT函数,不同尺寸函数的实现存在较大的差异。因此在这一系列中,会分别讲述DCT函数不同尺寸的实现方法及原理。本文讲述的是4x4尺寸的内容。4x4尺寸较小,不会达到寄存器数量的极限,数据构造简单,实现相对较为容易,重点讲述一下原理。正文原理DCT函数的实现原理其实是基于FFT的蝶形算法,一定程度上减少加法、乘法运算的次数。具体来看。在H.265/HEVC中4x4整数DCT公式为:...
2019-08-09 11:20:12 474
原创 x265中satd函数的向量指令实现
摘要上一篇文章中已经讲述了satd的向量原理,这里将主要讲述satd的向量指令实现方法,会涉及到具体的指令已经实现过程中需要注意的内容,但还是比较粗略的讲述。因为本人毕设就是对x265在MIPS和loongson架构上实现向量指令优化,因此这里会涉及两个架构,将分别进行讲述。正文x86对于x86的向量指令我一直使用的是这个网站进行查询https://www.officedaytime.c...
2019-08-09 11:19:54 463
原创 HEVC中哈达玛变换计算SATD的向量指令优化
在HEVC中,有一种率失真的快速计算方法,用到的是SATD(Sum of Absolute Transformed DIfference),具体来说就是残差矩阵经过哈达玛变换,得到系数矩阵,绝对值求和得到SATD值。x265中4x4尺寸对应的函数就是satd_4x4,该函数提供x86的向量指令优化,本文就介绍向量优化后,该算法的结构。
2019-08-09 11:19:10 1318
原创 视频编码器效率评价标准:BDPSNR和BDBR
摘要阅读完官方文档,在这里简单的总结一下。本文主要介绍两个评价标准BDPSNR和BDBR(BD-bitrate)的计算过程。正文首先计算PSNR(peek signal-to-noise ratio)和bitrate。PSNR峰值信噪比表示的是信号最大可能功率与噪声功率的比值。在视频图像领域,也就可以表示编码器编码过程中引入的失真。通常通过均方误差 (MSE)(MSE)(MSE) 来定义...
2019-04-30 20:34:07 7000
原创 x265中weight_pp函数的向量实现
摘要weight_pp函数c语言的内容是static void weight_pp_c(const pixel* src, pixel* dst, intptr_t stride, int width, int height, int w0, int round, int shift, int offset){ int x, y; const int correction =...
2019-04-09 22:29:30 304
原创 x265中图像质量评估算法SSIM( 结构相似性 Structural Similarity )的实现
x265中的SSIM是在calculateSSIM函数中实现的。源代码如下,其主要的步骤:将像素块以4x4的尺寸进行划分,分别计算其基本计算单元,包括∑∑a(i,j)\sum\sum a(i,j)∑∑a(i,j)、∑∑b(i,j)\sum\sum b(i,j)∑∑b(i,j)、∑∑[b(i,j)2+a(i,j)2]\sum\sum [b(i,j)^2+a(i,j)^2]∑∑[b(i,j)2+a...
2018-12-27 18:24:05 1404 1
原创 连续消除算法-SEA(Successive Elimination Algorithm)
Abstract该块匹配算法(block matching algorithm BMA)用于运动估计。核心思想就是通过连续不断的消除搜索窗口中的块位置,降低计算量,同时获得较为准确的运动向量,准确度极其接近全搜索算法。它不同于其他递增型的搜索算法,也就是从一点出发,搜索周边块,该性质会导致其陷入局部最优。Principles of the Algorithm块匹配算法(BMA)的目的就是在...
2018-12-22 21:49:12 1838
原创 x265对变换系数的编码(其余非零系数的位置及非零系数幅值编码部分)
该部分的代码较长,本文分段讲解。 // code significance flag uint8_t * const baseCoeffGroupCtx = &m_contextState[OFF_SIG_CG_FLAG_CTX + (bIsLuma ? 0 : NUM_SIG_CG_FLAG_CTX)]; uint8_t * const baseCtx = bIsL...
2018-03-27 21:24:14 1650
原创 x265对变换系数的编码(最后一个非零系数的位置编码部分)
对变换系数的编码是在codeCoeffNxN函数中完成的,先看参数列表。void Entropy::codeCoeffNxN(const CUData& cu, const coeff_t* coeff, uint32_t absPartIdx, uint32_t log2TrSize, TextType ttype)就看比较重要的吧,coeff是存储系数值的数组,log2TrSize表示...
2018-03-23 16:57:39 1657
原创 x265对语法元素cu_qp_delta_abs的编码(后缀及符号位部分)
先看后缀部分。根据标准,语法元素cu_qp_delta_abs的后缀值suffixVal = cu_qp_delta_abs − 5。void Entropy::codeDeltaQP(const CUData& cu, uint32_t absPartIdx){ int dqp = cu.m_qp[absPartIdx] - cu.getRefQP(absPartIdx);...
2018-03-18 21:06:39 1215 3
原创 x265对语法元素cu_qp_delta_abs的编码(前缀部分)
HEVC所使用的熵编码方法为CABAC(基于上下文的自适应二进制算术编码),大致分为三个步骤:1、二值化2、上下文建模(模型初始化、更新)3、二进制算术编码 对该语法元素的编码是在codeDeltaQP函数中完成的。void Entropy::codeDeltaQP(const CUData& cu, uint32_t absPartIdx){ int dqp = cu.m...
2018-03-17 17:09:36 1662
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人