在计算电平系数时,HEVC标准中的HEVC量化(统一情况)步骤需要右移QP/6。
我不确定如何在QP不能被6除的情况下执行这种右移位。任何帮助都将不胜感激。
参考:高效视频编码(HEVC)标准中的核心变换设计: Madhukar Budagavi,高级成员,IEEE,Arild Fuldseth,Gisle Bjøntegaard,Vivienne Sze,成员,IEEE和Mangesh Sadafale
发布于 2015-05-04 20:32:23
在HEVC参考软件(HM16.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
};也就是说,由于v是整数,所以v/6是整数除法。下面举例说明了c中整数除法的行为:What is the behavior of integer division in C?
基本上,因为v在这里总是非负的,所以整数除法的结果将与对精确商的求底操作相同。
从这个意义上说,你引用的论文中的等式(8)有点误导,因为它是以“代码风格”编写的。
如果你需要自己用另一种语言来实现它,你应该确保你使用的是floor操作。例如:“<< floor( QP/6)”
https://stackoverflow.com/questions/29912872
复制相似问题