多普达828+不完全技术分析

由于自己是做手机软件的,所以也很想知道别的手机是怎么做的。知己知彼,百战不殆嘛。可惜手里缺乏足够的技术资料。幸好身边有一台多普达828+(系统为Windows Mobile Pocket PC Phone 2003第二版)的机器,我可以拿来好好分析一下。没有源代码,咋分析呢?亲身使用使用嘛,真正的程序员从软件操作的过程中就可以分析出这个软件大概是如何编写的。 

使用了一段时间,不得不说,Pocket PC的功能的确强大。由于和桌面PC很强的关联性,在上面编程C主要利用Windows的API,所以开发程序十分方便。这不,我还可以在上面玩《帝国时代》呢。呵呵,这个游戏是PC版的一个精良的移植版,看了一下游戏的Credits,PPC版移植的程序员也就一个人,所以说,PPC软件的开发基本和桌面PC Windows程序的开发没有多大区别,很容易上手,这也造就了上面成千上万的软件。且PPC拥有触摸笔操作,类似PC的鼠标,触摸笔长按操作类似PC的鼠标右键,所以,它的操作灵活性也非常强,很适合一些小型办公软件的操作,比如PPC上自带的Pocket WORD,Pocket Excel等。

由于自己也做过摄像头驱动,所以着重看了一下它的摄像头程序。这款机器用的处理器是Intel的PXA272,LCD的颜色是16位色。16位色为了颜色的丰富性,当然首选是RGB565了。不过为了提升系统速度,PXA272的文档上建议摄像头预览的时候一般把摄像头CMOS芯片出来的数据放到Overlay2上面。所谓的Overlay2,是不同于LCD显示主缓存(Baseplane)的另外一个附加层,它不仅可以接收平常我们所用的RGB格式的数据,还可以接收YCbCr格式的数据。也就是说,平常我们看到的窗口啦,控件啦,都是显示在Baseplane上面的,它上面的像素都是由红、绿、蓝三种基本颜色组成,颜色格式即为RGB格式。16位色,就是每个像素有16位,常用的RGB565格式的数据,就是说,红绿蓝的位数分别位5,6,5。那些截图软件截取屏幕数据,一般也都是直接取Baseplane的数据。Overlay2可以被理解为另外一块显示缓存,存放独立的数据,如果打开了Overlay2,硬件会自动把Overlay2和baseplane的数据合成输出。Overlay2的一个优势就是不仅仅可以接收RGB的数据,还可以接收YCbCr的数据。YCbCr格式的数据不是按照红绿蓝三种基本颜色来存储的,是按照亮度(Y)、蓝色色度分量(Cb)、红色色度分量(Cr)来存储的。一般来说,电视的输出数据是YCbCr格式的,摄像头出来的数据一般也支持这种格式,且这种格式对于编码来说效率更高。如果Baseplane和Overlay2要同时输出,一个典型的做法就是让Baseplane的像素多一个透明位,如果某个像素的透明位为1,则显示Overlay2,否则不显示。RGB565不带透明位,如果要透明位,则一般采用RGBT555,T表示透明,占用了像素的最高位,且绿色分量从6位减少到了5位,该格式仍然是16位的。那828+到底用到了Overlay2没有呢?看看就知道了。

下图是我选用了相框模式进行取景的截图:

图1

下图是我在相框模式下,点击了设置按钮,进入设置界面的截图:

图2

图1的相框颜色混乱,且偏绿。相框中间的取景窗口一片红色。实际上手机中看到的不是这个样子的,相框画得很漂亮,以红色为主要色调,且取景窗口就是通过摄像头拍到的范围。图2一切正常。为什么会出现这种情况呢?一个很好的解释,就是,取景的时候用到了Overlay2,且取景的时候,Baseplane的颜色格式为RGBT555,带一个透明位。普通操作的时候 ,颜色格式为RGB565。截图软件认为颜色一直是RGB565的。图1中间为一片红色,是因为这个区域为了让Overlay显示出来,baseplane的最高位(透明位)置成了1,且其他位为0(这样可以全透,否则只能半透,就是baseplane和Overlay2的像素简单合成)。截图以后,把它当成了RGB565,透明位就变成了红色的最高位了,自然看到的是一片红,但不是正红,因为正红的话,需要红色分量全部为1。相框的颜色偏绿也是因为颜色转换的问题,RGBT555直接当成RGB565以后,透明位没有了,红色最低位变成了绿色最高位,所以本来应该偏红的地方偏绿了。图1 中的按钮都是图片按钮,不是标准控件,估计是因为标准的控件只支持标准的RGB565的缘故,所以用一个图片来代替了按钮。由于RGBT555是一个特殊的格式,图形系统也许没有对它进行处理,即使处理,也不会提供对于普通颜色格式的所有功能(毕竟这是嵌入式系统,需要考虑代码体积和效率),所以图1中显示的文字和图片都是特殊处理的,可能是直接从打包的资源中取出来直接显示即可。图2是一个设置界面,用的都是标准的控件,不过此时已经整个屏幕切换,且到了RGB565格式了。由于颜色格式的不同,图1 的界面不会直接弹出一个复杂的设置窗口。

另外,虽然无法确定Overlay2用的格式是YCbCr,不过按照通常的做法,应该是这个格式。毕竟进行图像编码的时候,RGB格式的数据也要转成YCbCr进行编码,所以直接采用该格式,效率更高。

以上只是本人使用该手机的一些分析,可能有一些不正确的地方,希望大家多多指教。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 40
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值