CN101176089A - 使用多线程单指令多数据处理并行执行媒体编码 - Google Patents

使用多线程单指令多数据处理并行执行媒体编码 Download PDF

Info

Publication number
CN101176089A
CN101176089A CNA2006800166867A CN200680016686A CN101176089A CN 101176089 A CN101176089 A CN 101176089A CN A2006800166867 A CNA2006800166867 A CN A2006800166867A CN 200680016686 A CN200680016686 A CN 200680016686A CN 101176089 A CN101176089 A CN 101176089A
Authority
CN
China
Prior art keywords
macro block
coefficient
value
carried out
block data
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
CNA2006800166867A
Other languages
English (en)
Other versions
CN101176089B (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN101176089A publication Critical patent/CN101176089A/zh
Application granted granted Critical
Publication of CN101176089B publication Critical patent/CN101176089B/zh
Expired - Fee Related 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
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform 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/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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

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)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

描述了一种设备、系统、方法和产品,其用于使用单指令多数据处理并行地执行媒体编码。所述设备可以包括媒体处理节点,用于对宏块数据执行单指令多数据处理。宏块数据可以包含一个宏块中多个块的系数。媒体处理节点可以包括编码模块,用于根据所述宏块数据,生成与多个块相关联的多个标志字,并且根据所述标志字并行地确定多个块的游程值。还描述和声明了其他实施例。

Description

使用多线程单指令多数据处理并行执行媒体编码
背景技术
用于对媒体数据进行编码的各种技术已经由在例如移动图像专家组(MPEG)、国际电信联盟(ITU)、国际标准化组织(ISO)和国际电工委员会(IEC)的各种组织发布的多种标准中进行了描述。例如,MPEG-1、MPEG-2和MPEG-4视频压缩标准描述了块编码技术,在该技术中,将一副图像分割为多个片(slice)、宏块和块。在执行了时间运动预测和/或者空间预测之后,对一个块中的残余值进行熵编码。熵编码的一个公共实例是可变长度编码(VLC),其包括将数据符号转换为可变长度码。熵编码的更多复杂的实例包括:基于上下文(context-based)的自适应可变长度编码(CAVLC)和基于上下文的自适应二进制算术编码(CABAC),其在MPEG-4第10部分或者ITU/IECH.264视频压缩标准,Video coding for Very Low Bit RateCommunication(用于超低比特率通信的视频编码),ITU-TRecommendation H.264(2003年5月)。
视频编码器通常利用由功能固定的逻辑电路或者标量处理器实现的单个单元来执行顺序编码。由于在熵编码中使用的复杂度的增加,顺序视频编码消耗了大量的处理器时间,即使是采用几个GHz的机器也是如此。
附图说明
图1示出了节点的一个实施例;
图2示出了媒体处理的一个实施例;
图3示出了系统的一个实施例;以及
图4示出了逻辑流程的一个实施例。
具体实施方式
图1示出了节点的一个实施例。图1示出了媒体处理节点100的框图。一个节点通常可以在系统100中包括用于传递信息的任何物理实体或逻辑实体,并且按照一组给定的设计参数或者执行约束的需要,节点可以实现为硬件、软件或者其任何组合。
在各种实施例中,节点可以包括或者可以实现为:计算机系统、计算机子系统、计算机、应用设备、工作站、终端、服务器、个人计算机(PC)、膝上型电脑、超小型膝上型电脑、手持计算机、个人数字助理(PDA)、机顶盒(STB)、电话、移动电话、蜂窝电话、手机、无线接入点、基站、无线电网络控制器(RNC)、移动客户中心(MSC)、微处理器、诸如特定用途集成电路(ASIC)之类的集成电路、可编程逻辑器件(PLD)、诸如通用处理器之类的处理器、数字信号处理器(DSP)和/或者网络处理器、接口、输入/输出(I/O)设备(例如,键盘、鼠标、显示器、打印机)、路由器、集线器、网关、桥、交换机、电路、逻辑门、寄存器、半导体装置、芯片、晶体管、或者任何其他装置、机器、工具、设备、组件、或者其组合。
在各种实施例中,节点可以包括或者可以实现为:软件、软件模块、应用程序、程序、子程序、指令集、计算码、字、值、符号、或者其组合。节点可以根据预定的计算机语言、方式或者语法来实现,以命令处理器执行特定的功能。计算机语言的实例可以包括C、C++、Java、BASIC、Perl、Matlab、Pascal、Visual BASIC、汇编语言、机器码、用于网络处理器的微代码、等等。实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以包括或者可以实现为以下一个或多个:处理系统、处理子系统、处理器、计算机、装置、编码器、解码器、编解码器(CODEC)、压缩装置、解压装置、滤波装置(例如,图形缩放装置、解块滤波装置)、变换装置、娱乐系统、显示器、或者任何其他的处理结构。实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以被设置为执行一个或多个处理操作。处理操作通常可以涉及一个或多个操作,例如生成、管理、通信、发送、接收、转存、访问、读取、写入、操作、编码、解码、压缩、解压、重构、加密、滤波、流形成、或者其他信息处理。
实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以被设置为处理一种或多种信息,例如视频信息。视频信息通常涉及源自一个或多个视频图像的或者与一个或多个视频图像相关联的任何数据。例如,在一个实施例中,视频信息可以包括以下一个或多个:视频数据、视频序列、图像组、图像、对象、帧、片、宏块、块、像素、等等。指定给像素的值可以包括实数和/或者整数。实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以执行诸如以下的媒体处理操作:将视频数据编码和/或者压缩为可以进行存储或者形成流的文件,从存储的文件或者媒体流中解码和/或者解压出视频数据,滤波(例如,图形缩放、解块滤波),视频重放,基于互联网的视频应用,电话会议应用,和流媒体视频应用。实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以按照一个或多个协议对信息进行通信、管理、或者处理。协议可以包括用于管理多个节点之间通信的一组预定规则或者指令。协议可以通过由标准化组织(例如,ITU、ISO、IEC、MPEG、互联网工程任务组(IETF)、电子电气工程师协会(IEEE)等等)发布的一种或多种标准来定义。例如,所描述的实施例可以被设置为按照诸如MPEG-1、MPEG-2、MPEG-4、H.264之类的用于视频处理的标准来工作。实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以包括多个模块。按照一组给定的设计或者执行约束的要求,所述模块可以包括或者实现为:一个或多个系统、子系统、处理器、装置、机器、工具、组件、电路、寄存器、应用程序、子程序、或者其任何组合。在各种实施例中,所述模块可以通过一个或多个通信介质连接。通信介质通常可以包括能够携带信息信号的任何介质。例如,按照给定的实现要求,通信介质可以包括:有线通信介质、无线通信介质、或者其组合。实施例并不局限于该情况。
媒体处理节点100可以包括运动估计模块102。在各种实施例中,运动估计模块102可以被设置为接收输入视频数据。在各种实现中,输入视频数据的一个帧可以包括一个或多个片、宏块和块。例如,片可以包括I片、P片或者B片,并且一个片可以包含几个宏块。例如,每个宏块可以包括几个块,诸如亮度块和/或者色度块。在一个实施例中,一个宏块可以包括16×16像素的区域,一个块可以包括8×8像素的区域。在其他实施例中,例如,一个宏块可以被划分为各种块大小,诸如16×16、16×8、8×16、8×8、8×4、4×8和4×4。应该理解的是,虽然提及了宏块和块,但是所描述的实施例和实现可以应用于视频数据的其他划分方式。实施例并不局限于该情况。
在各种实施例中,运动估计模块102可以被设置为对一个或多个宏块进行运动估计。运动估计模块102可以根据一个或多个参考帧,估计宏块中的当前块内容。在各种实现中,运动估计模块102可以将当前帧中的一个或多个宏块与在参考帧中的周围区域进行比较,以确定匹配区域。在一些实施例中,运动估计模块102可以使用多个参考帧(例如,过去的、先前的、将来的)来执行运动估计。在一些实现中,例如,运动估计模块102可以使用运动矢量,来估计匹配区域从一个或多个参考帧到当前帧之间的运动。实施例并不局限于该情况。
媒体处理节点100可以包括模式决定模块104。在各种实施例中,模式决定模块104可以被设置为确定一个或多个宏块的编码模式。例如,所述编码模式可以包括预测编码模式,诸如帧内编码预测和/或者帧间编码预测。帧内块预测可以包括使用先前解码的像素从同一帧中估计像素值。帧间块预测可以包括从在一个序列中连续的多个帧中估计像素值。实施例并不局限于该情况。
媒体处理节点100可以包括运动预测模块106。在各种实施例中,运动预测模块106可以被设置为执行时间运动预测和/或者空间预测,以预测一个块的内容。例如,运动预测模块106可以被设置为使用诸如帧内预测和/或者帧间预测之类的预测技术。在各种实现中,运动预测模块106可以支持双向预测。在一些实施例中,运动预测模块106可以根据周围块中的运动矢量来执行运动矢量预测。实施例并不局限于该情况。
在各种实施例中,运动预测模块106可以被设置为根据在当前帧与一个或多个参考帧之间的差异,来提供残余。例如,该残余可以包含在一个块的被预测内容(例如,像素、运动矢量)与实际内容之间的差异。实施例并不局限于该情况。
媒体处理节点100可以包括变换模块108,例如正向离散余弦变换(FDCT)模块。在各种实施例中,变换模块108可以被设置为提供所述残余的频率描述。在各种实现中,变换模块108可以将所述残余转换到频域,并且生成频率系数矩阵。例如,16×16的宏块可以被变换为16×16的频率系数矩阵,8×8的块可以被变换为8×8的频率系数矩阵。在一些实施例中,变换模块108可以使用基于8×8像素的变换和/或者基于4×4像素的变换。实施例并不局限于该情况。
媒体处理节点100可以包括量化器模块110。在各种实施例中,量化器模块110可以被设置为对经过变换的系数进行量化,并输出残余系数。在各种实现中,量化器模块110可以输出残余系数,其包含有相对少的几个非零值系数。量化器模块110可以通过将很多经过变换的频率系数驱至零,来使得编码变得容易。例如,量化器模块110可以用频率系数除以一个量化因子或者量化矩阵,量化因子或者量化矩阵将较小的系数(例如,高频系数)驱至零。实施例并不局限于该情况。
媒体处理节点100可以包括逆量化器模块112和逆变换模块(IDCT)114。在各种实施例中,逆量化器模块112可以被设置为接收经过量化的变换后的系数,并执行逆量化,以生成经过变换的系数,例如DCT系数。逆变换模块114可以被设置为接收经过变换的系数,例如DCT系数,并执行逆变换,以生成像素数据。在各种实现中,逆量化和逆变换可以用于预测在量化过程中产生的损失。实施例并不局限于该情况。
媒体处理节点100可以包括运动补偿模块116。在各种实施例中,运动补偿模块116可以接收逆变换模块114的输出,并对一个或多个宏块执行运动补偿。在各种实现中,运动补偿模块116可以被设置为补偿匹配区域在当前帧与一个或多个参考帧之间的运动。实施例并不局限于该情况。
媒体处理节点100可以包括扫描模块118。在各种实施例中,扫描模块118可以被设置为从量化器模块110接收经过变换、量化的残余系数,并执行扫描操作。在各种实现中,扫描模块118可以根据一种扫描次序,诸如Z字型扫描次序,来扫描残余系数,以生成经过变换、量化的残余系数的一个序列。实施例并不局限于该情况。
媒体处理节点100可以包括熵编码模块120,例如VLC模块。在各种实施例中,熵编码模块120可以被设置为执行熵编码,例如VLC(例如,游程-级别VLC)、CAVLC、CABAC、等等。通常,CAVLC和CABAC比VLC更为复杂。例如,CAVLC可以使用整数数量的比特来对一个值进行编码,CABAC可以使用算术编码,并使用小数数量的比特来对值进行编码。实施例并不局限于该情况。
在各种实施例中,熵编码模块120可以被设置为执行VLC操作,例如使用霍夫曼表的游程-级别VLC。在这种实施例中,可以将扫描的经过变换、量化的系数序列表示为游程-级别(run-level)符号的序列。每个游程-级别符号可以包括一个游程-级别对,其中级别是非零值系数的值,游程是在该非零值系数之前的零值系数的数量。例如,原始序列的一部分:X1,X2,X3,0,0,0,0,0,X4可以表示为游程-级别符号(0,X1)(0,X2)(0,X3)(5,X4)。在各种实现中,熵编码模块120可以被设置为根据一组预定的霍夫曼表,将每个游程-级别符号转换为不同长度的比特序列。实施例并不局限于该情况。
媒体处理节点100可以包括比特流打包模块122。在各种实施例中,在各种实施例中,比特流打包模块122可以被设置为根据扫描次序对块的熵编码比特序列打包,以形成块的VLC序列。比特流打包模块122可以根据块次序对多个块的比特序列进行打包,以形成宏块等等的编码序列。在各种实现中,可以唯一地确定一个符号的比特序列,以使得打包处理的逆操作可以用于实现对块和宏块的唯一解码。实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以实现多级功能管道。如图1所示,例如,媒体处理节点100可以实现一种功能管道,其被划分为级A中的运动估计操作、级B中的编码操作、和级C中的比特流打包操作。在一些实现中,在级B中的编码操作可以进一步划分。在各种实施例中,媒体处理节点100可以执行基于功能和数据域的划分,以实现对于多线程计算机结构而言可以充分利用的并行性。
在各种实现中,各个独立的线程可以执行运动估计级、编码级和打包比特流级。每个线程可以包括计算机程序的一部分,其可以与其他线程相互独立地且并行地执行。在各种实施例中,可以使用互斥对象(互斥体)和/或者信号灯来实现线程同步。可以通过存储器访问和/或者直接的寄存器访问来实现线程通信。实施例并不局限于该情况。
在各种实施例中,媒体处理节点100可以执行并行的多线程操作。例如,三个独立的线程可以并行地执行级A中的运动估计操作、级B中的编码操作、和级C中的比特流打包操作。在各种实现中,对级A进行操作的多个线程、对级B进行操作的多个线程和对级C进行操作的多个线程可以并行进行。实施例并不局限于该情况。
在各种实现中,功能管道可以被划分为使得级C中的比特流打包操作与级A中的运动估计操作和级B中的编码操作相互分开。功能管道的划分可以是基于功能和数据域的,以实现线程级的并行性。例如,运动估计级A和编码级B可以在数据域上划分为宏块,并且比特流打包级C可以被划分为行,其允许与其他级的计算有更高的并行度。在各种实施例中,对宏块或者块的最终的比特序列打包可以与对宏块或者块之内的游程-级别符号的比特序列打包相互分开,从而使得对于不同宏块和块的熵编码(例如,VLC)操作可以通过不同的线程并行执行。通过将最后的顺序操作,即打包比特流,移到基于宏块的编码操作的外部,可以降低顺序依赖性,并且可以提高并行度。实施例并不局限于该情况。
图2示出了媒体处理的一个实施例。图2示出了可以由诸如媒体处理节点100之类的媒体处理节点执行的一个并行多线程处理的实施例。在各种实施例中,可以对宏块、块、和行进行并行多线程处理。在图2所示的实例中,例如,每个宏块(m,n)可以包括16×16的宏块。对于720像素×480行的标准分辨率(SD)帧来说,M=45,N=30。实施例并不局限于该情况。
在一个实施例中,在级B中对于宏块(10)、(11)、(12)、和(13)中的一个或多个宏块的编码操作可以与级C中对行-00执行的比特流打包操作并行执行。在各种实现中,块级别的处理可以与宏块级别的处理并行执行。在级B中,例如,在宏块(10)中的块级别的编码操作可以与对宏块(00)、(01)、(02)、和(03)的宏块级别的编码操作并行执行。实施例并不局限于该情况。
在各种实施例中,并行多线程操作可能受到层内和/或者层间数据的相关性的影响。在图2所示的实例中,层内数据相关性用实线箭头表示,层间数据相关性用虚线箭头表示。在该实例中,当执行级A中的运动估计操作时,宏块(12)、(13)和(21)之间可能存在层内数据相关性。在级A和级B之间还可能存在宏块(11)的层间相关性。结果,在级B中对宏块(11)执行的编码操作只有在级A中对宏块(11)执行的运动估计操作完成之后才可以开始。在级B和级C之间还可能存在宏块(00)、(01)、(02)、和(03)的层间相关性。结果,在级C中对行-00的比特流打包操作只有在对宏块(00)、(01)、(02)、和(03)的操作完成之后才可以开始。实施例并不局限于该情况。
图3示出了系统的一个实施例。图3示出了单指令多数据(SIMD)处理系统300的框图。在各种实现中,SIMD处理系统300可以被设置为执行各种媒体处理操作,包括媒体编码操作(例如VLC操作)的多线程并行执行。在各种实施例中,媒体处理节点100可以通过实现SIMD处理,来执行媒体编码的多线程并行执行。应该理解的是,所述的SIMD处理系统300是一个示例性的实施例,并且其可以包括额外的组件,在此为了清楚和便于理解而将这些组件省略。
SIMD处理系统300可以包括媒体处理设备302。在各种实施例中,媒体处理设备302可以包括SIMD处理器304,SIMD处理器304可以访问多种功能单元或资源。SIMD处理器304可以包括,例如,通用处理器、专用处理器、DSP、媒体处理器、图形处理器、通信处理器、等等。实施例并不局限于该情况。
在各种实施例中,SIMD处理器304可以包括,例如,多个处理引擎(诸如微引擎或核)。每个处理引擎可以被设置为执行编程逻辑,例如在微引擎的线程上运行的宏块,以执行多个线程(例如,4个或8个)。实施例并不局限于该情况。
在各种实施例中,SIMD处理器304可以包括,例如,SIMD执行引擎(诸如n-操作数的SIMD执行引擎),以在一个指令周期中同时执行数据的n个操作数的SIMD指令。例如,8通道的SIMD执行引擎可以同时执行用于数据的8个32比特操作数的一个SIMD指令。每个操作数都可以被映射到SIMD执行引擎的一个单独的计算通道。在各种实现中,SIMD执行引擎可以接收SIMD指令和n-分量的数据矢量,以对SIMD执行引擎的相应通道进行处理。SIMD引擎可以同时对在该矢量中的所有分量执行该SIMD指令。实施例并不局限于该情况。
在各种实现中,SIMD指令可以是条件型的。例如,SIMD指令或者SIMD指令集可以在满足一个或多个预定条件时执行。在各种实施例中,特定处理操作的并行循环的结束可以通过使用SIMD条件分支和循环机制来实现。所述条件可以是基于一个或多个宏块和/或者块。实施例并不局限于该情况。
在各种实施例中,SIMD处理器304可以实现基于区域的寄存器访问。SIMD处理器304可以包括,例如,寄存器文件和索引文件,以便在寄存器文件中存储描述区域的值,以存储信息。在一些情况下,区域可以是动态的。被索引的寄存器可以包括多个独立的片。在各种实现中,在索引寄存器中的一个值可以定义寄存器文件中的一个区域的一个或多个起点。例如,该值可以表示寄存器识别符和/或者子寄存器识别符,其指示在寄存器中的数据元素的位置。寄存器区域的描述(例如,寄存器号、子寄存器号)可以被编码到用于每个操作数的指令字中。索引寄存器可以包括用于描述寄存器区域的其他值,例如寄存器区域的宽度、水平跨距或者数据类型。实施例并不局限于该情况。
在各种实施例中,SIMD处理器304可以包括一个标志结构。SIMD处理器304可以包括,例如,用于存储标志字或者标志的一个或多个标志寄存器。标志字可以与处理操作所生成的一个或多个结果相关联。例如,所述结果可以与零、非零、等于、不等于、大于、大于等于、小于、小于等于、和/或者溢出条件相关联。标志寄存器和/或者标志字的结构可以是灵活的。实施例并不局限于该情况。
在各种实施例中,标志寄存器可以包括n-通道SIMD执行引擎的n-比特标志寄存器。标志寄存器的每个比特可以与一个通道相关联,并且标志寄存器可以从SIMD执行单元接收并存储信息。在各种实现中,SIMD处理器304可以包括用于一个或多个标志寄存器的水平和/或者垂直求值单元。实施例并不局限于该情况。
SIMD处理器304可以通过总线306耦合到一个或多个功能单元。在各种实施例中,总线306可以包括一个或多个芯片上总线的集合,这些芯片上总线将媒体处理设备302的各种功能单元相互连接。尽管为了便于理解,将总线306描述为单个总线,但应该理解的是,总线306可以包括任何总线构架并且可以包括任意数量的总线和总线的任意组合。实施例并不局限于该情况。
SIMD处理器304可以耦合到指令存储单元308和数据存储单元310。在各种实施例中,指令存储单元308可以被设置为存储SIMD指令,数据存储单元310可以被设置为存储数据,例如与二维图像、三维图像和/或者移动图像相关联的标量和矢量。在各种实现中,指令存储单元308和/或者数据存储单元310可以与单独的指令高速缓存和数据高速缓存、共享的指令数据高速缓存、由公共共享高速缓存所支援的单独的指令高速缓存和数据高速缓存、或者任何其他缓存体系相关联。实施例并不局限于该情况。
指令存储单元308和数据存储单元310可以包括或者可以实现为能够存储数据的任意计算机可读存储介质,包括易失性存储器和非易失性存储器。存储介质的实例包括:随机存取存储器(RAM)、动态RAM(DRAM)、双倍数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、闪存、ROM、可编程ROM(PRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、内容可寻址存储器(CAM)、聚合物存储器(例如,铁电聚合物存储器、奥氏存储器、相变或者铁电存储器)、硅-氧-氮-氧-硅(SONOS)存储器、盘存储器(例如软盘、硬盘、光盘、磁盘)、或者卡(例如,磁卡、光卡)、或者适合存储信息的任何其他类型的介质。存储介质可以包括机器可读存储装置和/或者各种控制器的各种组合,以存储计算机程序指令和数据。实施例并不局限于该情况。
媒体处理设备302可以包括通信接口312。通信接口312可以包括能够将媒体处理设备302耦合到一个或多个网络和/或者网络装置上的任何合适的硬件、软件、或者硬件与软件的组合。在各种实施例中,通信接口312可以包括一种或多种接口,例如,发送接口、接收接口、媒体交换结构(MSF)接口、系统分组接口(SPI)、公共交换接口(CSI)、外设部件接口(PCI)、小型计算机系统接口(SCSI)、互联网交换(IE)接口、结构接口芯片(FIC)、线卡、端口、或者任何其他合适的接口。实施例并不局限于该情况。
在各种实现中,通信接口312可以被设置为将媒体处理设备302连接到一个或多个物理层装置和/或者交换结构314。媒体处理设备302可以提供网络与交换结构314之间的接口。媒体处理设备302可以对数据进行各种媒体处理,以便通过交换结构314进行传输。实施例并不局限于该情况。
在各种实施例中,SIMD处理系统300可以通过采用SIMD指令能力和灵活地访问一个或多个被索引寄存器、基于区域的寄存器和/或者标志寄存器,来实现数据级的并行性。在各种实现中,例如,SIMD处理系统300可以接收数据的多个块和/或者宏块,并以SIMD方式执行块级的和宏块级的处理。可以使用灵活的标志结构将处理操作(例如,比较操作)的结果打包为标志字。可以并行地对被打包到SIMD寄存器中的不同块的标志字执行SIMD操作。例如,可以对标志字使用诸如前导零检测(leading-zero-detection,LZD)操作之类的指令,来确定非零值系数之前的零值系数的数量。可以使用基于区域的寄存器访问能力,将多个块的标志字打包到SIMD寄存器中。使用多索引SIMD移动指令和对于多个源和/或者多个目的地索引的基于区域的寄存器访问,可以执行多个块的非零值系数值的并行移动。使用数据端口分散聚集(scatter-gathering)能力,可以执行并行的存储器访问,例如表(例如,霍夫曼表)查询。实施例并不局限于该情况。
可以参考以下附图和相关的实例来进一步描述各种实施例的操作。一些视图可以包括逻辑流程。应该理解的是,该逻辑流程仅仅是提供了如何实现所描述功能的一个实例。此外,除非明确指出,否则所给出的逻辑流程并不是必须要按照所示出的顺序执行。此外,该逻辑流程可以用硬件元件、由处理器执行的软件元件、或者其组合来实现。实施例并不局限于该情况。
图4示出了逻辑流程400的一个实施例。图4示出了用于执行媒体处理的逻辑流程400。在各种实施例中,逻辑流程400可以通过媒体处理节点来执行,例如媒体处理节点100和/或者编码模块(诸如熵编码模块120)。逻辑流程400可以包括对宏块进行基于SIMD的编码。基于SIMD的编码可以包括例如熵编码,诸如VLC(例如游程-级别VLC)、CAVLC、CABAC等等。在各种实现中,熵编码可以包括将一个被扫描系数(例如,经过变换、量化、扫描的系数)序列表示为游程-级别符号序列。每个游程-级别符号可以包括一个游程-级别对,其中级别是非零值系数的值,游程是在该非零值系数之前的零值系数的数量。实施例并不局限于该情况。
逻辑流程400可以包括输入宏块数据(402)。在各种实施例中,一个宏块可以包含N个块(例如,YUV420为6个块,YUC444为12个块,等等),并且该宏块数据可以包含该宏块中每个块的扫描系数(例如,经过DCT变换、量化、扫描后的系数)序列。例如,一个宏块可以包括6个数据块,并且每个数据块可以包括一个8×8的系数矩阵。在该情况下,对于该宏块中每个块,宏块数据可以包含一个64个系数的序列。在各种实现中,可以以SIMD方式并行地处理宏块数据。实施例并不局限于该情况。
逻辑流程400可以包括根据宏块数据生成标志字(404)。在各种实施例中,可以对宏块数据执行相对于零的比较,并且可以根据该比较结果生成标志字。例如,可以对宏块中每个块的扫描系数序列执行相对于零的比较。每个标志字可以包含基于该比较结果的、针对每个系数的1个比特。例如,可以根据8×8块的64个系数,生成64比特标志字,其包含根据该比较结果的多个1和多个0。在各种实施例中,通过将多个块的比较结果打包到SIMD的灵活的标志寄存器中,可以以SIMD方式并行地生成多个标志字。  实施例并不局限于该情况。
逻辑流程400可以包括存储标志字(406)。在各种实施例中,可以并行存储多个块的标志字。例如,可以并行存储与宏块中的6个块相对应的6个64比特标志字。在各种实现中,通过将标志字打包到具有基于区域的寄存器访问能力的SIMD寄存器中,可以以SIMD方式并行地存储多个块的标志字。实施例并不局限于该情况。
逻辑流程400可以包括判断所有标志字是否都为零(408)。在各种实施例中,可以对每个标志字进行比较,以判断标志字是否仅仅包含零值系数。当标志字包含零值时,可以确定已经到达该块的块尾(EOB)。在各种实现中,可以对多个标志字并行地执行多个判断。例如,可以为6个64比特标志字并行地执行判断。实施例并不局限于该情况。
逻辑流程400可以包括:在所有标志字不都是零的情况下,根据标志字确定游程值(410)。在各种实施例中,可以对标志字执行前导零检测(LZD)操作。例如,可以使用SIMD指令以SIMD方式执行LZD操作。LZD操作的结果可以包括在标志字中非零值系数之前的零值系数的数量。可以根据LZD操作的结果设置游程值,例如,游程=LZD(标志)。游程值可以对应于与该标志字相关联的块的扫描系数序列中的非零值系数之前的零值系数的数量。由此,所确定的游程值可以用于与该标志相关联的块的游程-级别符号。在各种实现中,可以并行地对被打包到SIMD寄存器中的多个块的多个标志字执行SIMDLZD操作。例如,可以并行地对6个64比特标志字执行SIMD LZD操作。实施例并不局限于该情况。
逻辑流程400可以包括根据游程值执行系数的索引移动(412)。在各种实施例中,例如,可以使用SIMD指令以SIMD方式执行索引移动。所述系数可以包括块的扫描系数序列中的非零值系数。游程值可以对应于块的扫描系数序列中的非零值系数之前的零值系数的数量。索引移动可以将非零值系数从存储位置(例如寄存器)移动到输出端。在各种实施例中,非零值系数可以包括块的游程-级别符号中的级别值。在各种实现中,可以并行地为多个块执行索引移动操作。例如,可以使用多索引SIMD移动指令和对于多个源和/或者多个目的地索引的基于区域的寄存器访问,来执行索引移动。多索引SIMD移动指令可以有条件的执行。可以通过对于一个块是否到达了EOB,来判断上述条件。如果对于一个块达到了EOB,则不对该块执行移动。同时,如果对于另一个块还没有达到EOB,则对该块执行移动。实施例并不局限于该情况。
逻辑流程400可以包括执行对递增游程的索引存储(414)。在各种实施例中,例如,可以使用SIMD指令以SIMD方式执行索引存储。递增游程可以用于确定在扫描系数序列中下一个非零值系数的位置。例如,当对一个块的扫描系数序列中的非零值系数执行索引移动时,可以使用递增游程。在各种实现中,可以并行地为多个块执行索引存储操作。多索引SIMD存储指令可以有条件的执行。可以通过对于一个块是否到达了EOB,来判断上述条件。如果对于一个块达到了EOB,则不对该块执行存储。同时,如果对于另一个块还没有达到EOB,则对该块执行存储。实施例并不局限于该情况。
逻辑流程400可以包括执行标志字的左移(416)。在各种实施例中,可以对标志字执行左移,以便从一个块的标志字中移走非零值系数。例如,可以以SIMD方式使用SIMD指令执行左移操作。在各种实施例中,可以并行地对多个块的多个标志字执行左移操作。SIMD左移指令可以有条件的执行。可以通过对于一个块是否到达了EOB,来判断上述条件。如果对于一个块达到了EOB,则不对该块的标志字执行左移。同时,如果对于另一个块还没有达到EOB,则对该块的标志字执行左移。实施例并不局限于该情况。
逻辑流程400可以包括:执行一个或多个并行循环以确定一个宏块中的块的所有游程-级别符号。在各种实施例中,例如,可以使用SIMD循环机制以SIMD方式执行并行循环。在各种实现中,例如,可以使用SIMD条件分支机制以SIMD方式执行条件分支。条件分支可以用于当对于一个块的处理已经结束时终止和/或者绕过一个循环。所述条件可以是基于一个块、一些块或者全部块。例如,当与特定块相关联的标志字仅仅包含零值系数时,条件分支可以中断对于该特定块的进一步处理,同时允许对于其他块继续进行处理。该处理可以包括但是不局限于:确定游程值、系数的索引移动、以及递增游程的索引存储。实施例并不局限于该情况。
逻辑流程400可以包括:当所有标志字都为零时输出VLC码阵列(418)。在各种实施例中,可以根据预定的霍夫曼表,将游程-级别符号转换为VLC码。在各种实现中,例如,可以使用数据端口的分散-聚集能力以SIMD方式执行并行的霍夫曼表查询。可以将VLC码阵列输出到打包模块,例如比特流打包模块122,以形成一个宏块的码序列。实施例并不局限于该情况。
在各种实现中,所描述的实施例可以使用SIMD处理来进行媒体编码(例如VLC)的并行执行。所描述的实施例可以包括以下或者通过以下所实现:各种处理器结构(例如多线程和/或者多核结构)和/或者各种SIMD能力(例如,SIMD指令集、基于区域的寄存器、带有多个独立索引的索引寄存器、和/或者灵活的标志寄存器)。实施例并不局限于该情况。
在各种实现中,所描述的实施例可以实现媒体编码的线程级和/或者数据级的并行性,其实现了处理性能的提高。例如,多线程方法的实现可以大约与处理核的数量和/或者硬件线程的数量成线性地提高多线程处理速度(例如,在16核处理器上有约16倍的速度提高)。使用标志字和LZD指令的LZD检测的实现与标量循环实现相比可以提高处理速度(例如,约4-10倍的速度提高)。使用SIMD LZD操作和分支/循环机制的多个块(例如6个块)的并行处理与按照块的顺序的算法相比可以提高处理速度(例如,约6倍的速度提高)。实施例并不局限于该情况。
在此,可以提出各种具体细节来提供对上述实施例的透彻理解。然而,本领域技术人员应该理解的是,没有这些具体细节也可以实现上述实施例。在其他实例中,没有详细的描述已知的操作、组件和电路,以便不会使得上述实施例变得模糊。可以理解的是,在此公开的具体结构和功能细节是代表性的,而不是必须要限制上述实施例的范围。
在各种实现中,所描述的实施例可以包括或者形成有线通信系统、无线通信系统或者其组合的一部分。尽管可以通过举例使用特定通信介质来描述特定的实施例,但是应该理解的是,在此所讨论的原理和技术可以使用各种通信介质和相关技术来实现。
在各种实现中,所描述的实施例可以包括或者形成网络的一部分,该网络例如为广域网(WAN)、局域网(LAN)、城域网(MAN)、互联网、世界互联网、电话网络、无线电网络、电视网络、电缆网、卫星网、无线个域网(WMAN)、无线WAN(WWAN)、无线LAN(WLAN)、无线MAN(WMAN)、码分多址(CDMA)蜂窝无线电话通信网络、第三代(3G)网络(诸如宽带CDMA(WCDMA))、第四代(4G)网络、时分多址(TDMA)网络、扩展TDMA(E-TDMA)蜂窝无线电话网络、全球移动通信系统(GSM)蜂窝无线电话网络北美数字蜂窝(NADC)蜂窝无线电话网络、全球移动电话系统(UMTS)网络、和/或者任何其他用于运载数据的有线或者无线通信网络。实施例并不局限于该情况。
在各种实现中,所描述的实施例可以被设置为在一个或多个有线通信介质上传输信息。有线通信介质的实例可以包括电线、电缆、印刷电路板(PCB)、底板、交换结构、半导体材料、双绞线、同轴电缆、光纤等等。
在各种实现中,所描述的实施例可以被设置为在一种或多种类型的无线通信介质上传输信息。无线通信介质的一个实例可以包括无线谱的多个部分,例如射频(RF)谱。在这种实现中,所描述的实施例可以包括适合于在指定的无线谱上传输信息信号的组件和接口,例如一个或多个天线、无线发射机/接收机(“收发机”)、放大器、滤波器、控制逻辑电路、等等。如在此所用到的,术语“收发机”可以以非常广泛的意义来使用,包括发射机、接收机、或者两者的组合,并且可以包括各种组件,例如天线、放大器等等。天线的实例可以包括内部天线、全向天线、单极天线、偶极天线、底端馈电天线、圆形极化天线、微带天线、分集天线、双天线、天线阵列、等等。实施例并不局限于该情况。
在各种实施例中,通信介质可以连接到使用输入/输出(I/O)适配器的节点。I/O适配器可以被设置为采用任何合适的技术来工作,以使用所需要的一组通信协议、服务或者操作流程来控制节点之间的信息信号。I/O适配器还可以包括合适的物理连接器,以便将I/O适配器与相应的通信介质相连。I/O适配器的实例可以包括:网络接口、网络接口卡(NIC)、线卡、盘控制器、视频控制器、音频控制器、等等。实施例并不局限于该情况。
在各种实现中,所描述的实施例可以被设置为传输一种或者多种信息,例如媒体信息和控制信息。媒体信息通常可以涉及表示对于用户而言有意义的内容的任何数据,例如图像信息、视频信息、图形信息、音频信息、声音信息、文本信息、数字信息、文字数字符号、字符符号、等等。控制信息通常可以涉及表示对于自动系统而言有意义的命令、指令或者控制字的任何数据。例如,控制信息可以用于通过一个系统路由媒体信息,或者命令一个节点以特定方式处理媒体信息。媒体信息和控制信息可以在多个不同装置和网络之间来回发送。实施例并不局限于该情况。
在一些实现中,可以根据一个或多个IEEE 802标准,包括用于WLAN的IEEE 802.11x(例如,802.11a、b、g/h、j、n)标准和/或用于WMAN的802.16标准,来传输信息。可以根据一个或多个数字视频广播地面(DVB-T)广播标准以及高性能无线局域网(HiperLAN)标准来传输信息。实施例并不局限于该情况。
在各种实现中,例如,所描述的实施例可以包括或者形成分组网络的一部分,该分组网络根据由一个或多个IEEE 802标准所定义的分组协议来传输信息。在各种实施例中,可以使用异步传输模式(ATM)协议、物理层会聚协议(PLCP)、帧中继、系统网络架构(SNA)等等来传输分组。在一些实现中,可以使用介质访问控制协议,例如由一个或多个IEEE 802以太网标准所定义的具有冲突检测的载波监听多路访问(CSMA/CD),来传输分组。在一些实现中,可以根据互联网协议,例如传输控制协议(TCP)和互联网协议(IP)、TCP/IP、X.25、超文本传输协议(HTTP)、用户数据报协议(UDP)等等,来传输分组。实施例并不局限于该情况。
一些实施例可以使用例如机器可读介质或者产品来实现,所述机器可读介质或者产品可以存储指令或者指令集,当所述指令或者指令集被机器执行时,可以使得该机器执行根据上述实施例的方法和/或者操作。这种机器可以包括,例如,任意合适的处理平台、计算平台、计算装置、处理装置、计算系统、处理系统、计算机、处理器等等,并且可以使用硬件和/或者软件的任意合适的组合来实现。该机器可读介质或者产品可以包括,例如,任何适合类型的存储器单元、存储器装置、存储器产品、存储器介质、存储装置,存储产品、存储介质和/或者存储单元,例如,存储器、可移动或者不可移动介质、可擦除或者不可擦除介质、可写或者可重写介质、数字或者模拟介质、硬盘、软盘、压缩盘ROM(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-RW)、光盘、磁盘、磁光盘、可移动存储卡或者盘、各种类型的数字多功能盘(DVD)、磁带、盒式磁带、等等。所述指令可以包含任何合适类型的码,例如源代码、编译过的代码、经过解释的代码、可执行代码、静态代码、动态代码、等等。所述指令可以使用任何合适的高级、低级、面向对象的、可视的、经过编译的和/或者经过解释的编程语言来实现。实施例并不局限于该情况。
使用可以根据任意数量的因素变化的结构来实现一些实施例,这些因素例如为需要的计算速率、功率等级、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、和其他性能约束。例如,可以使用由通用处理器或者专用处理器执行的软件来实现实施例。在另一个实例中,实施例可以实现为专用硬件,例如电路、ASIC、PLD、DSP等等。在再一个实施例中,可以使用编程的通用计算机组件或者用户定制的硬件组件的任意组合来实现实施例。实施例并不局限于该情况。
除非特别声明,否则应该理解诸如“处理”、“计算”、“运算”、“判断”等等术语指的是计算机或者计算机系统、或者类似的电子计算装置的动作和/或者处理,类似的电子计算装置用于将在该计算系统的寄存器和/或者存储器中表示为物理量(电子)的数据,处理和/或者变换为在该计算系统的存储器、寄存器或者其他这种信息存储、传输或者显示装置中表示为物理量(电子)的数据。实施例并不局限于该情况。
还要指出的是,任何“一个实施例”或者“实施例”的称谓都意味着结合该实施例所描述的特定特征、结构或者特点包含在至少一个实施例中。在本说明书中的各个位置处的短语“在一个实施例中”的出现并不是必须指同一实施例。
虽然在此已经描述了各个实施例的特定特征,但是本领域技术人员可以进行各种修改、替代、改变、和等价变化。因此要理解的是,附带的权利要求目的是覆盖落入上述实施例的真实精神范围之内的所有这些修改和变化。

Claims (35)

1.一种设备,包括:
媒体处理节点,用于对宏块数据执行单指令多数据处理,所述宏块数据包含宏块中多个块的系数,所述媒体处理节点包括:
编码模块,用于根据所述宏块数据,生成与所述多个块相关联的多个标志字,并且根据所述标志字并行地确定多个块的游程值。
2.如权利要求1所述的设备,其中,所述系数包括所述多个块中每个块的经过变换、量化、扫描的系数的序列。
3.如权利要求1所述的设备,其中,所述编码模块将标志字存储在标志寄存器中。
4.如权利要求1所述的设备,其中,所述编码模块通过执行前导零检测来确定游程值。
5.如权利要求1所述的设备,其中,所述编码模块根据所述游程值,对多个块的非零值系数执行并行的移动。
6.如权利要求5所述的设备,其中,所述非零值系数对应于多个块的级别值。
7.如权利要求1所述的设备,其中,所述编码模块输出码阵列至打包模块,以形成所述宏块的码序列。
8.如权利要求7所述的设备,其中,
所述打包模块与所述编码模块分离,并且
所述编码模块对多个宏块执行多线程处理。
9.一种系统,包括:
通信介质;
单指令多数据处理设备,耦合至所述通信介质,所述单指令多数据处理设备包括:
媒体处理节点,用于处理宏块数据,所述宏块数据包含宏块中多个块的系数,所述媒体处理节点包括编码模块,其根据所述宏块数据生成与所述多个块相关联的多个标志字,并且根据所述标志字并行地确定多个块的游程值。
10.如权利要求9所述的系统,其中,所述系数包括所述多个块中每个块的经过变换、量化、扫描的系数的序列。
11.如权利要求9所述的系统,其中,所述编码模块将标志字存储在标志寄存器中。
12.如权利要求9所述的系统,其中,所述编码模块通过执行前导零检测来确定游程值。
13.如权利要求9所述的系统,其中,所述编码模块根据所述游程值,对多个块的非零值系数执行并行的移动。
14.如权利要求13所述的系统,其中,所述非零值系数对应于多个块的级别值。
15.如权利要求9所述的系统,其中,所述编码模块输出码阵列至打包模块,以形成所述宏块的码序列。
16.如权利要求15所述的系统,其中,
所述打包模块与所述编码模块分离,并且
所述编码模块对多个宏块执行多线程处理。
17.一种方法,包括步骤:
接收宏块数据,所述宏块数据包含宏块中多个块的系数;并且
对所述宏块数据执行单指令多数据处理,包括步骤:根据所述宏块数据生成与所述多个块相关联的多个标志字,并且根据所述标志字并行地确定多个块的游程值。
18.如权利要求17所述的方法,其中,所述系数包括所述多个块中每个块的经过变换、量化、扫描的系数的序列。
19.如权利要求17所述的方法,还包括:将标志字存储在标志寄存器中。
20.如权利要求17所述的方法,还包括:通过执行前导零检测来确定游程值。
21.如权利要求17所述的方法,还包括:根据所述游程值,对多个块的非零值系数执行并行的移动。
22.如权利要求21所述的方法,还包括:根据所述非零值系数,确定多个块的级别值。
23.如权利要求17所述的方法,还包括:输出码阵列,以形成所述宏块的码序列。
24.如权利要求23所述的方法,还包括:对多个宏块执行多线程处理。
25.一种包含有机器可读存储介质的产品,所述机器可读存储介质所包含的指令在执行时使得系统:
接收宏块数据,所述宏块数据包含宏块中多个块的系数;并且
对所述宏块数据执行单指令多数据处理,包括步骤:根据所述宏块数据生成与所述多个块相关联的多个标志字,并且根据所述标志字并行地确定多个块的游程值。
26.如权利要求25所述的产品,其中,所述系数包括所述多个块中每个块的经过变换、量化、扫描的系数的序列。
27.如权利要求25所述的产品,还包括指令,其在执行时使得所述系统:将标志字存储在标志寄存器中。
28.如权利要求25所述的产品,还包括指令,其在执行时使得所述系统:通过执行前导零检测来确定游程值。
29.如权利要求25所述的产品,还包括指令,其在执行时使得所述系统:根据所述游程值,对多个块的非零值系数执行并行的移动。
30.如权利要求29所述的产品,还包括指令,其在执行时使得所述系统:根据所述非零值系数,确定多个块的级别值。
31.如权利要求25所述的产品,还包括指令,其在执行时使得所述系统:输出码阵列,以形成所述宏块的码序列。
32.如权利要求25所述的产品,还包括指令,其在执行时使得所述系统:对多个宏块执行多线程处理。
33.一种方法,包括:
接收宏块数据;并且
对所述宏块数据执行并行的多线程处理,包括并发的运动估计操作、编码操作、以及重构操作,其中,所述编码操作在功能和数据域上与所述重构操作分离,以实现线程级的并行性。
34.如权利要求33所述的方法,其中,多线程处理包括可变长度编码操作。
35.如权利要求33所述的方法,其中,多线程处理包括比特流打包操作。
CN2006800166867A 2005-05-16 2006-05-02 使用多线程单指令多数据处理并行执行媒体编码 Expired - Fee Related CN101176089B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/131,158 US20060256854A1 (en) 2005-05-16 2005-05-16 Parallel execution of media encoding using multi-threaded single instruction multiple data processing
US11/131,158 2005-05-16
PCT/US2006/017047 WO2006124299A2 (en) 2005-05-16 2006-05-02 Parallel execution of media encoding using multi-threaded single instruction multiple data processing

Publications (2)

Publication Number Publication Date
CN101176089A true CN101176089A (zh) 2008-05-07
CN101176089B CN101176089B (zh) 2011-03-02

Family

ID=37112137

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800166867A Expired - Fee Related CN101176089B (zh) 2005-05-16 2006-05-02 使用多线程单指令多数据处理并行执行媒体编码

Country Status (7)

Country Link
US (1) US20060256854A1 (zh)
EP (1) EP1883885A2 (zh)
JP (1) JP4920034B2 (zh)
KR (1) KR101220724B1 (zh)
CN (1) CN101176089B (zh)
TW (1) TWI365668B (zh)
WO (1) WO2006124299A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101803388B (zh) * 2008-05-23 2012-11-21 松下电器产业株式会社 图像解码装置、图像解码方法、图像编码装置、以及图像编码方法
CN104869398A (zh) * 2015-05-21 2015-08-26 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
CN102461173B (zh) * 2009-06-09 2015-09-09 汤姆森特许公司 解码装置、解码方法以及编辑装置
CN106791861A (zh) * 2016-12-20 2017-05-31 杭州当虹科技有限公司 一种基于CUDA架构的DNxHD VLC编码方法
CN107547896A (zh) * 2016-06-27 2018-01-05 杭州当虹科技有限公司 一种基于CUDA的ProRes VLC编码
CN106055310B (zh) * 2008-06-30 2020-04-28 英特尔公司 图形处理中管理活动线程依赖关系

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070086528A1 (en) * 2005-10-18 2007-04-19 Mauchly J W Video encoder with multiple processors
US7778822B2 (en) * 2006-05-19 2010-08-17 Sony Ericsson Mobile Communications Ab Allocating audio processing among a plurality of processing units with a global synchronization pulse
US20080031333A1 (en) * 2006-08-02 2008-02-07 Xinghai Billy Li Motion compensation module and methods for use therewith
US9094686B2 (en) * 2006-09-06 2015-07-28 Broadcom Corporation Systems and methods for faster throughput for compressed video data decoding
US8213509B2 (en) 2006-10-06 2012-07-03 Calos Fund Limited Liability Company Video coding on parallel processing systems
CN101584216A (zh) * 2006-12-27 2009-11-18 英特尔公司 解码和编码视频信息的方法和装置
KR20080086766A (ko) * 2007-03-23 2008-09-26 삼성전자주식회사 픽셀 단위의 컨텍스트 모델을 이용한 영상의 부호화,복호화 방법 및 장치
US8213511B2 (en) * 2007-04-30 2012-07-03 Texas Instruments Incorporated Video encoder software architecture for VLIW cores incorporating inter prediction and intra prediction
US8305387B2 (en) * 2007-09-07 2012-11-06 Texas Instruments Incorporated Adaptive pulse-width modulated sequences for sequential color display systems
CN101593095B (zh) 2008-05-28 2013-03-13 国际商业机器公司 基于流水级的数据处理方法和系统
JP5774995B2 (ja) * 2008-11-13 2015-09-09 トムソン ライセンシングThomson Licensing Gopマージおよびビット割付けを用いたマルチスレッド・ビデオ符号化
US20100226441A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Frame Capture, Encoding, and Transmission Management
US20100225655A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Concurrent Encoding/Decoding of Tiled Data
US8638337B2 (en) 2009-03-16 2014-01-28 Microsoft Corporation Image frame buffer management
US9654792B2 (en) 2009-07-03 2017-05-16 Intel Corporation Methods and systems for motion vector derivation at a video decoder
US8917769B2 (en) * 2009-07-03 2014-12-23 Intel Corporation Methods and systems to estimate motion based on reconstructed reference frames at a video decoder
US8327119B2 (en) * 2009-07-15 2012-12-04 Via Technologies, Inc. Apparatus and method for executing fast bit scan forward/reverse (BSR/BSF) instructions
CN102763136B (zh) * 2010-02-11 2015-04-01 诺基亚公司 用于提供多线程视频解码的方法和设备
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US9049444B2 (en) 2010-12-22 2015-06-02 Qualcomm Incorporated Mode dependent scanning of coefficients of a block of video data
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
KR101531455B1 (ko) * 2010-12-25 2015-06-25 인텔 코포레이션 하드웨어 및 소프트웨어 시스템이 자동으로 프로그램을 복수의 병렬 스레드들로 분해하는 시스템들, 장치들, 및 방법들
US20120236940A1 (en) * 2011-03-16 2012-09-20 Texas Instruments Incorporated Method for Efficient Parallel Processing for Real-Time Video Coding
US9014111B2 (en) * 2011-08-10 2015-04-21 Industrial Technology Research Institute Multi-block radio access method and transmitter module and receiver module using the same
CN103918270B (zh) * 2011-09-30 2018-08-21 英特尔公司 用于视频编码管线的系统、方法和计算机程序产品
WO2013077884A1 (en) * 2011-11-25 2013-05-30 Intel Corporation Instruction and logic to provide conversions between a mask register and a general purpose register or memory
KR101886333B1 (ko) * 2012-06-15 2018-08-09 삼성전자 주식회사 멀티 코어를 이용한 영역 성장 장치 및 방법
US9374592B2 (en) * 2012-09-08 2016-06-21 Texas Instruments Incorporated Mode estimation in pipelined architectures
US20140072027A1 (en) * 2012-09-12 2014-03-13 Ati Technologies Ulc System for video compression
CN102917216A (zh) * 2012-10-16 2013-02-06 深圳市融创天下科技股份有限公司 一种运动搜索的方法、系统和终端设备
KR101978178B1 (ko) * 2013-05-24 2019-05-15 삼성전자주식회사 초음파 데이터를 처리하는 데이터 처리 장치 및 방법
CN104795073A (zh) * 2015-03-26 2015-07-22 无锡天脉聚源传媒科技有限公司 一种音频数据的处理方法及装置
US20220394284A1 (en) * 2021-06-07 2022-12-08 Sony Interactive Entertainment Inc. Multi-threaded cabac decoding

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5289577A (en) * 1992-06-04 1994-02-22 International Business Machines Incorporated Process-pipeline architecture for image/video processing
US5715009A (en) * 1994-03-29 1998-02-03 Sony Corporation Picture signal transmitting method and apparatus
JP3474005B2 (ja) * 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
JPH1056641A (ja) * 1996-08-09 1998-02-24 Sharp Corp Mpegデコーダ
KR100262453B1 (ko) * 1996-08-19 2000-08-01 윤종용 비디오데이터처리방법및장치
US6192073B1 (en) * 1996-08-19 2001-02-20 Samsung Electronics Co., Ltd. Methods and apparatus for processing video data
US6061711A (en) * 1996-08-19 2000-05-09 Samsung Electronics, Inc. Efficient context saving and restoring in a multi-tasking computing system environment
JP3555729B2 (ja) * 1997-04-22 2004-08-18 日本ビクター株式会社 可変長符号化データの処理方法及び装置
US6304197B1 (en) * 2000-03-14 2001-10-16 Robert Allen Freking Concurrent method for parallel Huffman compression coding and other variable length encoding and decoding
JP2002159007A (ja) * 2000-11-17 2002-05-31 Fujitsu Ltd Mpeg復号装置
US6757439B2 (en) * 2000-12-15 2004-06-29 International Business Machines Corporation JPEG packed block structure
KR100399932B1 (ko) * 2001-05-07 2003-09-29 주식회사 하이닉스반도체 메모리의 양을 감소시키기 위한 비디오 프레임의압축/역압축 하드웨어 시스템
US20110087859A1 (en) * 2002-02-04 2011-04-14 Mimar Tibet System cycle loading and storing of misaligned vector elements in a simd processor
JP3857614B2 (ja) * 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
KR100585710B1 (ko) * 2002-08-24 2006-06-02 엘지전자 주식회사 가변길이 동영상 부호화 방법
JP3688255B2 (ja) * 2002-09-20 2005-08-24 株式会社日立製作所 車載用電波レーダ装置及びその信号処理方法
US6931061B2 (en) * 2002-11-13 2005-08-16 Sony Corporation Method of real time MPEG-4 texture decoding for a multiprocessor environment
JP4101034B2 (ja) * 2002-11-14 2008-06-11 松下電器産業株式会社 符号化装置及び方法
US7126991B1 (en) * 2003-02-03 2006-10-24 Tibet MIMAR Method for programmable motion estimation in a SIMD processor
US7254272B2 (en) * 2003-08-21 2007-08-07 International Business Machines Corporation Browsing JPEG images using MPEG hardware chips
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
US8082419B2 (en) * 2004-03-30 2011-12-20 Intel Corporation Residual addition for video software techniques
US20050289329A1 (en) * 2004-06-29 2005-12-29 Dwyer Michael K Conditional instruction for a single instruction, multiple data execution engine
US7653132B2 (en) * 2004-12-21 2010-01-26 Stmicroelectronics, Inc. Method and system for fast implementation of subpixel interpolation
US20060209965A1 (en) * 2005-03-17 2006-09-21 Hsien-Chih Tseng Method and system for fast run-level encoding

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101803388B (zh) * 2008-05-23 2012-11-21 松下电器产业株式会社 图像解码装置、图像解码方法、图像编码装置、以及图像编码方法
CN106055310B (zh) * 2008-06-30 2020-04-28 英特尔公司 图形处理中管理活动线程依赖关系
CN102461173B (zh) * 2009-06-09 2015-09-09 汤姆森特许公司 解码装置、解码方法以及编辑装置
CN104869398A (zh) * 2015-05-21 2015-08-26 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
CN104869398B (zh) * 2015-05-21 2017-08-22 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
CN107547896A (zh) * 2016-06-27 2018-01-05 杭州当虹科技有限公司 一种基于CUDA的ProRes VLC编码
CN107547896B (zh) * 2016-06-27 2020-10-09 杭州当虹科技股份有限公司 一种基于CUDA的Prores VLC编码方法
CN106791861A (zh) * 2016-12-20 2017-05-31 杭州当虹科技有限公司 一种基于CUDA架构的DNxHD VLC编码方法
CN106791861B (zh) * 2016-12-20 2020-04-07 杭州当虹科技股份有限公司 一种基于CUDA架构的DNxHD VLC编码方法

Also Published As

Publication number Publication date
JP2008541663A (ja) 2008-11-20
CN101176089B (zh) 2011-03-02
JP4920034B2 (ja) 2012-04-18
KR101220724B1 (ko) 2013-01-09
WO2006124299A2 (en) 2006-11-23
WO2006124299A3 (en) 2007-06-28
TWI365668B (en) 2012-06-01
US20060256854A1 (en) 2006-11-16
KR20080011193A (ko) 2008-01-31
EP1883885A2 (en) 2008-02-06
TW200708115A (en) 2007-02-16

Similar Documents

Publication Publication Date Title
CN101176089B (zh) 使用多线程单指令多数据处理并行执行媒体编码
CN101911702B (zh) 针对支持cabac的视频编码过程而量化视频块的系数的方法和装置
CN101946515B (zh) Cabac译码器的二回合量化
CA3014052C (en) Low-complexity intra prediction for video coding
CN104067524B (zh) 具有精简的初始化值集合的上下文自适应熵译码
CN102870413B (zh) 用于视频数据译码的可变长度码
CN103270700B (zh) 使用平面表达的增强帧内预测编码
CN102804171B (zh) 用于媒体数据译码的16点变换
CN105052140A (zh) 用于下一代视频的模式和参考类型数据的内容自适应熵编码
CN101185335B (zh) 高效视频解码加速器
CN101573979B (zh) 二进制算术视频编码的高性能再归一化
CN102804172A (zh) 用于媒体数据译码的16点变换
CN103238323A (zh) 在视频译码中基于视频块的扫描次序对块内的最后有效系数的位置进行译码
CN106256127B (zh) 用于针对显示流压缩(dsc)在块预测模式中译码的系统和方法
CN109587479A (zh) 视频图像的帧间预测方法、装置及编解码器
CN103931182A (zh) 帧内预测视频译码中的非正方形变换
CN103299620A (zh) 在视频译码中使用最可能扫描次序对用于视频块的扫描次序信息进行有效译码
CN101690227A (zh) 用于对子带进行熵译码的子带扫描技术
CN103636223A (zh) 用于视频译码的多区扫描次序
CN101663895B (zh) 使用所估计译码成本的视频译码模式选择
KR20130036768A (ko) 복잡도 균형 엔트로피 코딩을 제공하는 방법 및 장치
CN103650514A (zh) 使用vlc码字来译码语法元素
CN105791873A (zh) 视频编码方法
CN102055970A (zh) 多重标准视频解码系统
Jun et al. Development of an ultra-HD HEVC encoder using SIMD implementation and fast encoding schemes for smart surveillance system

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110302

Termination date: 20170502