CN106454354A - 一种avs2并行编码处理***及方法 - Google Patents

一种avs2并行编码处理***及方法 Download PDF

Info

Publication number
CN106454354A
CN106454354A CN201610808832.5A CN201610808832A CN106454354A CN 106454354 A CN106454354 A CN 106454354A CN 201610808832 A CN201610808832 A CN 201610808832A CN 106454354 A CN106454354 A CN 106454354A
Authority
CN
China
Prior art keywords
band
thread
parallel encoding
encoded
avs2
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
CN201610808832.5A
Other languages
English (en)
Other versions
CN106454354B (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.)
Sun Yat Sen University
Original Assignee
Sun Yat Sen University
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 Sun Yat Sen University filed Critical Sun Yat Sen University
Priority to CN201610808832.5A priority Critical patent/CN106454354B/zh
Publication of CN106454354A publication Critical patent/CN106454354A/zh
Application granted granted Critical
Publication of CN106454354B publication Critical patent/CN106454354B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

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

本发明公开了一种AVS2并行编码处理***及方法,该***包括用于以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理的编码单元。该方法包括以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理这一步骤。通过使用本发明的AVS2编码处理,能大大提高AVS2的编码处理效率,满足AVS2实时编码的需要。本发明作为一种AVS2并行编码处理***及方法可广泛应用于音视频编码领域中。

Description

一种AVS2并行编码处理***及方法
技术领域
本发明涉及音视频编解码技术,尤其涉及一种AVS2并行编码处理***及方法。
背景技术
技术词解释:
TLS:Thread Local Storage的简称,中文为线程局部存储。
AVS2是继AVS之后我国自主研发的新一代音视频编码标准,是《信息技术高效多媒体编码》标准的简称。它的目标是:在主流技术可以实现的条件下,当重建视频的主观质量一致时,AVS2对高清或更高分辨率视频编码效率至少要比AVS1的最好性能提高1倍。在主流的编码配置下,效率要高于最新的国际标准HEVC/H.265。AVS2与最新的国际编码标准HEVC/H.265对于常规视频的编码效率相当,比国际标准H.264/AVC以及第一代国家标准AVSl的编码效率提高近1倍;而对于监控等场景类视频,AVS2的压缩效率是H.264/AVC的4倍。因此,作为我国制定的第二代具有自主知识产权的音视频编解码标准,AVS2直接影响着我国在国际视频领域的核心竞争力,关系着未来我国在信息领域的战略部署,对于我国信息化产业的快速发展具有重大意义。然而,由于AVS2引入了很多最新的视频编码技术,编码计算复杂度也明显增加,给实时编码实现带来了新的挑战。
根据AVS2标准可知,AVS2编码器在编码一帧图像时,是以LCU(即最大编码单元)为基本单位串行进行的,而其具体原理为:在编码每一个LCU时,首先对当前LCU的相关变量进行初始化,然后判断该LCU是否属于新的条带,若是属于新的条带,则对当前条带的相关变量进行初始化,并把条带头信息输入码流,而后再对当前LCU进行编码;最后经过熵编码得到需要传输的码流,包括条带头数据、残差信息、分块信息等;其中,在存储码流的时候,码流是不断叠加存储在一个总的码流存储器中的,直到所有LCU编码完成,则输出总码流,一帧图像编码完毕。由此可见,传统的AVS2编码处理技术存有处理效率低下、无法满足AVS2实时编码要求等缺点。
发明内容
为了解决上述技术问题,本发明的目的是提供一种编码处理效率高的AVS2并行编码处理***。
本发明的另一目的是提供一种编码处理效率高的AVS2并行编码处理方法。
本发明所采用的技术方案是:一种AVS2并行编码处理***,该***包括:
编码单元,用于以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理。
进一步,所述编码单元包括:
划分模块,用于以条带作为基本编码单元对帧图像进行条带划分,从而得到该帧图像的多个条带;
编码控制处理模块,用于将当前帧图像的所有条带依次放入任务队列中,然后利用线程池来对多个条带进行并行编码处理。
进一步,所述利用线程池来对多个条带进行并行编码处理,其具体包括:
当任务队列中每放入一个条带时,则唤醒线程池中一个空闲工作线程,令该被唤醒的工作线程对当前被放入任务队列的条带进行编码处理;
当任务队列中存有未进行编码的条带,且所有的工作线程均处于忙碌状态时,则创建新的工作线程来对该未进行编码的条带进行编码处理,或者,使任务队列中未进行编码的条带处于等待状态,直到结束任务之后重新返回线程池的工作线程来对该未进行编码的条带进行编码处理;
当工作线程完成一个条带的编码处理后,则重新返回线程池,并将当前已完成编码处理的条带的数量加1,然后判断任务队列中是否存有未进行编码的条带,若是,则令该工作线程对该未进行编码的条带进行编码处理,反之,则将该工作线程置为阻塞状态,等待下一个任务的到来;
当已完成编码处理的条带的数量与帧图像的总条带数量相同时,则唤醒主线程进行数据串行处理。
进一步,所述对条带进行编码处理,其具体为:
对条带的条带头信息进行存储,然后对条带内的LCU依次进行编码,直到条带内的所有LCU编码完成。
进一步,所述利用线程池来对多个条带进行并行编码处理,其具体还包括:
当工作线程需要进行全局变量访问时,则对其自身存有的全局变量的副本进行操作,从而实现全局变量的访问。
进一步,还包括码流缓冲单元,所述码流缓冲单元包括一个总码流存储器和多个子码流存储器;
所述总码流存储器,用于存储帧图像的图像头信息;
所述子码流存储器,用于存储条带的条带头信息以及条带内所有LCU的编码信息。
本发明所采用的另一技术方案是: 一种AVS2并行编码处理方法,该方法包括:
以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理。
进一步,所述以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理这一步骤具体包括:
以条带作为基本编码单元对帧图像进行条带划分,从而得到该帧图像的多个条带;
将当前帧图像的所有条带依次放入任务队列中,然后利用线程池来对多个条带进行并行编码处理。
进一步,所述利用线程池来对多个条带进行并行编码处理这一步骤,其具体包括:
当任务队列中每放入一个条带时,则唤醒线程池中一个空闲工作线程,令该被唤醒的工作线程对当前被放入任务队列的条带进行编码处理;
当任务队列中存有未进行编码的条带,且所有的工作线程均处于忙碌状态时,则创建新的工作线程来对该未进行编码的条带进行编码处理,或者,使任务队列中未进行编码的条带处于等待状态,直到结束任务之后重新返回线程池的工作线程来对该未进行编码的条带进行编码处理;
当工作线程完成一个条带的编码处理后,则重新返回线程池,并将当前已完成编码处理的条带的数量加1,然后判断任务队列中是否存有未进行编码的条带,若是,则令该工作线程对该未进行编码的条带进行编码处理,反之,则将该工作线程置为阻塞状态,等待下一个任务的到来;
当已完成编码处理的条带的数量与帧图像的总条带数量相同时,则唤醒主线程进行数据串行处理。
进一步,所述利用线程池来对多个条带进行并行编码处理这一步骤,其具体还包括:
当工作线程需要进行全局变量访问时,则对其自身存有的全局变量的副本进行操作,从而实现全局变量的访问。
本发明的有益效果是:本发明的***是以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理,从而实现帧图像的编码处理的,因此,相较于传统的AVS2编码处理,本发明的***则无需在编码过程中对每一个LCU进行判断,判断该LCU是否属于新的条带,这样则能节省大量重复的冗余步骤,大大提高AVS2编码处理的效率。而且,本发明的***是以数据并行处理方式来对多个条带进行编码处理的,因此,相较于传统的串行方式,本发明***的数据处理效率更高,更能满足AVS2实时编码的需要。
本发明的另一有益效果是:本发明的方法是以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理,从而实现帧图像的编码处理的,因此,相较于传统的AVS2编码处理,本发明的方法则无需在编码过程中对每一个LCU进行判断,判断该LCU是否属于新的条带,这样则能节省大量重复的冗余步骤,而且本发明的方法是采用并行方式来进行条带编码的,因此通过使用本发明的方法,则能大大提高AVS2的编码处理效率,满足AVS2实时编码的需要。
附图说明
下面结合附图对本发明的具体实施方式作进一步说明:
图1是本发明一种AVS2并行编码处理***的结构框图;
图2是本发明一种AVS2并行编码处理方法的步骤流程图。
具体实施方式
如图1所示,一种AVS2并行编码处理***,该***包括:
编码单元,用于以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理。所述编码单元可优选应用在AVS2编码器中。
作为本实施例***的优选实施方式,所述编码单元包括:
划分模块,用于以条带作为基本编码单元对帧图像进行条带划分,从而得到该帧图像的多个条带;
编码控制处理模块,用于将当前帧图像的所有条带依次放入任务队列中,然后利用线程池来对多个条带进行并行编码处理。
作为本实施例***的优选实施方式,所述利用线程池来对多个条带进行并行编码处理,其具体包括:
当任务队列中每放入一个条带时,则唤醒线程池中一个空闲工作线程,令该被唤醒的工作线程对当前被放入任务队列的条带进行编码处理;
当任务队列中存有未进行编码的条带,且所有的工作线程均处于忙碌状态时,则创建新的工作线程来对该未进行编码的条带进行编码处理,或者,使任务队列中未进行编码的条带处于等待状态,直到结束任务之后重新返回线程池的工作线程来对该未进行编码的条带进行编码处理;
当工作线程完成一个条带的编码处理后,则重新返回线程池,并将当前已完成编码处理的条带的数量加1,然后判断任务队列中是否存有未进行编码的条带,若是,则令该工作线程对该未进行编码的条带进行编码处理,反之,则将该工作线程置为阻塞状态,等待下一个任务的到来;
当已完成编码处理的条带的数量与帧图像的总条带数量相同时,则唤醒主线程进行数据串行处理。
作为本实施例***的优选实施方式,所述对条带进行编码处理,其具体为:
对条带的条带头信息进行存储,然后对条带内的LCU依次进行编码,直到条带内的所有LCU编码完成。
作为本实施例***的优选实施方式,所述利用线程池来对多个条带进行并行编码处理,其具体还包括:
当工作线程需要进行全局变量访问时,则对其自身存有的全局变量的副本进行操作,从而实现全局变量的访问。
作为本实施例***的优选实施方式,所述利用线程池来对多个条带进行并行编码处理,其具体还包括:
创建线程池,并在线程池内创建多个工作线程,通常,所述工作线程的个数默认为当前处理器的核数;然后,将所述多个工作线程放入到空闲线程队列中。
优选地,对于所述的工作线程,其无需执行任务时使其置为阻塞状态,而其需要执行任务时则使其置为可调度状态,这样在工作线程无工作项目时则不会占用处理器资源,只占用少量内存空间,大大提高操作的灵活度。
作为本实施例***的优选实施方式,还包括码流缓冲单元,所述码流缓冲单元包括一个总码流存储器和多个子码流存储器;
所述总码流存储器,用于存储帧图像的图像头信息;
所述子码流存储器,用于存储条带的条带头信息以及条带内所有LCU的编码信息。待所有条带编码完成后,各个子码流存储器中所存储的码流按照条带顺序依次合并到总码流中,最终得到的码流就是一进行编码的帧图像码流。
优选地,所述子码流存储器的个数为N,并且每个子码流存储器被分配的内存大小为总码流存储器的内存大小的1/N。
如图 2所示,一种AVS2并行编码处理方法,该方法包括:
以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理。
作为本实施例方法的优选实施方式,所述以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理这一步骤具体包括:
以条带作为基本编码单元对帧图像进行条带划分,从而得到该帧图像的多个条带;
将当前帧图像的所有条带依次放入任务队列中,然后利用线程池来对多个条带进行并行编码处理。
作为本实施例方法的优选实施方式,所述利用线程池来对多个条带进行并行编码处理这一步骤,其具体包括:
当任务队列中每放入一个条带时,则唤醒线程池中一个空闲工作线程,令该被唤醒的工作线程对当前被放入任务队列的条带进行编码处理;
当任务队列中存有未进行编码的条带,且所有的工作线程均处于忙碌状态时,则创建新的工作线程来对该未进行编码的条带进行编码处理,或者,使任务队列中未进行编码的条带处于等待状态,直到结束任务之后重新返回线程池的工作线程来对该未进行编码的条带进行编码处理;
当工作线程完成一个条带的编码处理后,则重新返回线程池,并将当前已完成编码处理的条带的数量加1,然后判断任务队列中是否存有未进行编码的条带,若是,则令该工作线程对该未进行编码的条带进行编码处理,反之,则将该工作线程置为阻塞状态,等待下一个任务的到来;
当已完成编码处理的条带的数量与帧图像的总条带数量相同时,则唤醒主线程进行数据串行处理。
作为本实施例方法的优选实施方式,所述对条带进行编码处理,其具体为:
对条带的条带头信息进行存储,然后对条带内的LCU依次进行编码,直到条带内的所有LCU编码完成。
作为本实施例方法的优选实施方式,所述利用线程池来对多个条带进行并行编码处理这一步骤,其具体还包括:
当工作线程需要进行全局变量访问时,则对其自身存有的全局变量的副本进行操作,从而实现全局变量的访问。
作为本实施例方法的优选实施方式,所述利用线程池来对多个条带进行并行编码处理这一步骤,其具体还包括:
创建线程池,并在线程池内创建多个工作线程,通常,所述工作线程的个数默认为当前处理器的核数;然后,将所述多个工作线程放入到空闲线程队列中。
本发明一具体实施例
AVS2标准中,在编码一帧图像时,每一个条带都会在开始编码之前对其二元符号模型和熵编码器进行初始化,而且条带内的每个LCU编码时只会参考到本条带内的其它LCU,不会使用到帧图像内其它条带的数据。因此由此可见,帧图像中的各个条带间的编码是相互独立的,这样以条带作为基本编码单元来实现并行编码处理,能达到快速提高编码速度的目的。
基于条带作为基本编码单元的AVS2视频并行编码优化算法,其具体包括以下四个组成部分:
一、并行编码器的架构设计
若想实现基于条带的AVS2并行编码,则首先编码器框架必须要以条带作为基本编码单元进行编码,这就需要对原编码器中以LCU为基本单元的编码框架进行调整。调整后的编码器,在编码一帧图像时,是以条带作为基本编码单元进行编码的,一个条带内的所有LCU编码完成之后,再对下一个条带进行编码,直到该帧图像中的所有条带编码完成。在编码条带时,首先对条带进行初始化并存储该条带的条带头信息,这样则不再需要像之前那样编码每一个LCU时都要判断其是否属于新的条带。对条带进行初始化完成之后,再对条带内的LCU依次进行编码,直到条带内的所有LCU编码完成。
由上述可见,本实施例中的编码***可具体为AVS2编码器,而所述编码器包含一编码单元,所述编码单元具体用于以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理;
其中,所述对条带进行编码处理,其具体为:对条带进行初始化并对条带头信息进行存储,然后对条带内的LCU依次进行编码,直到条带内的所有LCU编码完成。
二、码流缓冲区设计
在调整后的并行编码框架基础上,需要对码流缓冲区进行调整,在编码一帧含有N个条带的图像时,编码器在码流缓冲区建立1个总码流存储器(GlobalBitStream)和N个子码流存储器(SliceBitStream[i]),并为各个存储器分配一定的内存空间,其中子码流存储器被分配到的内存大小为总码流存储器被分配到的内存大小的1/N。在编码过程中,首先把图像头信息存储到总码流存储器中,然后在编码每一个条带时,把各条带的条带头信息和条带内所有LCU的编码信息存储在码流缓冲区内对应的子码流存储器中,即相当于一子码流存储中存储一条带的条带头信息及该条带内所有LCU的编码信息。待所有条带编码完成后,再把各个子码流存储器中的码流按照条带顺序依次合并到总码流中,则最终得到的码流就是编码一帧图像的码流。
由上述可见,本实施例中编码器还包括码流缓冲单元,所述码流缓冲单元包括一个总码流存储器和多个子码流存储器;
所述总码流存储器,用于存储帧图像的图像头信息;
所述子码流存储器,用于存储条带的条带头信息以及条带内所有LCU的编码信息。
其中,所述子码流存储器被分配到的内存大小为总码流存储器被分配到的内存大小的1/N,N为子码流存储器的总个数。
三、线程池设计
本实施例中的线程池是一种多线程处理形式,采用的是事先创建线程的技术。而通过采用线程池技术来对多个条带进行并行编码处理,能够节省编码每个条带时需要不断创建、销毁线程所占用的 CPU 时间。具体地,所述利用线程池来对多个条带进行并行编码处理的具体步骤包括:
1、在AVS2编码器启动后,首先创建一个线程池,并在线程池内创建一定数量的工作线程(默认为当前处理器的核数),然后把这些工作线程放入到一个空闲线程队列;并且当无工作项目时使这些工作线程处于阻塞状态,这样在无工作项目时,工作线程则不占用处理器资源,只占用少量内存空间,而有工作项目时才为可调度的;
2、当主程序执行到对一帧图像进行编码时,首先把当前帧图像的所有条带依次放入一个任务队列中,QueueWork(encode_one_slice,(void *)& CurrentMbNumber),当所有条带都放入到任务队列中后,创建一个事件对象,其事件信号设为无信号状态,WorkFinished =CreateEvent(NULLTRUE,FALSE,NULL);然后,主线程设为阻塞状态,WaitForSingleObject(WorkFinished ,INFINITE),等待事件信号转为有信号状态;
3、与此同时,当任务队列中每放入一个条带,则唤醒线程池中的一个空闲工作线程,令该工作线程对当前条带开始编码,在工作线程中调用任务时使用的是函数指针,函数指针作为参数调用来传递相关数据,而用于调用的任务函数定义为void ThreadFun (void *context);当任务队列中存有未编码完成的条带,而所有的工作线程均处于忙碌状态,即没有空闲的线程来执行编码处理时,线程池管理器可以额外创建一定数量的工作线程,来执行更多的任务,也可以让任务队列中等待编码的条带先处于等待状态,等待结束任务之后重新返回线程池的线程来执行;
4、每个工作线程完成一个条带的编码,则重新回到线程池,并把完成条带的数量加1;而回到线程池的工作线程则不需要退出,若任务队列仍存在未执行编码的条带,则工作线程继续对该条带进行编码,否则就置为阻塞状态,等待下一个任务的到来;当完成编码的条带的数量和当前帧图像内的总条带数量相同时,则将所述事件对象,其事件信号WorkFinished置为有信号状态,SetEvent(WorkFinished),从而唤醒主线程,主线程进入到接下来的串行部分,包括同步数据和合并码流等;
5、完成一帧图像的编码之后,若视频序列仍没有结束,则重新回到步骤2,继续进行编码。若视频序列结束,则销毁线程,销毁线程池。
由上述可见,本实施例中编码单元所包含的编码控制处理模块具体用于将当前帧图像的所有条带依次放入任务队列中,然后利用线程池来对多个条带进行并行编码处理。
其中,所述利用线程池来对多个条带进行并行编码处理,其具体包括:
创建一个线程池,并在线程池内创建多个工作线程,通常,所述工作线程的个数可优选默认为当前处理器的核数;然后,将所述多个工作线程放入到空闲线程队列中;其中,当工作线程无需执行任务时则使其置为阻塞状态,而其需要执行任务时则使其置为可调度状态;
当执行帧图像编码时,将当前帧图像中的所有条带依次放入一个任务队列中;而当所有条带都放入到任务队列中后,则创建事件对象,并使其事件信号设为无信号状态,然后将主线程设为阻塞状态,等待事件信号转为有信号状态;
当任务队列中每放入一个条带时,则唤醒线程池中一个空闲工作线程,令该被唤醒的工作线程对当前被放入任务队列的条带进行编码处理;
当任务队列中存有未进行编码的条带,且所有的工作线程均处于忙碌状态时,则创建新的工作线程来对该未进行编码的条带进行编码处理,或者,使任务队列中未进行编码的条带处于等待状态,直到结束任务之后重新返回线程池的工作线程来对该未进行编码的条带进行编码处理;
当工作线程完成一个条带的编码处理后,则重新返回线程池,并将当前已完成编码处理的条带的数量加1,然后判断任务队列中是否存有未进行编码的条带,若是,则令该工作线程对该未进行编码的条带进行编码处理,反之,则将该工作线程置为阻塞状态,等待下一个任务的到来;
当已完成编码处理的条带的数量与帧图像的总条带数量相同时,则唤醒主线程进行后续的数据串行处理,如包括后续的数据同步处理、码流合并处理等;
当完成一帧图像的编码处理后,则判断视频序列中所包含的帧图像是否均已进行编码,若是,则表示视频序列的编码处理已结束,此时,则销毁线程及销毁线程池;反之,则将未进行编码的一帧图像的所有条带依次放入任务队列中,从而利用线程池来对多个条带进行编码处理。
四、数据本地存储实现
本实施例中,AVS2编码器利用TLS技术从而实现不同工作线程同时访问共享资源。使用TLS之后,并行编码的工作线程可以同时对全局变量进行访问,而且能够单独享有全局变量,也就是说使用了TLS的每个工作线程都可以拥有全局变量的一个副本,对全局变量访问时只对这一副本进行操作,线程之间相互独立,互不干扰,因此这样能进一步提高并行编码处理的工作效率。而隐式使用TLS是由编译器、加载器和链接器共同协作实现的,具体操作就是在需要用到线程本地存储的变量前加上修饰符__declspec(thread)。这种方法比较简单,而且比较适用于AVS2编码器中大量的局部存储变量以及频繁的调用现状。
优选地,本算法在对AVS2编码中的关键模块深入了解,并对编码器具体代码细致分析之后,共对155个全局变量设置了线程本地存储,首先创建了TlsData 数据结构,并把155个需要线程局部存储化的变量放入其中,然后执行__declspec(thread) TlsData *TlsInfo操作,从而生成一个线程局部存储的指针,每次需要使用到某个变量时,例如current_mb_nr,只需要执行TlsInfo->current_mb_nr,代表的就是当前工作线程所使用的变量为current_mb_nr,这样工作线程之间则不会有所影响。另外,主线程把各个条带的编码任务放到任务队列之后,工作线程接收到编码任务,首先对*TlsInfo指针分配一个TlsData大小的内存空间,然后利用tlsmalloc()函数,对所有线程局部存储的变量分配所需的内存空间,最后在对一个条带完成编码之后则利用tlsfree()函数将所有工作线程中分配的内存空间进行释放。
由上述可见,所述利用线程池来对多个条带进行并行编码处理,其具体还包括:
当工作线程需要进行全局变量访问时,则对其自身存有的全局变量的副本进行操作,从而实现全局变量的访问;
而这一步骤具体包括:
对相对应的多个全局变量设置线程本地存储,具体地,首先创建TlsData 数据结构,并将多个全局变量放入其中,然后执行__declspec(thread) TlsData *TlsInfo操作,从而生成一个线程局部存储的指针;其中,所述全局变量前设有修饰符__declspec(thread);
当工作线程接收到条带编码任务后,首先对*TlsInfo指针分配一个TlsData大小的内存空间,然后利用tlsmalloc()函数,对所有线程局部存储的变量分配所需的内存空间;
当工作线程对全局变量进行访问时,则执行TlsInfo->变量这一指令;
当工作线程对条带完成编码后则利用tlsfree()函数将所有工作线程中分配的内存空间进行释放。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

Claims (10)

1.一种AVS2并行编码处理***,其特征在于:该***包括:
编码单元,用于以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理。
2.根据权利要求1所述一种AVS2并行编码处理***,其特征在于:所述编码单元包括:
划分模块,用于以条带作为基本编码单元对帧图像进行条带划分,从而得到该帧图像的多个条带;
编码控制处理模块,用于将当前帧图像的所有条带依次放入任务队列中,然后利用线程池来对多个条带进行并行编码处理。
3.根据权利要求2所述一种AVS2并行编码处理***,其特征在于:所述利用线程池来对多个条带进行并行编码处理,其具体包括:
当任务队列中每放入一个条带时,则唤醒线程池中一个空闲工作线程,令该被唤醒的工作线程对当前被放入任务队列的条带进行编码处理;
当任务队列中存有未进行编码的条带,且所有的工作线程均处于忙碌状态时,则创建新的工作线程来对该未进行编码的条带进行编码处理,或者,使任务队列中未进行编码的条带处于等待状态,直到结束任务之后重新返回线程池的工作线程来对该未进行编码的条带进行编码处理;
当工作线程完成一个条带的编码处理后,则重新返回线程池,并将当前已完成编码处理的条带的数量加1,然后判断任务队列中是否存有未进行编码的条带,若是,则令该工作线程对该未进行编码的条带进行编码处理,反之,则将该工作线程置为阻塞状态,等待下一个任务的到来;
当已完成编码处理的条带的数量与帧图像的总条带数量相同时,则唤醒主线程进行数据串行处理。
4.根据权利要求3所述一种AVS2并行编码处理***,其特征在于:所述对条带进行编码处理,其具体为:
对条带的条带头信息进行存储,然后对条带内的LCU依次进行编码,直到条带内的所有LCU编码完成。
5.根据权利要求3所述一种AVS2并行编码处理***,其特征在于:所述利用线程池来对多个条带进行并行编码处理,其具体还包括:
当工作线程需要进行全局变量访问时,则对其自身存有的全局变量的副本进行操作,从而实现全局变量的访问。
6.根据权利要求1-5任一项所述一种AVS2并行编码处理***,其特征在于:还包括码流缓冲单元,所述码流缓冲单元包括一个总码流存储器和多个子码流存储器;
所述总码流存储器,用于存储帧图像的图像头信息;
所述子码流存储器,用于存储条带的条带头信息以及条带内所有LCU的编码信息。
7.一种AVS2并行编码处理方法,其特征在于:该方法包括:
以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理。
8.根据权利要求7所述一种AVS2并行编码处理方法,其特征在于:所述以条带作为基本编码单元对帧图像进行条带划分,然后对划分后得到的多个条带进行并行编码处理这一步骤具体包括:
以条带作为基本编码单元对帧图像进行条带划分,从而得到该帧图像的多个条带;
将当前帧图像的所有条带依次放入任务队列中,然后利用线程池来对多个条带进行并行编码处理。
9.根据权利要求8所述一种AVS2并行编码处理方法,其特征在于:所述利用线程池来对多个条带进行并行编码处理这一步骤,其具体包括:
当任务队列中每放入一个条带时,则唤醒线程池中一个空闲工作线程,令该被唤醒的工作线程对当前被放入任务队列的条带进行编码处理;
当任务队列中存有未进行编码的条带,且所有的工作线程均处于忙碌状态时,则创建新的工作线程来对该未进行编码的条带进行编码处理,或者,使任务队列中未进行编码的条带处于等待状态,直到结束任务之后重新返回线程池的工作线程来对该未进行编码的条带进行编码处理;
当工作线程完成一个条带的编码处理后,则重新返回线程池,并将当前已完成编码处理的条带的数量加1,然后判断任务队列中是否存有未进行编码的条带,若是,则令该工作线程对该未进行编码的条带进行编码处理,反之,则将该工作线程置为阻塞状态,等待下一个任务的到来;
当已完成编码处理的条带的数量与帧图像的总条带数量相同时,则唤醒主线程进行数据串行处理。
10.根据权利要求9所述一种AVS2并行编码处理方法,其特征在于:所述利用线程池来对多个条带进行并行编码处理这一步骤,其具体还包括:
当工作线程需要进行全局变量访问时,则对其自身存有的全局变量的副本进行操作,从而实现全局变量的访问。
CN201610808832.5A 2016-09-07 2016-09-07 一种avs2并行编码处理***及方法 Expired - Fee Related CN106454354B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610808832.5A CN106454354B (zh) 2016-09-07 2016-09-07 一种avs2并行编码处理***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610808832.5A CN106454354B (zh) 2016-09-07 2016-09-07 一种avs2并行编码处理***及方法

Publications (2)

Publication Number Publication Date
CN106454354A true CN106454354A (zh) 2017-02-22
CN106454354B CN106454354B (zh) 2019-10-18

Family

ID=58164151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610808832.5A Expired - Fee Related CN106454354B (zh) 2016-09-07 2016-09-07 一种avs2并行编码处理***及方法

Country Status (1)

Country Link
CN (1) CN106454354B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107102582A (zh) * 2017-04-07 2017-08-29 深圳怡化电脑股份有限公司 一种子***命令的同步方法及装置
CN107454406A (zh) * 2017-08-18 2017-12-08 深圳市佳创视讯技术股份有限公司 基于avs+的vr全景视频直播高速解码方法及***
CN107943602A (zh) * 2017-12-15 2018-04-20 北京数码视讯科技股份有限公司 基于avs2编码的硬件抽象平台***和设备
WO2018166535A1 (zh) * 2017-03-17 2018-09-20 山东科技大学 一种基于编码时间预测模型的负载均衡方法
CN109862357A (zh) * 2019-01-09 2019-06-07 深圳威尔视觉传媒有限公司 低延迟的云游戏图像编码方法、装置、设备和存储介质
CN110727520A (zh) * 2019-10-23 2020-01-24 四川长虹电器股份有限公司 一种优化Android帧动画的实现方法
CN113590376A (zh) * 2021-07-14 2021-11-02 华中科技大学 一种多线程并行编/解码方法、编/解码器、用户端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101150719A (zh) * 2006-09-20 2008-03-26 华为技术有限公司 并行视频编码的方法及装置
CN101222646A (zh) * 2008-01-30 2008-07-16 上海广电(集团)有限公司中央研究院 一种适用于avs编码的帧内预测装置及预测方法
US7630565B2 (en) * 2004-11-30 2009-12-08 Lsi Corporation Parallel video encoder with whole picture deblocking and/or whole picture compressed as a single slice
JP4674496B2 (ja) * 2005-06-08 2011-04-20 ソニー株式会社 符号化装置、復号装置、符号化方法、復号方法、それらのプログラム
CN104038766A (zh) * 2014-05-14 2014-09-10 三星电子(中国)研发中心 用于以图像帧为基础执行并行视频编码的装置及其方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7630565B2 (en) * 2004-11-30 2009-12-08 Lsi Corporation Parallel video encoder with whole picture deblocking and/or whole picture compressed as a single slice
JP4674496B2 (ja) * 2005-06-08 2011-04-20 ソニー株式会社 符号化装置、復号装置、符号化方法、復号方法、それらのプログラム
CN101150719A (zh) * 2006-09-20 2008-03-26 华为技术有限公司 并行视频编码的方法及装置
CN101222646A (zh) * 2008-01-30 2008-07-16 上海广电(集团)有限公司中央研究院 一种适用于avs编码的帧内预测装置及预测方法
CN104038766A (zh) * 2014-05-14 2014-09-10 三星电子(中国)研发中心 用于以图像帧为基础执行并行视频编码的装置及其方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
蒋骁辰,李国平,王国中,赵海武,藤国伟: "基于AVS+实时编码的多核并行视频编码算法", 《电子与信息学报》 *
陈嗣文: "面向AVS2的并行优化设计方法", 《福建电脑》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018166535A1 (zh) * 2017-03-17 2018-09-20 山东科技大学 一种基于编码时间预测模型的负载均衡方法
CN107102582A (zh) * 2017-04-07 2017-08-29 深圳怡化电脑股份有限公司 一种子***命令的同步方法及装置
CN107454406A (zh) * 2017-08-18 2017-12-08 深圳市佳创视讯技术股份有限公司 基于avs+的vr全景视频直播高速解码方法及***
CN107943602A (zh) * 2017-12-15 2018-04-20 北京数码视讯科技股份有限公司 基于avs2编码的硬件抽象平台***和设备
CN109862357A (zh) * 2019-01-09 2019-06-07 深圳威尔视觉传媒有限公司 低延迟的云游戏图像编码方法、装置、设备和存储介质
CN110727520A (zh) * 2019-10-23 2020-01-24 四川长虹电器股份有限公司 一种优化Android帧动画的实现方法
CN113590376A (zh) * 2021-07-14 2021-11-02 华中科技大学 一种多线程并行编/解码方法、编/解码器、用户端
CN113590376B (zh) * 2021-07-14 2024-07-02 华中科技大学 一种多线程并行编/解码方法、编/解码器、用户端

Also Published As

Publication number Publication date
CN106454354B (zh) 2019-10-18

Similar Documents

Publication Publication Date Title
CN106454354A (zh) 一种avs2并行编码处理***及方法
CN104869398B (zh) 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
CN105992008B (zh) 一种在多核处理器平台上的多层次多任务并行解码方法
CN103974081B (zh) 一种基于多核处理器Tilera的HEVC编码方法
CN104604235A (zh) 用于视频处理的发送装置及其方法
CN102143386B (zh) 一种基于图形处理器的流媒体服务器加速方法
CN1070530A (zh) 分解两频道间视频信号的装置
CN101739290A (zh) 用于保障多线程服务器应用的***
US20200184332A1 (en) Convolutional neural network processor and data processing method thereof
US10805622B2 (en) High efficiency video coding method and apparatus, and computer-readable storage medium
CN108540797A (zh) 基于多核平台的hevc帧内/帧间联合wpp编码方法
CN105323586A (zh) 一种用于多核并行视频编码和解码的共享内存接口
CN105407356A (zh) 高速实时jpeg2000解码方法
CN102695057A (zh) 一种用于图像数据的压缩***
Enfedaque et al. GPU implementation of bitplane coding with parallel coefficient processing for high performance image compression
CN1306826C (zh) 基于多级并行流水线方式的环路滤波装置
CN108491261A (zh) 基于众核并行处理器的多路帧序列排序方法
US8832412B2 (en) Scalable processing unit
CN1112654C (zh) 图像处理装置
CN102123275B (zh) 一种视频分量数据信息获取及提取的方法
CN103997648A (zh) 一种基于dsp的jpeg2000标准图像快速解压缩***及方法
CN102801981B (zh) 一种基于jpeg-ls算法的多路压缩内核并行编码的控制方法
CN1410780A (zh) 雷达视频数据实时压缩解压缩传输方法
CN104038766A (zh) 用于以图像帧为基础执行并行视频编码的装置及其方法
CN104396246B (zh) 视频压缩编码方法及编码器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20191018