CN102461173A - 解码装置、解码方法以及编辑装置 - Google Patents

解码装置、解码方法以及编辑装置 Download PDF

Info

Publication number
CN102461173A
CN102461173A CN2009801600823A CN200980160082A CN102461173A CN 102461173 A CN102461173 A CN 102461173A CN 2009801600823 A CN2009801600823 A CN 2009801600823A CN 200980160082 A CN200980160082 A CN 200980160082A CN 102461173 A CN102461173 A CN 102461173A
Authority
CN
China
Prior art keywords
piece
processing
decoding
section
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2009801600823A
Other languages
English (en)
Other versions
CN102461173B (zh
Inventor
高田庸介
松崎知式
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
InterDigital VC Holdings Inc
Original Assignee
Thomson Licensing SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thomson Licensing SAS filed Critical Thomson Licensing SAS
Publication of CN102461173A publication Critical patent/CN102461173A/zh
Application granted granted Critical
Publication of CN102461173B publication Critical patent/CN102461173B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种装置(10,30),包括:提供图像数据或音频数据的编码数据的源(22),该编码数据包括能够独立解码的多个元数据,多个元数据的每一个包括至少一个块;第一处理部件(31),用于生成标识所述至少一个块当中首先要处理的第一块的块信息;多个第二处理部件(32a,32b),用于根据与该块信息相对应的元数据中的解码处理的次序生成标识第一块后面的块的块信息;多个解码部件(33a,33b),用于并行地解码参照所生成块信息当中的一个未引用块信息识别的块;以及存储部件(22),用于存储解码块和形成与该块相对应的解码元数据。还公开了包括这样的装置的编辑装置。

Description

解码装置、解码方法以及编辑装置
技术领域
本发明涉及编码数据的解码装置和解码方法,并且尤其涉及多个处理器并行运行的编码数据的解码处理。
背景技术
当CPU执行程序时存在作为处理单位的进程和线程。多个进程可以通过使用操作系统的多任务功能并行地运行。这被称为多个进程并行运行以便进行处理的多进程。但是,由于在各个进程之间基本上不共享存储器,所以当进行需要访问同一存储器上的数据的处理时,在多进程中处理效率是低下的。
相反,一个程序可以生成多个线程并且使各自线程并行运行。这被称为其中多个线程并行运行以便进行处理的多线程。当进行需要访问同一存储器上的数据的处理时,因为在各个线程之间共享存储器,所以在多线程的情况下处理效率较高。通过将各个线程指定给多个CPU来进行处理,使处理效率进一步提高。
引用列表
专利文献
PTL1:日本待审专利申请,第一次公开第2000-20323号
PTL2:日本待审专利申请,第一次公开第2008-118616号
发明内容
要解决的技术问题
在下文中,认为使用CPU资源进行处理的N个处理单元高效地用于通过将一个处理划分成可以独立执行的M个处理单位来处理它。这里,假设N和M都是整数,N>=1和M>=1。假设M个处理单位是MPEG2的切片。假设N个处理单元与N个处理器(CPU核心)一一对应。
处理单元可以通过尽可能均等地将处理指定给所有处理单元直到完成所有切片的处理而得到高效使用。另外,通过减少处理单元的空闲时间可以缩短总处理时间。这里,假设在切片处理期间,由于I/O处理(输入/输出处理)等,处理单元不进入空闲状态。
显然,在M=<N的情况下,使M个切片与N个处理单元的M个处理单元一一对应以便在每个处理单元中处理每个切片是高效的。
当M充分大于N时,如果事先知道每个切片的处理时间或可以在一定程度上精确预测每个切片的处理时间,则为了使处理时间尽可能相等,可以将M个切片划分成数量与处理单元的数量相等的N个群,并且使N个群一对一地与N个处理单元相联系。这样的话,可以像M=<N的情况那样,在每个处理单元中处理每个切片。
但是,当M充分大于N时,例如,如果M不是N的整数倍,如果事先不知道每个切片的处理时间,或如果不能精确预测每个切片的处理时间,则难以高效地将切片指定给处理单元。在这样的情况下,当处理由多个切片配置的数据时,存在不能达到足够高处理速度的问题。
因此,本发明的目的是提供既新颖又有用的解码装置、解码方法以及编辑装置。本发明的特定目的是提供当解码编码数据时提高处理速度的解码装置、解码方法以及编辑装置。
对问题的解决方案
按照本发明的一个方面,提供了解码图像数据或音频数据的编码数据的装置,该装置包括:提供所述编码数据的源,所述编码数据包括能够独立解码的多个元数据,多个元数据的每一个包括至少一个块;第一处理部件,用于生成标识至少一个块当中首先要处理的第一块的块信息;多个第二处理部件,用于根据与该块信息相对应的元数据中的解码处理的次序生成标识第一块后面的块的块信息;多个解码部件,用于并行地解码参照所生成块信息当中的一个未引用块信息识别的块;以及存储部件,用于存储解码块和形成与该块相对应的解码元数据。
按照本发明,多个解码部件将配置元数据的块用作处理单位地解码元数据。在解码的时候,解码参照一个未引用块信息识别的块。另外,在与块信息相对应的元数据中根据解码处理的次序生成标识第一块后面的块的块信息。由于这个原因,每个块按照块信息以预定处理次序得到解码。这样,通过将配置元数据的块用作处理单位,与将元数据用作处理单位的情况相比,可以降低一些解码部件因每个解码部件轮流等待处理,因此未将要处理的对象提供给它而空闲的可能性。于是,减少了整个解码部件的总空闲时间。其结果是,提高了使用整个解码部件的效率。因此,可以在解码编码数据时提高处理速度。
按照本发明的另一个方面,提供了解码图像数据或音频数据的编码数据的方法,该方法包括如下步骤:在一个处理器中生成标识至少一个块当中首先处理的一个块的块信息,该至少一个块配置包括在编码数据中的多个元数据的每一个,该元数据能够被独立解码,将与该块相对应的元数据中的解码处理的次序赋予该块;在多个处理器中并行地解码参照一个所生成未引用块信息识别的块;在多个处理器中根据解码处理的次序并行地生成标识属于由解码块配置的元数据的随后块的块信息;以及重复解码步骤和生成标识随后块的块信息的步骤,直到所有块都得到解码。
按照本发明,多个处理器将配置元数据的块用作处理单位地解码元数据。在解码的时候,解码参照一个未引用块信息识别的块。然后,生成标识属于由解码块配置的元数据的随后块的块信息。由于这个原因,每个块按照块信息以预定处理次序得到解码。这样,通过将配置元数据的块用作处理单位,与将元数据用作处理单位的情况相比,可以降低一些解码部件因每个解码部件轮流等待处理,因此未将要处理的对象提供给它而空闲的可能性。于是,减少了整个解码部件的总空闲时间。其结果是,提高了使用整个解码部件的效率。因此,可以在解码编码数据时提高处理速度。
本发明的有益效果
按照本发明,可以提供当解码编码数据时提高处理速度的解码装置、解码方法以及编辑装置。
附图说明
图1是例示按照本发明第一实施例的解码装置的配置的方块图;
图2是例示MPEG-2的切片和宏块的图;
图3是例示按照本发明第一实施例的解码装置的功能配置的图;
图4是例示将块指定给每个工作处理器的状况的图;
图5A是例示按照本发明第一实施例的主处理器的解码处理的流程图;
图5B是例示按照本发明第一实施例的工作处理器的解码处理的流程图;
图6是例示按照本发明第一实施例的工作处理器的另一种解码处理的流程图;
图7是例示切片和块的例子的图;
图8是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图;
图9是例示队列状态的图;
图10是例示加速比R与每个切片的块数K之间的关系的曲线图;
图11是例示切片和块的例子的图;
图12是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图;
图13是例示队列状态的图;
图14是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图;
图15是例示队列状态的图;
图16是例示切片和块的例子的图;
图17是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图;
图18是例示队列状态的图;
图19是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图;
图20是例示队列状态的图;
图21是例示切片和块的例子的图;
图22是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图;
图23是例示队列状态的图;
图24是例示按照本发明第二实施例的编辑装置的硬件配置的方块图;
图25是例示按照本发明第二实施例的编辑装置的功能配置的图;
图26是例示按照本发明第二实施例的编辑装置的编辑屏幕的例子的图;以及
图27是例示按照本发明第二实施例的编辑方法的流程图。
具体实施方式
在下文中,将根据附图描述按照本发明的实施例。
{第一实施例}
本发明的第一实施例是解码编码图像数据的解码装置和解码方法的例子。在如下特例中,假设按照第一实施例的解码装置和解码方法根据MPEG-2进行编码图像数据的解码处理地加以说明。
图1是例示按照本发明第一实施例的解码装置的配置的方块图。
参照图1,解码装置10包括执行解码处理的多个CPU 20和21、存储编码图像数据的RAM 22、存储CPU 20和21执行的程序的ROM 23、和将CPU20和21、RAM 22和ROM 23相互连接的总线24。
CPU 20和21将记录在ROM 23中的程序装入RAM 22中,并执行解码处理。尽管CPU 20和21的每一个含有一个处理器(CPU核心),但可以将CPU 20和21的至少一个配置成含有两个或更多个处理器的CPU模块。解码装置10含有的处理器的数量可以是2个或更多个的任何数量。
RAM 22存储,例如,编码图像数据。
编码图像数据包括作为形成图像数据的元素的多个切片。一个切片由多个块配置,以块为单位解码。为了使说明简单些,将切片和块定义如下。也就是说,该切片是MPEG-2的切片。另外,该块是MPEG-2的宏块。
图2是例示MPEG-2的切片和宏块的图形。
参照图2,在MPEG-2中,屏幕1000由切片1100配置,每个切片1100具有16行宽度。切片1100由16行×16个像素的宏块1200配置。
在第一实施例中,以形成切片的块为单位将解码处理指定给处理单元。一个块的数据大小小于一个切片的数据大小。通过以块为单位将解码处理指定给处理单元,将解码处理指定给处理单元变得比以前更高效。在下文中,为了使说明简单些,假设只使用编码帧的I帧(帧内)。注意,如下说明可以类似地推广到P(预测)帧和B(双向预测)帧的解码处理。
图3是例示按照本发明第一实施例的解码装置的功能配置的图形。
参照图3,解码装置10起解码处理单元10的作用。CPU 20通过装入RAM22中的程序起主处理器31、工作处理器32a、和切片解码器33a的作用。CPU21通过装入RAM 22中的程序起工作处理器32b、和切片解码器33b的作用。
主处理器31执行开始每个切片的块的解码处理所需的处理。尽管在图3中将主处理器31指定给CPU 20,但也可以将主处理器31指定给CPU 21。工作处理器32a和32b将块指定给切片解码器33a和33b,并且使切片解码器33a和33b执行指定块的解码处理。
切片解码器33a和33b执行工作处理器32a和32b指定的块的解码处理。每个工作处理器和每个切片解码器存在一一对应关系。也就是说,工作处理器32a与切片解码器33a存在对应关系,将块指定给切片解码器33a,并且使切片解码器33a执行指定块的解码处理。另外,工作处理器32b与切片解码器33b存在对应关系,将块指定给切片解码器33b,并且使切片解码器33b执行指定块的解码处理。尽管在本例中假设切片解码器是用软件实现的,但也可以用硬件实现。
RAM 22具有队列34、切片缓冲器35、视频存储器36、切片背景37、和计数器38。
将包装块存储在阵列34中。包装块包括有关要处理的块的信息。编码切片存储在切片缓冲器35中。将解码切片存储在视频存储器36中。将有关切片的解码处理的状态的信息存储在切片背景37中。具体地说,有关切片的解码处理的状态的信息包括有关切片的代码的开始位置的信息、和有关切片的输出目的地的视频存储器36上的位置的信息。存储在计数器38中的数值在开始解码处理时被初始化,并且每当完成每个切片的解码处理时加以更新。
更具体地说,切片解码器33a和33b按如下进行解码处理。将有关切片的代码的开始位置的信息、和有关切片的输出目的地的视频存储器36上的位置的信息赋予切片背景37,并且初始化切片背景37。切片解码器33a和33b按照赋予的切片背景37,从切片的第一块开始每次一个地依次解码这些块,并且将解码块输出到视频存储器36。每当解码了切片的一个块时,切片解码器33a和33b就更新切片背景37。
<形成切片的块>
尽管MPEG-2的切片是可以独立解码的数据,但除了切片的第一块之外,属于相同切片的块(宏块)具有如下三种相关性。
(1)DC预测:从按栅格(raster)次序正好在当前块之前的块中预测当前块的DC成分。
(2)量化尺度:当使用与按栅格次序正好在一个块之前的块的量化尺度相同的量化尺度时,可以省略该块的量化尺度。
(3)代码的开始位置:除非解码了前面块的所有代码,不能确定某个块的代码的开始位置。
将DC预测、量化尺度、和代码的开始位置存储成切片背景。
为了解码编码流的每个切片,需要包括在MPEG首标(序列首标、画面首标等)中的切片共有的信息(色度二次取样、DC精度、量化矩阵等)。为了使说明简单些,假设在解码切片之前分析这个信息,并且隐性地将该信息赋予切片解码器。
每个切片的代码的开始位置由流中的切片首标传信。通过从流中找出切片首标,就可以获得每个切片的代码的开始位置。但是,在进行解码处理之前,不能事先知道切片中的块的代码的开始位置。
在本发明的第一实施例中,将切片S划分成K个块。将划分一个切片S获得的K个块称为S0/K,S1/K,...,和S(K-1)/K。注意,可以选择任何整数作为块数K,只要大于等于1就行,但最好是考虑到如下各点。
尽管可以使用将切片划分成块的任何方法,但有必要适当确定划分宽度。由于划分宽度与一个块的处理时间有关,如果划分宽度太大,则难以均等地将处理指定给各自工作处理器。相反,如果划分宽度太小,则会增加由访问队列、存储和恢复切片的处理状态(切片背景)、切片处理的高速缓冲未命中等引起的额外开销。
<块(包装块)的相关性>
在形成一个切片S的K个块S0/K,S1/K,...,S(K-1)/K之间存在相关性(顺序性)。该相关性意味着对两个块之一的处理要在开始处理另一个块之前完成。将相关性表达成S0/K→S1/K→...S(K-1)/K。Sk/K→S(k+1)/K(k=0,...,K-1)指示块Sk/K的处理在开始处理块S(k+1)/K之前完成。
包装块含有有关每个切片S的块的处理的相关性的信息,尤其包括标识要处理的块的信息。当从队列34中取出每个切片S的包装块Wk/K时,执行如下处理。
在0=<k<K-1的情况下:处理块Sk/K。然后,将与接着要处理的块S(k+1)/K有关的包装块W(k+1)/K加入队列中。
在k=K-1的情况下:处理块Sk/K,并且完成切片S的解码处理。
在解码处理的初始状态下,生成每个切片的第一包装块W0/K,并且将它存储在队列34中。工作处理器32a和32b从队列34中取出切片S的包装块Wk/K,进行包装块Wk/K指定的切片S的块Sk/K的处理,然后将与切片S的下一个块S(k+1)/K的处理有关的包装块W(k+1)/K加入队列中。这样就保证了切片S的块Sk/K的处理在开始处理块S(k+1)/K之前完成的相关性。
<队列控制>
图4是例示将包装块指定给每个工作处理器的状况的图。参照图4,将等待处理的包装块放置在队列34中,并且工作处理器32a和32b从队列34中取出包装块,并且处理取出的包装块。
在显示在图4中的例子中,队列34可以存储三个包装块。当将一个包装块加入队列34中时,将该包装块加入由包装块形成的直线的末端。另外,当从队列34中取出一个包装块时,取出由包装块形成的直线的首端上的包装块。但是,可以将优先级与包装块相联系,可以按与包装块相联系的优先级的降序取出存储在队列34中的包装块。图4示出了在三个包装块A,B和C存储在队列34中的状态下取出处在包装块直线首端上的包装块A并由工作处理器32a处理取出的包装块A的状况。
当多个工作处理器同时访问队列34以便从队列34中取出包装块或将包装块加入队列34中时,该访问是相互排斥的。也就是说,一次只允许一个工作处理器访问,其它工作处理器不能访问队列34。通过这种控制,由于两个或更多个工作处理器不能从队列34中取出相同包装块并处理该包装块,所以保持了队列34的状态的一致性。
<处理块的优先级>
通过将优先级的指数赋予划分切片获得的块,以及当在队列34中存储着每一个对应于多个切片的每一个的块时优先处理优先级较高的块,将处理指定给工作处理器32a和32b往往更高效。在本发明的第一实施例中,定义了三种优先级P0,P1和P2。将每种优先级指定给每个块。
优先级P0是基于处理切片中的块的进度比的指数。在方程(1)中将块Sk/K的优先级P0(Sk/K)定义成包括块Sk/K的随后块的处理时间与整个切片S的处理时间的比。
[数学公式1]
P 0 ( S k / K ) = &Sigma; j = k K - 1 T ( S j / K ) T ( S ) . . . ( 1 )
在方程(1)中,T(Sj/K)是块Sj/K的处理时间,和T(S)是整个切片S的处理时间。实际上,即使T(Sj/K)和T(S)都未知,如果可以在一定程度上精确预测该比,也可以计算优先级P0。方程(2)等效于方程(1)。
[数学公式2]
P0(Sk/K)=1-(progress ratio)  …(2)
方程(2)指示优先处理进度比低的切片的块。假设各个块的处理时间都相同,当已经完成了K个块当中包括块S0/K到块Sk-1/K的k个块的处理时,将进度比表达成k/K。于是,从方程(2)中获得由方程(3)定义的优先级P0
[数学公式3]
P0(Sk/K)=1-k/K  …(3)
优先级P1是基于切片中的未处理块的处理时间的指数。在方程(4)中将块Sk/K的优先级P1(Sk/K)定义成包括块Sk/K的随后块的处理时间。
[数学公式4]
P 1 ( S k / K ) = &Sigma; j = k K - 1 T ( S j / K ) . . . ( 4 )
在方程(4)中,T(Sj/K)是块Sj/K的处理时间。
当T(Sj/K)未知时,可以从,例如,已经完成了处理的块的处理时间中预测T(Sj/K)。方程(4)指示优先处理(预测)剩余处理时间长的切片的块。
优先级P2是基于将与一个块相对应的包装块加入队列34中的定时的指数。在方程(5)中将块Sk/K的优先级P2(Sk/K)定义成将与块Sk/K相对应的包装块加入队列34中的时间tk/K
[数学公式5]
P2(Sk/K)=tk/K  …(5)
通过按照方程(5)优先进行与最后处理的块所属的切片相同的切片的块的处理,提高了高速缓冲效率以及提高了处理速度。
当一个块的划分宽度(一个块的处理时间)大到一定程度并在整个切片中存在相同优先级P0的多个块时,通过引入,例如,优先级P1和P2,可以更均等地将块的处理指定给工作处理器32a和32b。
图5A是例示按照本发明第一实施例的主处理器31的解码处理的流程图。
参照图5A,主处理器31执行处理S10。处理S10包括下面所述的步骤S100,S101,S105,S110,S115,S116,S120和S125。
首先,在步骤S100中,按照一个场景或片段的解码处理是否已完成的确定结果将处理分支。
当一个场景或片段的解码处理还未完成时,在步骤S101中,主处理器31在形成一个场景或片段的一个帧中选择要处理的切片。
然后,在步骤S105中,主处理器31将与要处理的切片的数量相同的数值存储在计数器38中。
然后,在步骤S110中主处理器31生成每个切片的第一包装块。此时,生成数量与切片的数据相同的包装块。
让切片背景包括在生成的包装块中。在切片背景中包括有关存储要解码的切片的代码的切片缓冲器35上的位置的信息、有关切片的输出目的地的视频存储器36上的位置的信息、包装块所属的切片的解码处理的进度比、和优先级。
切片缓冲器35上的位置指示要解码的切片的块的开始位置。视频存储器36上的位置指示存储解码块的位置。
进度比像,例如,(解码块的数量)/(包括在切片中的所有块的数量)那样计算出来。可替代地,进度比可以像(解码块的代码长度的累计值)/(包括在切片中的所有块的代码长度总和)那样计算出来。
用于计算进度比的包括在切片中的所有块的数量或包括在切片中的所有块的代码长度总和要在开始整个切片的解码处理之前存储在切片背景37中。每当解码一个块时,就更新解码块的数量或解码块的代码长度的累计值,并将其存储在切片背景37中。
将优先级定义成1减去进度比获得的数值。这个优先级等效于优先级P0。在本例中,只使用优先级P0,但除了优先级P0之外,也可以使用优先级P1和/或优先级P2
在步骤S110中,由于每个切片的进度比是零,所以与每个切片的第一包装块相联系的优先级是1。当从队列34中取出每个切片的第一包装块时,按放入队列34的次序取出每个包装块。
然后,在步骤S115中,主处理器31将生成的包装块放入队列34中。
然后,在步骤S116中,主处理器31等待来自工作处理器32a和32b的指示在步骤S101中选择的切片的解码处理已完成的通知。
当工作处理器32a和32b通知在步骤S101中选择的切片的解码处理已完成时,该处理转到步骤S120。在步骤S120中,按照一个帧的所有切片的解码处理是否都已完成的确定结果将处理分支。如果随后要进行其它切片的解码处理,则再次执行从步骤S101开始的处理。如果一个帧的所有切片的解码处理都已完成,则再次执行从步骤S100开始的处理。
当在步骤S100中已完成一个场景或片段的解码处理时,在步骤S125中,主处理器31生成数量与工作处理器32a和32b的数量相同的完成包装块,并且将它们放入队列34中。由于指定完成的信息包括在,例如,完成包装块中,所以可以将完成包装块与在步骤S110中生成的包装块区分开。在将完成包装块放入队列34中之后,主处理器31就完成处理S10。
图5B是例示按照本发明第一实施例的工作处理器32a和32b的解码处理的流程图。
参照图5B,工作处理器32a和32b分别执行处理S20a和S20b,并且工作处理器32a和32b并行地执行处理S20a和S20b。处理S20a包括下面所述的步骤S200,S205,S206,S210,S215,S220,S225,S235,S240,S245和S250。由于处理20b与处理S20a相同,所以省略详细流程的例示。
首先,尽管未示出,但当在队列34中没有包装块时,工作处理器32a和32b就一直等待到包装块被加入队列34中。
当在队列34中存在包装块时,在步骤S200中,工作处理器32a和32b从队列34的首端中取出包装块。
随后,工作处理器32a和32b检验在步骤S200中从队列34中取出的包装块是否是完成包装块。如果在步骤S200中从队列34中取出的包装块是完成包装块,则在步骤S206中,工作处理器32a和32b进行诸如释放工作处理器本身使用的RAM 22的区域的完成处理,并完成处理S20a和S20b。
如果在步骤S200中从队列34中取出的包装块不是完成包装块,则在步骤S210中,工作处理器32a和32b使切片解码器33a和33b进行从队列34中取出的包装块所指的待处理块的解码处理。
具体地说,在步骤S210中,进行如下处理。让切片背景包括在包装块中。如上所述,在切片背景中包括有关存储要解码的切片的代码的切片缓冲器35上的位置的信息、和有关切片的输出目的地的视频存储器36上的位置的信息。工作处理器32a和32b将这样的信息段赋予切片解码器33a和33b。
切片解码器33a和33b以位或字节为单位从切片缓冲器35中读取编码切片的数据,并进行读取数据的解码处理。当该块的解码处理完成时,切片解码器33a和33b将解码块的数据存储在视频存储器36中并更新切片背景37。
由工作处理器32a和32b赋予切片解码器33a和33b的有关切片的输出目的地的视频存储器36上的位置的信息指示与帧中的切片的位置和切片中的块的位置相对应的视频存储器36上的位置。切片解码器33a和33b将解码块的数据存储在前述信息所指的位置中。当包括在形成一个帧的所有切片中的所有块的解码处理都完成时,存储在视频存储器36中的块形成与每个编码切片相对应的解码切片。
然后,在步骤S215中,工作处理器32a和32b根据切片背景37计算解码块所属的切片的进度比和优先级。如上所述,进度比像,例如,(解码块的数量)/(包括在切片中的所有块的数量),或(解码块的代码长度的累计值)/(包括在切片中的所有块的代码长度总和)那样计算出来。优先级像1减去进度比获得的数值那样计算出来。
然后,在步骤S220中,按照切片的最后包装块是否已处理的确定结果将处理分支。切片的最后包装块是否已处理的确定可以使用进度比的数值来进行。也就是说,如果进度比小于1,则切片的最后包装块还未处理。相反,如果进度比是1,则切片的最后包装块已处理。
当切片的最后包装块已处理时,在步骤S225中,工作处理器32a和32b将计数值的数值减1。当多个工作处理器同时访问计数器38时,该访问是相互排斥的。
然后,在步骤S230中,工作处理器32a和32b检验计数器38的数值。每当每个切片的最后块被解码时,在步骤S225中,就将在步骤S105中设置成与切片的数量相同的数值的计数器38的数值减1。于是,如果计数器38的数值不是0,则存在解码处理还未完成的切片,因此再次执行从步骤S200开始的处理。另外,如果计数器值变成零,则所有切片的包装块的处理都已完成,因此在步骤S250中,工作处理器32a和32b通知主处理器31在图5A的步骤S101中选择的切片的解码处理已完成。然后,再次执行从步骤S200开始的处理。
当在步骤S220中确定切片的最后包装块还未处理时,在步骤S235中,工作处理器32a和32b生成包括标识在步骤S210中解码的块后面的块(其属于与在步骤S210中解码的块所属的切片相同的切片的块)的信息的包装块。
让切片背景包括在生成的包装块中。这个切片背景包括从解码处理之后更新的切片背景37中获得的有关存储要解码的切片的代码的切片缓冲器35上的位置的信息、有关切片的输出目的地的视频存储器36上的位置的信息、和在步骤S215中计算的包装块所属的切片的解码处理的进度比以及优先级。
然后,在步骤S240中,工作处理器32a和32b将生成的包装块放入队列34中。
然后,在步骤S245中,工作处理器32a和32b按与各自包装块相联系的优先级的降序排列包括在步骤S240中加入队列34中的包装块的队列34内的包装块。然后,再次执行从步骤S200开始的处理。
包括切片的一个完整帧的编码图像数据按如下解码。例如,假设一个帧由U个切片形成,并从帧的顶端开始依次将1,2,...,U的序号赋予每个切片。以V(V=<U)个切片或更小的切片作为一个单位执行解码处理。例如,选择第1到第V切片的V个切片作为要处理的对象(对应于图5A的步骤S101),并按照显示在图5A中的流程图加以处理。在V个切片的解码处理完成之后,选择第(V+1)到第2V切片的V个切片作为要处理的对象(对应于图5A的步骤S101),并按照显示在图5A中的流程图加以处理。当剩余切片的数量变成V或更小时,选择所有剩余切片作为要处理的对象(对应于图5A的步骤S101),并按照显示在图5A中的流程图加以处理。如上所述,一个完整帧的编码图像数据得到了解码。
在进行编码运动图像数据的解码处理的情况下,当一个完整帧的编码图像数据的解码处理已完成时,开始与下一个帧有关的整个帧的编码图像数据的解码处理。上述处理是可执行处理的一个例子,因此不局限于上述的处理。例如,由于可以独立地执行各自切片的解码处理,所以未必将连续排列在帧内的切片作为单位来执行解码处理。
图6是例示按照本发明第一实施例的工作处理器32a和32b的另一种解码处理的流程图。
参照图6,按照第一实施例的另一种解码处理未使用优先级。这一点不同于显示在图5B中的前流程图。于是,当从队列34中取出包装块时,按放入队列34中的次序取出每个包装块。在图6中,将相同步骤号赋予与显示在图5B中的处理相同的处理,因此下文省略对它们的说明,只描述与显示在图5B中的流程图不同之处。
尽管在步骤S215中计算切片的进度比和优先级。但由于在显示在图6中的流程图中未使用优先级,所以只在步骤S255中计算进度比。另外,在显示在图6中的流程图中,未执行图5B的步骤S245的处理。
<解码处理的例子>
由于诸如发生中断的因素,工作处理器的行为(多个工作处理器同时访问队列时的判优、一个块的处理时间等)是不确定的,并且该行为可能随实现而变。在第一实施例中,示出了使用队列的典型解码处理的例子。此外,为了使说明简单些,假设访问队列所需的时间可以忽略不计。
下面示出在M=3和N=2的情况下切片的解码处理的例子。在如下例子中示出的切片处理方法未必是最佳的。在下文中,为了使说明简单些,将包装块和划分切片所得的块简单地描述成没有区别的块。
图7是例示切片和块的例子的图。参照图7,可以将三个切片A,B和C划分成需要相同处理时间、具有相同划分宽度的两个块。例如,可以将切片A划分成块A0/2和块A1/2。在每个块的右上角给出的标号指示每个块的处理次序。例如,对于A0/2,“0/2”指示处理次序。“0/2”的“2”指示块的总数。块A0/2的处理先于块A1/2
可以将切片B划分成块B0/2和块B1/2。块B0/2的处理先于块B1/2。可以将切片C划分成块C0/2和块C1/2。块C0/2的处理先于块C1/2
图8是例示当两个工作处理器#0和#1处理三个切片A,B和C时将块指定给每个工作处理器的状况的图形。图9是例示队列状态的图形。
在时间t=t0,将所有切片的第一块A0/2,B0/2和C0/2加入队列中(对应于图5A的步骤S115)。
在时间t=t0+Δt(在时间t=t0之后马上)从队列中取出首块A0/2和下一块B0/2,并且将块A0/2的处理指定给工作处理器#0,而将块B0/2的处理指定给工作处理器#1(对应于图6的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地开始处理(对应于图6的步骤S210)。
在时间t=t1完成了块A0/2和块B0/2的处理之后,将要在块A0/2之后处理的块A1/2和要在块B0/2之后处理的块B1/2加入队列中(对应于图6的步骤S240)。在时间t=t0是尾块的块C0/2在时间t=t1变成首块,并且块A1/2和块B1/2被加在块C0/2之后。
在时间t=t1+Δt从队列中取出首块C0/2和下一块A1/2,并且将块C0/2的处理指定给工作处理器#0,而将块A1/2的处理指定给工作处理器#1(对应于图6的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图6的步骤S210)。
在时间t=t2完成了块C0/2和块A1/2的处理之后,将要在块C0/2之后处理的块C1/2加入队列中(对应于图6的步骤S240)。由于块A1/2的处理已经完成,所以完成了切片A的处理。在时间t=t1是尾块的块B1/2在时间t=t2变成首块,并且块C1/2被加在块B1/2之后。
在时间t=t2+Δt从队列中取出首块B1/2和下一块C1/2,并且将块B1/2的处理指定给工作处理器#0,而将块C1/2的处理指定给工作处理器#1(对应于图6的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图6的步骤S210)。
在块B1/2和块C1/2的处理完成之后,就完成了切片B和切片C的处理。由于切片A的处理先于此刻完成,所以当完成了块B1/2和块C1/2的处理时,就完成了所有切片的处理。
在本例中,将所有切片均等地划分成具有相同处理时间的块,并且块的总数是工作处理器数量的倍数。于是,如图8所示,可以均等地将块的处理指定给两个工作处理器。
<解码处理性能>
下面通过例子描述第一实施例的解码方法的处理性能。在如下说明中,假设工作处理器的处理通过线程来执行。另外,假设工作处理器的数量N与切片的数量M之间的关系是M>=N,所有切片的执行时间(执行时间的预测值)都相等,和该时间是T。在该例子中,将切片均等地划分成K个块,每个块需要T/K的执行时间。为了使说明简单些,假设诸如工作处理器切换处理所需的时间和访问队列的时间的额外开销可以忽略不计。
通常,指定给工作处理器的时间量子(quantum)从约几十毫秒到几百毫秒。视频帧通常由每秒30帧组成,在1/30秒,即,大约33毫秒内必须至少解码一个帧,以便实时播放图像。在诸如视频编码系统的实际应用中,要求解码处理时间短于33毫秒,以便同时播放多个视频片段,或应用视频特效和过渡。
作为一个参考例,考虑当该时间量子大于等于一个切片的处理时间T时M个工作处理器执行M个切片的处理的情况。该时间量子也称为时间片,指的是OS切换工作处理器进行的处理的间隔。首先,由与各自切片相对应的工作处理器开始数量与处理器的数量N相同的切片的处理。
N个切片是并行处理的,该处理在该时间量子耗尽之前完成。当N个切片的处理完成时,类似地并行处理另外N个切片,直到剩余切片的数量变成小于N。
在如下讨论中,使用如下符号(P1和P2)。符号(P1)指示不超过X的最大整数,而符号(P2)指示不小于X的最小整数。
[数学公式6]
Figure BDA0000118035510000161
[数学公式7]
在M可以被N除尽的情况下,如果进行并行处理M/N次,则完成所有切片的处理。在M不能被N除尽的情况下,在进行并行处理D(方程(6))次之后,最后并行处理E(方程(7))个切片。在最后并行处理中,未指定切片的F(方程(8))个工作处理器是空闲的。
[数学公式8]
Figure BDA0000118035510000163
[数学公式9]
[数学公式10]
Figure BDA0000118035510000165
在该参考例中,总处理时间T1由方程(9)表示。
[数学公式11]
Figure BDA0000118035510000171
在本发明中,在保持块之间的相关性的同时N个工作处理器可以并行执行MK个块的处理。由于一个切片的处理时间是T并且一个切片由K个块配置,所以每个块的处理时间是T/K。由于每个工作处理器对应于一个CPU,所以在切片处理期间不会发生工作处理器之间的切换。通过在用在讨论参考例的性能中的方程(9)中用MK取代M和用T/K取代T,可以像方程(10)所示那样计算本发明的总处理时间T2
[数学公式12]
Figure BDA0000118035510000172
作为将该参考例的处理性能与本发明的处理性能相比较的指数的加速比R通过方程(11)来定义。
[数学公式13]
Figure BDA0000118035510000173
当该参考例的处理时间T1等于本发明的处理时间T2时,R=1。于是,该参考例的处理性能等于本发明的处理性能。另外,当该参考例的处理时间T1长于本发明的处理时间T2时,R>1。于是,本发明的处理性能超过该参考例的处理性能。
在下文中,为N和M的一些组合示出了K与加速比R之间的关系。图10是例示加速比R与每个切片的块数K之间的关系的曲线图。
在K=1的时候,加速比变成1。于是,该参考例的处理性能等于本发明的处理性能。当总块数MK是N的倍数时,加速比R是它的最大值Rmax(方程(12))。
[数学公式14]
Figure BDA0000118035510000181
在N=2和M=3的情况下,以及在N=4和M=10的情况下,当K变成2或更大时,加速比R超过1。于是,本发明的处理性能超过该参考例的处理性能。在N=3和M=8的情况下,当K变成3或更大时,加速比R超过1。于是,本发明的处理性能超过该参考例的处理性能。另外,K越大,也就是说,切片的划分越细,加速比R就越接近Rmax
这样,在本发明中,当每个切片可以划分成数量大于等于预定数量的块时,将处理指定给工作处理器变得高效,与该参考例子相比,处理速度提高了。
<使用优先级P0的切片解码处理的例子>
作为按照第一实施例的解码处理方法,示出了未使用优先级P0时的解码处理的例子和使用优先级P0时的解码处理的例子。为了使说明简单些,假设访问队列所需的时间和将块重新排列所需的时间可以忽略不计。
图11是例示切片和块的例子的图。参照图11,存在三个切片A,B和C。切片A和B由三个块配置,而切片C由四个块配置。切片A,B和C的块的划分宽度(块的处理时间)是相等的。于是,切片C的处理时间长于切片A和B的处理时间。
将切片A划分成块A0/3、块A1/3、和块A2/3。切片A的每个块按块A0/3、块A1/3、和块A2/3的次序处理。将切片B划分成块B0/3、块B1/3、和块B2/3。切片B的每个块按块B0/3、块B1/3、和块B2/3的次序处理。将切片C划分成块C0/4、块C1/4、块C2/4、和块C3/4。切片C的每个块按块C0/4、块C1/4、块C2/4、和块C3/4的次序处理。
图12是例示当两个工作处理器#0和#1处理三个切片A,B和C时将块指定给每个工作处理器的状况的图。图13是例示队列状态的图。在显示在图12和13中的例子中,未使用优先级P0
在时间t=t0,将所有切片的第一块A0/3,B0/3和C0/4加入队列中(对应于图5A的步骤S115)。
在时间t=t0+Δt从队列中取出首块A0/3和下一块B0/3,并且将块A0/3的处理指定给工作处理器#0,而将块B0/3的处理指定给工作处理器#1(对应于图6的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地开始处理(对应于图6的步骤S210)。
在时间t=t1完成了块A0/3和块B0/3的处理之后,将要在块A0/3之后处理的块A1/3和要在块B0/3之后处理的块B1/3加入队列中(对应于图6的步骤S240)。在时间t=t0是尾块的块C0/4在时间t=t1变成首块,并且块A1/3和块B1/3被加在块C0/4之后。
在时间t=t1+Δt从队列中取出首块C0/4和下一块A1/3,并且将块C0/4的处理指定给工作处理器#0,而将块A1/3的处理指定给工作处理器#1(对应于图6的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图6的步骤S210)。
在时间t=t2完成了块C0/4和块A1/3的处理之后,将要在块C0/4之后处理的块C1/4和要在块A1/3之后处理的块A2/3加入队列中(对应于图6的步骤S240)。在时间t=t1是尾块的块B1/3在时间t=t2变成首块,并且块C1/4和块A2/3被加在块B1/3之后。
在时间t=t2+Δt从队列中取出首块B1/3和下一块C1/4,并且将块B1/3的处理指定给工作处理器#0,而将块C1/4的处理指定给工作处理器#1(对应于图6的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图6的步骤S210)。
在时间t=t3完成了块B1/3和块C1/4的处理之后,将要在块B1/3之后处理的块B2/3和要在块C1/4之后处理的块C2/4加入队列中(对应于图6的步骤S240)。在时间t=t2是尾块的块A2/3在时间t=t3变成首块,并且块B2/3和块C2/4被加在块A2/3之后。
在时间t=t3+Δt从队列中取出首块A2/3和下一块B2/3,并且将块A2/3的处理指定给工作处理器#0,而将块B2/3的处理指定给工作处理器#1(对应于图6的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图6的步骤S210)。
在时间t=t4完成了块A2/3和块B2/3的处理之后,切片A和切片B的处理已完成。由于在时间t=t4没有块加入队列中,所以存在于队列之中的块只有块C2/4
在时间t=t4+Δt从队列中取出块C2/4,并且将块C2/4的处理指定给工作处理器#0(对应于图6的步骤S205)。当将块C2/4的处理指定给工作处理器#0时,工作处理器#0进行块C2/4的处理(对应于图6的步骤S210)。由于没有将块的处理指定给工作处理器#1,所以工作处理器#1是空闲的。
在时间t=t5完成了块C2/4的处理之后,将要在块C2/4之后处理的块C3/4加入队列中(对应于图6的步骤S240)。在时间t=t5,存在于队列之中的块只有块C3/4
在时间t=t5+Δt从队列中取出块C3/4,并且将块C3/4的处理指定给工作处理器#0(对应于图6的步骤S205)。当将块C3/4的处理指定给工作处理器#0时,工作处理器#0进行块C3/4的处理(对应于图6的步骤S210)。由于没有将块的处理指定给工作处理器#1,所以工作处理器#1是空闲的。
在块C3/4的处理完成之后,就完成了切片C的处理。由于切片A和B的处理先于此刻完成,所以当完成了块C3/4的处理时,就完成了所有切片的处理。
在本例中,由于切片C的处理相对晚于切片A和B的处理,所以当完成了切片A和B的处理时,剩下不能并行处理的切片C的块C2/4和C3/4
下面示出使用优先级P0时的解码处理的例子。图14是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图。图15是例示队列状态的图形。在显示在图14和15的例子中,使用了优先级P0。用在使用优先级P0时的解码处理的例子中的切片与显示在图11中的切片相同。
优先级P0按如下使用。当将一个块加入队列中时,按各自块的优先级P0的降序排列这些块。其结果是,优先级P0最高的块被放置在队列的首端,并且优先取出。当存在优先级P0相同的多个块时,按加入队列中的次序排列多个块。队列内块的次序在将一个块加入队列中时未必发生变化,而可能正好在从队列中取出一个块之前发生变化。上述的队列的实现未必是最佳的。例如,使用诸如堆(heap)的数据结构使该实现更高效。
在时间t=t0,将所有切片的第一块A0/3,B0/3和C0/4加入队列中(对应于图5A的步骤S115)。此时,假设按块A0/3,B0/3和C0/4的次序将这些块加入队列中。按照方程(1),各自块的优先级P0是P0(A0/3)=P0(B0/3)=P0(C0/4)=1。由于三个块的优先级P0相等,所以队列内块的次序不会发生变化。
在时间t=t0+Δt从队列中取出首块A0/3和下一块B0/3,并且将块A0/3的处理指定给工作处理器#0,而将块B0/3的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地开始处理(对应于图5B的步骤S210)。
在时间t=t1完成了块A0/3和块B0/3的处理之后,将要在块A0/3之后处理的块A1/3和要在块B0/3之后处理的块B1/3加入队列中(对应于图5B的步骤S240)。此时,假设按块A1/3和块B1/3的次序将这些块加入队列中。在时间t=t1,块C0/4,块A1/3和块B1/3被放置在队列中。按照方程(1),由于各自块的优先级P0是P0(C0/4)=1和P0(A1/3)=P0(B1/3)=2/3,所以按块C0/4,A1/3和B1/3的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t1+Δt从队列中取出首块C0/4和下一块A1/3,并且将块C0/4的处理指定给工作处理器#0,而将块A1/3的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图5B的步骤S210)。
在时间t=t2完成了块C0/4和块A1/3的处理之后,将要在块C0/4之后处理的块C1/4和要在块A1/3之后处理的块A2/3加入队列中(对应于图5B的步骤S240)。在时间t=t2,块B1/3、块C1/4和块A2/3被放置在队列中。按照方程(1),由于各自块的优先级P0是P0(B1/3)=2/3,P0(C1/4)=3/4,和P0(A2/3)=1/3,所以按块C1/4,B1/3和A2/3的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t2+Δt从队列中取出首块C1/4和下一块B1/3,并且将块C1/4的处理指定给工作处理器#0,而将块B1/3的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图5B的步骤S210)。
在时间t=t3完成了块C1/4和块B1/3的处理之后,将要在块C1/4之后处理的块C2/4和要在块B1/3之后处理的块B2/3加入队列中(对应于图5B的步骤S240)。在时间t=t3,块A2/3,块C2/4和块B2/3被放置在队列中。按照方程(1),由于各自块的优先级P0是P0(A2/3)=P0(B2/3)=1/3,和P0(C2/4)=2/4,所以按块C2/4,A2/3和B2/3的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t3+Δt从队列中取出首块C2/4和下一块A2/3,并且将块C2/4的处理指定给工作处理器#0,而将块A2/3的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图5B的步骤S210)。
在时间t=t4完成了块C2/4和块A2/3的处理之后,将要在块C2/4之后处理的块C3/4加入队列中(对应于图5B的步骤S240)。由于块A2/3的处理已经完成,所以完成了切片A的处理。在时间t=t4,块B2/3和块C3/4被放置在队列中。按照方程(1),由于各自块的优先级P0是P0(B2/3)=1/3,和P0(C3/4)=1/4,所以按块B2/3和C3/4的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t4+Δt从队列中取出首块B2/3和下一块C3/4,并且将块B2/3的处理指定给工作处理器#0,而将块C3/4的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图5B的步骤S210)。
在块B2/3和块C3/4的处理完成之后,就完成了切片B和切片C的处理。由于切片A的处理先于此刻完成,所以当完成了块B2/3和块C3/4的处理时,就完成了所有切片的处理。
在本例中,由于通过优先处理未使用优先级P0时相对晚于切片A和B处理的切片C,使切片A,B和C的处理几乎均等地前进,所以最后没有剩下不能并行处理的块。
这样,并行处理可以在通过使用优先级P0尽可能相等地保持所有切片的处理的进度比的同时前进。即使在不能精确预测处理时间的情况下,因为尽可能相等地保持了所有切片的处理的进度比,所以也可以几乎同时地完成所有切片的处理。由于这个原因,最后几乎不可能剩下不能并行处理的块,所以几乎不可能出现最后不能将块的处理指定给工作处理器的状况。因此,可以高效地进行切片的平行处理。
<使用优先级P0和P1的切片解码处理的例子>
下面示出使用优先级P0的解码处理的例子和使用优先级P0和P1的解码处理的例子。为了使说明简单些,假设访问队列所需的时间和将块重新排列所需的时间可以忽略不计。
图16是例示切片和块的例子的图形。参照图16,存在三个切片A,B和C。切片A,B和C由两个块配置。切片A和B的块的划分宽度相等,但切片C的块的划分宽度两倍于切片A和B的块的划分宽度。于是,切片C的处理时间两倍于切片A和B的处理时间。
将切片A划分成块A0/2和块A1/2。切片A的每个块按块A0/2和块A1/2的次序处理。将切片B划分成块B0/2和块B1/2。切片B的每个块按块B0/2和块B1/2的次序处理。将切片C划分成块C0/2和块C1/2。切片C的每个块按块C0/2和块C1/2的次序处理。
图17是例示当两个工作处理器#0和#1处理三个切片A,B和C时将块指定给每个工作处理器的状况的图。图18是例示队列状态的图。在显示在图17和18中的例子中,使用了优先级P0
在时间t=t0,将所有切片的第一块A0/2,B0/2和C0/2加入队列中(对应于图5A的步骤S115)。此时,假设按块A0/2,B0/2和C0/2的次序将这些块加入队列中。按照方程(1),各自块的优先级P0是P0(A0/2)=P0(B0/2)=P0(C0/2)=1。由于三个块的优先级P0相等,所以队列内块的次序不会发生变化。
在时间t=t0+Δt从队列中取出首块A0/2和下一块B0/2,并且将块A0/2的处理指定给工作处理器#0,而将块B0/2的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地开始处理(对应于图5B的步骤S210)。
在时间t=t1完成了块A0/2和块B0/2的处理之后,将要在块A0/2之后处理的块A1/2和要在块B0/2之后处理的块B1/2加入队列中(对应于图5B的步骤S240)。此时,假设按块A1/2和块B1/2的次序将这些块加入队列中。按照方程(1),由于在时间t=t1放置在队列中的各自块的优先级P0是P0(C0/2)=1和P0(A1/2)=P0(B1/2)=1/2,所以按块C0/2,A1/2和B1/2的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t1+Δt从队列中取出首块C0/2和下一块A1/2,并且将块C0/2的处理指定给工作处理器#0,而将块A1/2的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图5B的步骤S210)。
在时间t=t2块A1/2的处理已完成。此刻,块C0/2的处理还未完成。由于块A1/2的处理已经完成,所以完成了切片A的处理。在时间t=t2,只有块B1/2被放置在队列中。
在时间t=t2+Δt从队列中取出首块B1/2,并且将块B1/2的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将块B1/2的处理指定给工作处理器#1时,工作处理器#1进行块B1/2的处理(对应于图5B的步骤S210)。此时,工作处理器#0继续处理块C0/2
在时间t=t3完成了块B1/2和块C0/2的处理之后,将要在块C0/2之后处理的块C1/2加入队列中(对应于图5B的步骤S240)。由于块B1/2的处理已经完成,所以完成了切片B的处理。在时间t=t3,只有块C1/2被放置在队列中。
在时间t=t3+Δt从队列中取出首块C1/2,并且将块C1/2的处理指定给工作处理器#0(对应于图5B的步骤S205)。当将块C1/2的处理指定给工作处理器#0时,工作处理器#0进行块C1/2的处理(对应于图5B的步骤S210)。由于没有将块的处理指定给工作处理器#1,所以工作处理器#1是空闲的。
在块C1/2的处理完成之后,就完成了切片C的处理。由于切片A和B的处理先于此刻完成,所以当完成了块C1/2的处理时,就完成了所有切片的处理。
在本例中,最后剩下需要比切片A和B的块更长处理时间的切片C的块。
下面示出除了优先级P0之外还使用优先级P1时的处理的例子。图19是例示当两个工作处理器#0和#1处理三个切片A,B和C时将块指定给每个工作处理器的状况的图。图20是例示队列状态的图。在显示在图19和20中的例子中,使用了优先级P0和P1。用在使用优先级P0和P1的处理的例子中的切片与显示在图16中的切片相同。假设切片A和B的处理时间是T,而切片C的处理时间是2T。
优先级P0和P1按如下使用。当将一个块加入队列中时,根据每个块的优先级P0确定队列中块的次序。当存在优先级P0相同的多个块时,根据每个块的优先级P1确定多个块的次序。当存在优先级P1相同的多个块时,按加入队列中的次序排列多个块。队列内块的次序在将一个块加入队列中时未必发生变化,而可能正好在从队列中取出一个块之前发生变化。
在时间t=t0,将所有切片的第一块A0/2,B0/2和C0/2加入队列中(对应于图5A的步骤S115)。此时,假设按块A0/2,B0/2和C0/2的次序将这些块加入队列中。按照方程(1),各自块的优先级P0是P0(A0/2)=P0(B0/2)=P0(C0/2)=1。由于三个块的优先级P0相等,所以使用优先级P1。按照方程(4),由于P1(A0/2)=P1(B0/2)=T,和P1(C0/2)=2T,所以按块C0/2,A0/2和B0/2的次序排列这些块。
在时间t=t0+Δt从队列中取出首块C0/2和下一块A0/2,并且将块C0/2的处理指定给工作处理器#0,而将块A0/2的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地开始处理(对应于图5B的步骤S210)。
在时间t=t1完成了块A0/2的处理之后,将要在块A0/2之后处理的块A1/2加入队列中(对应于图5B的步骤S240)。此刻,块C0/2的处理还未完成。在时间t=t1,块B0/2和块A1/2被放置在队列中。按照方程(1),由于各自块的优先级P0是P0(B0/2)=1和P0(A1/2)=1/2,所以按块B0/2和A1/2的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t1+Δt从队列中取出首块B0/2,并且将块B0/2的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将块B0/2的处理指定给工作处理器#1时,工作处理器#1进行块B0/2的处理(对应于图5B的步骤S210)。此时,工作处理器#0继续处理块C0/2
在时间t=t2完成了块C0/2和块B0/2的处理之后,将要在块C0/2之后处理的块C1/2和要在块B0/2之后处理的块B1/2加入队列中(对应于图5B的步骤S240)。在时间t=t2,块A1/2,块C1/2和块B1/2被放置在队列中。按照方程(1),各自块的优先级P0是P0(A1/2)=P0(C1/2)=P0(B1/2)=1/2。由于三个块的优先级P0相等,所以使用优先级P1。按照方程(4),由于P1(C1/2)=T,和P1(A1/2)=P1(B1/2)=T/2,所以按块C1/2,A1/2和B1/2的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t2+Δt从队列中取出首块C1/2和下一块A1/2,并且将块C1/2的处理指定给工作处理器#0,而将块A1/2的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地进行各自块的处理(对应于图5B的步骤S210)。
在时间t=t3完成了块A1/2的处理。由于块A1/2的处理已经完成,所以完成了切片A的处理。此刻,块C1/2的处理还未完成。在时间t=t3,块B1/2被放置在队列中。
在时间t=t3+Δt从队列中取出首块B1/2,并且将块B1/2的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将块B1/2的处理指定给工作处理器#1时,工作处理器#1进行块B1/2的处理(对应于图5B的步骤S210)。此时,工作处理器#0继续处理块C1/2
在块C1/2和块B1/2的处理完成之后,就完成了切片C和切片B的处理。由于切片A的处理先于此刻完成,所以当完成了块C1/2和块B1/2的处理时,就完成了所有切片的处理。
在本例中,通过优先处理需要比切片A和B更长处理时间的切片C,最后没有单独剩下切片C的块。
这样,由于使用了优先级P1,所以最后几乎不可能剩下处理时间相对较长的切片的块。于是,几乎不可能出现最后不能将块的处理指定给工作处理器的状况。因此,可以高效地进行切片的平行处理。
<使用优先级P0,P1和P2的切片解码处理的例子>
下面示出使用优先级P0,P1和P2时的更复杂解码处理的例子。为了使说明简单些,假设访问队列所需的时间和将块重新排列所需的时间可以忽略不计。
图21是例示切片和块的例子的图形。参照图21,存在三个切片A,B和C。切片A和B由四个块配置,而切片C由三个块配置。切片A和B被均等地划分成四个块,但切片C以1∶2∶1的比划分成三个块。切片B和C的处理时间相同,但切片A的处理时间1.5倍于切片B和C的处理时间。
将切片A划分成需要相同处理时间的块A0/4、块A1/4、块A2/4、和块A3/4。切片A的每个块按块A0/4、块A1/4、块A2/4、和块A3/4的次序处理。假设切片A的处理时间是6T。
将切片B划分成需要相同处理时间的块B0/4、块B1/4、块B2/4、和块B3/4。切片B的每个块按块B0/4、块B1/4、块B2/4、和块B3/4的次序处理。假设切片B的处理时间是4T。
将切片C划分成块C0/4、块C1/4、和块C3/4。块C0/4和C3/4的处理时间相同,但块C1/4的处理时间是块C0/4和C3/4的处理时间的两倍。切片C的每个块按块C0/4、块C1/4、和块C3/4的次序处理。
图22是例示当两个工作处理器#0和#1进行三个切片A,B和C的解码处理时将块指定给每个工作处理器的状况的图。图23是例示队列状态的图。在显示在图22和23中的例子中,使用了优先级P0,P1和P2
优先级P0,P1和P2按如下使用。当将一个块加入队列中时,根据每个块的优先级P0确定队列内块的次序。当存在优先级P0相同的多个块时,根据每个块的优先级P1确定多个块的次序。当存在优先级P1相同的多个块时,根据每个块的优先级P2确定多个块的次序。队列内块的次序在将一个块加入队列中时未必发生变化,而可能正好在从队列中取出一个块之前发生变化。
在时间t=t0,将所有切片的第一块A0/4,B0/4和C0/4加入队列中(对应于图5A的步骤S115)。此时,假设按块A0/4,B0/4和C0/4的次序将这些块加入队列中。按照方程(1),各自块的优先级P0是P0(A0/4)=P0(B0/4)=P0(C0/4)=1。由于三个块的优先级P0相等,所以使用优先级P1。按照方程(4),由于P1(A0/4)=6T,和P1(B0/4)=P1(C0/4)=4T,所以块A0/4被放置在块B0/4和C0/4的前面。
另外,由于两个块B0/4和C0/4的优先级P1相等,所以使用优先级P2。由于将块B0/4和C0/4加入队列中的时间相同,所以块B0/4和C0/4的优先级P2相等。由于这个原因,不改变块B0/4和C0/4的次序。因此,在时间t=t0,按块A0/4,B0/4和C0/4的次序排列这些块。
在时间t=t0+Δt从队列中取出首块A0/4和下一块B0/4,并且将块A0/4的处理指定给工作处理器#0,而将块B0/4的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地开始处理(对应于图5B的步骤S210)。
在时间t=t1完成了块B0/4的处理之后,将要在块B0/4之后处理的块B1/4加入队列中(对应于图5B的步骤S240)。此刻,块A0/4的处理还未完成。在时间t=t1,块C0/4和块B1/4被放置在队列中。按照方程(1),由于各自块的优先级P0是P0(C0/4)=1和P0(B1/4)=3/4,所以按块C0/4和B1/4的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t1+Δt从队列中取出首块C0/4,并且将块C0/4的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将块C0/4的处理指定给工作处理器#1时,工作处理器#1进行块C0/4的处理(对应于图5B的步骤S210)。此时,工作处理器#0继续处理块A0/4
在时间t=t2完成了块A0/4的处理之后,将要在块A0/4之后处理的块A1/4加入队列中(对应于图5B的步骤S240)。此刻,块C0/4的处理还未完成。在时间t=t2,块B1/4和块A1/4被放置在队列中。按照方程(1),各自块的优先级P0是P0(B1/4)=3/4和P0(A1/4)=3/4。由于每个块的优先级P0相同,所以使用优先级P1。按照方程(4),由于P1(B1/4)=3T和P1(A1/4)=4.5T,所以按块A1/4和B1/4的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t2+Δt从队列中取出首块A1/4,并且将块A1/4的处理指定给工作处理器#0(对应于图5B的步骤S205)。当将块A1/4的处理指定给工作处理器#0时,工作处理器#0进行块A1/4的处理(对应于图5B的步骤S210)。此时,工作处理器#1继续处理块C0/4
在时间t=t3完成了块C0/4的处理之后,将要在块C0/4之后处理的块C1/4加入队列中(对应于图5B的步骤S240)。此刻,块A1/4的处理还未完成。在时间t=t3,块B1/4和块C1/4被放置在队列中。按照方程(1),各自块的优先级P0是P0(B1/4)=3/4和P0(C1/4)=3/4。由于各自块的优先级P0相同,所以使用优先级P1。按照方程(4),P1(B1/4)=3T和P1(C1/4)=3T。
由于各自块的优先级P1相同,所以使用优先级P2。各自块的优先级P2是P2(B1/4)=t1和P2(C1/4)=t3。通过使用优先级P2,按块C1/4和B1/4的次序排列这些块(对应于图5B的步骤S245),并且使较晚时间加入队列中的块要比较早时间加入队列中的块更优先处理。
在时间t=t3+Δt从队列中取出首块C1/4,并且将块C1/4的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将块C1/4的处理指定给工作处理器#1时,工作处理器#1进行块C1/4的处理(对应于图5B的步骤S210)。此时,工作处理器#0继续处理块A1/4
在时间t=t4完成了块A1/4的处理之后,将要在块A1/4之后处理的块A2/4加入队列中(对应于图5B的步骤S240)。此刻,块C1/4的处理还未完成。在时间t=t4,块B1/4和块A2/4被放置在队列中。按照方程(1),由于各自块的优先级P0是P0(B1/4)=3/4和P0(A2/4)=2/4,所以按块B1/4和A2/4的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t4+Δt从队列中取出首块B1/4,并且将块B1/4的处理指定给工作处理器#0(对应于图5B的步骤S205)。当将块B1/4的处理指定给工作处理器#0时,工作处理器#0进行块B1/4的处理(对应于图5B的步骤S210)。此时,工作处理器#1继续处理块C1/4
在时间t=t5完成了块B1/4和块C1/4的处理之后,将要在块B1/4之后处理的块B2/4和要在块C1/4之后处理的块C3/4加入队列中(对应于图5B的步骤S240)。在时间t=t5,块A2/4、块B2/4和块C3/4被放置在队列中。
按照方程(1),由于各自块的优先级P0是P0(A2/4)=P0(B2/4)=2/4和P0(C3/4)=1/4,所以块A2/4和B2/4被放置在块C3/4的前面。由于两个块A2/4和B2/4的优先级P0相同,所以使用优先级P1。按照方程(4),由于P1(A2/4)=3T和P1(B2/4)=2T,所以将块A2/4放置在块B2/4的前面。因此,在时间t=t5,按块A2/4,B2/4和块C3/4的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t5+Δt从队列中取出首块A2/4和下一块B2/4,并且将块A2/4的处理指定给工作处理器#0,而将块B2/4的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将这些块的处理指定给各自工作处理器时,各自工作处理器并行地开始处理(对应于图5B的步骤S210)。
在时间t=t6完成了块B2/4的处理之后,将要在块B2/4之后处理的块B3/4加入队列中(对应于图5B的步骤S240)。此刻,块A2/4的处理还未完成。在时间t=t6,块C3/4和块B3/4被放置在队列中。按照方程(1),各自块的优先级P0是P0(C3/4)=P0(B3/4)=1/4。由于每个块的优先级P0相同,所以使用优先级P1。按照方程(4),P1(C3/4)=P1(B3/4)=T。
由于每个块的优先级P1相同,所以使用优先级P2。各自块的优先级P2是P2(C3/4)=t5和P2(C3/4)=t6。通过使用优先级P2,使较晚时间加入队列中的块要比较早时间加入队列中的块更优先处理。于是,按块B3/4和C3/4的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t6+Δt从队列中取出首块B3/4,并且将块B3/4的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将块B3/4的处理指定给工作处理器#1时,工作处理器#1进行块B3/4的处理(对应于图5B的步骤S210)。此时,工作处理器#0继续处理块A2/4
在时间t=t7完成了块A2/4的处理之后,将要在块A2/4之后处理的块A3/4加入队列中(对应于图5B的步骤S240)。此刻,块B3/4的处理还未完成。在时间t=t7,块C3/4和块A3/4被放置在队列中。按照方程(1),各自块的优先级P0是P0(C3/4)=P0(A3/4)=1/4。由于每个块的优先级P0相同,所以使用优先级P1。按照方程(4),由于P1(C3/4)=T,和P1(A3/4)=1.5T,所以按块A3/4和C3/4的次序排列这些块(对应于图5B的步骤S245)。
在时间t=t7+Δt从队列中取出首块A3/4,并且将块A3/4的处理指定给工作处理器#0(对应于图5B的步骤S205)。当将块A3/4的处理指定给工作处理器#0时,工作处理器#0进行块A3/4的处理(对应于图5B的步骤S210)。此时,工作处理器#1继续处理块B3/4
在时间t=t8完成了块B3/4的处理。由于块B3/4的处理已经完成,所以完成了切片B的处理。此刻,块A3/4的处理还未完成。在时间t=t8,C3/4被放置在队列中。
在时间t=t8+Δt从队列中取出首块C3/4,并且将块C3/4的处理指定给工作处理器#1(对应于图5B的步骤S205)。当将块C3/4的处理指定给工作处理器#1时,工作处理器#1进行块C3/4的处理(对应于图5B的步骤S210)。此时,工作处理器#0继续处理块A3/4
在块A3/4和块C3/4的处理完成之后,就完成了切片A和C的处理。由于切片B的处理先于此刻完成,所以当完成了块A3/4和块C3/4的处理时,就完成了所有切片的处理。
在本例中,由于使用了优先级P0,所以并行处理可以在尽可能相等地保持所有切片的处理的进度比的同时前进。另外,由于使用了优先级P1,所以最后没有单独剩下处理时间相对较长切片A的块。因此,可以高效地进行切片的并行处理。
而且,在本例中,通过使用优先级P2,工作处理器#1连续进行切片C的块C0/4和C1/4的处理并且连续进行切片B的块B2/4和B3/4的处理。这样,通过连续进行相同切片的块的处理,提高了高速缓冲效率以及提高了处理速度。
如上所述,按照第一实施例,由于以划分切片获得的块为单位将处理指定给工作处理器,所以与以切片为单位将处理指定给工作处理器相比,可以降低一些工作处理器因每个工作处理器轮流等待处理,因此未将要处理的对象提供给它而空闲的可能性。于是,减少了整个工作处理器的总空闲时间。其结果是,提高了使用整个工作处理器的效率。因此,可以提高编码切片的解码处理的速度。
与处理器的数量N和切片的数量M无关,通过使用相同方法尽可能均等地将切片的处理指定给所有工作处理器。尤其,即使事先不知道每个切片的处理时间,或不能精确预测每个切片的处理时间,也可以使处理在保持所有切片的进度几乎相等的同时前进。于是,提高了可以并行处理的处理时间与总处理时间的比,因此可以使工作处理器得到高效使用。
由于只使用数量和与CPU一一对应的处理器的数量相同的工作处理器,所以在切片处理期间不会发生工作处理器之间的背景切换。背景切换是存储或恢复处理器的执行状态(背景)以便多个工作处理器共享同一处理器的操作。由于不会发生工作处理器之间的背景切换,所以防止了处理速度的下降。
即使在切片的处理时间小于OS的时间量子的情况下,每个工作处理器也可以以块为单位进行并行处理。通过一边每隔一小段时间切换多个切片一边进行处理,实际上可以并行处理数量比处理器的数量大的切片。
只有可以并行处理的块才放置在队列中。从队列中取出的包装块马上指定给任意工作处理器。于是,在切片处理期间除了访问队列之外的其它同步处理都是不必要的。
{第二实施例}
本发明的第二实施例是解码编码图像数据的编辑装置和编辑方法的例子。
图24是例示按照本发明第二实施例的编辑装置的硬件配置的方块图。应该注意到,将相同标号赋予与第一实施例共有的部件,并且省略对它们的说明。
参照图24,编辑装置100包括驱动光盘或其它记录介质的驱动器101、CPU 20、CPU 21、CPU 102、ROM 23、ROM 103、RAM 22、RAM 104、HDD105、通信接口106、输入接口107、输出接口108、视频/音频接口114、和连接它们的总线。
编辑装置100具有与按照第一实施例由前面显示在图1中的CPU 20、CPU 21、RAM 22和ROM 23配置的解码装置相同的解码装置。另外,尽管在图24中未示出,但编辑装置100具有与前面显示在图3中的功能配置相同的功能配置。编辑装置100还具有编码处理功能和编辑功能。应该注意到,编码处理功能不是编辑装置100的关键。
将可换式介质101a安装在驱动器101中,从可换式介质101a中读取数据。驱动器101可以是外部驱动器。驱动器101可以采用光盘、磁盘、磁光盘、蓝光盘、半导体存储器等。可以从可通过通信接口106连接的网络上的资源中读取素材数据。
CPU 102将记录在ROM 103中的控制程序装入RAM 104中并且控制编辑装置100的整个操作。
HDD 105存在作为编辑装置的应用程序。CPU 102将应用程序装入RAM104中,使计算机起编辑装置的作用。另外,从可换式介质101a中读取的素材数据、每个片段的编辑数据等都可以存储在HDD 105中。
通信接口106是诸如USB(通用串行总线)、LAN(局域网)或HDMI(高清晰度多媒体接口)的接口。
输入接口107接收用户通过诸如键盘或鼠标的操作单元400输入的指令,并通过总线110将操作信号供应给CPU 102。
输出接口108将图像数据和/视频数据从CPU 102供应给输出单元装置500,例如,诸如LCD(液晶显示器)或CRT(阴极射线管)的显示装置、或扬声器。
视频/音频接口114与配备在编辑装置100外部的装置以及与总线110通信数据。例如,视频/音频接口114是基于SDI(串行数字接口)等的接口。
图25是例示按照本发明第二实施例的编辑装置的功能配置的图。
参照图25,编辑装置100的CPU 102通过使用装入存储器中的应用程序形成用户接口单元70、编辑器73、信息输入单元74和信息输出单元75的各自功能块。
这样的各自功能块实现包括素材数据和编辑数据的项目文件的导入功能、每个片段的编辑功能、包括素材数据和/或编辑数据的项目文件的导出功能、导出项目文件时素材数据的边界设置功能等。下文详细描述编辑功能。
图26是例示按照本发明第二实施例的编辑装置的编辑屏幕的例子的图。
参照图26以及图25,编辑屏幕的显示数据由显示控制器72生成并输出到输出装置500的显示器。
编辑屏幕150包括:显示所编辑内容和/或所获取素材数据的播放屏幕的播放窗口151;由沿着时间轴布置每个片段的多个轨道配置的时间轴窗口152;以及使用图标等显示所获取素材数据的素材桶窗口153。
用户接口单元70包括:接收用户通过操作单元400输入的指令的指令接收器71;以及对诸如显示器或指示器的输出装置500进行显示控制的显示控制器72。
编辑器73通过信息输入单元74获取用户通过操作单元400输入的指令指定的片段引用的素材数据,或包括默认指定的项目信息的片段引用的素材数据。另外,编辑器73按照用户通过操作单元400输入的指令,进行诸如将后面所述的片段安排在时间轴窗口上、剪辑片段、设置场景之间的过渡、应用视频过滤器等的编辑处理。
当指定了记录在HDD 105中的素材数据时,信息输入单元74就在素材桶窗口153上显示一个图标。当指定了未记录在HDD 105中的素材数据时,信息输入单元74就从网络上的资源、可换式媒体等中读取素材数据,并且在素材桶窗口153上显示一个图标。在例示的例子中,使用图标IC1到IC3显示了三段素材数据。
指令接收器71在编辑屏幕上接收用在编辑中的片段的指定、素材数据的参考范围、和参考范围占据的内容在时间轴上的时间位置。具体地说,指令接收器71接收片段ID的指定、参考范围的起点和时间长度、有关安排片段的内容的时间信息等。于是,用户将显示的片段名用作线索在时间轴上拖放所希望素材数据的图标。指令接收器71通过这种操作接收片段ID的指定,并且使时间长度对应于所选片段引用的参考范围地将片段布置在轨道上。
对于布置在轨道上的片段,可以适当改变片段的起点和终点、时间轴上的时间安排等。例如,可以通过移动显示在编辑屏幕上的鼠标光标来输入指定以便进行预定操作。
图27是例示按照本发明第二实施例的编辑方法的流程图。下面将编辑压缩编码素材数据的情况用作一个例子,参照图27描述按照本发明第二实施例的编辑方法。
首先,在步骤S400中,当用户指定记录在HDD 105中的编码素材数据时,CPU 102接收该指定,并且在素材桶窗口153上将该素材数据显示成一个图标。另外,当用户发出将所显示图标安排在时间轴窗口152上的指令时,CPU 102接收该指令,并且将一个片段的素材布置在时间轴窗口152上。
然后,在步骤S410中,当用户通过操作单元400从通过预定操作显示的编辑内容当中选择,例如,素材的解码处理和扩展处理时,CPU 102接收该选择。
然后,在步骤S420中,接收到解码处理和扩展处理指令的CPU 102将解码处理和扩展处理指令输出到CPU 20和21。已经输入了来自CPU 102的解码处理和扩展处理指令的CPU 20和21对压缩编码素材数据进行解码处理和扩展处理。在这种情况下,CPU 20和21通过执行按照第一实施例的解码方法生成解码素材数据。
然后,在步骤S430中,CPU 20和21通过总线110将在步骤S420中生成的素材数据存储在RAM 22中。将暂时存储在RAM 22中的素材数据记录在HDD 105中。应该注意到,可以取代将素材数据记录在HDD中,将素材数据输出到配备在编辑装置外部的装置。
应该注意到,片段的剪辑、场景之间的过渡的设置和/或视频过滤器的应用可以在步骤S400和S410之间进行。在进行这样处理的情况下,对要处理的片段或片段的一部分进行步骤S420中的解码处理和扩展处理。此后,存储经过处理的片段或片段的一部分。在随后再现的时候将它与另一个片段或片段的另一个部分合成。
按照第二实施例,由于该编辑装置具有与第一实施例中相同的解码装置,并且使用与第一实施例中相同的解码方法解码编码素材数据,所以可以达到与第一实施例中相同的有利效果,并且提高了解码处理的效率。
应该注意到,在解码处理的时候,CPU 102可以执行与CPU 20和CPU 21相同的步骤。尤其,最好是在CPU 102不进行除了解码处理之外的其它处理的时段内执行这些步骤。
虽然已经详细描述了本发明的优选实施例,但本发明不局限于那些特定实施例,而是可以在如权利要求所限定的本发明范围之内作出各种改变和修改。例如,本发明也可以应用于编码音频数据的解码处理。例如,尽管将基于MPEG-2的解码处理用作一个例子对这些实施例作了描述,但勿庸置疑,本发明不局限于MPEG-2,而是也可以应用其它图像编码方案,例如,MPEG-4visual、MPEG-4AVC、FRExt(保真范围扩展),或音频编码方案。
标号列表
10解码装置
20,21CPU
22RAM
23ROM
30解码处理单元
31主处理器
32a,32b工作处理器
33a,33b切片解码器
34队列
35切片缓冲器
36视频存储器
37切片背景
73编辑器
100编辑装置

Claims (13)

1.一种解码图像数据或音频数据的编码数据的装置(10,30),该装置包含:
提供所述编码数据的源(22),所述编码数据包括能够独立解码的多个元数据,多个元数据的每一个包括至少一个块;
第一处理部件(31),用于生成标识所述至少一个块当中首先要处理的第一块的块信息;
多个第二处理部件(32a,32b),用于根据与该块信息相对应的元数据中的解码处理的次序生成标识第一块后面的块的块信息;
多个解码部件(33a,33b),用于并行地解码参照所生成块信息当中的一个未引用块信息识别的块;以及
存储部件(22),用于存储解码块和形成与该块相对应的解码元数据
2.按照权利要求1所述的装置,其中对于与该第二处理部件生成的未引用块信息相对应的块,计算代表与该块相联系的解码处理的次序的优先级。
3.按照权利要求2所述的装置,其中该优先级基于相应元数据的解码处理进度的比。
4.按照权利要求2所述的装置,其中该优先级基于相应元数据的未处理块的处理时间。
5.按照权利要求1所述的装置,进一步包含存储所生成块信息的存储部件,
其中该解码部件优先解码根据存储块信息的时间识别的块。
6.一种解码图像数据或音频数据的编码数据的方法,该方法包含如下步骤:
在一个处理器(20)中生成标识至少一个块当中首先处理的一个块的块信息,该至少一个块配置包括在所述编码数据中的多个元数据的每一个,该元数据能够被独立解码,将与该块相对应的元数据中的解码处理的次序赋予该块(S110);
在多个处理器(20,21)中并行地解码参照一个所生成未引用块信息识别的块(S210);
在多个处理器(20,21)中根据解码处理的次序并行地生成标识属于由解码块配置的元数据的随后块的块信息(S235);以及
重复解码步骤和生成标识随后块的块信息的步骤,直到所有块都得到解码。
7.按照权利要求6所述的方法,进一步包含如下步骤:对于与所生成未引用块信息相对应的块,计算代表解码步骤中的处理次序的优先级,并且将该优先级与该块相联系,
其中在解码该块的步骤中,多个处理器通过参照多个所生成未引用块信息的优先级解码与优先级最高的块信息相对应的块。
8.按照权利要求7所述的方法,其中该优先级基于相应元数据的解码处理进度的比。
9.按照权利要求7所述的方法,其中该优先级基于相应元数据的未处理块的处理时间。
10.按照权利要求6所述的方法,进一步包含将所生成块信息存储在存储器中的步骤,
其中在解码该块的步骤中,多个处理器优先解码根据将块信息存储在存储器中的时间识别的块。
11.一种解码图像数据或音频数据的编码数据的程序,该程序被配置成使处理器(20)执行如下步骤:
生成标识至少一个块当中首先处理的一个块的块信息,该至少一个块配置包括在包括图像数据或音频数据的编码数据中的多个元数据的每一个,该元数据能够被独立解码,将与该块相对应的元数据中的解码处理的次序赋予该块(S110);以及
使多个处理器(20,21)执行如下步骤:
并行地解码参照一个所生成未引用块信息识别的块(S210);
根据解码处理的次序并行地生成标识属于由解码块配置的元数据的随后块的块信息(S235);以及
重复解码步骤和生成标识随后块的块信息的步骤,直到所有块都得到解码。
12.一种记录解码图像数据或音频数据的编码数据的程序的记录介质,该程序被配置成使处理器(20)执行如下步骤:
生成标识至少一个块当中首先处理的一个块的块信息,该至少一个块配置包括在包括图像数据或音频数据的编码数据中的多个元数据的每一个,该元数据能够被独立解码,将与该块相对应的元数据中的解码处理的次序赋予该块(S110);以及
使多个处理器(20,21)执行如下步骤:
并行地解码参照一个所生成未引用块信息识别的块(S210);
根据解码处理的次序并行地生成标识属于由解码块配置的元数据的随后块的块信息(S235);以及
重复解码步骤和生成标识随后块的块信息的步骤,直到所有块都得到解码。
13.一种编辑装置(100),其包含:
提供图像数据或音频数据的编码数据的源(22),该编码数据包括能够独立解码的多个元数据,多个元数据的每一个包括至少一个块;
第一处理部件(31),用于生成标识所述至少一个块当中首先要处理的块信息;
多个第二处理部件(32a,32b),用于根据与该块信息相对应的元数据中的解码处理的次序生成标识第一块后面的块的块信息;
多个解码部件(33a,33b),用于并行地解码参照所生成块信息当中的一个未引用块信息识别的块;
存储部件(22),用于存储解码块和形成与该块相对应的解码元数据;以及
编辑部件(73),用于编辑解码元数据
CN200980160082.3A 2009-06-09 2009-06-09 解码装置、解码方法以及编辑装置 Active CN102461173B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/002597 WO2010143226A1 (en) 2009-06-09 2009-06-09 Decoding apparatus, decoding method, and editing apparatus

Publications (2)

Publication Number Publication Date
CN102461173A true CN102461173A (zh) 2012-05-16
CN102461173B CN102461173B (zh) 2015-09-09

Family

ID=41649866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980160082.3A Active CN102461173B (zh) 2009-06-09 2009-06-09 解码装置、解码方法以及编辑装置

Country Status (6)

Country Link
US (1) US20120082240A1 (zh)
EP (1) EP2441268A1 (zh)
JP (1) JP5698156B2 (zh)
KR (1) KR101645058B1 (zh)
CN (1) CN102461173B (zh)
WO (1) WO2010143226A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014047943A1 (zh) * 2012-09-29 2014-04-03 华为技术有限公司 视频编码及解码方法、装置及系统
CN110177297A (zh) * 2014-05-28 2019-08-27 弗劳恩霍夫应用研究促进协会 数据处理器及用户控制数据至音频解码器和渲染器的传输
CN110970038A (zh) * 2019-11-27 2020-04-07 云知声智能科技股份有限公司 语音解码方法及装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5914962B2 (ja) * 2010-04-09 2016-05-11 ソニー株式会社 画像処理装置および方法、プログラム、並びに、記録媒体
US9978156B2 (en) * 2012-10-03 2018-05-22 Avago Technologies General Ip (Singapore) Pte. Ltd. High-throughput image and video compression
CN107005694B (zh) * 2014-09-30 2020-05-19 瑞典爱立信有限公司 在独立处理单元中编码和解码视频帧的方法、装置和计算机可读介质
GB2534409A (en) * 2015-01-23 2016-07-27 Sony Corp Data encoding and decoding
KR102192631B1 (ko) * 2019-11-28 2020-12-17 주식회사우경정보기술 병렬 포렌식 마킹 장치 및 방법
US20240040125A1 (en) * 2022-07-27 2024-02-01 Qualcomm Incorporated Tracking sample completion in video coding

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02264370A (ja) * 1989-04-04 1990-10-29 Mitsubishi Electric Corp 画像処理装置
JPH031689A (ja) * 1989-05-30 1991-01-08 Mitsubishi Electric Corp マルチプロセッサ制御装置
TW395142B (en) * 1997-05-15 2000-06-21 Matsushita Electric Ind Co Ltd Compressed code decoding device and audio decoding device
JP2006211617A (ja) * 2005-01-31 2006-08-10 Toshiba Corp 動画像符号化装置・復号化装置及び符号化ストリーム生成方法
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
JP4182442B2 (ja) * 2006-04-27 2008-11-19 ソニー株式会社 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
US8000388B2 (en) * 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
US8699561B2 (en) * 2006-08-25 2014-04-15 Sony Computer Entertainment Inc. System and methods for detecting and handling errors in a multi-threaded video data decoder
JP5042568B2 (ja) * 2006-09-07 2012-10-03 富士通株式会社 Mpegデコーダ及びmpegエンコーダ
JP2008072647A (ja) * 2006-09-15 2008-03-27 Toshiba Corp 情報処理装置、デコーダおよび再生装置の動作制御方法
MX2009003968A (es) * 2006-10-16 2009-06-01 Nokia Corp Sistema y método para usar segmentos decodificables paralelamente para codificación de video de vistas múltiples.
KR100827107B1 (ko) * 2006-10-20 2008-05-02 삼성전자주식회사 다중 연산부 구조의 h.264 복호화기 및 그 복호화기의압축 영상 데이터 복호화 방법
EP2127394A1 (en) * 2006-12-27 2009-12-02 Intel Corporation Methods and apparatus to decode and encode video information
US20080225950A1 (en) * 2007-03-13 2008-09-18 Sony Corporation Scalable architecture for video codecs
US20080298473A1 (en) * 2007-06-01 2008-12-04 Augusta Technology, Inc. Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
JP2009025939A (ja) * 2007-07-18 2009-02-05 Renesas Technology Corp タスク制御方法及び半導体集積回路
JP5011017B2 (ja) * 2007-07-30 2012-08-29 株式会社日立製作所 画像復号化装置
JP2009038501A (ja) * 2007-07-31 2009-02-19 Toshiba Corp 復号化装置および復号方法
US9131240B2 (en) * 2007-08-23 2015-09-08 Samsung Electronics Co., Ltd. Video decoding method and apparatus which uses double buffering
US8121197B2 (en) * 2007-11-13 2012-02-21 Elemental Technologies, Inc. Video encoding and decoding using parallel processors

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014047943A1 (zh) * 2012-09-29 2014-04-03 华为技术有限公司 视频编码及解码方法、装置及系统
US11089319B2 (en) 2012-09-29 2021-08-10 Huawei Technologies Co., Ltd. Video encoding and decoding method, apparatus and system
US11533501B2 (en) 2012-09-29 2022-12-20 Huawei Technologies Co., Ltd. Video encoding and decoding method, apparatus and system
CN110177297A (zh) * 2014-05-28 2019-08-27 弗劳恩霍夫应用研究促进协会 数据处理器及用户控制数据至音频解码器和渲染器的传输
CN110177297B (zh) * 2014-05-28 2021-12-24 弗劳恩霍夫应用研究促进协会 数据处理器及用户控制数据至音频解码器和渲染器的传输
US11381886B2 (en) 2014-05-28 2022-07-05 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Data processor and transport of user control data to audio decoders and renderers
US11743553B2 (en) 2014-05-28 2023-08-29 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Data processor and transport of user control data to audio decoders and renderers
CN110970038A (zh) * 2019-11-27 2020-04-07 云知声智能科技股份有限公司 语音解码方法及装置

Also Published As

Publication number Publication date
KR20140077226A (ko) 2014-06-24
CN102461173B (zh) 2015-09-09
JP5698156B2 (ja) 2015-04-08
US20120082240A1 (en) 2012-04-05
KR101645058B1 (ko) 2016-08-02
WO2010143226A1 (en) 2010-12-16
EP2441268A1 (en) 2012-04-18
JP2012529779A (ja) 2012-11-22

Similar Documents

Publication Publication Date Title
CN102461173B (zh) 解码装置、解码方法以及编辑装置
US8699581B2 (en) Image processing device, image processing method, information processing device, and information processing method
CN104781786B (zh) 使用延迟重构程序顺序的选择逻辑
US20060112390A1 (en) Systems and methods for performing real-time processing using multiple processors
CN102855220B (zh) 用于使用并行处理来求解线性方程组的设备、系统和方法
CN112866799B (zh) 一种视频抽帧处理方法、装置、设备及介质
CN110830838A (zh) 一种安防高清录像倒播方法及装置
JP2007221323A (ja) 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
CN106681299A (zh) 事件解析装置、事件解析系统、事件解析方法及事件解析程序
US8786617B2 (en) Parallelization of random number generation processing by employing GPU
US20120063746A1 (en) Method and apparatus for extracting key frames from a video
EP3198870B1 (en) Processing parameters for operations on blocks while decoding images
KR102248787B1 (ko) Gpu의 리소스에 대한 전력 소비 제어방법 및 장치
CN100488246C (zh) 恢复重现系统
CN110245258B (zh) 视频文件建立索引的方法、视频文件解析方法及相关系统
EP2028590A1 (en) Processor and command control method
CN115801980A (zh) 视频生成方法和装置
CN112559641B (zh) 拉链表的处理方法及装置、可读存储介质、电子设备
CN111782609B (zh) 一种快速将fastq文件均匀分片的方法
CN111736967B (zh) 多分支流程管控装置、流程模板生成方法及存储介质
CN115033374A (zh) 一种多核可编程控制器的任务到线程匹配方法
CN112489175A (zh) 一种flash分帧解析大数据内容的方法
CN106777262B (zh) 高通量测序数据质量过滤方法和过滤装置
JP5478936B2 (ja) 情報処理装置、情報処理方法
US8838414B2 (en) Determining when to create a prediction based on deltas of metric values

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190530

Address after: American Delaware

Patentee after: Interactive Digital VC Holding Company

Address before: I Si Eli Murli Nor, France

Patentee before: Thomson Licensing Corp.