编码设备和编辑设备转让专利

申请号 : CN200780020436.5

文献号 : CN101461246B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田中俊启斋藤浩

申请人 : 松下电器产业株式会社

摘要 :

一种编码设备,包括:编码单元(740),用于使用多个可变长度码字组之一中包含的码字对输入数字信号进行编码;以及复用器(701),用于通过产生描述与流有关的特定信息的参数(如idr_pic_jd)、对参数进行编码、以及将其添加到编码单元的输出数据中,来产生流。在任意单个可变长度码字组中包含的码字的长度是相同的。复用器从多个组中选择出包含三个或更多个码字在内的一个可变长度码字组,并且使用从所选择的组中包含的码字中选择的一个码字对所述参数进行编码。

权利要求 :

1.一种编码设备,用于对输入数字信号进行编码以产生流,所述编码设备包括:编码单元,用于使用包含在多个码字组之一中的码字对输入数字信号进行编码,其中所述多个码字组中的每一个均包括可变长度码字;以及复用器,用于通过产生描述与流有关的特定信息的参数、对所述参数进行编码、以及将编码后的参数添加到编码单元的输出数据中,来产生所述流;

其中包含在任意单个码字组中的码字的长度是相同的;以及为了对在将两个流连接成一个流时需要被重写的特定参数进行编码,复用器从多个码字组中选择出包含三个或更多个码字在内的一个码字组,以及使用从所选择的码字组中包含的码字中选择的一个码字对所述特定参数进行编码。

2.根据权利要求1所述的编码设备,其中,所述流是根据H.264标准编码的视频信号,以及所述特定参数是idr_pic_id。

3.根据权利要求2所述的编码设备,其中,

编码单元产生通过对视频信号进行编码而得到的片数据,复用器通过产生针对所述片数据的报头并将所述报头添加到所述片数据中,来产生所述流,以及所述特定参数包含在所述报头中。

4.一种记录设备,用于对输入数字信号进行编码,并记录编码后的流,所述记录设备包括:编码单元,用于使用包含在多个码字组之一中的码字对输入数字信号进行编码,其中所述多个码字组中的每一个均包括可变长度码字;

复用器,用于通过产生描述与流有关的特定信息的参数、对所述参数进行编码、以及将编码后的参数添加到编码单元的输出数据中,来产生所述流;以及记录单元,用于将从复用器输出的流记录到记录介质中,其中包含在任意单个码字组中的码字的长度是相同的;以及为了对在将两个流连接成一个流时需要被重写的特定参数进行编码,复用器从多个码字组中选择出包含三个或更多个码字在内的一个码字组,并且使用从所选择的码字组中包含的码字中选择的一个码字对所述特定参数进行编码。

说明书 :

编码设备和编辑设备

技术领域

[0001] 本发明涉及一种编码设备,使用通过可变长度编码来嵌入信息的编码方法进行编码,以及涉及一种编辑设备,用于对所述编码设备产生的流进行编辑。

背景技术

[0002] 可变长度编码(VLC)是在源数据编码中使用的基本技术,通过根据特定数据源符号的相似性分配不同长度的码字,对数据进行压缩。例如,使用如图24所示的编码规则,将大于0的值(codeNum)转换为1、3、5、…比特的可变长度码字。注意,表示为xn,xn-1,…,x0的比特串部分是根据数据值(codeNum)变化的比特串的一部分。例如,将值(codeNum)1或2编码为3比特码字,将值7至14转换为7比特码字。因此,编码之后的码字的长度根据以VLC编码的数据值(codeNum)而变化。
[0003] VLC用在以MPEG为代表的运动图像编码标准中。更具体地,VLC所应用的目标可分类为:视频编码后的数据的语法(syntax)(如图像像素块的DCT系数和运动矢量)、以及报头的语法。随着在图像压缩技术中使用的编码工具变得更加通用和复杂,在报头中使用的语法类型也增加了,并且VLC越来越多地用于报头语法中以减小码尺寸。
[0004] H.264/AVC标准(ISO/IEC 14496-10)(参见ISO/IEC 14496-10,Advanced video coding for generic audio/visual services)也将VLC用于包括在序列参数集合(SPS)、图像参数集合(PPS)和片(slice)报头中的各种语法。
[0005] 图21和图23示出了SPS、PPS和片报头的语法。在这些图中,“描述符”ue(v)或se(v)表示VLC语法,其中ue(v)表示将大于0的值(codeNum)编码为1、3、5、…比特的VLC字(如图24所示),se(v)表示在首先将有符号值转换为codeNum(如图25所示)之后采用VLC编码(如图24所示)。
[0006] 下面,参考图26至图29来描述H.264字节流的配置。如图28所示,将图像编码数据存储在片数据(slice_data)中。片是被分成n部分(n≥1)的图像的一个片段,并且是一组宏块的集合。在图27所示的片层(slice_layer_without_partitioning_rbsp)中,将片数据与片头一起编码。将SPS、PPS和片层打包成图26所示的NAL单元(nal_unit)。在将包含SPS、PPS和片层在内的NAL单元复用成单个流时,将NAL单元打包成连接在单个字节流中的字节流NAL单元(byte_stream_nal_unit,以下称为“BNU”)。
[0007] 下面,参考图30描述利用视频编辑设备连接多个H.264字节流的过程。更具体地,图30示出了连接流A(150)中的子流a(153)与流B中的子流b(163)以产生比特流C(170)的过程。
[0008] 流A(150)包括:SPS 110的字节流NAL单元(SPS-BNU)151、PPS111的字节流NAL单元(PPS-BNU)152、以及将要与子流b(163)连接的场景的子流a(153)。子流a(153)和子流b(163)中的每一个均包含一个或更多个包括字节/NAL报头(例如,101)、片报头(例如,120)和片数据(例如,121)的集合。
[0009] 在该示例中,假设流A(150)和流B(160)包含IDR(瞬时解码刷新)图像,所有IDR图像的码尺寸在流A(150)与流B(160)中是相同的。还假设SPS和PPS处于字节流的开头。
[0010] H.264标准将idr_pic_id用作IDR图像标识符(ID)。如图23所示,idr_Pic_id存在于片报头中,并且包含VLC值。为了确保流兼容性,H.264标准要求将相邻IDP图像的图像的idr_pic_id设置为不同的值。
[0011] 基于前述假设,为了确保可读性和兼容性,通过在连接子流a(153)与子流b(163)的同时,将位于流连接处的图像中的所有片报头中所包含的idr_pic_id重写成相邻图像中的不同值,连接子流a(153)与子流b(163)的过程产生了新的字节流C。更具体地,在连接流之前,为流A(150)和流B(160)中的相邻图像中的每一个指定不同的idr_pic_id,并且还需要确保在连接流之后,也为位于流连接处的相邻图像指定不同的idr_pic_id。

发明内容

[0012] 为了保证位于两个流的连接处(以下还称作“接缝”)的、新出现的每个相邻图像中的idr_pic_id是不同的,必须在连接了流之后,立即重写位于接缝处的相邻图像中的idr_pic_id值。
[0013] idr_pic_id值是通过VLC获得的。当对一个IDR图像中的idr_pic_id值进行重写,以使该idr_pic_id与相邻IDR图像中的idr_pic_id不同时,idr_pic_id码字的长度可能在改变值之前或之后有所不同。这可能需要对跟随idr_pic_id的数据进行修改,并且过程变得越来越复杂。
[0014] 例如,如图31所示,为了将不同的idr_pic_id指定给位于记录于记录介质的流的连接处的相邻IDR图像,需要将地址0x80002处的idr_pic_id的码字011改成码字00101。因为在改变idr_pic_id之后码字00101比原始的idr_pic_id的码字011长2比特,所以还必须在重写过程中,将从地址0x80002开始的所有数据移位2比特。
[0015] 还必须将该比特移位过程应用于以线性地址对几比特长度的数据进行管理的所有记录介质,包括诸如半导体存储器之类的主记录介质、以及诸如硬盘驱动器之类的辅记录介质。
[0016] 如以上描述的,在对根据H.264标准编码的多个字节流进行连接时,必须对记录介质上的片报头中所包含的idr_pic_id进行重写,以保证兼容性和再现流的能力。然而,当必须将idr_pic_id重写为不同长度的码字时,必须运行以上描述的比特移位过程,并且必须重写数据区。重写数据区带来的问题是:在CPU功率有限或记录介质的存取速度较低的情况下,处理可能会花费很长时间。另一问题是:在期望对记录介质(如光盘介质)的重写进行限制的情况下,不必要地重写介质可能会缩短记录介质的使用寿命。对也包含在片报头中的pic_parameter_set的重写也可能会引起这些类似的问题。
[0017] 解决手段
[0018] 本发明旨在解决以上问题,并且目的是提供一种编码装置,例如,能够消除对符合H.264标准的字节流进行连接时的不必要数据重写,以及一种编辑设备,能够抑制连接字节流时的CPU处理负载和记录介质的重写次数。
[0019] 根据本发明的编码设备是用于对输入数字信号进行编码以产生流的设备。编码设备包括:编码单元,用于使用包含在多个码字组之一中的码字对输入数字信号进行编码,其中所述多个码字组中的每一个均包括可变长度码字;以及复用器,用于通过产生描述与流有关的特定信息的参数、对所述参数进行编码、以及将编码后的参数添加到编码单元的输出数据中,来产生所述流。包含在任意单个码字组中的码字的长度是相同的。复用器从多个码字组中选择出包含三个或更多个码字在内的一个码字组,以及使用从所选择的码字组中包含的码字中选择的一个码字对所述参数进行编码。
[0020] 根据本发明的编辑设备是用于对包含可变长度编码后的参数在内的第一和第二流进行连接的设备。所述编辑设备包括:判决单元,用于将第一流中包含的编码后的第一参数与第二流中包含的编码后的第二参数相比较,判定是否将要改变第一参数和第二参数中的至少一个;以及替换单元,用于在判决单元判定将要改变第一参数和第二参数中的至少一个的情况下,将第一和第二参数中的所述至少一个替换成与为第一和第二参数而指定的码字相同长度的另一码字。
[0021] 因为即使改变了参数也不改变参数的码长,本发明的编码设备实质上消除了对包含可变长度编码后的参数在内的流(如H.264标准字节流)进行连接时的不必要数据重写操作。
[0022] 进一步根据本发明,如果在连接流时,必须对包含可变长度编码后的参数在内的报头进行重写,并且通过使用具有与被重写的原始报头相同码长的码字能够保证兼容性,则本发明的编辑设备将位于流连接处的报头中的码字替换成相同长度的码字。相反,如果相同长度的码字不可用,则编辑设备重写报头,使得特定数据单元的数据长度不变。因此,本发明提供了一种编辑设备,该编辑设备通过重写报头而不引起不必要的数据重写,在编辑和连接流时减小了CPU的负载,并且减少了记录介质写入操作的次数。
[0023] 通过结合附图,参考以下说明书和权利要求书,本发明的其他目的和优点以及对本发明的充分理解将变得更加清楚和显而易见。

附图说明

[0024] 图1是本发明第一实施例中的视频编码电路的方框图;
[0025] 图2描述了在本发明第一实施例中对idr_pic_id的编码;
[0026] 图3描述了在本发明第一实施例中连接流的过程;
[0027] 图4示出了本发明第一实施例中的视频记录设备;
[0028] 图5是本发明第一实施例中的视频记录设备的方框图;
[0029] 图6示出了本发明第二实施例中的、用于存储和管理图像参数集合的表格;
[0030] 图7描述了在本发明第二实施例中对pic_parameter_set_id的编码;
[0031] 图8描述了在本发明第二实施例中连接流的过程;
[0032] 图9描述了在本发明第二实施例中连接流的过程;
[0033] 图10示出了根据本发明第三实施例的视频编辑设备;
[0034] 图11是根据本发明第三实施例的视频编辑设备的方框图;
[0035] 图12示出了根据本发明第三实施例的、在视频编辑设备中显示的编辑窗口的示例;
[0036] 图13是本发明第三实施例中的流连接过程的流程图;
[0037] 图14是本发明第三实施例中的SPS和PPS读取和产生步骤的流程图;
[0038] 图15是本发明第三实施例中的ID重写过程的流程图;
[0039] 图16描述了本发明第三实施例中的ID重写过程;
[0040] 图17描述了本发明第三实施例中的ID重写过程;
[0041] 图18示出了本发明第三实施例中的FAT文件系统的卷结构;
[0042] 图19示出了本发明第三实施例中的FAT文件系统的数据结构;
[0043] 图20描述了本发明第三实施例中将流作为文件记录到记录介质中;
[0044] 图21示出了H.264标准的SPS语法;
[0045] 图22示出了H.264标准的PPS语法;
[0046] 图23示出了H.264标准的片报头语法;
[0047] 图24示出了对ue(v)描述符进行可变长度编码的编码规则;
[0048] 图25示出了对se(v)描述符进行可变长度编码的编码规则;
[0049] 图26示出了H.264标准中NAL单元的语法;
[0050] 图27示出了H.264标准中片层的语法;
[0051] 图28示出了H.264标准中片数据的语法;
[0052] 图29示出了H.264标准中字节流NAL单元的语法;
[0053] 图30描述了本发明第一实施例的基本字节流连接过程;
[0054] 图31描述了根据现有技术的流编辑。

具体实施方式

[0055] 以下,参考附图描述本发明的优选实施例。
[0056] 实施例1
[0057] 1、视频编码设备的配置
[0058] 本实施例以下描述了一种视频编码设备,其在对使用IDR(瞬时解码刷新)图像编码的多个字节流进行连接时,控制字节流,以便不必将作为IDR图像标识符(ID)的idr_pic_id重写为不同码长的码字。
[0059] 图1示出了根据本发明这一实施例的、包含在视频编码设备中的视频编码电路。该视频编码电路700包括报头发生器和复用电路701、DCT电路710、逆DCT电路711、量化电路720、逆量化电路721、量化步长选择电路730、熵编码电路740、帧内预测电路750、帧间预测电路760、运动预测电路761、以及去块效应滤波器电路770。在仅对IDR图像编码时,不需要运动预测电路761和帧间预测电路760。
[0060] 2、视频编码电路的操作
[0061] 接下来,描述视频编码电路700的操作。
[0062] 首先,描述对帧内宏块的编码,其中能够仅使用包含在相同帧中的数据来对所述帧内宏块进行解码。通常,宏块是16x16的像素块,并包括多个块,所述块作为DCT和帧内预测编码的单位。
[0063] 针对输入数字视频信号790中将要编码的宏块(“目标宏块”)与由帧内预测电路750预测的目标宏块之间的每个像素,计算像素差值,得到16x16的像素差值块。
[0064] DCT电路710对差值块应用DCT处理。通常,将该处理应用于4x4或8x8的像素块,并且输出频率分量转换系数。将转换系数输入到量化电路720中,并进行量化。然后,由熵编码电路740对量化后的转换系数进行编码。在H.264标准中,熵编码使用上下文自适应可变长度编码(CAVLC)或上下文自适应二进制算术编码(CABAC)。将熵编码后的码尺寸输入到量化步长选择电路730。
[0065] 量化步长选择电路730对量化电路720的量化步长值加以控制,以使得码尺寸趋近于目标码尺寸。在量化之后,利用逆量化电路721和逆DCT电路711对所述系数进行解码,并且输入至帧内预测电路750。帧内预测电路750针对随后编码的相邻宏块,产生预测的像素值。
[0066] 接下来,描述使用帧间预测对帧间宏块的编码。运动预测电路761对当前编码的块(该块是用于运动补偿的单位)和基准帧的像素应用匹配处理,并且计算产生最小误差的矢量。计算在由帧间预测电路760根据运动预测的结果而输出的目标宏块的预测像素值与输入数字视频信号790中的目标宏块的像素值之间的误差,并且将所述误差输入至DCT电路710。在输入至DCT电路710之后的处理基本上与针对帧内宏块编码的相同。然而,在帧间编码中,通常,去块效应滤波器电路770用于减小可视块失真。
[0067] 报头发生器和复用电路701产生片报头,将片报头添加到由熵编码电路740编码的片数据中,并且将结果作为字节流NAL单元791输出。此时,报头发生器和复用电路701将idr_pic_id合并到片报头中。
[0068] 在根据本发明实施例的视频编码电路700中,报头发生器和复用电路701在向图像添加idr_pic_id时,根据图24所示的编码规则来指定码字。图24所示的编码规则将数据值(codeNum)分成多个范围(组),在每个范围(组)中码字长度是相同的,然而在一个范围(组)中的码字的长度与另一个范围(组)中的码字长度不同。例如,针对范围3至6中的所有数据值的码字是5比特长,然而针对范围7至14中的所有数据值的码字是7比特。
[0069] 更具体地,为了添加idr_pic_id,本发明的这一实施例中的视频编码电路700(更具体地,报头发生器和复用电路701)选择一个范围(其中在多个codeNum值的范围中存在3个或更多个码字),选择包含在所选范围中的多个码字之一,并且将选择的码字指定给idr_pic_id。例如,参考图24,选择codeNum范围(每个包括5比特或更大比特长度的码字)之一。也就是,选择与“001x1x0”、“0001x2x1x0”、和“00001x3x2x1x0”、…相对应的codeNum范围之一。如果选择了数据值3至6(001x1x0)的范围,则将idr_pic_id的值指定为3、4、5或6。
[0070] 图2描述了在选择了codeNum3~6的范围以指定idr_pic_id时、指定idr_pic_id的示例。在产生流A(150)和流B(160)时,视频编码电路700根据以下方程确定为第i个(其中i是大于0的整数)IDR图像的片报头指定的idr_pic_id的值:
[0071] idr_pic_id=3+(i%3)
[0072] 其中%是返回余数的算子。
[0073] 在H.264标准中,要求相邻IDR图像中的idr_pic_id是不同的。如图24所示,如果codeNum是3至6的值,则idr_pic_id的码字是5比特长。因此,如果使用相同范围中的码字来重写idr_pic_id的值,则码字长度将不会改变。因此,如果使用该编码方法来连接图2中所示的子流a(153)和子流b(163),并且位于流连接处的相邻图像#m+3和#n将具有相同的idr_pic_id,于是可以容易地将idr_pic_id改变成不同的值。在该示例中,图像#m+3和图像#n具有相同的idr_pic_id(该示例中是3),图像#n+1的idr_pic_id是4。因此,将图像#n的idr_pic_id变成5。通过使用codeNum范围(其中存在3个或更多个相同长度的码字)中的值,能够将图像#n的idr_pic_id重写为与相邻图像#m+3和#n+1的idr_pic_id不同的、相同长度的值(该示例中是5)。注意,尽管图2中的子流a(153)和子流b(163)都是4个图像长,然而显而易见的是,能够以相同的方式重写idr_pic_id,而与子流中图像的个数无关。
[0074] 本发明的这一实施例中的视频编码电路700不需要使用与用于针对所有编码后的流指定idr_pic_id的codeNum范围相同的codeNum范围。仅在诸如图像的水平像素计数、垂直像素计数、以及比特率之类的参数相同的情况下,或在连接有显著影响(significant)的情况下,才需要选择相同的范围。例如,能够以2个不同的比特率(高比特率和低比特率)来对内容进行编码,其中高比特率流是主要内容,而低比特率流用于视频预览。因为在该情况下不需要连接低比特率流,所以可以使用idr_pic_id=i%2,以使低比特率内容的码长最小,而将idr_pic_id=3+(i%3)用于高比特率内容。
[0075] 3、记录设备
[0076] 图4示出了具有上述视频编码电路700的视频记录设备。该视频记录设备600利用所包含的视频编码电路700对通过镜头691和麦克风692输入的视频和音频信息进行编码,并将编码后的流记录到插入驱动器690中的记录介质500上。
[0077] 图5是视频记录设备600的方框图。如图5所示,视频记录设备600具有镜头691、麦克风692、成像元件687、A/D转换电路688和689、音频处理电路686、CPU 681、存储器682、非易失性存储器683、总线控制器685和视频编码电路700。CPU 681控制视频记录设备600的操作。非易失性存储器683存储由CPU 681运行的程序。总线控制器685控制记录介质500的输入/输出。
[0078] 由镜头691将视频信息光聚焦在成像元件687上。成像元件687将成像信息转换成电信号。A/D转换电路688将电信号转换成数字视频信号。然后,视频编码电路700将数字视频信号编码成H.264标准字节流,并将H.264标准字节流记录到记录介质500上。然后,可以在记录完成之后,由编辑设备(稍后描述)对记录到记录介质500上的字节流进行编辑。
[0079] 4、结论
[0080] 如上所述,本发明的这一实施例提供了一种视频编码设备,能够减小在对使用IDR图像编码的多个字节流进行连接时、编辑期间的处理器负载。
[0081] 在假设所有图像都是IDR图像的前提下,描述了本发明这一实施例,然而本发明不限于此。显而易见的是,在以上描述的假设(例如,当位于两个流的连接处的相邻图像是IDR图像时)不成立的情况下,也可以使用本发明。
[0082] 在前述实施例的描述过程中还假设所有图像的码尺寸相同或能够保持对虚拟基准解码器的缓冲器约束,然而视频编辑也可以采用以下操作来满足缓冲器约束。
[0083] *如果在流连接之前,在子流a(153)结束之后的缓冲器占用率VA比刚好在子流b(163)开始之前的缓冲器占用率VB大,则可以在子流a(153)结束之后立即插入(VA-VB)字节的trailing_zero_8bits(填充比特),使得缓冲器占用率变成VB。
[0084] *如果VA小于VB,则例如,可以对处于子流a(153)末尾的几幅图像进行重新编码,使得缓冲器占用率变成VB。
[0085] 该方法使得本发明的构思可用,而与以上假设无关。
[0086] 本发明的这一实施例还假设SPS或PPS仅位于字节流的开始,然而PPS不需要处于字节流的开始,并且如果子流b(163)的SPS不与子流a(153)的SPS相同,则子流b(163)的SPS也不需要处于开始。
[0087] 通过示例,使用对idr_pic_id的编码描述了本发明,然而本发明可以用于对包括SPS、PPS和片报头在内的任一参数的VLC编码语法进行编码。这一实施例还假设出现字节流,然而复用NAL单元的实施例并不受此限制。
[0088] 实施例2
[0089] 下述本实施例描述了一种视频编码设备,用于对多个字节流进行连接和编码,而不需要重写作PPS(图像参数集合)的标识符的pic_parameter_set_id。这一实施例在连接多个字节流(其中对多个PPS进行编码)时尤为有用。视频编码设备的基本配置与上述本发明第一实施例中的相同。
[0090] 在本发明的这一实施例中,报头发生器和复用电路701产生和管理PPS内容与pic_parameter_set_id(“PPSID”)值的组合。更具体地,根据本发明这一实施例,如果对于由视频编码设备产生的流中的所有编码后的PPS而言,语法是不同的,则编码过程为每个PPS指定不同的PPSID。
[0091] 图6是报头发生器和复用电路701中用于产生和管理PPS的表格。当PPS语法值不同时,指定不同的PPSID。如果创建了pic_init_qp_minus26=10且除了pic_init_qp_minus26以外的语法均与PPSID=0的PPS相同的PPS,则添加PPSID=1的新PPS。类似地,如果创建了chroma_qp_index_offset=3且除了chroma_qp_index_offest以外的语法均与ID=0的PPS相同的,则添加PPSID=2的PPS。如果创建了pic_init_qp_minus26=10、chroma_qp_index_offset=3且除了pic_init_qp_minus26和chroma_qp_indax_offset以外的语外均与PPSID=0的PPS相同的PPS,则所建的PPS与PPSID=0、1和2的PPS不同,因此添加PPSID=3的PPS。这样,对PPS管理表格进行更新,以便为PPS指定唯一的PPSID。视频编码设备的报头发生器和复用电路701可以参考PPS管理表格(如图6所示)指定唯一的、不重复的PPSID值。
[0092] 接下来,参考图7描述报头发生器和复用电路701指定PPSID的过程。如果需要PPSID=0和1的2个不同PPS以在流A(150)中进行编码,则输出2个PPS,并且输出要在片报头中引用的PPSID值。类似地,对于编码流B(160),如果需要PPSID=0、2和3的3个不同的PPS,则输出3个PPS,并且输出要在片报头中引用的PPSID值。重要的是,在流A(150)和流B(160)中,始终唯一地定义PPSID值。
[0093] 图8描述了使用视频编辑设备对图7中的子流a(153)和子流b(163)进行连接的示例。首先,输出连接流之后所需要的所有PPS。这是因为,如果使用根据本发明这一实施例的视频编码设备,则片报头中的PPSID是唯一的。因此,能够连接流而不用重写可变长度编码后的PPSID值。因为将PPSID重写为不同长度码字的处理负载与流长度成比例地增加,所以本发明因为不需要重写PPSID参数而变得尤为有效。
[0094] 在图7和图8中,在SPS之后立即输出PPS,然而如图9所示,可以紧接在包含第一个PPSID的图像之前插入PPS。如以下在第四实施例中描述的,并不总是将唯一的PPSID指定给由如图6所示的、这一实施例的视频编码设备编码的所有流。仅在诸如图像的水平像素计数、垂直像素计数和比特率之类的参数相同的情况下,或在连接有显著影响的情况下,才需要选择唯一的PPSID。
[0095] 如上所述,本发明的这一实施例提供了一种视频编码设备,能够减小在对包含多个编码后的图像参数集合在内的多个字节流进行连接时的处理器负载。
[0096] 实施例3
[0097] 本发明的这一实施例描述了一种视频编辑设备,能够对IDR图像进行编码,而不复制位于接缝处的图像的idr_pic_id,并且能够在对采用IDR图像编码的多个字节流进行连接时,使记录介质上要进行值重写的区域最小。
[0098] 1、视频编辑设备的配置
[0099] 图10示出了根据本发明的这一实施例的视频编辑设备。使用计算机502实施该视频编辑设备501。计算机502具有用于访问包含视频数据在内的记录介质500的内部驱动器509或外部驱动器591。例如,记录介质500是诸如存储卡、光盘、或可移动硬盘驱动器之类的计算机可读介质。能够利用网络电缆594或无线地将计算机502连接到网络,以发送和接收视频数据。还将显示器592和诸如鼠标和键盘之类的输入设备593连接到计算机502,以便由用户来进行视频编辑。
[0100] 图11是视频编辑设备501的方框图。视频编辑设备501具有CPU581、存储器582、用于存储程序和操作系统(0S)的硬盘驱动器583、以及连接这些和其它设备的内部总线584。硬盘驱动器583存储程序和操作系统。视频编辑设备501还具有用于连接记录介质
500的总线控制器585、用于通过网络输入和输出视频数据的网络控制器588、用于连接显示器592的图形控制器587、以及用于连接输入设备593的输入设备控制器586。
[0101] 例如,可以使用ATA(AT附加)或USB(通用串行总线)接口来连接记录介质500。将OS和程序存储在硬盘驱动器583上,并且由CPU 581根据需要将其载入存储器582并运行。利用在OS下运行的适当程序来实现视频编辑设备501的视频编辑功能。
[0102] 图12示出了在视频编辑设备501的显示器592上显示的窗口屏幕的示例。显示器592显示用于视频编辑的时间线571、用于音频编辑的时间线572、用于显示再现的视频内容的预览窗口573、以及用于显示捕获的视频内容的列表的库窗口574。用户使用输入设备593选择在库窗口574中显示的多个视频内容流,并将其拖入视频时间线571以输出(呈现)完成的文件,来连接字节流。
[0103] 对该过程的以下描述假设将图30所示的子流a(153)和子流b(163)存储在诸如存储器582、硬盘驱动器583、记录介质500、或由图11所示的网络控制器588连接的网络驱动器之类的记录介质中。在这样的记录介质上产生连接了子流a(153)和子流b(163)的字节流C(170)。因此,可以通过简单地重写记录介质上的目录管理信息,以便连接子流a(153)和子流b(163),理想地产生字节流C(170)。
[0104] 本发明的这一实施例涉及用于重写idr_pic_id的ID重写过程。按照以下方式进行重写idr_pic_id的过程。在对使用IDR图像编码的多个字节流进行连接时,ID重写过程改变与接缝相邻的图像的图像ID(idr_pic_id),从而使idr_pic_id值不相同,并且可以通过重写记录介质上尽可能小的区域,使其不同。
[0105] 2、流连接过程
[0106] 接下来,参考图13中的流程图描述根据本发明这一实施例的、视频编辑设备的流连接过程。
[0107] 首先,执行读取和产生SPS和PPS的过程(S11)。在该示例中,读取流A(150)的SPS-BNU 151和流B(160)的SPS-BNU 161,以产生字节流C(153)的SPS-BNU 171。如果字节流C(153)的SPS-BNU 171与字节流A(150)的SPS-BNU 151或流B(160)的SPS-BNU 161相同,则不需要在记录介质上创建新的SPS-BNU 171。类似地,读取流A(150)的PPS-BNU152和流B(160)的PPS-BNU 162,以产生字节流C(170)的PPS-BNU 172。
[0108] 然后,读取子流a(153)中最后一幅图像的ID(id_A1ast)(步骤S12),读取子流b(163)中的第一幅图像的ID(id_B1)(步骤S13),以及读取子流b(163)中的第二幅图像的ID(id_B2)(步骤S14)。
[0109] 可以按照以下方式获得流ID(也就是idr_pic_id)。
[0110] 首先,在流中搜索start_code_prefix_one_3bytes(图29),并确定包含在NAL单元(图26)中的nal_unit_type的值,以找出包含片层的NAL单元。可以通过解译片层的片报头,来找出idr_pic_id。
[0111] 然后,重写ID(S15)。在相邻图像中的idr_pic_id相同的情况下,该过程重写idr_pic_id。然后,更新目录管理信息(步骤S16)。该过程将SPS、PPS、子流a(153)、和子流b(163)连接成单个流,然后结束。
[0112] 还更新目录管理信息,以将SPS和PPS添加到流A中除了子流a(153)的其他部分(150)中,以及添加到流B(160)中除了子流b(163)的其他部分中,以呈现字节流。
[0113] 接下来,参考图14中的流程图描述读取和产生SPS和PPS的过程(图13中的步骤S11)。
[0114] 读取流A(150)的SPS110和流B(160)的SPS(S111,S112)。然后,比较两个SPS,以确定是否能够共享这两个SPS(S113)。按照以下步骤进行上述确定。
[0115] 首先,如果两个SPS是相同的字节串,则确定能够共享这两个SPS。其次,如果仅这两个SPS的seq_parameter_set_id不同,则确定能够共享SPS,并将seq_parameter_set_id设置为两个SPS中任一SPS的seq_parameter_set_id值。在任何其它情况下,确定不能共享这两个SPS。如果确定能够共享SPS,则输出公共SPS(S114)。如果确定不能够共享,则输出流A的SPS和流B的SPS(S119,S120)。
[0116] 读取流A(150)的PPS和流B(160)的PPS(S115,S116)。比较这两个PPS,以确定是否能够共享这两个PPS(S117)。按照以下方式进行上述确定。
[0117] 首先,如果两个PPS是相同的字节串,则确定能够共享这两个PPS。然而,如果在步骤S113中,SPS的seq_parameter_set_id值不同,则PPS绝对不会是相同的字节串。其次,如果仅这两个PPS的pic_parameter_set_id不同,则确定能够共享这两个PPS,并且将pic_parameter_set_id设置为两个PPS中任一PPS的pic_parameter_set_id值。在任何其它情况下,确定不能够共享这两个PPS。如果确定能够共享PPS,则输出公共PPS(S118)。如果确定不能共享,则输出流A的PPS和流B的PPS(S121,S122)。
[0118] 如果流A中除了子流a(153)的其他部分(150)和流B(160)中除了子流b(163)的其他部分仍作为字节流保留在记录介质上,则必须将根据记录介质上的最终流个数而确定的SPS和PPS的个数输出至记录介质500。
[0119] 接下来,参考图15中的流程图描述重写图像ID(图13中的步骤S15)的过程。
[0120] CPU 581比较子流b中的第一幅图像的ID(id_B1)和子流a中最后一幅图像的ID(id_A1ast),并且确定它们是否重叠(相同)(S151)。如果ID不重叠,则ID重写过程结束。如果ID重叠,则按照以下描述继续进行操作。
[0121] 确定是否存在具有与id_B1相同并且与id_A1ast或id_B2不同的码长的ID(S152)。例如,使用如图24所示的VLC,如果id_A1ast=7,id_B1=7并且id_B2=10,则值8、9、11、12、13、14是具有与id_B1相同并且与id_A1ast或id_B2不同的码长的ID(码字)。如果这样的ID可用,则将id_B1重写为所述ID(S157)。如果这样的ID不可用(如当id_A1ast=1,id_B1=1并且id_B2=2时),则可以改变片报头的长度。在这种情况下,将包含在codeNum范围中的、与id_Alast和id_B1不同的码字指定给id_B1。
[0122] 然后,在子流b(163)的第一幅图像中包含的所有片中,确定entropy_coding_mode_flag是否等于1并且cabac_alignment_one_bit大于或等于1(S153)。在使用上下文自适应二进制算术编码(CABAC)(也就是entropy_coding_mode_flag=1)时,如果在字节单元中片报头的末尾未对齐,则在片数据的开始处存在图28所示的一个或更多比特的cabac_alignment_zero_bit。如果在子流b中的第一幅图像中包含的所有片cebac_aligment_one+bit≥1,则减小1比特的cabac_alignment_one_bit,使得能够采用比现有码长长一个比特的码字来替换id_B1,而不移位较的片数据。
[0123] 如图16所示,将id_B1重写为尺寸为(当前的id_B1+1比特的码长)的ID,将直到刚好位于cabac_alignment_one_bit之前的片报头120移位1比特(S159)。因此,尺寸为(当前的id_B1的码长+1比特)的ID将不再与id_Alast或id_B2重复。在这种情况下,删除了一个cabac_alignment_one_bit。注意,在步骤S158中,可以采用比当前码字长N比特(其N是≤7的自然数)的码字来替换id_B1。在这种情况下,删除该片中N个单位的cabac_alignment_one_bit。
[0124] 如果步骤S153返回“否”,则确定图像中trailing_zero_8bits的个数是否大于或等于图像中片的个数(S154)。trailing_zero_8bits位于图29所示的NAL单元(nal_unit)的末尾之后,因此在每个片层的末尾,存在0个或更多个trailing_zero_8bits。如图17所示,如果在子流b(163)中的第一幅图像中trailing_zero_8bits的个数大于或等于图像中片的个数,则将id_B1重写为尺寸为(当前的id_B1的码长+8比特)的ID(S160),将trailing_zero_8bits之前的片层数据移位8比特(=1字节)(步骤S161)。在图17所示的示例中,如果减少紧随片#1的一个trailing_zero_8bits,则片#1的总码长不变。
[0125] 即使没有紧随片层的trailing_zero_8bits(如在片#1至#3中),也可以将片#1移位1字节,将片#2移位2字节,将片#3移位3字节,以及将片#4移位4字节,并可以减少紧随片#4的4个单位的trailing_zero_8bits。因为该过程不改变图像的码长,所以对下游图像没有影响。
[0126] 再次参考图15,如果图像中trailing_zero_8bits的个数小于图像中片的个数,则增大图像的码长。步骤S154采用尺寸为(当前的id_B1的码长+8比特)的ID替换id_B1,然而码长并不限于该长度。将码字的尺寸设置为(当前的id_B1的码长+8比特)有助于简化该过程,这是因为可以以字节为单位简单地移位片层数据。将片层数据移位步骤S155中码长的增加值(S156)。该过程继续进行,直到使用trailing_zero_8bits吸收了码长的增加值,或继续进行直到子流b(163)的末尾。也可以将码字的增加值设置为8比特(=1字节)的整数倍。
[0127] 作为示例,使用簇管理信息,对图13的步骤S16中的目录管理信息更新进行描述。
[0128] 簇管理信息记录了与簇间的链接有关的信息,在所述簇中,将每个文件的数据存储在盘上,与FAT文件系统中的文件分配表(FAT)相类似。簇是用于对文件(流)存储区进行管理的存取单位。一个文件(流)的记录区是一组簇的集合。
[0129] 图18示出了FAT文件系统的卷结构。该图示出了区域结构,在所述区域结构中,按照FAT文件系统,对设置在诸如记录介质500之类的物理驱动器800内部的e逻辑驱动器801进行格式化。文件分配表804是如图19所示的关于簇编号143的表格,并且表明了记录在用户数据区806中的簇单元的数据部分144间的链接。图19示出了构成了单个文件145的簇3、4和7的示例。
[0130] 当重写ID(参数)时,仅针对具有所述ID的簇重写数据。在本发明实施例中,在目录管理信息更新过程(步骤S16)中,在文件分配表805中改变与SPS、PPS、子流a(153)、以及子流b(163)的记录区域相对应的簇之间的链接,以将SPS、PPS、子流a(153)、以及子流b(163)连接成单个文件。
[0131] 参考图20,对下述情况进行描述:视频编码设备将用于这一实施例中的流作为文件记录到诸如硬盘、光盘之类的记录介质中。
[0132] 如图20所示,将流A(150)和流B(160)记录到记录介质500上,使得针对每个图像的数据的开始与对文件系统记录单元(本实施例中的簇141)的开始对齐。在以下情况下,本发明的这一实施例尤为有效:由于不需要重写连接后的流,从而将子流a(153)的末尾与子流b(163)的开始按照对齐的方式进行记录。如果在由视频编码设备对视频进行编码时,图像数据块的末尾未与簇边界142对齐,则添加无效数据的填充字节(trailing_zero_8bits)131。采用以上描述的方法来连接记录的子流a(153)和子流b(163)。
[0133] 与簇141对齐的单元不限于图像。也可以使用片、GOP(图像组)、或能够借以连接子流的其它单元。
[0134] 图20示出了包含在一个图像中的2个片,然而显然可以在任意个数的片的情况下来使用本发明。在图像的开始与簇边界对齐的情况下,描述了本发明的这一实施例,然而也可以在GOP或其它流编辑单元的开始与簇边界对齐的情况下来使用本发明。连接子流a(153)与子流b(163)的接缝也可以与簇边界对齐。
[0135] 3、结论
[0136] 如上所述,在连接包含可变长度编码的参数(idr_pic_id)在内的流(如H.264标准字节流),并且使用与该参数的可变长度码字相同码长的码字以保证互换性时,这一实施例对位于接缝处的图像的报头中的参数的码字进行重写,并且在相同长度的码字不可用的情况下,使重写数据所需的处理器负载最小。这可以提供一种视频编辑设备,能够对使用IDR图像编码的多个字节流进行连接,而在相邻图像中idr_pic_id不重复,并且能够使记录介质上需要进行值重写的区域最小。能够使值重写区域最小化的原因在于:
[0137] 1)在能够利用相同长度的码字重写id_B1时(S157),仅需要针对包含在图像中的所有片来重写idr_pic_id。
[0138] 2)当相同长度的码字不可用时(S158),可以使用cabac_alignment_one_bit,而不必重写较大的片数据。
[0139] 3)如果必须重写片数据(S155),则可以通过将id_B1移位8比特,以字节为单位来移位片数据。
[0140] 本发明的这一实施例描述了对子流b(163)中的第一幅图像的ID进行重写的情况,然而显而易见的是,也可以代替地使用相同的过程来重写子流a(153)中的最后一幅图像的ID。如果使用子流a(153)能够减轻ID重写过程(S15)的负载,则对子流a(153)中的最后一幅图像的ID进行重写是优选的。
[0141] 在使用trailing_zero_8bits的情况下描述了本发明,然而也可以使用cabac_zero_word来代替trailing_zero_8bits,或者可以使用包含NAL单元在内的系统流中的其他无效数据。
[0142] 以上,作为示例,使用了根据H.264标准来连接流的过程,然而也本发明也可以用于对可变长度编码后的语法进行重写的任何其他视频编辑设备。这里,将具有如图11所示的CPU 581和存储器582以及在视频编辑设备上运行的OS和程序的设备看作视频编辑设备,然而显而易见的是,执行上述连接过程的装置并不局限于这种硬件配置。
[0143] 实施例4
[0144] 本发明的这一实施例是对第三实施例进行修改后得到的视频编辑设备,以在连接多个字节流时,正确地重写pic_parameter_set_id,并且使记录介质上需要进行值重写的区域最小。该视频编辑设备的操作基本上与图13至图15的流程图中描述的第三实施例的操作相同,不同之处在于将idr_pic_id参数替换为pic_parameter_set_id。
[0145] 本发明这一实施例所应用的一个极端示例是:描述特定图像参数的PPS在子流a(153)与子流b(163)之间彼此不同,但使用了相同的pic_parameter_set_id。这样,在图14所示的SPS/PPS读取和产生过程中的步骤S117确定不能够共享,步骤S112输出具有改变了流B的PPS中的pic_parameter_set_id的PPS。因为改变了PPS的pic_parameter_set_id,所以也必须改变子流b(163)中的所有图像的片报头中所引用的pic_parameter_set_id。在不能重写为具有不同值的相同长度码字的情况下,改变子流b(163)的所有片中的可变长度编码后的pic_parameter_set_id的处理可能需要移位整个流。本发明使移位过程最小化,并因而是极为有用的。
[0146] 如上所述,本发明的这一实施例提供了一种视频编辑设备,能够在连接多个字节流时,正确地重写pic_parameter_set_id,并使记录介质上需要进行值重写的区域最小。
[0147] 有利地,本发明可以用在诸如数字便携式摄像机和记录器之类的视频编码设备中,以及可以用在对数字便携式摄像机和记录器所记录的视频流进行编辑的视频编辑设备中。
[0148] 尽管参考附图,结合本发明的优选实施例,对本发明进行了描述,然而需要注意的是,对于本领域技术人员而言,多种改变和修改都是显而易见的。这样的改变和修改应该被理解为包含在由权利要求所限定的本发明的范围之内,除非其脱离该范围。本申请涉及2006年6月2日提交的日本专利申请No.2006-154264,将其全部内容一并在此作为参考。