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%b a除以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)定义如下:

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_element f(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
value f(n)
sign f(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)的函数)。这相当于塑造树,以便更可能的值比不太可能的值具有更小的树深度。

VP9编码(4)-- 约定相关推荐

  1. 一些达成共识的JavaScript编码风格约定

    如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要.与其他 ...

  2. VP9编码(1)-- 简介

    VP9编码(1)-- 简介 VP9是谷歌基于VP8发布的新版视频编解码标准,主要对标H265/H264标准.youtube目前采用VP9标准. 本系列博客为博主学习笔记,翻译自<vp9-bits ...

  3. JavaCV音视频开发宝典:vb8和vp9编码的webm格式视频文件转成mp4文件

    <JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 ​ 前言 mp4不用多说,我们日常生活中,手机上或者浏览器网页中使用最多的视频文件就是 ...

  4. 4K视频编码 H 264 H 265 VP9谁主沉浮

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 4K视频 ...

  5. 来自 Google 的 R 语言编码风格指南

    来自 Google 的 R 语言编码风格指南 R 语言是一门主要用于统计计算和绘图的高级编程语言. 这份 R 语言编码风格指南旨在让我们的 R 代码更容易阅读.分享和检查. 以下规则系与 Google ...

  6. 拼音转汉字 和 字符编码测试

    获得汉字的unicode编码 #define   _UNICODE   #include   <tchar.h>   #include   <locale.h>   #incl ...

  7. 视频直播技术详解(3)编码和封装

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:七牛云 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群 ...

  8. 互动场景下的低延迟编码技术

    本文由上海交通大学教授宋利在LiveVideoStackCon2020线上峰会的演讲内容整理而成,从分析视频传输系统延迟入手,详细介绍视频编码延迟的产生机制,总结优化编码延迟的技术手段和业界典型的低延 ...

  9. Netflix在安卓移动启用AV1格式 较VP9编码效率提升20%

    Photo by freestocks.org on Unsplash Netflix启动了安卓移动客户端上的AV1格式支持,并在尝试将其扩展到硬件等更多场合中. 文 / Coco Liang,蒋默邱 ...

  10. Xilinx+AWS F1+VP9带来30倍实时转码性能提升

    在实时.海量.高并发视频的场景下,FPGA加速找到了自己的发展空间,弥补了VP9在编码复杂度方面的不足,专利费的优势也得以体现. 文 / Ant 在上周圣何塞举行的XDF(Xilinx开发者论坛)上( ...

最新文章

  1. 人工智能热门技术研究课题
  2. JavaScript跨域总结与解决办法(转)
  3. Robot Framework基础学习(六)
  4. 收藏:flex/flash
  5. json 潜逃 结构体_JSON还原为结构体 - osc_t5zhwnvx的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Java中的return this
  7. 其中一个页签慢_房建工程全套技术交底,720页Word版表格,各分部分项全覆盖...
  8. js如何保证iframe里的内容,显示在父窗口
  9. matplotlib 对称图_Python入门向:Matplotlib自救指南篇,从此做图不求人(一)
  10. netty4.1 “File does not contain valid private key” 解决方法
  11. 51单片机~蜂鸣器,数码管的使用
  12. 推荐一款(网站图片储存)网站图片外链
  13. uniapp ios 真机调试
  14. Speedoffice(word)如何插入文字水印
  15. SAP MM06物料删除
  16. 小学三年级计算机画图工具作品,小学三年级美术下册《电脑绘画—模板帮我们作画》教案...
  17. 通过URL在前端页面传参的方法
  18. 生化危机8Switch Pro手柄按键提示补丁MOD
  19. 用python画M2和GDP走势图
  20. springboot上传文件到阿里云

热门文章

  1. SOC厂商--全志瑞芯微
  2. 怎样做好软件测试经理
  3. 笔记(八)Jetson Nano 跑通 jetson-inference
  4. 杭电、POJ、ZOJ ACM刷题顺序和题目分类详解
  5. AutoCAD二次开发基本操作命令
  6. 阿里巴巴产品经理面试主观题
  7. TeXLive升级教程
  8. 16 台服务器达成 1000 万 tpmC!挑战分布式数据库性能极限
  9. jdk1.8_API中英文帮助文档下载
  10. 前端面试题—2021年web前端开发面试题