视频的图像输出管理方法及装置、传输视频码流的方法
【技术领域】
[0001]本发明属于视频解码技术领域,特别涉及一种视频的图像输出管理方法及装置、传输视频码流的方法。
【背景技术】
[0002]在视频解码的过程中,如何管理解码图像的输出,一直是一个重要的问题,合理的图像输出方法应使得图像按照显示顺序的大小从小到大依次输出,同时还应该在合理的时间输出,即需要使用这一帧的数据的时候再输出。由于实际情况中,解码器解码一帧的时间是无法准确估计的,因此在图像输出管理的方法中,都假设解码器为理想的瞬时解码器。
[0003]在H.264和HEVC标准中,图像的输出是由SEI picture timing()中的pic_dpb_output_de 1 ay, pic_dpb_output_du_de 1 ay 以及 decoding_unit_info ()中的 pic_spt_dpb_output_du_delay管理的。三个语法元素都用于表示一个解码图像进入解码图像缓冲区之后经过多少个时钟周期可以输出。通过该管理机制,能使解码图像按照显示顺序,在合理的时间点上输出,但是缺点在于每帧都需要传输一个输出延时,这将会是一个不小的开销。
[0004]AVS2的⑶文档上也提出一种管理图像输出的方法。将解码图像缓冲区分成参考图像缓冲区和重排序图像缓冲区,其中重排序缓冲区用于存放未输出的帧:
[0005](1)从码流中获取序列输出第一巾贞时已经解码的巾贞数output_reorder_delay ;
[0006](2)解码完一巾贞后:如果序列已解码巾贞数大于output_reorder_delay,则输出重排序图像缓冲区中显示顺序最小一帧
[0007](3)在视频序列结束码之后,依照显示顺序的大小从小到大输出未输出的帧。
[0008]该方法的特点为,解码一帧输出一帧,其中当存在解码顺序与显示顺序不一致时,输出的帧并不等于解码的那一帧。当没有发生跳帧时,该方法能很好地管理图像输出。当发生跳帧时这样的输出方式与实际应用不符合。
[0009]以图1中的G0P = 8的编码码结构为例,序列的output_reorder_delay = 3:
[0010]图2为按照AVS2的⑶文档的图像输出方法的输出结果。
[0011]由于第9帧其实是没有编码的。输出的时候,必须将第9帧的位置空出来,将B10及显示顺序在其之后的帧都延时1个时间点输出,而不是将B10帧紧接在P8帧之后。
[0012]针对H.264,HEVC虽然图像输出管理灵活度高,但编码代价也高以及AVS2虽然编码代价低,但是无法很好地管理跳帧时图像输出的问题。本发明提出一种编码代价低,但是能正确管理跳帧和非跳帧情况下图像输出的方法。
【发明内容】
[0013]针对H.264,HEVC虽然图像输出管理灵活度高,但编码代价也高以及AVS2虽然编码代价低,但是无法很好地管理跳帧时图像输出的问题,本发明提出一种编码代价低,但是能正确管理跳帧和非跳帧情况下图像输出的方法及装置。本发明的第一目的在于提出一种视频的图像输出管理方法,其包括:
[0014](1)从码流中确定当前解码的序列的输出延时的帧数D ;
[0015](2)根据帧率和当前解码的序列的输出延时的帧数D确定第N个图像输出检测时间点t(N),N> = 1 ;假设解码器为理想的瞬时解码器;序列的第一个时间输出点t(l)等于序列第D帧解码完的时间;序列第η个图像输出检测时间点t(n) = t(n - 1) +帧率倒数,η>1 ;
[0016](3)令序列下一个要输出的巾贞的显示顺序P0I_output的初始值P0I_output_initial等于序列第一巾贞的显示顺序POI (1)减1 ;
[0017](4)在第 N 个图像输出检测时间点 t(N), N> = 1,令 P0I_output = P0I_output_initial+N ;如果解码图像缓冲区中显示顺序最小的未输出的帧的显示顺序小于等于Ρ0Ι_output,则输出该图像;否则不输出任何图像。
[0018]本发明的第二目的在于提出一种视频的图像输出管理装置,其至少包括序列的输出延时的帧数确定单元,图像输出检测时间点生成单元,序列下一个要输出的帧的显示顺序计算单元,图像输出控制单元;其中,
[0019](1)序列的输出延时的帧数确定单元用于从码流中确定当前解码的序列的输出延时的帧数D ;
[0020](2)图像输出检测时间点生成单元根据帧率和当前解码的序列的输出延时的帧数D生成第N个图像输出检测时间点t(N),N> = 1 ;假设解码器为理想的瞬时解码器;序列的第一个时间输出点t(l)等于序列第D帧解码完的时间;序列第η个图像输出检测时间点t (n) = t (η - 1) + 中贞率倒数,η>1 ;
[0021](3)序列下一个要输出的帧的显示顺序计算单元用于计算序列下一个要输出的帧的显示顺序P0I_output ;P0I_output初始化的值P01_output_initial为序列第一巾贞的显示顺序P0I(1)减1 ;在第N个图像输出检测时间点t(N),N> = 1,令P0I_output = Ρ0Ι_output_initial+N ;
[0022](4)图像输出控制单元用于管理在第N个图像输出检测时间点t(N)解码图像如何输出,N> = 1 ;如果解码图像缓冲区中显示顺序最小的未输出的帧的显示顺序小于等于P0I_output,则输出该图像;否则不输出任何图像。
[0023]本发明的第三目的在于提出一种视频码流,码流中传输了当前解码的序列的输出延时的帧数D。
[0024]本发明的有益效果在于不需要很多语法元素,编码代价低,但是能正确管理跳帧和非跳帧情况下图像输出。
【附图说明】
[0025]图1为一种G0P = 8的编码结构示意图;
[0026]图2为一种G0P = 8的编码结构按照AVS2的⑶文档的图像输出方法的输出结果不意图;
[0027]图3为本发明实施例提供的一种视频的图像输出管理方法示意图;
[0028]图4为本发明实施例提供的一种视频的图像输出管理装置的组成结构示意图。
【具体实施方式】
[0029]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图及实施例,对本发明作进一步详细说明。
[0030]本发明的主要思想在于提供一种编码代价低,但是能正确管理跳帧和非跳帧情况下图像输出的方法。
[0031]实施例1:
[0032]如图3所示,本实施例提供一种视频的图像输出管理方法,包括:
[0033]步骤101:确定当前解码的序列的输出延时的帧数D ;
[0034]具体而言,可以从码流中获取确定当前解码的序列的输出延时的帧数D。例如,在AVS2的CD文档中。下列语法元素即为当前解码的序列的输出延时的帧数D。
[0035]图像重排序延迟output_reorder_delay
[0036]5位无符号整数。由于图像编解码顺序与显示顺序不一致带来的重排序延迟,以解码图像为单位。由于一幅解码图像的显示时间和progressive_sequence、progressive_frame> repeat_first_field、picture_structure等语法元素的值有关,所以这段时间的绝对长度是不固定的,但是在这段时间内显示的解码图像数是固定的。low_delay值为‘0’时,OutputReorderDelay 的值等于 output_reorder_delay 的值;low_delay 值为 ‘1’ 时,OutputReorderDelay 的值为 0。OutputReorderDelay 的值不应大于 MAX_RE0RDER_BUFFER_SIZE的值。
[0037]步骤102:根据帧率和当前解码的序列的输出延时的帧数D确定第N个图像输出检测时间点t(N) ;N> = 1 ;
[0038]具体而言,假设解码器为理想的瞬时解码器;
[0039]序列的第一个时间输出点t(l)等于序列第D帧解码完的时间;
[0040]序列第η个图像输出检测时间点t (n) = t (n_l) +巾贞率倒数;η>1 ;
[0041 ] 步骤103:令序列下一个要输出的巾贞的显示顺序P0I_output的初始值Ρ0Ι_output_initial等于序列第一巾贞的显示顺序POI (1)减1 ;