一:怎么衡量编解码器?从视频质量、码率、算法复杂度、对数据丢失或错误的鲁棒性这些考虑吗,就这个问题分为三部分说明:
1、解码器最重要标准之一是速度,速度高才能解得动高分辨率、高码率视频,同样的条件下功耗也低。
其次对数据丢失和错误的鲁棒性。面向通用的解码器还要求对标准支持的完整度。有人认为编码器完成,解码器也就很快能做完,事实不尽然。编码器一般并不支持所有标准特性,也不会存在严重的错误鲁棒性问题,而解码器在这两方面会耗费大量精力和时间。
2、编码器对有速度要求的编码档次,速度和压缩效率折中是最重要的指标。
压缩效率包含视频质量和码率两部分,即在同等码率下质量更好,或者同等质量下码率更低。此时,同一个标准的不同编码器,工具裁剪和取舍、算法设计、代码的极致优化等各方面的不同,压缩效率上会有显著的差别。
3、针对编解码速度相对要求不那么敏感的离线应用中,压缩效率最重要,其次编码速度。此时速度的不足可用更多资源来代替,因没有实时性要求,可采用分布式编码。但受到标准本身能力的制约,这类情况下压缩效率不会有太大的差别,除非结合编码之外的技术并采用主观评判准则,才有可能突破限制。
二:编解码器的研发,业界主要的研究方向是?
编解码器研发分硬件和软件两大块。硬件只有特定的公司会设计,硬件靠自主研发,工作量大,周期长。
从代码层面看,verilog等硬件语言需要特别精细打磨。
从算法层面看,硬件设计自身的特点,需要设计特定的算法,且RDO较难实现,会导致条件受限的硬件编码器在压缩率方面有所损失。
软件研发相对更为灵活,264时代衍生出诸如X264以及FFMPEG-H264优质开源解码器的缘故,自主研发H264编码软件的不多。需要用到编码软件的公司,投入的力量主要是如何把X264用好,包括根据自身应用场景调参,也可能去改进码率控制,及改进自适应量化来获取更好主观效果。有些公司宣传在用人工智能去做更好的场景编码、码控控制以及自适应量化等,这些方面可能会取得一定的效果。
三、编解码器的开发或优化时,会考虑相关专利及其产生的费用成本吗?
只看算法和工具性价比,如因为某项工具属于某些公司所在专利池而束手束脚,很难开发好编码器。解码器就更不会考虑了,全标准的支持注定了所有专利都涵盖在内。
四、硬件编解码器画质没有软件编解码器效果好。有没有一种能将硬件编解码器的海量处理能力与高画质结合起来的解决方案?
这是难题,虽然都做编码器开发,但术业有专攻,相信专注于硬件编码器开发的体会更深:
编码器的硬件设计有很多掣肘,比如Intra参考如果要用到重建样本,则无法并行;
RDO的乘方对硬件资源会产生很大开销;
cabac的各种前后依赖,打破了硬件设计“给我足够面积我可以做任何事”的宣言;
硬件设计需要在资源开销和编码效率上做折中,会导致画质有一定降损。
五、FPGA/ASIC做编解码的前景怎么样?
软件做再好,ASIC编解码器是不可或缺的。就解码器而言,软件解码器在各种终端只能是硬件解码器的一个补充,在手机上使用硬件解码器才能保证低功耗;
在其他各种嵌入式设备上,复杂而专门的事情(如解码)交给专用芯片去做,可以选用较低性能的CPU,使得整体方案的成本更低。
编码也有类似的地方,采用硬编功耗低,对有些嵌入式设备来说成本低。
六、设计一个硬件编解码器,与设计软件编解码器有何不同?其挑战包括哪些?
1、开发流程上,硬件设计工作量大,周期长,包含的步骤多,与软件完全不同,每个步骤都需要很多人力和资源,这里不一一列举。
2、前端代码设计上看,与软件完全不同,硬件的代码可以完全并行。
3、算法设计上也不同,软件可以把所有的模式用代码实现和罗列出来,通过快速算法进行分支选择提速;而硬件如果把所有的模式都罗列出来,那资源占用就非常多了,而这些模式也不需要像软件那样串行执行,所以软件的快速算法对硬件未必有效。
硬件编码器设计有很多掣肘,如刚才提到的Intra参考如果要用到重建样本,导致无法并行;RDO的乘方,对资源会产生很大开销等等。硬件需要在资源开销和编码效率上做折中,会导致压缩率有损失。
4、此外,硬件的配置项算是底层驱动,一般不会有特别多的配置项,应用层可配的就更少。硬件编码器实现的特性并也不会像软件那么灵活丰富,更不会像X264那样提供各种速度档次。
视频编码芯片软硬件实现一些总结(2)
最新推荐文章于 2024-08-14 15:45:00 发布