手机的音视频解码分为软解码和硬解码,symbian对mp3,aac,amr的支持比较全,本地文件播放/录制/流媒体播放都OK,而wma作为微软主推的音频格式,symbian就没那么友好了,只用CMMFCodec实现了本地文件的软解码。以下是S60 3版所有的音视频编码格式, 搞相关方向的赶紧收藏:)
Codecs in S60 Devices
Different S60 devices may have different multimedia codecs. There are similarities between S60 devices, but there are differences, as well. The mere presence of a codec (e.g. mp3) in a device does not tell too much to developers. We need to know what APIs can be used to access that codec.
This page has several purposes:
For the theory behind the tables, please take a look on the following articles and documents:
Click on a device to see detailed info about its codecs.
S60 3rd edition:
S60 3rd edition FP1:
S60 3rd edition FP2:
API (Codec type) |
AMR-WB (True Tones) | RealAudio 1 Voice, 7 | RealAudio10 | MP3 | AAC (both AAC-LC and AAC-LTP) | eAAC+, AAC+ | WMA | AMR-NB | VoIP (NB): G.711, iLBC, G729 |
---|---|---|---|---|---|---|---|---|---|
DevSound, CMdaAudioOutputStream (Accelerated HwDevice ) |
30H1, 30H3, 31H1 | 30H1 | 30H1 | 30H1, 30H3, 31H1 | 30H1, 30H3, 31H1 | - | - | 30H1, 30H3, 31H1 | 30H1, 30H3, 31H1 |
DevSound, CMdaAudioOutputStream (All-ARM HwDevice) |
30H2, 31H2 | - | - | 30H2, 31H2 | - | - | - | 30H2, 31H2 | - |
DevSound, CMdaAudioInputStream (Accelerated HwDevice ) |
- | - | - | - | 30H3 | - | - | 30H1, 30H3, 30H2, 31H2, 31H1 | 30H1, 30H3, 31H1 |
DevSound, CMdaAudioInputStream (All-ARM HwDevice) |
- | - | - | - | - | - | - | - | - |
CVideoPlayerUtility API (RealPlayer codec/wrapper) |
30H1, 30H2, 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | - | (11) | - | 30H1, 30H2, 30H3, 31H2, 31H1 | - |
CMdaAudioPlayerUtility (CMMFController) |
30H1, 30H2, 30H3, 31H2, 31H1 | - | - | 30H1, 30H2, 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | 30H1(7), 30H2(10), 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | - |
CMdaAudioRecorderUtility (CMMFController) |
- | - | - | - | (1) | - | - | 30H1, 30H2, 30H3, 31H2, 31H1 | - |
CMMFCodec (99) (decoder) |
30H1(2), 30H2(3), 30H3, 31H2, 31H1 | - | - | 30H1(6), 30H2(9), 30H3, 31H2, 31H1 | 30H1(5), 30H2, 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | 30H1, 30H2, 30H3, 31H2, 31H1 | 30H1(4), 30H2(8), 30H3, 31H2, 31H1 | - |
CMMFCodec (encoder) |
- | - | - | - | 30H1, 30H2, 30H3, 31H2, 31H1 | - | - | 30H1(4), 30H2(8), 30H3, 31H2, 31H1 | - |
API & Codec type | RV 8/9/10 | H.263/MPEG-4 | H.264 |
---|---|---|---|
MDF DevVideoRecord (Accelerated HwDevice ) |
- | 30H1, 30H3, 31H1 | - |
MDF DevVideoRecord (All-ARM HwDevice) |
- | 30H2(2), 30H3, N75, 31H2, 31H1 | - |
CVideoPlayerUtility (RealPlayer codec/wrapper) |
30H1 (1), 30H2, 30H3, 31H1, 31H2 | 30H1 (1), 30H2, 30H3, 31H1, 31H2 | 30H1 (1,3), 30H3, 31H1, 31H2 |
Q: I know that Device X has the codec Y, but the codec is not listed in the tables above. Why?
A: This is because the codec can not be accessed by any of the APIs listed in the tables.