帮楼主搬运一下:
最近某些龙芯粉靠CPU软解码视频的话题带了很多节奏,鉴于相关人员对多媒体解码的基本常识一无所知,特此回复一下。
视频播放本身并不是一个纯CPU的流程,现行的硬件解码实际上一般调用的是显卡上的专用ASIC解码电路,只有少数API会调用3D通用计算单元。但是解码后的数据需要进行色度采样升格、分辨率缩放、帧率调整、色域转换等一系列后处理并把图像呈现出来,完成这部分的组件称为渲染器,一般运行在显卡的3D处理单元上。在Windows平台上折腾过视频播放器的朋友应该大多玩过MadVR这个外挂渲染器,开满设置基本可以榨干各种高端独立显卡。
所以很多情况下,视频播放掉帧还存在显卡性能过于孱弱而无法实时处理的因素。比如鄙人用Potplayer在Intel Core i5 12400上软解码显卡吧压制的H.264 4K 120p 8bit电磁炮S OP,如果渲染器的负载在集成的HD 730显卡上,无论是默认的EVR(CP)渲染器还是切换系统D3D11渲染器都无法满帧,D3D11因为后处理较少能达到90fps左右。但是如果调用我的RTX 3070独立显卡作为渲染器负载,则可以轻松满帧,并且CPU解码的占用率只有3成多,因为H.264是一种很旧的压缩格式,解码压力很小。
CPU软解码,HD 730渲染
.
CPU软解码,RTX 3070 Laptop渲染
.
到了Linux平台,情况会更加复杂。因为没有Potplayer这样自由度很高的播放器,很多因素都是不可控的,也只有mpv这个播放器可以进行一定程度的定制,但是官方应该没有移植到MIPS平台。而且看起来一样的视频播放器,它们调用的FFmpeg版本,解码器的Lib版本可能都是不一样的。
这里还有一个问题,龙芯目前基本都要借助独立显卡才能运行桌面,但是兆芯的集成显卡在部分Linux平台是做了官方驱动的。然而ZX C960这样的集成显卡基本就是玩具,随便一个独立显卡基本都可以暴打小朋友了,不统一外接独立显卡做渲染器负载的测试没有太大意义。
总之,兆芯KX-6000系内核的IPC确实很过时,不如AMD K10水平的存在,所以我很久没有关注了。但是最新的KH-400000“永丰”架构,我还是很感兴趣的。隔壁混淆视听乱黑一气,还是需要出来解说一下的。