http://blog.youkuaiyun.com/tomsoft/article/details/5833448
很久没有更新我的Blog了,最近发生了不少的事情,可以说一言难尽,不过FlashPlayer的开发没有停止,相对计划的8月13日有不少的延时----以我个人的风格,东西还是做出来后再拿出来给大家看好些;
新的FlashPlayer设计目标是按照FlashPlayer 8,考虑嵌入系统,实际是按照FlashLite 3.0作为设计标准的,新版本的FlashPlayer在设计时设定了几个重点:
1)增加视频支持,及支持H263和VP6的视频格式;
2)更小的CodeSize,以方便嵌入平台的移植;
3)ActionScript的升级(支持FlashPlayer 8/FlashLite 3.0)
4)更便利的移植接口;新的程序架构支持有OS的系统和NonOS的系统(但我仍建议至少有类似uCOS的简单OS)
5)更好的稳定性和效能;
当前实际完成的情况我们先以几张屏幕截图来说明:
以上分别是Pucca的视频演示和一个网友传给我的测试用例(不是很清楚是什么,但主要测试了视频旋转),当前的状况基本如下:
1)视频解码H263和VP6都已经整合进去了,当前还是纯软件Decoder,但实际移植到具体硬件可以使用厂家硬件加速的视频Decoder(Video Codec可能会有License的问题),新的程序接口支持硬件加速的视频Decoder和MP3 Decoder----这个版本相对FlashPlayer 6改动太大了,尤其接口部分几乎完全重写了;
2)当前的程序还是Alpha版本,除视频外,其他的功能还在测试中,所以稳定性和相容性先不说什么了;目前也发现了Bug,还在Debug中;
以后的计划:
1)稍晚会释放一个Windows版本的评估程序,随后会有一个Linux版本的评估程序;
2)年底会开始着手硬件加速部分(Video Codec和渲染部分)
3)根据情况我会适时释放一个二次开发包,用户可以使用这个二次开发包开发自己的Player播放器(注意不是插件),这样在特定的平台上开发自己的Flash播放器或基于Flash的界面应用会成为可能(因为个人精力问题,我只可能开放PC版本的----嵌入平台太多了)
4)之后的工作重点先暂时不谈了,我想准备的有些眉目了再讲;
补充:
之前有看到一些说法质疑FlashPlayer在嵌入系统效能问题, 但我想说明几个问题:
1)矢量运算虽然存在效能问题,但现在多数32RISC平台,即使ARM7 96MHz,也可以应付简单的Flash,至少UI没有任何问题,见之后连接;
2)当前开源Flash如gnash,其渲染效能是存在很大问题(我没有使用gnash原因就是如此),如gnash中使用了渲染引擎agg,就存在渲染效能不佳的问题,尤其在嵌入系统上。所以gnash在嵌入平台更好运行还需要些时间;
以下分别是我之前的Flash在嵌入系统运行的实际视频:
ARM7平台:(高画质,4x4抗锯齿开)http://www.hygraphics.com/download/FlashPlayer/video/GP32500Demo.wmv
ARM9平台:(高画质,4x4抗锯齿开,使用ColorDither)http://www.hygraphics.com/download/FlashPlayer/video/Flash%20Demo.WMV使用JXD 990平台
实际使用中画质甚至关闭抗锯齿,效能还会有不少提升(ScanLine算法,效能提升很大程度与竖向扫描有关系),另ColorDither对渲染效能影响也不小----因为感觉ARM9在处理UI时效能还有不少剩余,所以我增加了ColorDither
新版本的FlashPlayer最近一直在做相容性和Bug测试,之前在Release下出现的内存泄漏已经解决,设备字体显示出现错位的问题已经确认,并修改完毕,当前版本下新代码的CodeSize相比早先的FlashPlayer 6小了很多,PC版本的Release代码大小为408KBytes(含视频解码Codec),而早先不含设备字体(FreeType支持的)大约500~600KBytes,最终版本(含FreeType)甚至达到1192KBytes了;不过新版本的效能略有下降 ----- 意料之中的事情;
注意:雷电的底层字体显示已经更正
新版本显示还没有实际上平台验证,目前看到的情况效能应该略逊于之前的FlashPlaer 6,但相容性和CodeSize应该改善不少---当前看来上实际平台验证的必要性不是很大。原计划阶段2的Linux版本(或平台相关版本)的计划决定暂时取消,目前会再进行些时间的Debug及相容性修改后即开始进入阶段3的工作 ----- 硬体加速;
最近因为各方面的事情忙的焦头烂额:新版本FlashPlayer的Debug、下一步工作的规划(尤其是硬体加速的准备)...还要养家糊口 ---- 毕竟是有老婆孩子的人了,确实没有任何额外的时间和精力 ---- 在过去的2个月里,我几乎每天都是在半夜2点之后睡觉的。因此,最近收到朋友询问我新版本的FlashPlayer在平台上的效能如何,我只能很抱歉的告诉他,我确实没有时间 ---- 这个版本基本上都是我一个人做下来的,尤其后期的硬件加速,我确实没有精力;如果因此有怠慢大家的,万望原谅 --- 我真的很累;
相关的二次开发包会晚些提供,按照早先的Project计划,阶段3工作会在9月23日全部展开 ---- 所以我的时间不多了;
几个主要的Bug基本已经修正了:设备字体、鼠标监听;和IE8、早先的我自己写的FlashPlayer6及当前正在进行的FlashPlayer 8,对比测试了一下性能,屏幕截图如下:
【早先我的小作FlashPlayer 6(----况且叫做gingkoPlayer)版本的效能测试】
-------------------------------------------------------------------------------------------------------------------------
【当前我正在写的Player(大家给起个帅些的名字)的执行效果】
---------------------------------------------------------------------------------------------------------------------------
【IE8的对照执行状况】
-----------------------------------------------------------------------------------------------------------------------
说明如下:
- 运行环境:Windows 7、Core i7 1.6MHz(在早先P-M 1.6MHz效能相差不大----单线程程序)
- FlashPlayer 6和FlashPlayer 8均设置为高画质;
结果很有趣:
- FlashPlayer 6和FlashPlayer 8的执行效能相差不大,原以为新版本的FlashPlayer效能应该有所下降(大约130FPS)
- IE 8上执行效果有些令人费解,我测试了至少3次,结果都是一样的(<60FPS),不清楚什么原因。
这个阶段基本上告一段落,现在已经开始阶段3的准备(阶段2暂时废除),阶段3的主要工作是解决硬体加速问题,期望在嵌入平台上可以以更低的硬件需求运行FlashPlayer;原来计划在明年开始FlashPlayer 10的开发,但考虑到Google Android平台上已经提供官方的FlashPlayer 10,因此,从目前来看,在高端平台和Adobe争夺FlashPlayer 10明显不明智,这样原先的FlashPlayer 10的计划取消;
关于市面上其他相容的Flash播放器,目前市面上纯软件的Flash播放器已经很多了,比较成功的是gnash,其渲染引擎使用是agg,同时支持OpenGL的硬件加速,但遗憾的是agg的软件渲染效能实在是不敢恭维-----这也是gnash在纯软件渲染下效能低下的原因;但是,gnash相对我的播放器有他自己的优势:gnash集中了众多优秀的程序,因此,我相信其渲染效能的问题迟早会解决;同时,正是gnash汇集了很多优秀的程序,其ActionScript的支持相对比较理想 ----- 后期的更新应该比较迅速;因此,作为面向嵌入系统的第三方FlashPlayer,我未来不会将所有精力放在纯软件版本上 ---- 而更多会考虑针对平台的硬件加速(包括DSP加速、纯硬件加速算法....)
累死了,最近花了很长时间进行测试和Debug、相容性修改,虽然不敢保证绝对没有问题,但感觉还算罢了,毕竟是一个人在搞:又要测试还要Debug,精力明显不够,新的版本相对早先的FlashPlayer 6有不少的改进:
- 效能上似乎没有损失;实际严格意义上讲,新版本的效能要差于早先的FlashPlayer 6,早先的FlashPlayer 6支持Dither Color,在新的程序中Dither Color被拿掉了----从效能和Code Size角度上出发,所以画质应该逊于之前的版本;
- 视频部分已经可以播放了;实际是增加了Video Codec的接口,真正在嵌入平台上Video Codec会由硬件完成;
- 程序相容性好了,至少部分支持FlashPlayer 8(FlashPlayer 8中的Filter不支持);同时CodeSize减少了不少;
更进一步的Debug暂时停止,包括原先计划的Linux也会跳过 ---- 我实在觉得没有什么必要,纯软件版本暂时不会移植到嵌入平台上,主要是我没有精力,前些时候有朋友希望我能将这个版本移植到平台上或询问我在平台上的表现,统一回复如下:
- 暂时没有打算去在不同的嵌入平台做效能测试,原因是之前的版本已经移植过,至少大体的效能我已经知道了;
- 之所以将当前的开发结果公布出来,原来是有几个原因:
- 这个东西毕竟嚷嚷了很久,总要有个结果;
- 另外我想看看这个东西市场反应如何,工程人员做东西往往都会过于沉溺于技术细节的追求中,我自己也确实如此:FlashPlayer前前后后投入了几年的时间,但我现在还没有搞清楚这个东西的市场前景在哪里。
- 有些不甘心;因为做Flash有些时间了,之前也帮一些公司去评估了一些世面上比较有名的Flash方案,居然发现用开源的稍稍修改一下就可以冠上自主开发的帽子,堂而皇之的去卖了;有些不舒坦...
- 可能会有不少朋友误解了我的想法,公开结果并非是为了做广告、卖钱 ---- 也许像有些朋友讲的“太迂腐”了;我在软件行业工作有20年了,我现在也在经常想,我是不是应该按照自己的喜好去工作了,不仅仅因为钱而工作?所以再次强调,这个纯软件版本暂时没有移植到其他嵌入平台的打算 --- 我没有那么多的精力去应付这些,不是钱的问题;迂腐还是不开窍都无所谓了,我自己开心就好了。
- 硬体加速(嵌入平台上)会是新的工作重点,硬件加速会依照两个步骤完成;其目标是:更充分利用硬件资源、更低成本的硬件(我可不想在1G主频的系统上流畅的跑纯软件版本),因此,这是闭关贴,我希望能尽快进入状况开始硬体加速的设计;最终的硬件平台已经选定,暂时保密(不会用1G主频的机器忽悠大家的,主频相当的低),等作出来再讲;
FlashPlayer进行了有很长时间,确实越来越纠结了:Google已经在高端平台支持了Adobe的FlashPlayer 10,更多的低端用户更喜欢用廉价、免费的开源代码,目前实际支撑我在继续做下去的动力完全是个人喜好----毕竟一把年龄了,我很期望能做自己想做的事情,是否成功我没有想太多,至于这个东西能不能给我带来什么经济效益暂时没想 ---- 毕竟我有自己的工作,我们这个地方虽然工资比不上北京、上海,好在“穷山恶水”的地方消费也相对便宜,所以工资虽然微薄也算过的下去,毕竟有些年龄了,我不需要像年轻人那样考虑买房子(房子贵呀,我们家门前已经13K了---要人命,当地均价都6K了)、买车,也不像我的同事,一把年龄仍为豪宅(人家已经几套了,那叫投资)和豪车在努力的拼搏;
所以我一直觉得自己并非一个成功人士,更多的是给年轻的后代带了一个坏榜样,所以不要叫什么“牛人....”,更多是个不求上进的“懒人”;也许只有我们那个年代的大学生才会这样没出息的 ---- 所以千万不要学我;