精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产福利一区在线| 日本中文字幕在线一区| 亚洲美女淫视频| 国产精品v欧美精品v日韩精品 | www.av导航| 亚洲清纯自拍| 日韩在线一区二区三区免费视频| 91香蕉国产线在线观看| 岛国av在线网站| 中文字幕av资源一区| www.久久久| 亚洲精品一区二区二区| 韩国一区二区三区在线观看| 国产一区二区av| 挪威xxxx性hd极品| av在线精品| 色欧美日韩亚洲| 欧美黑人在线观看| 日本在线免费看| 久久日一线二线三线suv| 91在线视频九色| 日韩精品成人免费观看视频| 欧美久久视频| 日韩在线视频一区| 久久精品国产亚洲av久| 加勒比色综合久久久久久久久| 欧美日韩在线观看一区二区 | 天堂а√在线中文在线鲁大师| 成人午夜网址| 欧美tk—视频vk| 午夜剧场高清版免费观看| 欧美黑人巨大xxxxx| 亚洲国产日韩a在线播放| 在线视频不卡一区二区三区| 成人网视频在线观看| 成人h动漫精品一区二区| 成人女保姆的销魂服务| 真实的国产乱xxxx在线91| 性8sex亚洲区入口| 97视频免费看| 日韩精品视频播放| 国内精品福利| 欧美激情综合亚洲一二区| 全程偷拍露脸中年夫妇| 性xxxx欧美老肥妇牲乱| 日日狠狠久久偷偷四色综合免费| jizz中文字幕| 成人网18免费网站| 日韩精品欧美国产精品忘忧草| 激情av中文字幕| 99久久婷婷国产综合精品青牛牛| 欧美一卡在线观看| 亚洲精品无码久久久久久久| 精品一区二区三区亚洲| 91精品国产全国免费观看| 五月天丁香花婷婷| 激情不卡一区二区三区视频在线| 欧美肥胖老妇做爰| 无套内谢丰满少妇中文字幕| 国产精品亚洲欧美日韩一区在线| 制服丝袜国产精品| 下面一进一出好爽视频| 97久久综合区小说区图片区| 精品日韩在线观看| av av在线| 日韩高清在线免费观看| 亚洲欧美日韩在线一区| 91精品国自产在线| 99九九热只有国产精品| 美女少妇精品视频| 久久久综合久久| 99这里有精品| 国产精品久久久久久中文字| 夜夜爽8888| 国产99久久久国产精品潘金| 国产欧美一区二区视频| 嫩草在线播放| 国产精品美女久久福利网站| 一本二本三本亚洲码| 日本伦理一区二区| 欧美性xxxxx极品娇小| 日本www.色| 精品中文字幕一区二区三区四区| 精品国产一二三区| 亚洲 小说 欧美 激情 另类| 亚洲va在线| 97久久精品国产| 日本中文字幕在线| 久久激情五月激情| 国产一区国产精品| a天堂在线资源| 亚洲综合色丁香婷婷六月图片| 免费成人在线视频网站| 欧洲午夜精品| 亚洲第一天堂av| 99热99这里只有精品| 亚洲日本免费| 91精品久久久久久久久青青| 色婷婷在线视频| 国产精品成人免费| 黄色一级在线视频| 精品视频成人| 亚洲香蕉成视频在线观看| 中文字幕av久久爽av| 久久久久久网| 国产精品区一区二区三含羞草| 成年在线电影| 欧美日韩免费在线观看| 亚洲精品mv在线观看| 亚洲宅男一区| 欧美精品video| 一区二区三区黄色片| 91网址在线看| 好吊色视频988gao在线观看| 日韩免费小视频| 亚洲大胆人体av| 日韩欧美123区| 奇米色一区二区| 欧美精品亚洲精品| 国产美女一区视频| 91精品国产欧美一区二区成人| 性猛交ⅹxxx富婆video| 亚洲理论在线| 成人永久免费| www免费在线观看| 欧美日韩中文字幕一区| 亚洲自拍偷拍一区二区| 91久久亚洲| 国产高清精品一区| 人妖欧美1区| 91精品国产aⅴ一区二区| 欧美午夜激情影院| 日韩黄色免费电影| 欧美日韩国产一二| 自拍在线观看| 亚洲男人的天堂在线播放| 国产大片中文字幕在线观看| 国产盗摄精品一区二区三区在线 | 亚洲高清免费| 国产精品一区二区免费看| 91高清在线观看视频| 91精品国产91久久久久久一区二区 | 欧美黄网免费在线观看| 国产免费无遮挡| 亚洲色图制服丝袜| 日本在线观看视频一区| 国产精品成人a在线观看| 国产精品视频内| 在线观看av黄网站永久| 欧美日韩国产免费| 日本二区三区视频| 国产一区二区三区观看| 亚洲精品天堂成人片av在线播放| 精品国产18久久久久久二百| 久久av在线播放| 亚洲经典一区二区| 午夜精品国产更新| 亚洲AV无码国产精品| 久久精品男女| 亚洲在线视频一区二区| 豆花视频一区| 久久久久久国产精品三级玉女聊斋| 亚洲乱熟女一区二区| 亚洲香蕉伊在人在线观| 欧美xxxxx精品| 美女尤物久久精品| 亚洲图片欧洲图片日韩av| 亚洲成人精品综合在线| 蜜月aⅴ免费一区二区三区| 亚洲成人中文字幕在线| 午夜成人免费电影| a级片在线观看| 加勒比av一区二区| 国产美女永久无遮挡| 牛牛影视一区二区三区免费看| 57pao成人国产永久免费| sese一区| 欧美tk—视频vk| 欧美日韩 一区二区三区| 亚洲欧洲av另类| 中文字幕人妻一区二区三区| 日本中文字幕一区| av 日韩 人妻 黑人 综合 无码| 欧美jizz19性欧美| 国产欧美中文字幕| 女同一区二区免费aⅴ| 亚洲色图欧美制服丝袜另类第一页| 亚洲视频在线观看免费视频| 亚洲综合免费观看高清完整版| aa片在线观看视频在线播放| 看电视剧不卡顿的网站| 黄色片网址在线观看| 视频在线不卡免费观看| 国产一区二区三区高清| 久久天堂影院| 性欧美视频videos6一9| 自拍视频在线| 亚洲精品小视频| 国产激情久久久久久熟女老人av| 欧美视频在线观看 亚洲欧| 亚洲精品自拍视频在线观看| 99精品视频中文字幕| 国产精品自在自线| 久久午夜av| 久艹视频在线免费观看| 色婷婷一区二区三区| 久久影院理伦片| 欧美日本三级| 国产热re99久久6国产精品| 三级在线观看视频| 久久99久国产精品黄毛片入口| av大片在线播放| 亚洲精品视频播放| 狠狠综合久久av一区二区| 在线电影国产精品| 中文字幕av片| 一本色道久久加勒比精品| 国产亚洲精品成人| 亚洲人成网站色在线观看| 成人小视频免费看| 久久欧美一区二区| 亚洲欧美在线不卡| 丁香一区二区三区| 香蕉网在线视频| 狠狠色丁香婷婷综合| 99sesese| 蜜桃视频免费观看一区| 亚洲无吗一区二区三区| 老鸭窝亚洲一区二区三区| 少妇人妻在线视频| 日韩亚洲国产欧美| 黄页免费在线观看视频| 欧美日韩国产精品一区二区亚洲| 手机福利在线视频| 色中色综合网| 亚洲激情一区二区| 日韩1区在线| 一区二区三区国产福利| 成人嘿咻视频免费看| 亚洲国产精品www| 欧美日韩第一| 亚洲欧美精品在线观看| 欧美一级精品片在线看| 手机看片福利永久国产日韩| 成人动漫免费在线观看| 亚洲成人第一| 国产精品成人a在线观看| 免费观看黄色大片| 欧美人成网站| www.日本少妇| 国产亚洲欧洲| 色综合手机在线| 久久99精品国产.久久久久久| 欧美成年人视频在线观看| 久久精品国产**网站演员| 亚洲av无日韩毛片久久| 国产激情视频一区二区三区欧美| 青娱乐国产精品视频| 国产精品一区二区91| 18禁一区二区三区| 97久久久精品综合88久久| 少妇光屁股影院| 国产精品视频观看| 九九久久免费视频| 狠狠色狠狠色综合日日五| 91玉足脚交嫩脚丫在线播放| 欧美色欧美亚洲另类二区| 国产欧美综合视频| 亚洲成色999久久网站| 国产午夜精品一区理论片| 深夜福利一区二区| 欧美另类tv| 日本人成精品视频在线| 久久爱.com| 国产98在线|日韩| 自拍视频一区| 看一级黄色录像| 国产欧美综合一区二区三区| 欧美精品性生活| 成人午夜av电影| 亚洲理论片在线观看| 亚洲视频在线一区二区| 国产精品久久久久久久妇| 欧美视频日韩视频| 国产香蕉在线观看| 一区二区三区国产在线观看| 最新av在线播放| 国产www精品| 视频精品一区| 欧美一区二区三区在线播放| 中文不卡在线| 成年人网站大全| 高潮精品一区videoshd| 久久午夜福利电影| 亚洲一区二区三区四区在线观看| 免费av中文字幕| 精品日韩欧美在线| 最新电影电视剧在线观看免费观看| 久久久久久久久久久久av| 欧美日韩卡一| 免费日韩av电影| 亚洲第一黄色| 日本黄色三级网站| 中文乱码免费一区二区| 黄网在线观看视频| 日韩欧美成人激情| 日本在线人成| 国产精品美腿一区在线看| 美女呻吟一区| 50度灰在线观看| 久久国产免费看| 日本高清www| 午夜免费久久看| www日本在线| 大胆人体色综合| 偷拍自拍亚洲| 亚洲精品一区二区三区四区五区| 日韩视频精品在线观看| 色黄视频免费看| 亚洲三级在线看| 亚洲自拍偷拍另类| 一区二区三区回区在观看免费视频| 女厕盗摄一区二区三区| 国产精品视频福利| 欧美日韩免费观看一区=区三区| 91女神在线观看| 国产日韩精品一区二区三区| 欧美特黄aaaaaa| 日韩精品在线视频| 涩涩网在线视频| 久久精品美女| 亚洲欧美视频| 中文字幕在线观看网址| 午夜久久久久久久久 | 亚洲另类图片色| 欧美亚洲日本精品| 久久国产精品久久| 99亚洲伊人久久精品影院红桃| 日批在线观看视频| 图片区小说区国产精品视频| 乱精品一区字幕二区| 久久人人爽国产| 免费观看成人www动漫视频| 久久亚洲中文字幕无码| 99国产精品99久久久久久| 动漫精品一区一码二码三码四码| 欧美精品一区二区三区在线| av不卡高清| 久久成人资源| 久久久久国产精品一区三寸| 日本精品在线观看视频| 欧美亚洲日本一区| 日本中文字幕在线2020| 亚洲一区国产精品| 欧美视频久久| 亚洲中文字幕一区| 欧美综合天天夜夜久久| 在线a人片免费观看视频| 亚洲综合中文字幕在线| 亚洲午夜91| 成人影视免费观看| 欧美日韩在线播| 亚洲精品一线| 久久精品美女| 久久福利资源站| 国产真实的和子乱拍在线观看| 日韩av中文在线| 福利一区二区三区视频在线观看| 中文字幕一区二区三区乱码| 国产成人av福利| 啦啦啦免费高清视频在线观看| 中文字幕日韩av电影| 久久在线观看| 久久国产成人精品国产成人亚洲| 国产亚洲人成网站| 国内精品久久久久久久久久久 | 91在线亚洲| 亚洲精品天堂成人片av在线播放| 99国产精品久久| 正在播放木下凛凛xv99| 欧美激情在线一区| 国产欧美一区二区三区精品观看 | 91视频成人| 日本在线xxx| 中文字幕亚洲一区二区va在线| 黄色aaa毛片| 国产精品久久久久久久久久久久| 一区二区电影| 精品无码国产污污污免费网站| 日韩一区二区在线免费观看| 忘忧草在线日韩www影院| 宅男一区二区三区| 26uuu另类欧美| 国产视频aaa| 国产精品成人播放| 黑丝一区二区| 中文字幕美女视频| 亚洲精品一区二区久| 香蕉免费一区二区三区在线观看| 国产精品69页|