1

HEVC标准中的HEVC量化(Uniform case)步骤需要在计算电平系数时右移QP/6。

对于 QP 不能被 6 整除的情况,我不确定如何执行这种右移。任何帮助将不胜感激。

参考:高效视频编码 (HEVC) 标准中的核心变换设计:Madhukar Budagavi,IEEE 高级成员,Arild Fuldseth,Gisle Bjøntegaard,Vivienne Sze,IEEE 成员和 Mangesh Sadafale

4

1 回答 1

5

在 HEVC 参考软件 (HM 16.5) 中,量化步q长计算如下:

Double q[MAX_QP + 1];
for (int v = 0; v <= MAX_QP; v++)
{
    q[v] = (Double)(g_invQuantScales[v % 6] * (1 << (v / 6))) / 64;
}

其中g_invQuantScales定义如下:

const Int g_invQuantScales[SCALING_LIST_REM_NUM] =
{
  40,45,51,57,64,72
};

也就是说,asv是整数,v/6是整数除法。例如,这里解释了 c 中整数除法的行为:C 中整数除法的行为是什么?

基本上,v这里总是非负的,整数除法的结果将与精确商上的地板运算相同。

从这个意义上说,您引用的论文中的等式(8)有点误导,因为写作是“代码风格”。

如果您需要自己用另一种语言实现它,则应确保使用地板操作。例如“<< floor(QP/6)”

于 2015-05-04T12:32:23.243 回答