2008年12月27日星期六

quicktime?Slowtime!

现在觉得QT所谓“追随工业标准”就是个商业噱头而已。。QT6的时候出了个压不出ASP profile、速度慢、可选项少、效果很一般的Quicktime MPEG4编码器,不过解码其实还可以(假设容器是.mov的话)。9系统、10.1-10.2系统上基本看不到几个mov封装的MPEG4文件,大多数都是用divx doctor之类的东西从avi转过去的(另外quicktime avi组件的问题相信使用过的都知道,好像只是VFW1.1标准,AVI里的mp3、ac3音频编码根本不行,后来divx和现在的perian都开发了替代的AVI组件,解决了这个问题)。论性能,当初divx5比Quicktime MPEG4快;编码上,quicktime mpeg4和设置好的divx、3ivx以及现在的xvid是根本无法比的。
到了H264称王的时代,苹果出了QT7。QT的H264在 QT7.2之前根本就无法解码大多数实际遇到的Main profile的H264 MP4文件;就算是7.2支持了,那个解码效率,不和硬件解码、coreavc比,和libavcodec里的h264都没法比。编码么,quicktime h264和mpeg4有一样的毛病,没有几个可选项,一次只能占用一个CPU,而且也只能压出simple profile。iPod、iphone只能支持simple profile的h264,看来qt的人也认为所有的人都不需要用qt来压出他们。因此,和良好设置过的x264相比,qt的h264在相同码率、都是 1pass的情况下几乎不堪入目。
另外,在网络上低码率mp4中HE-AAC横行的时候,只支持AAC-LC的解码(编码就懒得说了)也不太好说。
熊猫本系统里的qt755总算支持了NV的h264硬件加速,这是个好事。Quicktime X是jobs在某次公开雪豹存在的会上说的,通过全硬件加速,应当会把解码性能提高一个数量级吧。而当初MPEG4的问题,至今还是那个样子。
QT的多种编辑用codec倒一直很强大,用到这点的那些软件是jobs赚大钱的部分,qt组当然不会怠慢了。
QT 还有个大问题是它抛不开789系统时代的那些古旧代码。最初QT是给6系统写的,pascal代码还是占主要部分。不过在qt2.1还是2.5的时候 QT组必须把QT全部代码都移到PPC平台,以前的东西都改写成C了。qt基础部分由于和系统结合很紧,到了OSX的时代和以前几乎就没有联系了;但是问题是那些8、9系统时代写的编码解码器,就不那么好全面翻新了。有些是根本不能全面翻新(比如sorenson、qdesign、purevoice之类从别家公司授权来的编解码器,苹果没有多少权利去进行大幅度修改和优化),有些则是因为过于古老没人用,qt组懒得去翻新(比如什么cinepak、 imadpcm一类)。还有刚才说过的AVI组件,这个大概是97年底98年初qt3的时候做的,当时apple估计只是把这个当作当时QT“兼容性”的一个宣传工具,以后应该是没有怎么更新过。后面还有flash 4、flash 5支持(7.3.1废掉了),这个也自从qt5之后就再也没有过任何更新,也许是因为当时realplayer搞了flash支持,apple只是跟一下风。这一系列古董代码,全部是用老的OS9 toolbox,或者后来稍作修改改成carbon,来编译出来的。相对于9系统到carbon,carbon到cocoa是非常复杂的,阿多币、M$搞了7年都没搞定,qt组估计看着屁股后面这一大堆的老codec,估计心有余而力不足了。qt7终于加上了一个控制QT的cocoa api QTkit,但是实际上它还是得用那些carbon的库来实际实现quicktime功能。iphone的osx没有carbon,这点大家可能都清楚;iphone能播放mpeg4、h264 simple profile的视频,播放mp3、aac、alac、pcm的音频,我认为应当是把整个qt底层移植到了cocoa。jobs应当把这个为同属于OSX 的iphone os开发的新框架移植到mac的osx上来(也许qt组已经作了一两年甚至4年以上,也许这就是quicktime X)。至于那些古董codec,我认为qt741默认隐藏它们的编码功能,qt731废掉flash5支持,其实就是为了quicktime X将彻底不支持那些古董做准备。这样,也许qt就不再是slowtime了。
不过,QT最大的问题还是跨平台后的性能问题。当初 qt1-2的时候,apple请一家小公司移植了少部分7系统API,做了个只能播放视频和支持少部分从mac移植的软件,没有什么其它功能的qt1-2 forwin;后来这个小公司和intel、m$合作,最终导致了苹果历史上与M$的第二场大官司(第一件是win2.0的外观与感觉案)。后来jobs 和M$谈判把这两个官司私了了,但估计还是怀恨在心还是怎么的,QTWin虽然变成apple自己制作,但是其性能和稳定性和在自己系统上相比,完全是一个天上一个地下。看看mplayer、mencoder,在win上性能比在老家linux上还要好;苹果就不很厚道了。不知道quicktimeX的 win版会有什么大变化,希望速度上有所提升,但是又不要加更多从OSX移植的东西。safari win其实性能并不差,不过它太OSX化(连quartz字体渲染都搞过来)了。苹果的人不知是故意还是怎么,把Win版苹果软件的界面设计得和win环境不协调(safari中出现了OSX的滚动条和按钮),这点也不知以后会怎么发展。
无聊乱敲了这么多字,其实也就因为一个文件转得太慢而已。希望quicktime X能真正quick吧。
追记:qt731干掉flash5的问题,影响到了那么一些在qt影片里用flash搞互动内容的洋人。当初imac g3有几个宣传片就有flash的互动内容在里面。
这篇文章纯属用qtpro连续出现crash之后的牢骚,别看得太重。

2008年12月17日星期三

某软件的工作原理

一篇无聊的短文,写一下某个神秘的软件(名字还是不要说好了)的原理。

首先通过10多个硬编码的dns服务器查询几个挂在一个域名服务器下的服务器IP,w61-w65.z*.com,然后通过SSL(好像还有别的加密协议)连接上这些服务器。而且一次连接成功后,会将解析结果存在注册表某个地方(具体哪里我忘了,好像是~后一个随机生成的值吧)以便下次解析时做缓存使用。

而如果那么多dns都没法连接,那么怎么办呢?那就用类似网马下载者的办法,不过不需要什么down&run,down个服务器列表就行了。这个down地址应该会经常变换,以满足这个软件的特殊用途。

怎么检测已经连接成功?这个软件会在%temp%下生成几个名字一看就是随机的无扩展名文件,其实很多都是gif,好像是yahoo美国的一张logo图吧。通过这个软件连接的那几个服务器,从yahoo上能下载成功图片,那么就证明其代理目的已经达到。

在本地,这东西开两个端口(都是HTTP proxy),禁止本地以外的ip连接,而且这个http proxy还有一些特别的策略设定(用过才知道)。以前某个端口上还能创建个特殊的简单加密URL的HTTP服务器,现在不知还有没有。

这个软件自身似乎有保护,脱了壳还不好直接运行,另外结构做得有些像马,因此经常被某些杀软误报。

现在的版本能直观显示UL/DL速度。

至于这个软件到底是什么,那就请自己猜测推断了。

另外,这次M$N Space改版彻底让非Firefox的Gecko浏览器没法发文章了,只能拿出WLW来发。M$N这些愚蠢的家伙,难道认为现在还是2001、2002年么?还不知道Gecko浏览器不只是Firefox一个么?还不知道根据user-agent识别浏览器的缺陷么?

2008年12月1日星期一

YKSOFT's Home 公告:即日起关闭评论功能

M$N的那些无所事事的家伙们,搞个Space,不仅做不到全浏览器一套脚本,连个最基本的防spam措施都不存在。(我可不认为ballmer知道这样的细节,不然他早就气炸了肺——连个有效的防spam的方案都没有,还谈什么“云计算”!)当初那些专业spammer们能够注册无数个Live ID,然后用工具在没有任何确认措施(连个CAPTCHA都没有)的情况下遍历他们Google到的live space,按一定频率自动发带HTML的spam评论。在M$那些蠢货们加上相关措施之前,我是不想再被迫用IE打开space,摘要里面打开所有评论一个个看,然后一个个删除了。
以后想对这里的任何文章或者向我本人提出任何问题,请直接与我的MSN Messenger或者AIM(yksoft1@mac.com)联系。中国国内朋友也可以使用QQ(26308285)和我联系。
特此公告
2008.12.1