1.移植目標
將H.264解碼器移植到OPhone作業系統之上(NDK+C),並寫一個測試程式(OPhoneSDK+Java)測試解碼庫是否正常運行,下面是解碼時的截圖:
OPhone的模擬器和Mobile的模擬器一樣是類比ARM指令的,不像Symbian模擬器一樣執行的是本地代碼,所以在模擬器上類比出來的效率會比真實手機上的效率要低,之前這款解碼器已經最佳化到在nokia 6600(相當低端的一款手機,CPU主頻才120Hz)上做到線上播放。
2.面向人群
本文面向有一定的手機應用開發經驗(例如:S60/Mobile/MTK)和有一定的跨手機平台移植經驗的人員,協助她們瞭解一個企業的核心庫(C/C++)是怎麼移植到OPhone之上的。
3.假定前提
1)熟悉Java/C/C++語言;
2)熟悉Java的JNI技術;
3)有一定的跨手機平台移植經驗;
4)有一套可供移植的原始碼庫,這裡以H.264解碼庫為例,為了保護我們的知識著作權,這裡只能夠公開標頭檔:
#ifndef __H264DECODE_H__
#define __H264DECODE_H__
#if defined(__SYMBIAN32__) //S602rd/3rd/UIQ
#include <e32base.h>
#include <libc"stdio.h>
#include <libc"stdlib.h>
#include <libc"string.h>
#else //Windows/Mobile/MTK/OPhone
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#endif
class H264Decode
{
public:
/***************************************************************************/
/* 構造解碼器 */
/* @return H264Decode解碼器執行個體 */
/***************************************************************************/
static H264Decode *H264DecodeConstruct();
/***************************************************************************/
/* 解碼一幀 */
/* @pInBuffer 指向H264的視頻流 */
/* @iInSize H264視頻流的大小 */
/* @pOutBuffer 解碼後的視頻視頻 */
/* @iOutSize 解碼後的視頻大小 */
/* @return 已解碼的H264視頻流的尺寸 */
/***************************************************************************/
int DecodeOneFrame(unsigned char *pInBuffer,unsigned int iInSize,unsigned char *pOutBuffer,unsigned int &iOutSize);
~H264Decode();
};
#endif // __H264DECODE_H__
你不用熟悉OPhone平台,一切從零開始,因為在此之前,我也不熟悉。