精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MTK音頻播放器案例實現

移動開發
MTK音頻播放器案例實現是本文介紹的內容,MTK平臺對事件的處理是通過callback function方式, 所以程序的流程不是順序的,主要是介紹MTK音頻播放器的使用,具體內容的實現來看本文詳解。

MTK音頻播放器案例實現是本文介紹的內容,主要是介紹MTK音頻播放器的使用。MTK 6225上的audio player 的結構整體上可以分為三層,最上面的應用程序界面層, 中間的audio 播放api層, 和底層的編解碼庫及音頻驅動. 其結構圖大致如下所示:

MTK音頻播放器案例實現

由上圖可以看出,整個調用層次較深. 我們分別來學習個層.
 
1、MMI Task 層

在該層 audio player 模塊實現了播放器程序, 其中主要包括對界面視圖的實現, 界面邏輯的處理以及調用MID模塊的接口,實現音頻操作. 在學習其具體的實現細節上,可以按view 和 model+control的簡化MVC模式來看, 包含與顯示有關的screen操作顯示部分, 處理消息的msghandler部分以及主的程序邏輯及按鍵處理部分.

MTK平臺對事件的處理是通過callback function方式, 所以程序的流程不是順序的, 事件的發生將導致相應的callback被調用, 從而觸發整個audio player的一次響應. 需要注意的是,在每個不同的界面對相同事件的處理callback函數可能有所不同, 這是在創建,進入該界面時設定的. 

該模塊的接口比較復雜,為了提供對BT的統一接口, 有兩層的播放接口,如mmi_audply_play 和 mmi_audply_do_play_action(). 整個模塊的接口不夠清晰, 有些龐雜和混亂. 模塊的顯示部分使用控件實現,較為簡單, 可進一步參考控件的實現細節以了解平臺的顯示子系統, 對播放文件列表的管理是通過文件操作實現的,具體可參見audioplayerplaylist部分.

MDI層和Media接口層,這兩個部分可看作一個整體, 是MMI層對媒體操作的封裝.它包括了多個部分的接口,在此我們只看audio接口部分,其他模塊如video,fm的接口類似. Audio接口包括了播放,暫停,停止,獲取播放時間,獲取播放頻譜等. 這些接口基本上都是按同步處理方式實現的. 比如播放接口:

MDI層接口是

  1. mdi_result mdi_audio_play_file(void *file_name, U8 play_style, void *cache_p, mdi_callback handler); 

調用的Media接口為:

  1. kal_int32 media_aud_play_file(module_type src_mod_id, void *file_param)  
  2. {  
  3.       aud_result = MED_RES_OK;  
  4.     aud_send_play_file_req(src_mod_id, file_param);  
  5.     AUD_WAIT_EVENT(AUD_EVT_PLAY);  
  6.     return aud_result;  

其中的aud_send_play_file_req(src_mod_id, file_param調用msg_send_ext_queue(ilm_ptr);

向media task的external Message queue 發送播放請求消息.其中AUD_WAIT_EVENT(AUD_EVT_PLAY);定義如下:

  1. #define AUD_WAIT_EVENT(evt_) do{                                   
  2.          kal_uint32 retrieved_events;                                    
  3.          kal_retrieve_eg_events(aud_context_p->aud_event, (evt_),            
  4.          KAL_OR_CONSUME, &retrieved_events, KAL_SUSPEND); }while(0) 

等待AUD_EVT_PLAY事件的到達. 通過事件實現了同步.
 
2、Media Task層, media task啟動后, med_task_main在獲得外部消息后,調用med_main((void*)&current_ilm);進行消息處理, med_main會根據消息類型再進行一次
分發 ,audio消息會被分發給void aud_main(ilm_struct *ilm_ptr)來進行處理. 根據相應的請求消息,aud_main調用相應的handler函數進行處理.如對播放請求消息MSG_ID_L4AUD_MEDIA_PLAY_REQ的處理函數如下:

  1. void aud_media_play_req_hdlr(ilm_struct *ilm_ptr)  
  2. {  
  3. …. // 省略其他分支處理,及錯誤處理  
  4.    
  5. // step 1::釋放沖突資源, 設置播放的參數等  
  6.    
  7. // step 2: 根據格式選擇播放函數  
  8. switch (aud_context_p->current_format)  
  9. {      
  10.      ...  
  11.      case MED_TYPE_MMF:  
  12.       result = aud_melody_play_by_name(msg_p->file_name, msg_p->play_style, 0);  
  13.       break;  
  14.     …  
  15.     case MED_TYPE_M4A:  
  16.       aud_context_p->source_type = AUD_FILE;  
  17.       aud_context_p->play_style = msg_p->play_style;  
  18.       result = aud_media_play_file_stream(  
  19.               msg_p->file_name,  
  20.               msg_p->play_style,  
  21.               1,  
  22.               KAL_FALSE,  
  23.               msg_p->cache_p);  
  24.        break;  
  25.            case MED_TYPE_3GP:  
  26.        case MED_TYPE_MP4:  
  27.             aud_context_p->source_type = AUD_FILE;  
  28.             aud_context_p->play_style = msg_p->play_style;  
  29.             result = aud_media_play_audio_track_in_video(  
  30.                         msg_p->file_name,  
  31.                         msg_p->play_style,  
  32.                         KAL_TRUE,  
  33.                         KAL_FALSE);  
  34.             break;  
  35.         default:  
  36.             result = MED_RES_INVALID_FORMAT;  
  37.             break;  
  38. }  
  39.    
  40. // step 3: 開始播放后處理  
  41. aud_set_result((kal_int32) result);        // 設置播放操作返回結果  
  42. AUD_SET_EVENT(AUD_EVT_PLAY); // 設置AUD_EVT_PLAY事件  
  43. if (aud_context_p->src_mod != MOD_MMI) //播放請求是否來自MMI task  
  44. {  
  45.      aud_send_media_play_cnf(result);   //發送播放反饋消息到請求模塊  
  46. }  

3、L1Audio module層, 該層包括了底層的解碼庫和對更底層的驅動程序,及音頻硬件的調用和處理. 其中包括了對具體的音頻格式的處理接口,如對AAC文件的接口有:

  1. MHdl *AAC_Open(void(*handler)( MHdl *handle, Media_Event event ),  
  2. STFSAL *pstFSAL, void *param)  
  3. Media_Status aacMFPlayFile( MHdl *hdl );  
  4. Media_Status aacMFResumeFile( MHdl *hdl );  
  5. Media_Status aacMFPause( MHdl *hdl );  
  6. Media_Status aacMFStop( MHdl *hdl ); 

....

一整套的接口. 在上面的第二層的講解中的play請求的處理函數中, 如果待處理的文件格式是AAC, 則實現上它會調用AAC_Open接口來獲得與播放操作相關的所有函數接口. 為此后的其他操作提供處理函數.

MTK的task和mod是怎么劃分的?

實在搞不清MTK中task與mod,一個task就只加載一個mod么?

在task_init.c 里面void InitApplication()中,

  1. for(i=0;i<TOTAL_TASKS-9;i++)  
  2.  {  
  3.   task_info_g1[i+9].task_ext_qid=OslCreateMsgQ(task_create_tbl[i].task_qname,  
  4.         sizeof(MYQUEUE),  
  5.         task_create_tbl[i].task_ext_qsize);  
  6.   task_info_g1[i+9].task_id = osl_create_task (task_create_tbl[i].task_name,  
  7.         task_create_tbl[i].task_priority,  
  8.         task_create_tbl[i].task_stack_size,  
  9.         task_create_tbl[i].task_entry_func,  
  10.         (void *)(i+9),0);  
  11.    
  12.   task_info_g1[i+9].task_name=task_create_tbl[i].task_name;  
  13.   task_info_g1[i+9].task_priority=task_create_tbl[i].task_priority;  
  14.   task_info_g1[i+9].task_stack_size=task_create_tbl[i].task_stack_size;  
  15.   task_info_g1[i+9].task_entry_func=task_create_tbl[i].task_entry_func;  
  16.  
  17.   task_info_g1[i+9].task_qname=task_create_tbl[i].task_qname;  
  18.   task_info_g1[i+9].task_ext_qsize=task_create_tbl[i].task_ext_qsize;  
  19.  
  20.  } 

這里為什么是task_info_g1[i+9],在0到9的位置上還有 別的什么任務在運行?

這里生成的各個任務,TOTAL_TASKS的定義,我選取了MMItask.c中的一個如下:

  1. #ifdef MMI_ON_WIN32  
  2. #define MOD_MMI MOD_PRT  
  3. typedef enum {  
  4.   MOD_DUM1=0x09,  
  5.   MOD_L4C1,  
  6.   MOD_PRT,  
  7.   MOD_DUM2,  
  8.   TOTAL_TASKS  
  9. }task_indx_type;  
  10. extern osl_task_info   task_info_g1[TOTAL_TASKS];  
  11. #endif 

這一看, 在task生成之時,就把task和mod對上關系了。但是任務通信時,又有很多msg_send_ext_queue 和receive_ext_queue,src_mod_id 和dest_mod_id,分別為不同的mod。

請教除了MMI task與MOD_MMI,別的mod在哪些任務中運行?

不是的。task就像一個進程一樣在運行,當從隊列中得到消息后就被喚醒。

一個task可以加載N個mod。

小結:MTK音頻播放器案例實現的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-09-06 10:46:19

QT播放器

2011-07-20 16:21:20

iPhone 視頻 播放器

2012-06-04 13:44:08

2010-06-11 12:53:56

openSUSE播放器

2021-01-19 13:30:52

Linux播放器互聯網

2022-08-16 17:37:06

視頻播放器鴻蒙

2011-06-13 09:33:04

2015-09-16 16:38:10

QmmpWinampUbuntu

2011-06-27 11:23:21

Qt 音樂播放器

2011-09-09 11:28:35

Android Mus

2015-05-21 15:25:42

VLC播放器

2010-07-30 09:35:47

Flex播放器

2023-04-06 13:47:47

2018-05-25 14:37:58

2009-12-17 15:10:31

Linux音樂播放器

2022-06-21 14:41:38

播放器適配西瓜視頻

2014-12-31 16:52:53

音樂播放器源碼

2012-05-03 09:51:09

HTML5

2010-07-30 09:50:36

Flex播放器

2011-09-06 11:08:21

QT播放器Mplayer
點贊
收藏

51CTO技術棧公眾號

国产又黄又爽免费视频| 国产区精品在线观看| 精品熟女一区二区三区| www.成人影院| 亚洲人成电影网站色mp4| 成人黄色在线免费观看| 欧美啪啪小视频| 99成人超碰| 日韩av在线免费看| 中文字幕免费高清在线| а√天堂8资源在线| 国产欧美一区二区三区网站| 91精品免费| 成人h动漫精品一区二区下载| 亚洲澳门在线| 亚洲最新中文字幕| 最新国产精品自拍| 97精品国产99久久久久久免费| 一区二区三区鲁丝不卡| 欧美日韩综合精品| 丁香六月天婷婷| 久久91精品国产91久久小草 | 国产人成视频在线观看| 精品久久在线| 欧美午夜丰满在线18影院| 在线观看日韩羞羞视频| 青青草在线视频免费观看| 九九国产精品视频| 日韩男女性生活视频| 免费在线一区二区三区| 日韩精品dvd| 亚洲欧美中文字幕| 精品视频站长推荐| 91蝌蚪精品视频| 欧美一区二区三区男人的天堂| 黄色国产小视频| 在线男人天堂| 婷婷激情综合网| 人人妻人人澡人人爽欧美一区双| 欧美尤物美女在线| 日本一区免费视频| 欧美日韩精品免费看| 丰满人妻av一区二区三区| 极品少妇xxxx精品少妇偷拍| 国产精品免费小视频| 久久精品视频5| 欧美一级视频| 日本高清+成人网在线观看| 国产污视频在线观看| 欧美日韩1080p| 欧美二区乱c黑人| 福利所第一导航| 欧美日一区二区在线观看| 日韩中文字幕在线| 久草福利资源在线| 香蕉综合视频| 欧美精品一二区| 加勒比av在线播放| 欧美天天视频| 久久久久久香蕉网| 久草国产精品视频| 香蕉视频成人在线观看| 欧美中文在线字幕| 婷婷激情五月网| 日韩av在线发布| 国产精品一区二区3区| 国产精品久久影视| 国产福利一区二区三区视频在线| 91网站在线免费观看| 国产偷拍一区二区| 高清免费成人av| 国产真实有声精品录音| 免费欧美日韩| 欧美资源在线观看| 亚洲欧美另类在线视频| 老司机精品导航| 国产日韩av在线播放| 国产精品视频一二区| 国产精品 欧美精品| 国产精品区二区三区日本| 色窝窝无码一区二区三区| 26uuu另类欧美亚洲曰本| 欧美三级网色| 九义人在线观看完整免费版电视剧| 亚洲精品视频在线看| 97超碰人人澡| 丁香婷婷久久| 日韩精品一区二区三区在线播放| 小毛片在线观看| 精品免费视频| 欧美激情喷水视频| 国产免费一区二区三区四区五区| 久久av老司机精品网站导航| 粉嫩av一区二区三区免费观看| 亚洲aⅴ乱码精品成人区| 国产情人综合久久777777| 国产欧美自拍视频| 免费一二一二在线视频| 欧美日韩三级在线| 在线中文字日产幕| 欧洲美女日日| 午夜精品一区二区三区在线| 波多野结衣不卡| 成人综合婷婷国产精品久久免费| 麻豆传媒一区| 成人福利片网站| 欧美主播一区二区三区| 人妻激情偷乱频一区二区三区| 国产精品欧美三级在线观看| 欧美国产日韩在线| 亚洲天堂中文网| 91在线视频免费91| 国产91在线亚洲| 色婷婷成人网| 亚洲欧美国产制服动漫| 久久久.www| 美女高潮久久久| 免费久久久一本精品久久区| 污污网站在线观看| 欧美日韩在线电影| 全黄一级裸体片| 黄色亚洲免费| 亚洲aa中文字幕| 日本在线观看视频| 在线观看成人小视频| 在线免费播放av| 欧美激情日韩| 91九色单男在线观看| www.在线播放| 在线欧美一区二区| 国产精品无码久久久久一区二区| 激情婷婷久久| av日韩免费电影| 成人黄色网址| 91精品国产福利| 一区二区三区影视| 捆绑调教一区二区三区| 亚欧精品在线| 2019年精品视频自拍| 亚洲视频视频在线| 特级毛片www| 2021久久国产精品不只是精品| av在线播放天堂| 成人av激情人伦小说| 久久99久久99精品免观看粉嫩| 6—12呦国产精品| 亚洲欧美综合网| 国产九九九视频| 午夜久久99| 成人自拍视频网站| 日本电影在线观看| 精品日产卡一卡二卡麻豆| 久久久久久久久久久久久女过产乱| 毛片av中文字幕一区二区| 亚洲精品一区二区三区蜜桃久| 韩日一区二区| www国产精品com| 999av视频| 亚洲午夜国产一区99re久久| 中文字幕人妻一区二区三区| 日韩亚洲国产欧美| 欧美大香线蕉线伊人久久国产精品 | 日韩福利电影在线观看| 欧洲高清一区二区| 国产69精品久久久久9999人| 色悠悠国产精品| 精品国产一级片| 午夜精彩视频在线观看不卡| jizz欧美性20| 全国精品久久少妇| 中文字幕在线乱| 国产亚洲精品美女久久| 欧亚精品中文字幕| 日本在线免费| 亚洲第一精品福利| 亚洲熟妇无码乱子av电影| 久久久久成人黄色影片| 日本中文字幕精品—区二区| 欧美不卡高清| 精品网站在线看| 美女视频一区| 久久久免费精品视频| 欧美日韩国产中文字幕在线| 欧美日本在线观看| 久久免费精彩视频| 久久精品人人做| 色欲无码人妻久久精品| 国产亚洲欧洲| 黄瓜视频免费观看在线观看www| 中文在线综合| 国产精品99导航| 日韩精品亚洲人成在线观看| 精品亚洲一区二区三区在线播放 | 欧美一区日韩一区| 69精品久久久| 国产精品天干天干在线综合| 日本人添下边视频免费| 日韩制服丝袜av| 黄色三级中文字幕| 日韩精品dvd| 久久手机视频| 亚洲网一区二区三区| 国产不卡在线观看| 污视频网站免费在线观看| 亚洲欧美国产视频| 老熟妇高潮一区二区高清视频| 欧美日韩在线播放三区四区| 亚洲精品午夜久久久久久久| 国产精品护士白丝一区av| 日韩精品人妻中文字幕有码| 国产自产视频一区二区三区| 亚洲色欲综合一区二区三区| 欧美精品色网| 亚洲一区二区三区在线观看视频| 日韩av午夜| 国产二区一区| 国产精品一区二区三区www| 日韩av手机在线观看| 国内高清免费在线视频| 久久久999精品| 国产日产精品久久久久久婷婷| 亚洲成人黄色网址| av一区二区三| 5月丁香婷婷综合| 欧美男人天堂网| 黑人巨大精品欧美一区二区三区| 国产va在线播放| 亚洲欧洲色图综合| 日韩精品欧美激情一区二区| 免费91在线视频| 风间由美一区| 亚洲免费高清视频| 手机看片1024国产| 亚洲精品一区二区在线观看| 国产欧美熟妇另类久久久| 欧美日韩综合不卡| 中文字幕免费高清网站| 欧美视频在线看| 国产女同在线观看| 亚洲一二三四久久| 精品无码久久久久| 亚洲一区二区在线观看视频| 国产十六处破外女视频| 亚洲天堂久久久久久久| 国产3级在线观看| 国产精品电影一区二区三区| 99re6热在线精品视频| 国产精品每日更新在线播放网址| 久久久视频6r| 国产精品毛片无遮挡高清| 亚洲一级理论片| 一色屋精品亚洲香蕉网站| 视频国产一区二区| 亚洲欧美一区二区三区极速播放 | 亚洲欧美一区二区三区国产精品| 少妇被躁爽到高潮无码文| 亚洲欧美色一区| 久久久久亚洲AV| 欧美日韩亚洲高清| 无码免费一区二区三区| 欧美自拍偷拍午夜视频| 亚洲熟妇av乱码在线观看| 欧美日韩国产高清一区| 国产欧美久久久精品免费| 精品国偷自产国产一区| 亚洲av成人精品日韩在线播放| 亚洲欧美日韩一区在线| 成人免费黄色网页| 久久韩剧网电视剧| 欧美激情成人动漫| 91av在线视频观看| av成人亚洲| 91在线播放视频| 任你躁在线精品免费| 色噜噜狠狠色综合网| 99久久婷婷| 男女视频网站在线观看| 久久中文欧美| 三级黄色片免费看| 99视频热这里只有精品免费| 手机免费看av| 亚洲精品乱码久久久久久| 日本在线视频免费观看| 91黄色激情网站| 精品国产无码一区二区| 亚洲免费视频在线观看| 成人毛片av在线| 热草久综合在线| 亚洲aⅴ网站| 九九九九九精品| 亚洲乱码精品| 99久久激情视频| 国产精品123区| 九九九视频在线观看| 一区二区免费看| 国产精品尤物视频| 欧美大片顶级少妇| 1769视频在线播放免费观看| 欧美激情综合色| 久久天天久久| 久久久久欧美| 欧美fxxxxxx另类| 欧美第一页浮力影院| 99视频一区二区| 欧美成人三级在线观看| 欧美亚洲综合色| 四虎在线免费观看| 欧美大片大片在线播放| 久久av影院| 欧美大香线蕉线伊人久久国产精品| 午夜日本精品| 欧美视频国产视频| 久久丝袜美腿综合| 日本一区二区不卡在线| 91精品在线一区二区| 北岛玲日韩精品一区二区三区| 欧美极品第一页| 国产成年精品| 亚洲最大色综合成人av| 欧美亚洲一区二区三区| 亚洲av人人澡人人爽人人夜夜| 亚洲丝袜美腿综合| 亚洲综合精品国产一区二区三区| 亚洲欧美另类中文字幕| 九色porny自拍视频在线播放| 91网免费观看| 欧美日本一区二区视频在线观看| а 天堂 在线| 国产精品九色蝌蚪自拍| 亚洲大尺度在线观看| 亚洲老板91色精品久久| 高清毛片在线观看| 国产精品成人一区二区三区| 欧美伊人久久| 中文字幕avav| 亚洲最大的成人av| 性中国xxx极品hd| 久99久在线视频| 欧美1区2区3| 亚洲啊啊啊啊啊| 国产宾馆实践打屁股91| 久久久久久蜜桃| 亚洲第一色在线| 鲁鲁在线中文| 欧美不卡在线一区二区三区| 午夜一级在线看亚洲| 亚洲专区区免费| 色噜噜久久综合| 国产特黄在线| 国产精品一区二区三区久久久| 久久精品国产亚洲夜色av网站| 色乱码一区二区三区在线| 国产精品久久99| 99精品在线视频观看| 欧美日韩ab片| 欧美成人午夜77777| 色欲av无码一区二区人妻| 久久久久久久久久久黄色| 免费精品一区二区| 色婷婷av一区二区三区久久| 国模大尺度视频一区二区| 9色视频在线观看| av网站免费线看精品| av毛片在线免费观看| 在线亚洲国产精品网| 国产精品成人**免费视频| 日本a在线天堂| 91影院在线观看| 小泽玛利亚一区二区三区视频| 精品国产欧美成人夜夜嗨| 日韩精品一区二区三区中文在线| 欧美一级视频在线播放| 久久先锋资源网| 国产精品久久久国产盗摄| 欧美疯狂性受xxxxx另类| 日韩电影不卡一区| 黄色三级视频在线| 一区二区三区在线观看动漫| 手机福利小视频在线播放| 国产精品久久久久久久久久久新郎 | 日韩欧美中文字幕一区二区三区| 性高湖久久久久久久久aaaaa| 久久蜜桃av一区二区天堂 | 免费福利视频一区二区三区| 亚洲免费不卡| 成人激情校园春色| 亚洲永久精品一区| 欧美高清第一页| 国产日产一区| 一级网站在线观看| 日韩欧美福利视频| 成人影欧美片| 日本一区二区免费看| 国产精品亚洲一区二区三区在线| 精品成人av一区二区在线播放| 久久天堂电影网| 亚洲欧洲免费| 亚洲成人av免费观看| 日本高清成人免费播放| 天堂8中文在线|