两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種音頻適配方法和系統(tǒng)與流程

文檔序號:11828751閱讀:361來源:國知局
一種音頻適配方法和系統(tǒng)與流程

本申請涉及電數(shù)字數(shù)據(jù)處理領(lǐng)域,尤其涉及一種音頻適配方法和系統(tǒng)。



背景技術(shù):

在Android系統(tǒng)中,應(yīng)用通過獲取焦點事件及其音頻框架把所有音頻策略在音頻策略服務(wù)(AudioPolicyService)中制定。由于一個播放線程只能對應(yīng)一個音頻設(shè)備,如手機中常用的音頻設(shè)備喇叭、耳機,在系統(tǒng)運行過程中,如果混音后的音頻是從喇叭輸出,就會有一個播放線程與喇叭相對應(yīng)。同樣,當聲音從耳機輸出時,也定會有一個播放線程與耳機相對應(yīng)。這使得只要用戶的音頻策略發(fā)現(xiàn)改變,就得修改AudioPolicyService中的源碼,甚至針對不同功能的硬件也需要把AudioPolicyService的代碼作相應(yīng)的更新。

而AudioPolicyService制定所有的音頻策略是通過計算機程序語言實現(xiàn),作為普通人是很難見文生意的,同時AudioPolicyService也會加載所有音頻相關(guān)設(shè)備,把制定音頻策略與維護音頻設(shè)備這兩者交織在一起,在一定程度也上增加了代碼的復(fù)雜度。

移動操作系統(tǒng)中,第三方應(yīng)用已成為整個產(chǎn)業(yè)鏈的重要組成部分。為此,移動操作系統(tǒng)SDK中提供的接口是否易于應(yīng)用的開發(fā),也成為移動操作系統(tǒng)優(yōu)劣的衡量標準之一。而各應(yīng)用在運行時的硬件資源使用沖突,是整個系統(tǒng)最復(fù)雜的部分之一。為了既解決應(yīng)用使用的資源沖突問題又不讓應(yīng)用過多的關(guān)注沖突的處理邏輯,這使得移動操作系統(tǒng),除了針對各硬件設(shè)備資源各自有其處理邏輯之外,還必須讓其處理的結(jié)果方便讓應(yīng)用同步。

而對于音頻子系統(tǒng),只要涉及到聲音的播放與錄制的應(yīng)用,都必將與其有交互。其涉及的場景非常多也非常復(fù)雜,如音頻通路的切換,音頻設(shè)備連接狀態(tài)的管理以及混音等等。如果讓應(yīng)用各自去處理這些的沖突,那幾乎是不可能事情。

在現(xiàn)有技術(shù)中,第三方應(yīng)用調(diào)用音頻相關(guān)的接口只管播放,而無需關(guān)注音頻沖突的決策結(jié)果。這一點的確降低了應(yīng)用開發(fā)的難度,但同時也失去了應(yīng)用開發(fā)適應(yīng)音頻子系統(tǒng)的靈活性,這定將損失一部分良好的用戶體驗。



技術(shù)實現(xiàn)要素:

本申請的目標在于提供一種第三方應(yīng)用也能參與音頻策略的適配從而提高應(yīng)用的用戶體驗的方法和/或系統(tǒng)。

本申請的目標由一種音頻適配方法實現(xiàn),該方法用于使第三方應(yīng)用與操作系統(tǒng)的音頻子系統(tǒng)適配,所述音頻子系統(tǒng)包括媒體接口庫、音頻設(shè)備申請接口庫、音頻設(shè)備狀態(tài)管理器、音頻流創(chuàng)建器、音頻服務(wù)及硬件驅(qū)動,其中所述媒體接口庫包括媒體播放、錄制接口并帶編解碼庫,所述方法包括:

響應(yīng)于第三方應(yīng)用的音頻類型為非語音通話,第三方應(yīng)用直接調(diào)用所述媒體接口庫中的相應(yīng)接口,其中不同音頻類型具有不同的默認優(yōu)先級,及其中所述媒體接口庫向第三方應(yīng)用提供修改默認優(yōu)先級的選擇;

所述媒體接口庫調(diào)用所述音頻設(shè)備申請接口庫的接口向所述音頻設(shè)備狀態(tài)管理器申請使用音頻設(shè)備;

響應(yīng)于申請成功,所述音頻流創(chuàng)建器產(chǎn)生音頻流并將其發(fā)送給所述音頻服務(wù),及所述音頻設(shè)備狀態(tài)管理器將音頻路由發(fā)送給所述音頻服務(wù);

通過所述硬件驅(qū)動使用相應(yīng)音頻設(shè)備播放所述音頻流。

本申請的目標還由一種音頻適配系統(tǒng)實現(xiàn),該系統(tǒng)用于使第三方應(yīng)用與操作系統(tǒng)的音頻子系統(tǒng)適配,所述音頻子系統(tǒng)包括媒體接口庫、音頻設(shè)備申請接口庫、音頻設(shè)備狀態(tài)管理器、音頻流創(chuàng)建器、音頻服務(wù)及硬件驅(qū)動,其中所述媒體接口庫包括媒體播放、錄制接口并帶編解碼庫,所述音頻適配系統(tǒng)包括:

媒體接口庫調(diào)用模塊,用于響應(yīng)于第三方應(yīng)用的音頻類型為非語音通話,第三方應(yīng)用直接調(diào)用所述媒體接口庫中的相應(yīng)接口,其中不同音頻類型具有不同的默認優(yōu)先級,及其中所述媒體接口庫向第三方應(yīng)用提供修改默認優(yōu)先級的選擇;

第一申請模塊,用于使得所述媒體接口庫調(diào)用所述音頻設(shè)備申請接口庫的接口向所述音頻設(shè)備狀態(tài)管理器申請使用音頻設(shè)備;

第一音頻流生成模塊,用于響應(yīng)于申請成功,所述音頻流創(chuàng)建器產(chǎn)生音頻流并將其發(fā)送給所述音頻服務(wù),及所述音頻設(shè)備狀態(tài)管理器將音頻路由發(fā)送給所述音頻服務(wù);

播放模塊,用于通過所述硬件驅(qū)動使用相應(yīng)音頻設(shè)備播放所述音頻流。

在本說明書中,術(shù)語“音頻策略”定義各應(yīng)用發(fā)生音頻沖突時解決的方法或規(guī)則。

“音頻路由”主要是根據(jù)應(yīng)用的類型和音頻設(shè)備的連接狀態(tài),給應(yīng)用選擇合適的音頻設(shè)備輸出聲音的過程。

“音頻設(shè)備狀態(tài)管理器”(OHM,Open Hardware Manager)用于管理各音頻設(shè)備的連接狀態(tài),是實現(xiàn)音頻策略的后臺服務(wù)程序,用以音頻路由和激活應(yīng)用。

“音頻流創(chuàng)建器”如GStreamer是一種多媒體框架,主要用于音視頻回放和錄制。

“音頻服務(wù)”(PulseAudio)指音頻服務(wù)程序,負責控制音頻硬件混頻和提供服務(wù)給應(yīng)用程序。

“硬件驅(qū)動”(ALSA)實現(xiàn)最底層的基礎(chǔ)音頻功能。

“音頻設(shè)備申請接口庫”(Libresourceqt)指音頻子系統(tǒng)封裝的讓應(yīng)用調(diào)用的申請音頻設(shè)備的接口庫。

“媒體接口庫”(QtMultimedia)指媒體播放/錄制接口庫,帶編解碼庫。

通過本發(fā)明,第三方應(yīng)用在開發(fā)的過程中,可根據(jù)具體的業(yè)務(wù)需求,自己定義其播放/錄制音頻時的優(yōu)先級,通過調(diào)用音頻子系統(tǒng)的接口庫的相關(guān)接口來適應(yīng)音頻子系統(tǒng)。這就相當于,第三方應(yīng)用可以定義自己在應(yīng)用間發(fā)生音頻沖突時獲取音頻設(shè)備資源的優(yōu)先級,從而讓應(yīng)用獲得更好的用戶體驗。

附圖說明

本發(fā)明將在下面參考附圖并結(jié)合優(yōu)選實施例進行更完全地說明。

圖1為根據(jù)本發(fā)明方法的一實施例的流程圖。

圖2為根據(jù)本發(fā)明方法的另一實施例的流程圖。

圖3示出了圖2所示方法結(jié)合第三方應(yīng)用“元訊通”使用的示意圖。

圖4為根據(jù)本發(fā)明系統(tǒng)的一實施例的示意圖。

為清晰起見,這些附圖均為示意性及簡化的圖,它們只給出了對于理解本發(fā)明所必要的細節(jié),而省略其他細節(jié)。

具體實施方式

通過下面給出的詳細描述,本發(fā)明的適用范圍將顯而易見。然而,應(yīng)當理解,在詳細描述和具體例子表明本發(fā)明優(yōu)選實施例的同時,它們僅為說明目的給出。

圖1示出了根據(jù)本發(fā)明一實施例的方法的流程圖,該方法用于使第三方應(yīng)用與操作系統(tǒng)如元心操作系統(tǒng)(基于Linux內(nèi)核的智能移動終端操作系統(tǒng))的音頻子系統(tǒng)適配。在此以名為“元訊通”的第三方應(yīng)用為例說明本發(fā)明的方法。元訊通使用音頻資源的功能模塊包括:發(fā)送語音消息、播放語音消息、發(fā)起/被邀語音通話鈴聲、語音通話。本發(fā)明的方法開始于步驟S10,響應(yīng)于元訊通需要使用音頻設(shè)備的音頻類型為非語音通話例如發(fā)送語音消息、播放語音消息或者發(fā)起/被邀鈴聲(在此以發(fā)送語音消息為例),元訊通只需直接調(diào)用音頻子系統(tǒng)的媒體接口庫QtMultimedia中的QAudioRecorder中的錄音接口,而無需關(guān)注音頻資源的申請情況。在音頻子系統(tǒng)中,不同音頻類型具有不同的默認優(yōu)先級,例如優(yōu)先級從高到低為aliencall、game、event和player。高優(yōu)先級的音頻優(yōu)先于低優(yōu)先級的音頻播放。發(fā)送語音消息的音頻分組在創(chuàng)建QAudioRecorder對象時默認為player。元訊通在調(diào)用媒體接口庫時,媒體接口庫向元訊通提供修改默認優(yōu)先級的選擇,例如可從“player”優(yōu)先級修改為高優(yōu)先級如“aliencall”,元訊通可以也可不修改默認優(yōu)先級。在步驟S20,媒體接口庫QtMultimedia調(diào)用音頻設(shè)備申請接口庫Libresourceqt的接口向音頻設(shè)備狀態(tài)管理器OHM申請使用音頻設(shè)備。在步驟S25,確定申請是否成功。如果申請失敗,處理進行到步驟S30,直接返回錯誤碼給元訊通。如果申請成功,則處理進行到步驟S40,在GStreamer音頻流創(chuàng)建器中創(chuàng)建錄音的流并發(fā)送給音頻服務(wù)Pulseaudio,音頻設(shè)備狀態(tài)管理器OHM也經(jīng)Pulseaudio策略執(zhí)行插件將對應(yīng)的音頻路由發(fā)送給音頻服務(wù)Pulseaudio。如果先前修改了默認優(yōu)先級,則音頻服務(wù)還將該音頻流的優(yōu)先級修改到修改后的優(yōu)先級。在步驟S50,通過硬件驅(qū)動更改音頻路由并驅(qū)動相應(yīng)音頻設(shè)備播放所述音頻流。

本發(fā)明利用封裝的靜態(tài)庫Libresourceqt中的接口,使應(yīng)用可以簡單方便的指定其音頻流類型。不同的音頻流類型有不同的優(yōu)先級,當應(yīng)用間發(fā)生音頻沖突時,使用優(yōu)高優(yōu)先級音頻流類型的應(yīng)用,可以暫停低優(yōu)先級音頻流類型的應(yīng)用,獨占音頻設(shè)備進行音頻的播放,也可以與低優(yōu)先級音頻流類型的應(yīng)用做混音。

播放語音消息與發(fā)送語音消息的流程類似,只是調(diào)用的是QMediaPlayer進行語音的播放,在創(chuàng)建QmediaPlayer對應(yīng)的音頻流時,需根據(jù)第三方應(yīng)用指定的播放語音的音頻分組對音頻流的優(yōu)先級進行修改。其語音播放與停止過程與OHM的交互跟發(fā)送語音消息是一樣的。

對于發(fā)起/被邀提醒鈴聲而言,其流程跟播放語音消息是一樣的,只是其播放的文件不同而已。一個是播放錄制的文件,一個是播放元訊通指定的鈴聲文件。

圖2示出了根據(jù)本發(fā)明另一實施例的方法的流程圖,除包括圖1所示的所有步驟之外,該實施例的方法還包括步驟S60,同樣以元訊通為例,響應(yīng)于元訊通的音頻類型為語音通話,元訊通經(jīng)即時通訊服務(wù)器(IM Server)調(diào)用音頻子系統(tǒng)的音頻設(shè)備申請接口庫的接口向音頻設(shè)備狀態(tài)管理器申請使用音頻設(shè)備。在步驟S25’,確定申請是否成功。如果申請失敗,處理進行到步驟S30。如果申請成功,處理進行到步驟S40’,經(jīng)開源VOIP引擎WebRtc在音頻服務(wù)中創(chuàng)建音頻流,及音頻設(shè)備狀態(tài)管理器將對應(yīng)的音頻路由發(fā)送給所述音頻服務(wù)。之后,處理進行到步驟S50。

圖3示出了圖2所示方法結(jié)合元訊通使用的示意圖,其中示出了元訊通包括四個功能模塊:發(fā)送語音消息、播放語音消息、發(fā)起/被邀語音通話鈴聲、元訊通語音通話,及音頻子系統(tǒng)包括媒體接口庫QtMultimedia、音頻設(shè)備申請接口庫Libresourceqt、音頻設(shè)備狀態(tài)管理器OHM、音頻流創(chuàng)建器GStreamer、音頻服務(wù)Pulseaudio及硬件驅(qū)動ALSA。

圖4示出了根據(jù)本發(fā)明的音頻適配系統(tǒng)的一實施例的示意圖,該系統(tǒng)包括:媒體接口庫調(diào)用模塊10,用于響應(yīng)于第三方應(yīng)用的音頻類型為非語音通話,第三方應(yīng)用直接調(diào)用所述媒體接口庫中的相應(yīng)接口,其中不同音頻類型具有不同的默認優(yōu)先級,及其中所述媒體接口庫向第三方應(yīng)用提供修改默認優(yōu)先級的選擇;第一申請模塊20,用于使得所述媒體接口庫調(diào)用所述音頻設(shè)備申請接口庫的接口向所述音頻設(shè)備狀態(tài)管理器申請使用音頻設(shè)備;錯誤碼返回模塊30,用于響應(yīng)于申請失敗,向第三方應(yīng)用返回錯誤碼;第一音頻流生成模塊40,用于響應(yīng)于申請成功,所述音頻流創(chuàng)建器產(chǎn)生音頻流并將其發(fā)送給所述音頻服務(wù),及所述音頻設(shè)備狀態(tài)管理器將音頻路由發(fā)送給所述音頻服務(wù);優(yōu)先級修改模塊50,用于響應(yīng)于所述默認優(yōu)先級已被修改,使所述音頻服務(wù)將所述音頻流的音頻類型修改為修改后的優(yōu)先級;播放模塊60,用于通過所述硬件驅(qū)動使用相應(yīng)音頻設(shè)備播放所述音頻流;第二申請模塊70,用于響應(yīng)于第三方應(yīng)用的音頻類型為語音通話,第三方應(yīng)用調(diào)用所述音頻設(shè)備申請接口庫的接口向所述音頻設(shè)備狀態(tài)管理器申請使用音頻設(shè)備;第二音頻流創(chuàng)建模塊80,用于響應(yīng)于申請成功,經(jīng)VOIP引擎在所述音頻服務(wù)中創(chuàng)建播放語音流,及所述音頻設(shè)備狀態(tài)管理器將音頻路由發(fā)送給所述音頻服務(wù)。

除非明確指出,在此所用的單數(shù)形式“一”、“該”均包括復(fù)數(shù)含義(即具有“至少一”的意思)。應(yīng)當進一步理解,說明書中使用的術(shù)語“具有”、“包括”和/或“包含”表明存在所述的特征、步驟、操作、元件和/或部件,但不排除存在或增加一個或多個其他特征、步驟、操作、元件、部件和/或其組合。如在此所用的術(shù)語“和/或”包括一個或多個列舉的相關(guān)項目的任何及所有組合。除非明確指出,在此公開的任何方法的步驟不必精確按照所公開的順序執(zhí)行。

一些優(yōu)選實施例已經(jīng)在前面進行了說明,但是應(yīng)當強調(diào)的是,本發(fā)明不局限于這些實施例,而是可以本發(fā)明主題范圍內(nèi)的其它方式實現(xiàn)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
马公市| 乌鲁木齐县| 阿克陶县| 嫩江县| 施秉县| 丁青县| 兴山县| 铜陵市| 简阳市| 当涂县| 儋州市| 高平市| 宜兴市| 乌兰察布市| 增城市| 陵水| 德化县| 苏尼特右旗| 恩平市| 教育| 兴隆县| 宾阳县| 甘德县| 金门县| 罗城| 竹北市| 关岭| 永济市| 绥棱县| 桓仁| 西宁市| 博湖县| 边坝县| 上虞市| 额敏县| 甘洛县| 兴宁市| 洪江市| 鄂尔多斯市| 凤台县| 湛江市|