@
cyberscorpio我前面那个回复本意是尽量简洁地描述回答,也故意隐藏细节,因为这个问题实在过于复杂。另外 adobe/apple 以及 flash/osx 毕竟都是私有产品,我的理解也可能有误,这里我把我的理解阐述一下。
所谓的硬件加速具体指什么,win/osx 硬件加速支持如何?
两个方面: H.264 解码硬件加速,屏幕渲染硬件加速。
H.264 是高清流媒体的半事实标准,高压缩比可以大幅降低网络带宽需求,代价是解码运算量大。(其他编码方式由于解码运算量小,从硬件加速中受益不明显,所以通常特指 H.264)
win 环境通常由显卡厂商随驱动提供解码器,可供 flash 和其他播放器调用。
osx 目前 Lion 版本未提供 H.264 硬件解码接口(QuickTime 可以调用私有 API 实现硬件解码)。
目前网络视频流最流行的封装手段依旧是 flash 播放器,flash@osx 的性能问题主要就是缺乏硬件解码支持造成的。
后者是现在主流操作系统图形框架的基础(compositing/hardware overlay)。这方面对于性能的影响主要是 flash 动画,不如前者明显和广泛。
compositing/overlay 的优点在于,应用程序独享自身界面部分的显存,组合渲染由显卡硬件实现,图形界面渲染对于 cpu 的占用大幅降低,同时可以利用显卡实现大量窗口特效。
02 年 Jaguar 就实现了 compositing 硬件加速(基于 opengl),06 年 vista 也转向了组合机制。08 年 flash v10 开始支持 win 硬件渲染,10 年 flash v10.1 支持 osx 硬件渲染。
flash@win 和 flash@osx 到底有什么不同?
flash 本身没有太大区别,不同在于 win/osx 的设计思想,windows 强调兼容,而 osx 硬件平台相关的,这样的区别决定了 win/osx 对于第三方 runtime 的不同态度。
win: Hardware -> OS -> OS API / 3rd runtime -> Software
osx: Hardware -> OS -> OS API -> 3rd runtime / Software
flash 作为 3rd runtime 在两个平台的地位是不同的,一般来说,越接近硬件越会有好的性能。出于兼容性考虑,win 向软件开放大量硬件细节;而 osx 只允许第三方应用调用高级 API 同时隐藏硬件细节,保证了上层应用的统一性。flash 在两个平台上的性能就有了先天性差距。
一句话总结:flash@osx 性能差的原因主要是缺少 H.264 硬件解码支持,小部分原因是图形渲染流程所致。
------------------
至于产品的问题,类比汽车产业的更新换代,adobe 在核心产品上的做为不说优秀,也可以算作中规中矩。这也只是我的看法而已。