GPU硬件解码与CPU软件解码,二者命名区分原理是什么

视频解码,简单来讲就是把压缩后的视频数据还原成画面。H.264、H.265、VP9、AV1这类压缩格式,原理都是剔除冗余信息,只保留画面变化部分。解码,就是把压缩去掉的信息重新计算还原。计算量不小,一部两小时的1080p电影,包含十几万帧画面,每一帧都要依次经过熵解码、反量化、反变换、运动补偿、去块滤波。人脑没法完成这类运算,依靠CPU运行代码,虽然吃力,但可以实现。

科技

问题就出在这个“可以实现”。

CPU属于通用处理器,设计初衷是兼顾各类任务。跑表格、浏览器、视频解码,全都能完成。但能做,不等于擅长。CPU指令集通用性强,没有专门针对视频解码流程定制电路。它解码视频,就是逐行执行软件代码逻辑。代码支持修改、升级,甚至自己编写,这种方式叫做软件解码。

GPU硬件解码,是显卡内部单独划分出专门处理视频解码的电路单元,一般叫做解码引擎。NVIDIA命名NVDEC,Intel是Quick Sync,AMD叫VCN。它不属于通用处理器,设计目标只有视频解码。不用编写程序,硬件电路固化整套解码流程。输入压缩数据,直接输出解码完成的画面,不处理其他任务。

硬件解码和软件解码,区分标准不是硬件还是软件。软件解码同样跑在CPU硬件上。两者核心差别:使用固化的专用解码电路,还是通用处理器运行程序。

这个命名其实不算精准,更贴切的叫法是专用解码和通用解码。只是行业一直这么称呼,约定俗成很难更改。

为什么不是所有人都优先硬件解码?硬件解码有明显短板,芯片出厂就固定支持的格式与规格,没法后期改动。显卡只支持H.264,遇到H.265视频,硬件解码单元识别不了,只能交给CPU软解。软件解码优势就在这里,依托代码,更新代码就能新增格式支持。AV1这类新编码出现,软件解码器升级代码即可适配,硬件解码只能等待新一代芯片。

还有画质和可控性上的区别。硬件解码优先保证速度、降低功耗,部分步骤算法会简化。像去块滤波,简化算法会导致暗部或是快速运动画面出现瑕疵。软件解码算法精度更高,还能手动调整参数。视频后期从业者,很多时候宁愿CPU慢速软解,放弃硬件解码。

功耗差距同样明显。硬件解码能效远高于软件解码。同一视频,CPU软解时处理器满载发热,风扇高速转动,笔记本续航可能撑不到一个半小时。GPU硬解,独立解码单元工作,CPU负载很低,续航能延长到三四个小时。手机长时间播放视频续航不错,就是SoC内置解码单元在工作。

所以两种解码方式,本质是两条不同技术路线。专用硬件电路解码,速度快、省电,但灵活性差;通用处理器运行程序解码,速度慢、功耗高,但是兼容性强,可以持续更新。两种方案各有用途,无法完全互相替代。

⚠️免责提示

本文内容整理于互联网,仅供参考,不构成任何投资、决策建议。部分素材来源于公开网络,如有侵权请联系平台进行删除处理。

家用WiFi场景下2.4G网速优于5G,是感知错觉还是客观网络原因 返回列表