论文部分内容阅读
近些年来,视频编码技术得到了迅速发展,视频压缩效率的不断提高使视频编码技术得到了广泛应用,主要包括数字电视、IPTV和网络视频等。H264/AVC、AVS以及可伸缩视频编码(SVC:Scalable Video Coding)等编码标准的相继提出,使得编码效率和编码灵活性有了很大程度的提高。尤其是SVC编码标准的提出,很好地适应了网络异构性强的环境,使数字视频的应用领域变得更加广泛。但由于SVC编码方法需要支持各方面的可扩展性,使它在编码过程中具有相当高的编码复杂度,这就对该编码方法的实际应用造成了很大障碍。因此,需要寻找一些方法来提高它的编码速度,使它更好地得到应用。随着硬件技术的发展,提高处理器速度的主流方法已经从以前提高单核处理器主频的策略转向了提高并行计算能力的策略。现在多核多线程技术已经被广泛地应用在各种计算复杂度较高的处理环境中,因此SVC编码方法和并行处理的结合将是一个非常有效的加速方法。
本文提出了一个视频并行编码框架,主要由五个模块构成,它们分别是:并行策略模块(Parallel Strategy Module),复杂度估计模块(Complexity Estimation Module),无回路有向图模块(DAG Module),启发式调度模块(Heuristics Scheduling Module)和编码模块(Encoding Module)。
针对SVC的并行编码,本文在并行策略模块中,分别通过SVC的时间可伸缩特性和质量可伸缩特性来设计并行编码策略。通过利用时间可伸缩特性,位于同一时间层的视频帧之间是相互独立的,因此它们可以同时进行编码。此外,由于相邻GOP(Group of Pictures)之间只有关键帧之间相关联,当前一个GOP的关键帧编码结束后,下一个GOP的关键帧和上一个GOP的B帧就可以同时开始编码。这样在一个时间层上就有更多视频帧可以同时编码,很大程度地提高了编码并行度。由于在SVC的中等质量可伸缩特性(MGS:Medium Gain Scalability)中,关键帧在编码过程中只参考前一关键帧的基本层,而其他视频帧参考最高质量层。因此,只需前一个关键帧的基本层编码结束后,当前关键帧就可以开始编码,这样视频帧能够更快地开始编码。进一步地,更多的B帧也能够更早的开始编码,更大程度地提高了编码并行度。
在复杂度估计模块,本文以GOP为单位,对视频帧的编码复杂度进行估计。在估计过程中,本文结合最小二乘法和具有最优自回归性质的卡尔曼滤波器来对编码复杂度进行估计。采用这种方法对视频帧的编码复杂度进行了比较准确的估计,并且从最后利用编码复杂度来对并行编码任务进行调度的实验结果也可以得出:该方法可以准确地对并行编码任务编码复杂度进行估计,并且根据编码复杂度来对任务调度可以取得很高的编码加速比。
为了能够更好地对SVC编码任务进行调度,本文采用无回路有向图(DAG:Directed Acyclic Graph)来对SVC并行编码任务进行描述,结合前面对任务复杂度估计的信息,无回路有向图不仅能够很好地对编码任务的信息进行描述,同时很好对任务之间的相互联系进行建模。基于DAG模块中对SVC并行编码的建模,在本文中提出了两种优先级选择方法:一种是根据视频帧的显示顺序进行编码;另外一种是根据视频帧的编码复杂度进行编码。通过这两种调度算法,SVC并行编码可以取得很高的编码加速比,进而能够更好地满足高清实时编码的要求,使得SVC编码器应用到更多的应用场合中。
最后,本文对SVC并行编码器的相关应用进行了简单介绍,通过利用SVC并行编码方法,很大程度地减少了编码的时间开销。这样就能够将SVC编码应用到编码实时性要求较高的直播系统中,很好地满足异构性和带宽抖动大的网络环境。并且通过SVC编码的灵活性,使得SVC点播系统更好地满足终端用户需求。