[AudioPlayer][AudioPlayer]详细设计说明书详细设计说明书[MTK-M3项目组]康佳通信科技开发中心软件所2005年4月22日目录AUD修改历史41AUD整体结构及功能描述52AUD关键数据结构说明53AUD主要存储分配74AUD各子模块实现及主要算法说明74.1初始化AUDPLAYER各项设置参数74.2PLAYLIST的LOAD操作84.3AUDPLY的播放PLAY,PAUSE,RESUME94.4停止114.5下一首,上一首114.6增加音量,减小音量124.7查看某条LIST纪录的DETAIL信息134.8添加AUD文件和删除文件134.9AUDPLY的SETTINGS145AUD内部调用的主要函数说明146AUD模块提供的外部接口函数说明157主要信号说明168AUD相关文档文17SR修改历史191SR整体结构及功能描述202SR关键数据结构说明203SR主要存储分配214SR各子模块实现及主要算法说明224.1录音功能实现224.2录音的播放功能:234.3录音或播放文件的PAUSE,RESUME,STOP功能:234.4录音文件的追加,删除,重命名操作244.5改变文件格式及录音音量245SR内部调用的主要函数说明266SR模块提供的外部接口函数说明267SR主要信号说明278SR相关文档文件28AUD修改历史时间修改人版本修改内容2005-4-25张成卫1.0创建初始版本1AUD整体结构及功能描述AudioPlayer的结构设计分为四个层:MMI层,MDI层,MEDIA层和L1A层;其中MMI层是人机界面层,MDI层是MMI和底层MEDIA,L1层进行交互的Api层接口层,MEDIA和L1A是底层的进行音频文件的Play,Stop,Resume等任务的处理的。MDI层向下封装了MEDIA层的任务操作的函数,向上提供给MMI层供使用。AudioPlayer功能可以分以下几模块:第一,初始化.从Nvram中读取相关的数据到一个全局数据结构中,包括list_auto_gen,volume,preferred_list,repeat_mode等等(关键数据结构中有说明),初始化工作是在开机中的InitAll()中做的。第二,Load相应的playList。PlayList存放在phone和外挂卡如SD,MMC,MS卡等上,在audioPlayer的主入口函数中执行这个动作,根据第一步骤中读取得preferredList取得对应的PlayList,(其实际做的动作是如果phone和card都准备ok的话,那么就优先LoadPreferred存储空间上的PlayList,否则Load对应剩下那个得List.第三,可以进行各种支持的音频格式文件的操作,如:播放,暂停,结束,上一首,下一首,增加音量等,可以选择PlayList中的任意一首进行这些操作。另外可以对PlayList进行Refresh,查看其details详细信息,添加新的文件,删除文件,删除所有文件等。第四,设置模块,用户可以自己设置一些选项,这些基本上都是在第一步中需要从nvram中读取的数据,包括是否让ms自动生成PlayList,播放器的skin,循环播放,随即播放,BackGround播放;每次在用户改变了这些设定值之后按下LSK之后便保存到NVRAM中。第五,audio还封装了Mdi层的一些接口函数提供给播放其他各种铃声使用,例如:AudioPlayReq(U16soundId,U8style)就是播放对应铃声Id的,这些铃声Id跟对应的铃声文件一一对应。2AUD关键数据结构说明一个保存AudioPlayer的环境变量的结构:typedefstruct{S32n_total_items;//_____PlayList中所有的曲目数S32pick_index;//_____当前是哪一个曲目S32pick_count;//_____已经选择过多少个曲目U8bitset[MAX_PLAY_LIST_BYTES];//_____一个位结构标志那个对应的曲目已经播放过//_____已经播放过的置1//settingsU8list_auto_gen;//_____PlayList是否自动产生,不需要用户自己动手添加?U8preferred_list;//_____用户更喜欢的List...0:phone,1:cardU8skin;//_____AudPly的skin0,1,2U8repeat_mode;//0:off,1:repeatone,2:repeatallU8random_mode;//0:off,1:onU8background_play;//o:off,1:on//cmd&statesUI_character_typetitle[FMGR_MAX_FILE_LEN+1];//____被选中的曲目titleUI_character_typefilefullname[FMGR_MAX_PATH_LEN+1];//___全名字U8state;//_____AudPly的状态:Idle,Play,PausedBOOLrestorable;//____恢复未放完的?1:true,0:falseBOOLneed_restore;//___BOOLwait_next;//____下一曲目等待播放BOOLneed_replay;//_____是否需要重新放一边BOOLin_main_screen;//_______是否在AudPly的主播放screen下BOOLin_list_screen;//______是否在AudPlay的ListScreen下...