提升性能的动机

在视频领域,性能是一个非常复杂的术语,其涵盖的内容远超出了“性能”这个词语本身。
  • 在一些文献中,编码器性能是指用于获得特定视觉质量的比特数的压缩效率。测试编码器比参考编码器可以节省的平均码率被认为是客观编码的性能标准 。
  • 还有另外一种看法就是:编码器的性能是指以FPS(frame per second)为单位的编码每帧图像的速度。
在本书中,性能一般指的是编码视频帧的速度。我们还注意到FPS可用于不同目的。视频剪辑中的帧率也称为FPS(例如,24 FPS或30 FPS),这意味着应该以指定的帧率(FPS)播放(played back in real time/real-time play back)该视频,从而提供平滑的运动感知(如果播放的帧率低于规定的帧率,则会产生视频卡顿的现象)。但是,当生成压缩视频时,压缩速度比实时播放速度快许多倍,称该速度(也以FPS表示)为编码速度或编码器性能。需要注意的是,在某些实时应用程序(如视频会议)中,视频帧仅用于实时显示。因此,较快的编码速度并不是必需的,虽然如此,编码速度也需要足够快。因为更快的编码速度使得处理器可以进入空闲状态,从而节省电量。
但是,有很多视频应用要求编码器的编码速度要快于播放速度。例如:
  • 可以在更短的时间内压缩较长的视频。这对于视频编辑人员非常有用。视频编辑人员通常会处理大量的视频内容,并且他们的工作需要在指定的时间限制内完成。
  • 视频归档应用程序需要压缩、存储大量视频。因此,视频归档应用可以从快速编码中受益。
  • 视频录制应用程序能够以合适的压缩格式存储录制的视频,快速编码可以实现共享处理单元的目的,从而实现同时运行编码和(或)非编码任务。
  • 快速编码有益于将视频从一种格式转换为另一种格式。例如,可以使用诸如Handbrake之类的转码器同时将多个MPEG-2标准的DVD视频转换为AVC标准。
  • 视频转码可用于:视频创作,视频编辑,上传视频到Internet,刻录视频内容到光盘,或者视频内容分发。对于这些场景而言,视频转码速度越快越好。特别是,可以通过高速编码(实时编码的几倍速度)使得基于云的视频点播服务能够同时处理多个请求。当然,同时处理多个请求的能力还需要网络带宽的优化。
  • 快速编码还有益于视频传输应用(例如有限电视等)。将视频转换到较低的码率水平,则可以通过电缆、电信、以及卫星有效地分发视频,并且可以在相同的信道带宽中容纳更多的视频节目。转换(transrating)和重新封包(repacketization)系统中的总延迟通常是恒定的,并且只有实时处理需要关注这种整体延时。尽管如此,从调度灵活性和资源利用的角度来看,仍然需要提升转换速度和编码任务的速度。
典型的视频应用涉及一系列任务,例如捕获视频数据;压缩,传输或存储视频数据;视频数据解压缩以及显示视频数据。在处理这一些列任务的同时,需要保持一个恒定的整体系统延迟。相机和显示设备引入的延迟通常可以忽略不计。一般而言,性能需要重点关注:解码、编码、以及处理时间。其中,解码任务通常由视频标准指定,并且每秒需要一定数量的操作。但是视频编码和处理任务中的计算量大大超过了解码任务所需的计算量。因为编码和处理任务具有更高的复杂性,因此,根据应用要求,它们更适合于性能优化。
视频编码需要大量的信号处理操作,大约每秒数十亿次操作。幸运的是,视频压缩可以很容易地分解为流水线任务。在各个任务中,视频数据可以在空间或时间维度上进一步分解为一组相互独立的部分,使其适合并行处理。利用这种并行特性,通过并行使用多个处理单元,可以获得比实时视频编码更快的性能。这些处理单元可以是专用、固定功能硬件单元和(或)可编程硬件单元的组合。专用硬件的优势在于对特定任务的优化,因此任务可以通过性能和功耗优化的方式完成。可编程单元则提供了一定的灵活性,并且不会轻易过时。同时,可编程单元的性能调整也比专用硬件单元更便宜。因此,有效地将专用单元和可编程单元组合成混合解决方案,可以提供比实时性能更高的性能。例如,Inter(R) Core(TM)和Intel (R) Atom (TM)等CPU,可以将繁重的编码任务交给集成GPU执行。