假定参考解码器(HRD)及它如何用来检查比特流与解码器一致性

   有两类比特流是HRD 一致性检查的对象:第一类比特流称为类型I 比特流,为
NAL 单元流,只包含有VCL NAL 单元与在比特流里对于所有访问单元的填充NAL 单元数据。第二类比特流,
称为类型II 比特流,除了包含有VCL NAL 单元与在比特流里对于所有访问单元的填充数据NAL 单元,至少还
包含一个下述的内容:
— 附加的不为填充数据NAL单元的非VAL NAL单元;
— 所有leading_zero_8bits,zero_byte,start_code_prefix_one_3bytes和 trailing_zero_8bits语法元素,这些
语法元素构成来自于NAL单元流的字节流。

图C-1 显示了HRD检查的比特流类型一致性点。


HRD所需要的非VCL NAL单元的语法元素(或它们对某些语法元素的
默认值)。
有两类HRD 参数集可供使用。HRD 参数集通过视频可用性信息传送,如E.1 与E.2 节所规定,视频可用性
信息是序列参数集语法结构的一部分。
为了检查使用HRD 比特流的一致性,所有的涉及VCL NAL 单元的序列参数集与图像参数集,及对应于缓
存周期与图像定时SEI 消息应及时传送到HRD,或者以比特流形式(非VCL NAL 单元),或者以其它本建议
书|国际标准未规定的方式。
ITU-T H.264书
当这些NAL 单元(或仅是某些)以国际标准未定义的方式传送到解码器
(或到HRD),对于非VCL NAL 单元“存在”的规定也应得到满足。为了对比特计数,只有实际在比特流中出
现的比特才能进行计数。
注1 — 作为一个例子,非VAL NAL单元与比特流中的NAL单元同步,采用通过比特流携带以外的方式,可以通
过指定一个比特流中的两点来实现,如果编码器决定在比特流中传送时,在此两点间,非VCL NAL单元可能在
比特流中出现。
当非VCL NAL 单元的内容为某种应用,通过某些方式在比特流中传送时,非VCL NAL 单元内容的表现不
需要使用本附件规定的同样语法。
注2 — 当HRD信息包含在比特流中时,可能仅靠比特流中的这些信息用来检证比特流是否与本节所述需求相一
致。当HRD信息没有出现在比特流中时,比如所有独立的类型I比特流的情况里,一致性可能只用于验证何时由
国际标准未规定的方式提供HRD数据。
HRD包含编码图像缓存(CPB)、实时解码过程、解码图像缓存(DPB)及输出裁切,如图C-2所示。


CPB大小(比特数)为CpbSize[ SchedSelIdx ],DPB的大小(帧数)为Max( 1, max_dec_frame_buffering )。
HRD 按照下文所述进行操作。由HSS 传送与访问单元关联的数据,这些数据按规定的到达时间表注入CPB
中。与每一个访问单元相关联的数据在CPB 移除时间到达时,被移除并由实时解码过程进行实时解码。每一解
码的图像在其CPB移除时间到达时放入到DPB中,除非要在CPB移除时间时输出,并且是非参考图像。当一幅
图像放入DPB,在稍后DPB输出时间时或在其标记为“未用于参考”的时间,从DPB中移除。
CPB的操作在C.1节中规定,实时解码操作在第8与第9节中规定。DPB的操作在C.2节中规定。输出的裁
切在C.2.2节中规定。
266 ITU-T H.264建议书 (03/2005)
HSS与HRD信息在E.1.1、E.1.2、E.2.1与E.2.2规定,这些信息主要是关于枚举出的传送进度表数目与其相
关的比特率和缓存器大小。HRD按D.1.1与D.2.1节中描述的缓存周期SEI消息的规定进行初始化。从CPB移除
访问单元的时间与从DPB输出的时间按D.1.2与D.2.2节中描述的图像定时SEI消息的规定进行。所有与具体访
问单元相关联的定时信息应先于访问单元的CPB移除时间到达。
使用HRD检查比特流与解码器的一致性,如C.3与C.4节所分别规定。
注3 — 如下假设保证了一致性:所有用于产生比特流的帧速率和时钟与比特流里的传送的值完好吻合,但在实际
环境中,每一个参数与传送值或规定值均会有所差别。
本附件中所有计算均使用实际值,这样就不会引起舍入误差的传播。比如CPB 里的比特数在一访问单元前
或移除后不是必须为整数。
变量tc称为一个时钟记号,推导如下。
tc = num_units_in_tick÷time_scale (C-1)
如下内容为本附件的限定条件。
— 使访问单元n在解码顺序中为第n个访问单元,第一个访问单元为0;
— 使图像n为主要编码图像或访问单元n的主要解码图像。
C.1 编码图像的缓存操作(CPB)
本节中规定独立应用于每一个出现的CPB参数集及图C-1中示类型I 与类型2一致性点。
C.1.1 比特流到达的定时
HRD可以初始化任一个缓存周期SEI消息。在初始化前,CPB为空。
注 — 在初始化后,HRD不能再被随后的缓存周期SEI消息进行初始化。
每一个访问单元都使用访问单元n 来引用,这里用编号n 来标识特定的访问单元。与缓存周期SEI 消息相
关,并初始化CPB的访问单元称为访问单元0。数值n会在解码过程中,因随后每一个访问单元增加1。
访问单元n的第一个比特进入CPB的时刻称为起始到达时间tai( n )。
访问单元的起始到达时间的由如下方法得出:
— 如果访问单元访为访问单元0,则tai( 0 ) = 0;
— 否则(访问单元为访问单元n,n>0),按照如下规则:
— 如果cbr_flag[ SchedSelIdx ]等于1,访问单元n的起始到达时间等于访问单元n-1的最后到达时间
(如下所示),即:
tai( n ) = taf( n − 1 ) (C-2)
— 否则(cbr_flag[ SchedSelIdx ]等于0),访问单元n的起始到达时间:
tai( n ) = Max( taf( n − 1 ), tai,earliest( n ) ) (C-3)
这里tai,earliest( n )推导如下:
— 如果访问单元n不为后续缓存周期的第一个访问单元,tai,earliest( n )经
tai,earliest( n ) = tr,n( n ) −
( initial_cpb_removal_delay[ SchedSelIdx ] + initial_cpb_removal_delay_offset[ SchedSelIdx ] ) ÷90000 (C-4)
导出, tr,n( n ) 为访问单元应从CPB中移除的时刻,如C.1.2节所规定,initial_cpb_removal_delay[ SchedSelIdx ]
与initial_cpb_removal_delay_offset[ SchedSelIdx ] 为前一缓存周期SEI消息的规定的值。
ITU-T H.264建议书 (03/2005) 267
— 否则(访问单元n为后续访问单元中的第一个),tai,earliest( n )导出如下:
tai,earliest( n ) = tr,n( n ) − ( initial_cpb_removal_delay[ SchedSelIdx ] ÷90000 ) (C-5)
initial_cpb_removal_delay[ SchedSelIdx ]为与访问单元n相关的缓存周期SEI消息中所定义的。
访问单元n的最终到达时间由下式导得:
taf( n ) = tai( n ) + b( n )÷BitRate[ SchedSelIdx ] (C-6)
这里b(n)为比特为单位访问列表n的大小,对VCL NAL单元与类型I一致性点的填充数据NAL单元或对类
型II一致性点的类型II比特流中所有比特进行计数,类型I与类型II的一致性点如图C-1所示。
SchedSelIdx,BitRate[ SchedSelIdx ]与 CpbSize[ SchedSelIdx ]的值受下述条件约束:
— 如果访问单元n与访问单元n-1为不同编码视频序列的一部分,两编码视频序列的激活序列参数集的内
容不同,HSS从SchedSelIdx值中选择SchedSelIdx中SchedSelIdx1的值,SchedSelIdx包含访问单元n的编码视频
序列,该访问单元n产生了两编码视频序列中第二个编码视频序列(此序列包含访问单元n)的
BitRate[ SchedSelIdx1 ]或 CpbSize[ SchedSelIdx1 ]参数。BitRate[ SchedSelIdx1 ]或CpbSize[ SchedSelIdx1 ]的
值。对于SchedSelIdx 中SchedSelIdx0的值,BitRate[ SchedSelIdx1 ] 或CpbSize[ SchedSelIdx1 ]可能与
BitRate[ SchedSelIdx0 ] 或CpbSize[ SchedSelIdx0 ]的值不同,SchedSelIdx的SchedSelIdx0的值用于包含访问单
元n-1的编码视频序列。
— 否则,HSS继续依照SchedSelIdx、BitRate[ SchedSelIdx ] 与 CpbSize[ SchedSelIdx ]的前一值进行操作。
当HSS选择不同于前一访问单元的BitRate[ SchedSelIdx ]或CpbSize[ SchedSelIdx ]的值时,将应用下述条件:
— 变量BitRate[ SchedSelIdx ]在tai( n )生效;
— 变量CpbSize[ SchedSelIdx ]如下所述生效:
— 如果CpbSize[ SchedSelIdx ]的新值超过原CPB的大小,将在tai( n )产生作用;
— 否则CpbSize[ SchedSelIdx ]的新值将在tr( n )产生作用。
C.1.2 编码图像的移除的定时
对于访问单元0,规定从CPB的移除时间定义如下:
tr,n( 0 ) = initial_cpb_removal_delay[ SchedSelIdx ] ÷90000 (C-7)
对于不由HRD发起的缓存周期的第一个访问单元,从CPB的移除时间定义如下:
tr,n( n ) = tr,n( nb ) + tc * cpb_removal_delay( n ) (C-8)
tr,n( nb )为前一个缓存周期的第一个访问单元的移除时间,cpb_removal_delay( n )为与访问单元n 相关的图像
定时SEI消息中规定的cpb_removal_delay值。
当一个访问单元n为缓存周期的第一个访问单元时,nb在访问单元n移除时设为n。
缓存周期内,不为第一个访问单元的访问单元n的移除时间tr,n(n)由下式给出:
tr,n( n ) = tr,n( nb ) + tc * cpb_removal_delay( n ) (C-9)
tr,n( nb )为当前缓存周期第一个访问单元规定的移除时间,cpb_removal_delay( n )为与访问单元n 相关的图像
SEI消息中规定的cpb_removal_delay的值。

访问单元n的移除时间定义如下:
— 如果low_delay_hrd_flag等于0或tr,n( n ) >= taf( n ),访问单元n的移除时间规定为:
tr( n ) = tr,n( n ) (C-10)
— 否则(low_delay_hrd_flag等于1或tr,n( n ) < taf( n )),移除时间规定如下:
tr( n ) = tr,n( n ) + tc * Ceil( ( taf( n ) - tr,n( n ) ) ÷tc ) (C-11)
注 — 后一种情况表明访问单元n,b(n)的尺寸很大,可以防止规定移除时间的移除。
C.2 解码图像缓存的操作(DPB)
解码图像缓存包含有帧缓存,每一帧缓存可能包括一个解码帧,一解码补偿场对或单(非成对)解码场,这
些内容标记为“用于参考”(参考图像)或为以后的输出(录像或延时图像)保留。在初始化之前,DPB 为空
(CPB的填充度设为0)。本节下述各小节中的步骤均在tr( n )时刻按照列出的顺序实时发生。
C.2.1 frame_num 间隔的解码与“不存在”帧的存储
如果可行,frame_num里的间隔由解码过程检测,对生成帧进行标记并插入到DPB中,如下文所述:
frame_num里的间隔由解码过程检测出来,产生的帧按照8.2.5.2节的规定进行标记。
标记每一个生成帧后,由滑动窗过程标记为“未用参考”每一图像m从DPB中移除,图像m也标记为“不
存在”或其DPB输出时间小于或等于当前CPB的移除时间,将从DPB中移除,即,to,dpb( m ) <= tr( n )。当帧缓
存里一帧或最后一场从DPB缓存里移除,DPB填充度减一。“不存在”帧插入到DPB,DPB填充度加1。
C.2.2 图像解码与输出
解码图像n,其DPB输出时间to,dpb( n )由下式导出:
to,dpb( n ) = tr( n ) + tc * dpb_output_delay( n ) (C-12)
当前图像的输出规定如下:
— 如果to,dpb(n) = tr(n),当前图像输出;
注 — 当前图像为参考图像时,将被存储在DPB。
— 否则(to,dpb(n) > tr(n)),当前图像稍后输出,并将存储于DPB(如C.2.4节所述),在to,dpb(n)时输出,
除非在to,dpb(n)时间前,解码过程或no_output_of_prior_pics_flag等于1,指明不能输出。
输出图像应被裁切,裁切使用序列参数集所规定的裁切矩形。
当图像n为一输出图像,且不为输出比特流的最后一帧时,Δto,dpb( n )的值定义为:
Δto,dpb( n ) = to,dpb( nn ) - to,dpb( n ) (C-13)
nn为输出顺序中图像n后的那幅图像。
解码图像要临时进行存储(不是在DPB中)。
-------在当前图像可能插入前,从DPB中移除图像
在当前图像可能插入前,从DPB中移除图像的过程如下所述:
— 如果解码图像为IDR图像,如下所述:

— 所有在DPB中的参考图像标记为“未用于参考”所述;
— 当IDR图像不是第一幅解码IDR图像,且从序列参数集中导出的PicWidthInMbs或FrameHeightInMbs或
max_dec_frame_buffering的值与前面序列激活的序列参数集中的PicWidthInMbs或FrameHeightInMbs或
max_dec_frame_buffering 的值不同时, 不考虑no_output_of_prior_pics_flag 的实际值,
no_output_of_prior_pics_flag通过HRD可以推断出等于1。
注 — 同与PicWidthInMbs或FrameHeightInMbs的改变相关的HRD相比,解码器操作应尝试更好地处理帧或DPB大
小的变化。
— 当no_output_of_prior_pics_flag设为1或推断将为1时,所有的DPB中帧缓存清空而不输出,DPB填充度
设为0。
— 否则(解码图像不是IDR图像),如下所述:
— `如果当前图像的条带头包括了等于5的memory_management_control_operation,所有DPB中的参考图像
标记为“未用作参考”;
— 否则(当前图像的条带头不包括等于5的memory_management_control_operation),解码参考图像标记
过程进行调用。
所有DPB中的图像m,若下述条件为真,从DPB中移除。
— 图像m标记为“未用做参考”或图像m为非参考图像。当图像为参考帧,仅当它的两场均被标为“未用做
参考”,它会被标记为“未用做参考”。
— 当图像m标记为“不存在”,或其DPB输出时间小于或等于CPB中当前图像n的移除时间, 即to,dpb( m ) <=
tr( n )。
当帧缓存中的一帧或最后一场从DPB中移除时,DPB的填充度减一。
-------当前解码图像标记与存储
------- DPB里标记与存储一参考解码图像
当当前图像为参考图像时,它在DPB中存储如下:
— 如果当前解码图像为补偿参考场对中的第二场(在解码顺序中),场对中的第一场仍在DPB中,当前
解码图像如第一场一样存在同一帧缓存中。
— 否则当前解码图像存在一空的帧缓存中,DPB填充度加1。
---------- 向DPB中存储非参考图像
如果当前图像为非参考图像且当前图像n有to,dpb(n) > tr(n),按下述存储在DPB中:
— 如果当前解码图像为一补偿非参考场对中的第二场,第一场仍在DPB中,当前解码图像与第一场存于
同一帧缓存中。
— 否则当前解码图像存于一空帧缓存中,DPB的填充度加1。
---------- 比特流一致性
编码数据的比特流若与本建议书|国际标准一致,需满足如下要求。
按照语法、语意与本建议书|国际标准规定的限制构成的比特流不在本附件范围内。
由HRD测试的比特流规定如下:
对于类型I 比特流,进行的测试数等于cpb_cnt_minus1 + 1,这里cpb_cnt_minus1 或者是在
vcl_hrd_parameters_present_flag 之后的hrd_parameters( )的语法元素,或使用由本建议书|国际标准中未规定方式
的应用来决定。一个测试对在vcl_hrd_parameters_present_flag 之后hrd_parameters( )所规定的每一种比特率与
CPB大小的组合进行。每一测试由图C-1所示的类型I的一致性点所指导。
270 ITU-T H.264建议书 (03/2005)
对于类型II 比特流,有两个测试集。第一个集的测试号等于cpb_cnt_minus1 + 1,这里cpb_cnt_minus1 + 1
或者是在vcl_hrd_parameters_present_flag 之后的hrd_parameters( )的语法元素,或由本建议书|国际标准内未规
定的其它方式所判定。一个测试对每一种比特率与CPB大小的组合进行。每一个测试由图C-1所示的类型I一致
性点所指导。对于这些测试,只有VCL与填充数据NAL单元用于输入比特率与CPB存储的计数。
对于类型II,第二个集的测试号,等于cpb_cnt_minus1 + 1,这里cpb_cnt_minus1 + 1 或者是在
vcl_hrd_parameters_present_flag 之后的hrd_parameters( )的语法元素,或者由本建议书|国际标准内未规定的其它
方式所判定。一个测试对每一种比特率都与在vcl_hrd_parameters_present_flag 之后hrd_parameters( )所规定的
CPB大小组合都进行。每一个测试由图C-1所示的类型II一致性点所引导。对于这些测试,所有(类型II NAL
单元流的)NAL单元或(字节流)的所有字节用于输入比特率与CPB存储的计数。
注1 — 在VBR情况下,相同initial_cpb_removal_delay[ SchedSelIdx ], BitRate[ SchedSelIdx ], 和CpbSize[ SchedSelIdx ]
的值,对于图C-1所示的类型II一致性点,由SchedSelIdx建立的NAL HRD参数同样足够来建立用于图C-1所示类型I
的一致性点的VCL HRD一致性。这是因为满足类型I一致性点数据流是满足类型II一致性点数据流的子集,同时
对于VBR情况下,CPB允许为空并保持空的状态,直到计划中下一个图像开始到达。比如,当类型II一致性点提
供NAL HRD参数时,此时类型II一致性点不仅满足x1的项目i或x项目(根据使用的简表)的项目i中简表一
致性所需的NAL HRD参数范围集,也满足x1的项目i或x项目h中简表一致性所需的VCL HRD参数范围
集,对于类型I一致性点,VCL HRD的一致性保证能满足在项目i的范围内。
对于一致的比特流,下述所有情况应均被满足:
— 对于每一与缓存周期SEI消息想关的访问单元n,n>0,有Δtg,90( n ) 参数,其规定如下:
Δtg,90( n ) = 90000 * ( tr,n( n ) − taf( n − 1 ) ) (C-14)
initial_cpb_removal_delay[ SchedSelIdx ]的取值受如下限制:
— 如果cbr_flag[ SchedSelIdx ]为0,
initial_cpb_removal_delay[ SchedSelIdx ] <= Ceil( Δtg,90( n ) ) (C-15)
— 否则(cbr_flag[ SchedSelIdx ]不为0,)
Floor( Δtg,90( n ) ) <= initial_cpb_removal_delay[ SchedSelIdx ] <= Ceil( Δtg,90( n ) ) (C-16)
注2 — 在每一图像的移除时间,在CPB中准确的比特数可能与被选择对HRD进行初始化的缓存周期SEI消息有
关。HRD可能由任一个缓存周期SEI参数初始化,不论选择哪一个缓存周期SEI消息来对HRD进行初始化,编码器
必须考虑到这些情况保证所有规定的限制必须被遵守。
— CPB溢出流规定为CPB里的比特总数大于CPB的大小,CPB不应溢出。
— CPB下溢流规定为tr,n(n)小于taf(n),当low_delay_hrd_flag等于0,CPB不应下溢。
— 图像从CPB移除的时间(从解码顺序中的第二幅图像开始),应满足tr,n(n)与tr(n)的限制,对比特流的简表与级别所述。
— 任一解码图像放入DPB中之后,DPB的填充度应小于或等于DPB大小,DPB的大小限制由附件A、附
件D与附件E中对比特流内的简表与级别规定。
— 当需要预测时,所有参考图像应在DPB中。每一图像在它DPB输出时间时均应在DPB中,除非它根本
就不在DPB中,或在输出前由C.2节中规定的某种过程移除。

— Δto,dpb(n)由等式C-13给出,它是输出顺序中一幅图像时间与之后下一幅图像输出时间之差,该值应满
足A.3.1中所述对于对比特流规定的简表与级别的限制。
-----解码一致性
与本建议书|国际标准相一致的解码器需满足以下要求。
假设VCL NAL 单元中的序列参数集与图像参数集,适当的缓存周期与图像定时SEI 消息或以比特流形式
(非VCL NAL 单元)或以本建议书|国际标准内未定义的外部方式,及时传送到解码器,如果解码器声称与某
一特定简表和级别相一致,那么它应该可以成功解码所有C.3节中为解码器一致性所规定的比特流。
解码器可以宣称满足的一致性类型有两种,输出定时一致性与输出顺序一致性。
为检查解码器的一致性,与C.3节规定的简表与级别一致的测试比特流通过假想流调度(HSS)发送至HRD
与被测解码器(DUT)。所有由HRD 输出的图像也应由DUT 输出,对于HRD 输出的每一幅图像,由DUT 输
出的样点的值应与HRD输出样点的值相等。
对于输出定时解码器一致性,HSS 操作如上所述,传送进度表只从SchedSelIdx 的值的子集中选取,对于
SchedSelIdx,比特率与CPB 的大小如附件A 中对规定简表与级别所描述的一样进行限制,或者带有插入的进度
表,如下文所述,对于插入的进度表,比特率与CPB 的大小如附件A 中对规定简表与级别所描述的一样进行限
制。同一传送进度表同时用于HRD与DUT。
当HRD 参数与缓存周期SEI 消息中带有大于0 的cpb_cnt_minus1 时,解码器应可以对比特流进行解码,比
特流由使用插入传送进度表的HSS操作传送,插入进度表的规定包括峰值速率r,CPB大小c(r),与起始CPB
移除延时delay ( f( r ) r )分别如下所规定:
α= ( r - BitRate[ SchedSelIdx − 1 ] ) ÷( BitRate[ SchedSelIdx ] − BitRate[ SchedSelIdx − 1 ] ), (C-17)
c( r ) = α * CpbSize[ SchedSelIdx ] + (1 −α)* CpbSize[ SchedSelIdx−1 ], (C-18)
f( r ) = α * initial_cpb_removal_delay[ SchedSelIdx ] * BitRate[ SchedSelIdx ] +
(1 −α) * initial_cpb_removal_delay[ SchedSelIdx − 1 ] * BitRate[ SchedSelIdx − 1 ] (C-19)
对于任何SchedSelIdx > 0与r,这样的BitRate[ SchedSelIdx − 1 ] <= r <= BitRate[ SchedSelIdx ],r与c(r)
在附件A所规定对于某简表或级别的最大比特速率范围之内。
注1 — 起始cpb_removal_delay[ SchedSelIdx ]可能因缓存周期不同而不同,需要重新进行计算。
对于输出定时解码器一致性,如上所述的HRD 会被使用,图像输出的定时(与第一比特传送时间相关)对
于HRD与DUT是相同的,为一个固定时延。
对于输出顺序解码器一致性,HSS 按照DUT 的要求传送比特流到DUT,意味着只有当DUT 需要更多比特
进行处理时,HSS才传送比特(按解码顺序)。
注2 — 这意味着对于该测试,DUT的编码图像缓存应该和最大访问单元的尺寸一样小。
使用如下所述的一个修改过的解码器,HSS 由一个进度表向HRD 传送比特流,此进度表在比特流中规定比
特率与CPB的大小,如附件A中所规定。图像输出顺序对于HRD与DUT应是一致的。
对于输出顺序解码器一致性,HRD CPB大小对于所选的进度表等于CpbSize[ SchedSelIdx ],DPB的大小等
于MaxDpbSize。HRD从CPB的移除时间等于最后一比特的到达时间,解码也立即开始。HRD的DPB操作如下
文所述。

----------DPB输出顺序操作
解码图像缓存包含帧缓存,每一帧缓存可能包含一个解码帧,一个解码补偿场对或一单独的(非成对)标记
为“用于参考”或为以后输出做保留(录像图像)的解码场。在HRD 初始化时,DPB 的填充度以帧为单位衡
量,设为0。以后步骤,当一访问单元从CPB移除时,都同时发生,并按照列出的顺序进行。
-----frame_num 里间隔的解码与“不存在”图像的存储
如果可行,frame_num 由解码处理过程检测到,“不存在”帧的必要数目按照等式7-21 的
UnusedShortTermFrameNum 值的产生推出,并按规定进行标记。帧缓存中包含一个帧或一补偿场对
或非成对场,这些内容标记为“不需输出”与“未用于参考”,此时帧缓存清空(没有输出),DPB的填充度减
去帧缓存清除的数目。每一“不存在”帧按如下所述存于DPB:
— 当没有空帧缓存(比如,DPB的填充度等于DPB的大小)时,排除处理过程将被重复
调用,直到有一个用于存储“不存在”帧的空的帧缓存。
— “不存在”帧存于空的帧缓存中,标记为“不需输出”,DPB的填充度加1。
----- 图像解码
主编码图像n进行解码并临时进行存储(不在DPB中)。
-----在当前图像可能插入前,从DPB中移除图像
在当前图像可能插入前,从DPB中移除图像,如下所述:
— 如果解码图像是一个IDR图像,应用如下过程:
— 所有DPB里的参考图像标记为“未用于参考”,
— 当IDR图像不是第一幅解码IDR图像,且从活动的序列参数集中导出的PicWidthInMbs值或
FrameHeightInMbs值或max_dec_frame_buffering的值与之前序列激活的序列参数集中的PicWidthInMbs
或FrameHeightInMbs或max_dec_frame_buffering的值不同时,no_output_of_prior_pics_flag可以通过
HRD推出为1,不需要考虑no_output_of_prior_pics_flag的值。
注 — 与HRD改变PicWidthInMbs或FrameHeightInMbs值相比,解码器应尝试更好地处理帧或DPB大小的变化。
— 当no_output_of_prior_pics_flag设为1或推断将为1时,所有的DPB中帧缓存清空,缓存中的图像不
输出,DPB填充度设为0。
— 否则(解码图像不为一IDR图像),调用解码参考图像标记处理过程.帧缓存包含一个
帧或一补偿场对或非成对场,这些内容标记为“不需输出”与“未用于参考”,此时帧缓存清空(没有输
出),DPB的填充度减去帧缓存清除的数目。
当当前图像包含值为5 的memory_management_control_operation,或者是no_output_of_prior_pics_flag 不等
于1且不会推断出为1的IRD图像时,进行下述步骤;
1.帧缓存包含一个帧或一补偿场对或非成对场,这些内容标记为“不需输出”与“未用于参考”,此时帧
缓存清空(没有输出),DPB的填充度减去帧缓存清除的数目。
2.所有DPB中非空帧缓存由重复调用的排除过程进行清除,DPB的填充度设为0。
----------当前解码图像标记存储
----- 在DPB里存储与标记一参考解码图像
当当前图像为一参考图像时,它如下所述存储于DPB中:
— 如果当前解码图像为补偿参考场对中的第二场(在解码顺序中),场对中的第一场仍在DPB中,当前
解码图像如第一场一样存在同一帧缓存中,并标记为“需要输出”。

— 否则进行如下操作。排除处理过程将被重
复调用,直到有一个用于存储“不存在”帧的空的帧缓存。
— 当前解码图像存储在空的帧缓存中,并标记为“需要输出”,DPB的填充度加1。
-----在DPB里存储与标记一幅非参考解码图像
当当前图像为非参考图像时,进行下述操作:
— 如果当前解码图像为一补偿非参考场对中的第二场,第一场仍在DPB中,当前解码图像与第一场存在
同一帧缓存中,并标为“需要输出”。
— 否则,进行重复进行下述操作,直到解码图像被裁切并输出或存于DPB中:
— 如果没有空的帧缓存(也就是DPB的填充度等于DPB的大小),进行如下操作。
— 如果当前图像没有低于DPB中标为“需要输出”的所有图像的PicOrderCnt( )值,执行
-----节所描述的排除过程。
— 否则(当前图像PicOrderCnt()值低于所有DPB里的标为“需要输出”图像),对当前图像
进行裁切,使用的裁切矩形在序列参数集里定义,经过裁切的图像进行输出。
— 否则(有空的帧缓存,比如DPB的填充度小于DPB的大小),当前解码图像存于空的帧缓存中,
标为“需要输出”,DPB的填充度减1。
----- 排除过程
在下述情况下调用排除过程:
— 没有空的帧缓存(比如,DPB的填充度等于DPB的大小),需要一个空的帧缓存存储“不存在”帧,

— 当前图像为一IDR图像,且no_output_of_prior_pics_flag不等于1,也不会等于1,如C.4.4节所述;
— 当前图像memory_management_control_operation等于5,如C.4.4节所述;
— 没有空的帧缓存(比如DPB的填充度等于DPB的大小),且需要一个空的帧缓存存储解码参考图像
(非IDR),
— 没有空的帧缓存(比如DPB的填充度等于DPB的大小),且当前图像不是非参考图像,不是补偿非参
考场对中的第二场,DPB中的图像按输出顺序先于当前非参考图像,图像标记为“需要输出”时,

则需要一个空的缓存存储当前图像。
排除过程包括如下步骤:
— 按如下条件进行选择图像或输出的第一个补偿参考场对:
— 选中的帧缓存包含的图像,具有DPB中所有标记为“需要输出”图像中最小的PicOrderCnt( )值。
— 如果帧缓存包含的补偿非参考场对的两场均标记为“需要输出”,且两场有相同的
PicOrderCnt(),补偿参考场的第一个作为首先输出的对象。
— 否则,如果帧缓存包含的补偿参考场对的两场均标记为“需要输出”,且两场有相同的
PicOrderCnt(),整个补偿参考场作为首先输出的对象。
— 否则,在帧缓存中有最小PicOrderCnt()值的图像最先输出。
— 如果一幅单独的图像作为最先排除,这图像用序列的序列参数集中规定的裁切矩形进行裁切,经
裁切的图像排除,这幅图像标记为“不需输出”。

— 否则,(一个补偿参考场对作为最先排除),补偿参考场对的两场均经裁切,裁切所用的矩形在序列
的序列参数集中规定,补偿参考场对中的两场裁切后同时排除,两场均标记为“不需输出”。
— 帧缓存中包括裁切后的图像或补偿参考场对,并允许进行排除,当下述任一个条件满足,帧缓存清
空,DPB的填充度减1。
— 帧缓存里包含一个非参考非成对场;
— 帧缓存里包含非参考帧;
— 帧缓存包含一个补偿非参考场对,此参考场对中两场均标为“不用作输出”;
— 帧缓存包含一个非成对参考场,标为“不用作参考”;
— 帧缓存包含一个参考帧,此参考帧中两场均标为“不用作参考”
— 帧缓存包含一个补偿参考场对,此参考场中两场均标为“不用于参考”与“不需要输出”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值