SPS解析

一、SPS语法

SPS解析_第1张图片
1.png
SPS解析_第2张图片
2.png
SPS解析_第3张图片
3.png

二、语法描述

以下函数用于语法描述。这些函数假定解码器中存在一个比特流指针,这个指针指向比特流中解码过程要读
取的下一个比特的位置。
byte_aligned( ) 的规定如下:
— 如果比特流的当前位置是在字节边界,即,比特流中的下一比特是字节第一个比特,byte_aligned( )的返回值为TRUE。
— 否则,byte_aligned( )的返回值为FALSE。
more_data_in_byte_stream( ),只有在附件B规定的字节流NAL单元语法结构中使用,规定如下:
— 如果字节流中后续还有更多数据,more_data_in_byte_stream( )的返回值为TRUE。
— 否则,more_data_in_byte_stream( ) 的返回值为 FALSE。
more_rbsp_data( ) 的规定如下:
— 如果在rbsp_trailing_bits( )之前的RBSP中有更多数据,more_rbsp_data( ) 的返回值为TRUE。
— 否则,more_rbsp_data( )的返回值为 FALSE。
判断RBSP中是否有更多数据的方法由应用规定(或者附件B中使用字节流格式的应用)。
more_rbsp_trailing_data( ) 的规定如下:
— 如果RBSP中有更多数据,more_rbsp_trailing_data( ) 的返回值为TRUE。
— 否则,more_rbsp_trailing_data( ) 的返回值为 FALSE。
next_bits(n)提供比特流中接下来的比特用于比较的目的,而不需要移动比特流指针。该函数使比特流中的下n 个比特可见,n 在这里是函数的参数。当用在附件B 规定的字节流中时,如果剩余的字节流已不足n 个比特,next_bits( n )返回值为0。
read_bits( n ) 从比特流中读取下面的n 个比特,并且将比特流指针向前移动n 个比特。当n 等于0 时,read_bits( n )的返回值为0并且不移动比特流指针。
类别(在表中以C 表示)规定条带数据可以至多划分为三种条带数据类别。条带数据类别A 包含了类别2的所有语法元素。条带数据类别B 包含了类别3 的所有语法元素。条带数据类别C 包含了类别4 的所有语法元素。其他类别值的含义不作规定。某些语法元素需要使用两个类别值,这两个值通过竖线分开。在这些情况下,本文将会进一步说明应用的类别值的含义。对于在其他语法结构中使用的语法结构,它所包含的所有语法元素的类别值都应列出,通过竖线来分开。如果语法元素或者语法结构的类别标为”All”,它可以出现在所有的语法结构中。对于用在其他语法结构中的语法结构,语法表格中的数字类别值如果处于包含了一个类别值为“All”的语法结构中,那么该数字类别值被认为能够应用到类别为“All”的语法元素值。
如下描述符规定了每个语法元素的解析处理。对于某些语法元素,需要使用通过竖线分开的两个描述符。在这些情况下,左边的描述符在entropy_coding_mode_flag 等于0 的时候使用,右边的描述符在entropy_coding_mode_flag等于1的时候使用。
— ae(v):上下文自适应算术熵编码语法元素。该描述符的解析过程在9.3节中规定。
— b(8):任意形式的8比特字节。该描述符的解析过程通过函数read_bits( 8 )的返回值来规定。
— ce(v):左位在先的上下文自适应可变长度熵编码语法元素。该描述符的解析过程在9.2节中规定。
— f(n):n位固定模式比特串(由左至右),左位在先, 该描述符的解析过程通过函数read_bits( n )的返回值来规定。
— i(n):使用n比特的有符号整数。在语法表中,如果n是‘v’,其比特数由其它语法元素值确定。解析过程由函数read_bits(n)的返回值规定,该返回值用最高有效位在前的2的补码表示。
— me(v):映射的指数哥伦布码编码的语法元素,左位在先。解析过程在9.1中定义。
— se(v):有符号整数指数哥伦布码编码的语法元素位在先。解析过程在9.1中定义。
— te(v):舍位指数哥伦布码编码语法元素,左位在先。解析过程在9.1中定义。
— u(n):n位无符号整数。在语法表中,如果n是‘v’,其比特数由其它语法元素值确定。解析过程由函数read_bits(n)的返回值规定,该返回值用最高有效位在前的二进制表示。
— ue(v):无符号整数指数哥伦布码编码的语法元素,左位在先。解析过程在9.1中定义。

三、语法描述实现

四、SPS解析实现

你可能感兴趣的:(SPS解析)