Nokia E90支持H.264视频加速的尴尬真相

在去年E90刚到手的时候,我曾经尝试分析过E90的视频播放硬件加速能力,当时试图用内置的RealPlayer播放器播放全屏尺寸的H.264未果。后来又看到网上很多关于E90视频转换的文章,不过都没有提到过如何转换支持内屏全尺寸播放的H.264视频

今天,在试用Badaboom之余,我又顺便深入测试了一次E90的H.264视频播放能力。经过多番对比测试,最终得出一个残酷的结论:

E90并不支持使用内置的RealPlayer播放器借助硬件加速播放内屏全尺寸(800×352)的H.264视频。

继续阅读Nokia E90支持H.264视频加速的尴尬真相

Symbian基金会成立,将整合现有平台并实施开源战略

参引 www.symbianfoundation.org

为了迎击来自Google Android阵营的挑战,Nokia联合Symbian阵营的成员及其它业界巨头,成立Symbian基金会。有别于原Symbian Ltd.,基金会将以非赢利模式运作,参与的企业只需象征性的缴纳少量的费用即可获取使用Symbian及之上平台的授权。作为初期贡献,Nokia将会收购原Symbian Ltd.的余下股份,并将其操作系统资产及自家的S60平台一并贡献给基金会。另一方面,索爱、Motorola和DOCOMO也将各自基于Symbian的平台“UIQ”和“MOAP”贡献给基金会,以形成统一的Symbian联盟。

作为主要的战略计划,Symbian基金会将会在未来两年内逐步开源其操作系统及上层软件,并提供给社区完全开放的开发平台和支持计划。

—–
看来,Google的强势介入的确给这个曾经封闭的产业施加了前所未有的竞争压力。作为开发者,这无疑是一个令人兴奋的消息,让我们一同期待智能手机产业更加开放的未来吧!

在Windows Vista/2008下搭建Symbian开发环境

升级到Windows Server 2008后,面临最大的一个挑战便是Symbian开发环境的迁移。让Carbide + S60第三版SDK 工作在Vista下的讨论已经比较多了,实现起来也并不复杂,所以本文主要关注Symbian 6.1等低版本OS的迁移问题,并以Nokia S60 SDK 1.2在Windows 2008 (x64)为蓝本进行说明,方法同样适用于Symbian 7.0s/8.1和Windows Vista (x86/x64)系统。

兼容性问题主要集中在GCC和模拟器上,后者相对比较容易,只需赋予管理员运行权限即可。GCC则是一个真正的麻烦事儿,由于它是Symbian为其工具链所改造的一个GCC 2.9的私有版本,不同于主版本分支,目前也没有继续的维护者[*]。Vista之后版本的Windows由于DEP和安全性保护的增强,使得GCC在编译中会出现“Exception: STATUS_ACCESS_VIOLATION”错误,即使定向关闭DEP或者完全关闭DEP也无济于事。为GCC工具所有的执行文件赋予管理员权限同样不管用,错误表现可能会有差异,但结果都一样。

继续阅读在Windows Vista/2008下搭建Symbian开发环境

手动为IDA生成所需的导入符号映射表

IDA Pro 5.2自带了Symbian的导入符号映射表,但Emulator Build部分只含有Symbian 9系列的.ids文件。没有较早版本适用的,因为懒得去找旧版本IDA,所以自己写了下面这个批处理,可以快速的从.lib生成.ids,即IDA所需的导入符号映射表。

以.lib文件做参数时生成对应的.ids;不带参数则处理当前文件夹下全部的.lib文件。

@echo off
if %1. == . goto all
echo Process %1 ...
dumpbin /exports %1 | sed --text "/         [ ]*[0-9]*    /!d;s/^[ \t]*//;s/)$//;s/    / Name=/;s/ (/ Comment=/" > %1.idt
zipids %1.idt
goto end
:all
for %%f in (*.lib) do call %0 %%f
:end

注1:调用到的三个工具,dumpbin是VC6中包含的,sed可以用UnxUtils中得到,zipids是IDA官方提供的附加工具包。
注2:只适用于Emulator Build,Target Build暂时还没有需求,因为IDA已经为Symbian提供了大部分.ids文件。

Symbian Open Signed只是一场骗局

好不容易盼到symbiansigned.com重新开放的“Open Signed”流程完全不像它此前所宣称的那样“Open Signed meets the needs of freeware, open source, and personal use developers”。

刚刚修改FontRouter实验得出的结论:现在没有Publisher ID,无论是Protected range还是Unprotected range的UID都不能使用“Open Signed”,也就是说普通最终用户再也无法通过“自认证”的方式使用那些以“未认证”方式发布的需要认证权限的软件了。

FAILURE: Submitted .sis file uses a UID that is not allocated to the account holder matching this email address (0xa000#### )

Symbian走上了一条独裁者的道路,独立开发者和普通用户的自由权利正在被废除,取而代之的是“付费授权”和“合作伙伴”才能享受到原本属于他们的权利。口诛笔伐已经无济于事,是应揭竿而起(Call for a real symbian signed exploit!)还是彻底抛弃(Windows Mobile is open to the world!)呢?

How to use unpublicized APIs in Symbian

1. Why are these APIs unpublicized?

You can usually find the unpublicized APIs in four ways:

  1. APIs are written in SDK document, but marked as “Published Partner” or “Internal”.
  2. APIs are declared in header file with corresponding linkable library, but not documented.
  3. APIs are dumped from linkable library, but nowhere declared.
  4. APIs are exported from dynamic libraries without corresponding linkable library.

* “Linkable library” is a stub library which hold the information required for the linker to link client programs to the correct ordinals to the real dll. In emulator build or Symbian pre-9 toolchain, the linkable library is appeared as .lib file, but in target build of Symbian 9 onwards, it is actually a dummy dynamic library of ELF format with extension .dso.

继续阅读How to use unpublicized APIs in Symbian

初步完成Position Provider接口的反向工程

经过两周业余时间的努力,终于初步完成了S60 3rd FP1中Position Provider接口(EPos Plug-in Framework)的反向工程(主要是CPositioner及相关类),并成功在模拟器上将测试第一个Demo Plug-in通过。

说起这个Position Framework,还真有点耐人寻味。 继续阅读初步完成Position Provider接口的反向工程

Find the UIDs and Capabilities of Symbian EXE/DLL

(1) Emulator Build (Win32 PE)

First, find the start address of section “.SYMBIAN” by typically using “dumpbin /section:.SYMBIAN <Excutable File>”.

The output looks like:

SECTION HEADER #6
.SYMBIAN name
30 virtual size
17000 virtual address (00417000 to 0041702F)
1000 size of raw data
17000 file pointer to raw data (00017000 to 00017FFF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
C0000040 flags
Initialized Data
Read Write

According to the line containing “virtual address”, section “.SYMBIAN” starts at address 0x00017000.

Now, use any hex-editor to view the content at this address:

00017000h: 7A 00 00 10 00 00 00 00 B2 97 1F 10 5E 01 00 00
00017010h: B2 97 1F 10 57 B6 1F 10 B6 E1 0F 00 00 00 00 00

The first 3 dwords are UIDs: 0x1000007A stands for “Symbian EXE”, 0x101F97B2 is the unique UID of this file. (no UID2 for Symbian EXE, but this field is essential for DLL to indicate the framework, eg. 0x10009D8D for ECOM)

The capabilities field at offset 0x18h holds all the capabilities for this executive in the form of bitmask. Thus, 0x000FE1B6 is translated to the following capabilities: (see enumerator TCapability in Symbian SDK)

CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkServices LocalServices ReadUserData WriteUserData Location SurroundingsDD UserEnvironment

(2) Target Build (Symbian PE)

3 UIDs located at the very beginning of the executive file, and the capabilities field is at fixed offset 0x88h. (same meaning as described for emulator build)