VP9编码(4)-- 约定

VP9编码(4)-- 约定

用于描述此规范的数学运算符及其优先级规则与C编程语言中使用的运算符及其优先级规则类似。但是,带截断的整数除法运算是专门定义的。

此外,可以使用普通数组表示法(例如Mv[0]Mv[1])或仅通过名称(例如Mv)来访问具有用于保持运动矢量的2个元素的数组(由以字母MvMvs结尾的变量名称指示)。使用名称时定义的唯一操作是赋值和相等/不相等测试。数组的赋值用正规表示法A=B表示,其含义与单独赋值A[0]=B[0]A[1]=B[1]的含义相同。2个运动矢量的相等性测试用符号A==B表示,并指定为与(A[0]==B[0]&&A[1]==B[1])相同的意思。不等式检验定义为A!=B和的含义与(A[0]!=B[0]| | A[1]!=B[1])

当一个变量被称为可由x位的有符号整数表示时,意味着该变量大于或等于-(1<<(x-1)),并且该变量小于或等于(1<<(x-1))-1

1.算数运算符

运算符解释
+加号
-减法(作为二元运算符)或求反(作为一元前缀运算符)
*乘法
/整数除法,无条件舍小数位
a%ba除以b的余数。a和b都是正整数

2.逻辑运算符

运算符解释
a && b逻辑与
a ||b逻辑或
!逻辑非

3.关系运算符

运算符解释
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于

4.二进制运算符

运算符解释
&
|
~
a>>b将2的补码二进制整数表示格式中的“a”右移b位位置。此运算符仅用于b为非负整数的情况。由于右移位而移位到MSB的位的值等于移位操作之前的MSB“a”
a << b将2的补码二进制整数表示格式中的“a”向左移动b位位置。此运算符仅用于b为非负整数的情况。由于左移而被移到lsb中的位的值等于0

5.赋值

运算符解释
=赋值运算符
++增量,x++等价于x=x+1。当此运算符用于数组索引时,将在自动递增操作之前获取变量值
减量,即x——等于x=x-1。当此运算符用于数组索引时,将在自动递减操作之前获取变量值
+=加法赋值运算符,例如x+=3对应于x=x+3
-=减法赋值运算符,例如x-=3对应于x=x-3

6.数学函数

以下数学函数(Abs、Clip3、Clip1、Min、Max和Round2)定义如下:

gGAfC4.png

7.描述比特流语法的方法

语法的描述风格类似于C编程语言。位流中的语法元素用粗体表示。每个语法元素都由其名称(仅使用带下划线的小写字母)和编码表示方法的描述符来描述。解码过程根据语法元素的值和先前解码的语法元素的值来执行。在语法表或文本中使用语法元素的值时,它将以常规(即非粗体)类型显示。如果正在计算语法元素的值(例如,用默认值写入而不是在位流中编码),则它也会以常规类型出现。

在某些情况下,语法表可能使用从语法元素值派生的其他变量的值。这些变量出现在语法表或文本中,由小写字母和大写字母混合命名,没有任何下划线字符。以大写字母开头的变量用于解码当前语法结构和所有依赖的语法结构。这些变量可以在解码过程中用于以后的语法结构。以小写字母开头的变量仅在派生它们的过程中使用。

常量值显示在所有带下划线的大写字母中。

常量查找表以所有带下划线的小写字母显示。

当位数是4的整数倍时,可以使用十六进制表示法,用“0x”作为十六进制数的前缀。例如,“0x1a”表示位字符串“0001 1010”。

二进制表示法通过在二进制数前面加“0b”来表示。例如,0b0001010表示位字符串“0001 1010”。二进制数可以包含下划线字符以增强可读性。如果存在下划线字符,则从LSB开始每隔4个二进制数字显示一个下划线字符。例如,0b11010也可以写为0b1_。

等于0的值表示测试语句中的假条件。值TRUE由不等于0的任何值表示。

下表列出了语法规范格式的示例。当syntax_element元素出现时(用粗体字体),它指定从位流中解析此语法元素。

Type
/* A statement can be a syntax element with associated descriptor or can be an expression used to specify its existence, type, and value, as in the following examples */
syntax_elementf(1)
/* A group of statements enclosed in brackets is a compound statement and is treated functionally as a single statement. */
{
Statement
Statement
}
/* A “while” structure specifies that the statement is to be evaluated repeatedly while the condition remains true. */
while ( condition )
Statement
/* A “do … while” structure executes the statement once, and then tests the condition. It repeatedly evaluates the statement while the condition remains true. */
Do
Statement
while ( condition )
/* An “if … else” structure tests the condition first. If it is true, the primary statement is evaluated. Otherwise, the alternative statement is evaluated. If the alternative statement is unnecessary to be evaluated, the “else” and corresponding alternative statement can be omitted. */
if ( condition )
Primary statement
Else
Alternative statement
/* A “for” structure evaluates the initial statement at the beginning then tests the condition. If it is true, the primary and subsequent statements are evaluated until the condition becomes false. */
for ( initial statement; condition; subsequent statement )
Primary statement

8.函数

用于语法描述的函数在本节中指定。

这些函数的规范使用位流位置指示符。此位流位置指示符定位下一个要读取的位的位置。

get_position( ):返回位流位置指示符的值。

init_bool( sz ):按照第9.2.1节的规定,初始化大小为sz字节的布尔解码器的算术解码过程。

exit_bool( ):如第9.2.3节所述退出算术解码过程。

9.描述符

以下描述符指定语法元素的解析。小写描述符指定由比特流中固定整数位表示的语法元素;大写描述符指定由算术编码表示的语法元素。

9.1 f(n)

直接出现在比特流中的无符号n位数字。这些位从高到低的顺序被读取。将调用第9.1节中指定的解析过程,语法元素设置为等于返回值。

9.2 s(n)

有符号整数,使用n位作为值,1位作为符号标志。下面指定了此描述符的分析过程:

s(n) {Type
valuef(n)
signf(1)
return sign ? -value : value
}

9.3 B§

估计概率p/256为0的单个算术编码比特。语法元素被设置为read_bool( p )的返回值(有关此过程的说明,请参阅第9.2.2节)。

9.4 L(n)

无符号算术编码的n位数字,编码为n个标志(“文字”)。从高位到低位读取位。syntax元素被设置为read_literal(n)的返回值(有关此过程的说明,请参阅第9.2.4节)。

9.5 T

一种由小字母表编码的算术树。这些值表示一个小二叉树的叶子。树的(非叶)节点具有相关概率p,并用B(p)表示。零表示选择当前节点下方的左侧分支,而一表示选择右侧分支。此文档中定义的每一个此类元素都有一个在此文档中定义的相关值表。需要时参考这些表(本工艺规范见第9.3节)。

使用x B(p)值解码树深度为x的每个值(叶)。

有很多方法可以表示给定的字母表。树的选择对数据速率影响不大,但对解码器性能影响大。VP9使用的树被选择为(平均)最小化读取的调用数(用于从比特流中提取B(p)的函数)。这相当于塑造树,以便更可能的值比不太可能的值具有更小的树深度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrystalGabrielle

喜欢就投喂一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值