專利名稱:一種音頻快速播放方法及裝置的制作方法
技術領域:
本發(fā)明涉及多媒體播放領域,尤其涉及一種快速播放音頻的技術。
背景技術:
播放音頻的硬件設備可以有多種類型、多種型號,但其音頻輸出原理都
是利用DAC (Digital-Analog Converter,模擬到數字信號轉換器)進行聲音的 輸出將音頻數據(數字信號)發(fā)送到DAC中,DAC輸出相應的模擬信號 (模擬電壓或電流),該模擬信號經揚聲器或者耳^L等音響設備輸出,從而實 現音頻插^丈。
為了控制音頻播放裝置進行音頻播放,通常需要一個音頻播放控制器來 協(xié)調、控制音頻播放裝置,以達到音頻播放需求(如圖l所示)。常用的音頻 播放裝置可以是音頻編解碼WM9713芯片(也稱AC97編解碼芯片)、音頻播 放控制器可以是AC ( Audio Codec,音頻編碼)97控制器。
系統(tǒng)在通過音頻硬件設備進行音頻播放時,通常都是調用系統(tǒng)的相關驅 動程序來實現對硬件音頻播放裝置(例如音頻編解碼WM9713芯片)進行音 頻播放控制。
如圖2所示,現有技術中對硬件音頻播放裝置進行音頻播放控制,具體 包括如下步驟
5201、 接收到音頻播放請求,調用相應的音頻播放程序。 接收的音頻播放請求比如可以是MP3播放請求,或者播放操作音的請求
(例如鼠標點擊時播放聲音的請求、或者進行選中、刪除等操作時播放聲音 的請求)。根據接收的音頻播放請求,調用相應的音頻播放程序。
5202、 音頻播^文程序打開相應的音頻文件。
5203、 音頻播放程序設置采樣率參數。
5204、 音頻播放程序設置采樣格式參數。
5205、 音頻播放程序設置聲道參數。
5206、 音頻播放程序從音頻文件獲得音頻數據,并將獲得的音頻數據寫 入到DMAbuffer。
5207、 DMA (Direct Memory Access,直接內存存儲)控制器才艮據設置的 參數將DMAbuffer的音頻數據輸出到音頻播放控制器。
DMA控制器設置的參數將DMA buffer的音頻數據以一定速率寫入到音 頻播放控制器中特定的寄存器中。例如,設置的聲道參數為左聲道參數,則 DMA控制器將DMA buffer的音頻數據以一定速率寫入到音頻播放控制器的 左聲道寄存器中。
5208、 音頻播放控制器將音頻數據傳送到音頻播放裝置。 音頻播放控制器根據寫入到寄存器中的數據按照協(xié)議組成一幀數據后,
將該幀數據發(fā)送給音頻播放裝置。
以AC97控制器和AC97編解碼芯片為例(如圖3所示),AC97編解碼 芯片傳送數據遵循AC-LINK數字序列接口協(xié)議。根據該協(xié)議,AC97控制器 和AC97編解碼芯片之間傳輸信號的接線包括傳輸復位信號AC97一RESET 的接線,傳輸輸出數據信號AC97_SDATA_OUT的接線,傳輸時鐘信號 AC97一BITCLK的接線,傳輸同步信號AC97一SYNC的接線和傳輸輸入數據信 號AC97—SDATA—IN的接線。
在AC97_SDATA_OUT和AC97_SDATA_IN傳遞的數據流中,每256位 構成被稱為一幀(frame ),每幀又分成13個時隙(slot time ),其中slot 0被 稱為標簽段(tag phase),為16位,而余下的slotl直至slot 12 ,每個時隙 為20位,被稱為數據段(dataphase)。
slot0的各位作用如下bitl5:表明該幀是否有效;bit 14-2 :表明哪個slot 有效;bit 1-0:表明該幀發(fā)往哪個AC97編解碼芯片(因一個AC97控制器可
以與多個AC97編解碼芯片連接)。
slot 1和slot2主要用于讀寫AC97編解碼芯片的寄存器slotl中為寄存 器的索引值,而slot2中為要讀寫的數據。
slot 3和slot 4中為左、右聲道的音頻數據。通過DMA控制器往AC97 控制器的左、右聲道音頻數據寄存器寫入音頻數據,AC97控制器將寫入到左、 右聲道音頻數據寄存器的音頻數據轉到slot 3和slot 4中,組成一幀數據后, AC97控制器將該幀數據發(fā)送到AC97編解碼芯片。
slot 5中則為混合音頻數據。通過DMA控制器往AC97控制器的MODR (Modem Data Register,調制數據寄存器)寫入音頻數據,AC97控制器根據 寫入到MODR寄存器(即混合音頻數據寄存器)的音頻數據轉到slot5,組成 一幀數據后,傳送到AC97編解碼芯片中。AC97編解碼芯片將slot 5中的混 合音頻數據分別與slot3、 slot4中的音頻數據進行混合后,分別輸出到左、右 通道,左、右通道分別根據輸入的混合數據輸出相應的模擬信號。這樣,在 原左、右輸出音頻的基礎上還可以混合輸出 一個背景聲音。
以上左、右聲道音頻數據寄存器以及MODR寄存器都可以統(tǒng)稱為音頻數 據寄存器。這些音頻數據寄存器通常是多個雙字節(jié)的先入先出隊列,這樣便 于對接收的數據進行緩沖。例如,在AC97控制器中的MODR寄存器具有16 個雙字節(jié)的隊列。
AC97編解碼芯片根據接收的數據幀輸出相應的模擬信號到音響設備,進 行音頻輸出。
S209、音頻播放裝置中的DAC轉換器根據輸入的音頻數據輸出模擬信號 到音響設備,由音響設備實現音頻輸出。
音頻播放裝置根據接收的幀數據向相應聲道的DAC轉換器中輸入音頻數 據,由的DAC轉換器輸出模擬信號到音響設備,由音響設備實現音頻輸出。
本發(fā)明的發(fā)明人發(fā)現,由于現有技術進行音頻播放的方法需要打開文件、 調用許多參數設置的驅動程序,而這些打開、或調用的操作需要占用較多的
系統(tǒng)資源以及時間,從而在接收到音頻播放請求時,不能快速進行相關的音
頻播放;也就是說,在接收到音頻播放請求后需要延遲一段時間系統(tǒng)才能輸 出音頻。
發(fā)明內容
本發(fā)明實施例提供了一種音頻快速播放方法及裝置,用以達到快速輸出 音頻的目的。
一種音頻快速播;改方法,包括
根據接收的用戶操作信息解析出的音頻播放請求,調用音頻播放程序;
所述音頻播放程序將音頻數據數組中的音頻數據依次以特定速率寫入到 音頻播放控制器的音頻數據寄存器中;
所述音頻播放控制器根據寫入的音頻數據生成數據幀傳送到音頻播放裝 置,所述音頻播放裝置根據接收的數據幀進行音頻播放。
所述音頻數據數組中的音頻數據是預先根據要播放的音頻文件中的信息 以設定采樣率進行轉換的;所述特定速率根據所述采樣率確定。
所述音頻播放程序將音頻數據數組中的音頻數據依次以特定速率寫入到 音頻播放控制器的音頻數據寄存器中,具體包括
所述音頻播放程序將音頻數據數組中的音頻數據通過直接內存存儲 DMA控制器寫入到音頻播放控制器的音頻數據寄存器中,在每次延時函數的 延時時間到達時,所述DMA控制器向音頻播放控制器的音頻數據寄存器寫入 一個音頻數據;所述系統(tǒng)延時函數的延時時間根據所述速率確定。
或者,所述音頻播放程序將音頻數據數組中的音頻數據依次以特定速率 寫入到音頻播放控制器的音頻數據寄存器中,具體包括
在每次延時函數的延時時間到達時,所述音頻播放程序直接向音頻播放 控制器的音頻數據寄存器寫入一個音頻數據;所述延時函數的延時時間根據 所述速率確定。
在調用音頻播放程序之前,還包括
根據接收的用戶操作信息還解析出其它操作請求;以及
根據音頻播放請求調用音頻播放程序一段時間后,再根據所述其它操作
請求進行其它操作。
一種音頻快速播;故裝置,包括音頻播放控制器,用于根據接收的音頻
數據生成數據幀并輸出;音頻播放裝置,用于根據接收的數據幀進行音頻播
放;所述裝置還包括
操作信息解析模塊,用于根據接收的用戶操作信息解析出音頻播放請求; 音頻數據寫入模塊,用于根據解析出的音頻播放請求將音頻數據數組中
的音頻數據依次以特定速率寫入到所述音頻播放控制器的音頻數據寄存器中。
本發(fā)明實施例由于直接以一定速率向音頻播放控制器的音頻數據寄存器 寫入音頻數據,就不必通過調用系統(tǒng)驅動程序來進行打開音頻文件、進行各 種音頻播放參數的設置,從而在播放音頻的過程中更節(jié)約系統(tǒng)資源、并縮短 了音頻開始播放的延時時間,達到快速播放音頻的目的。
圖1為現有技術的硬件音頻播放裝置和音頻播》文控制裝置示意圖; 圖2為現有技術的音頻播放方法流程圖3為現有技術的AC97控制器和AC97編解碼芯片的連接示意圖; 圖4為本發(fā)明實施例的音頻播放方法流程圖; 圖5為本發(fā)明實施例的音頻播放裝置框圖。
具體實施例方式
本發(fā)明實施例根據用戶操作信息解析出音頻播放請求后,調用的音頻播 放程序控制以特定速率將預先根據音頻文件中的信息轉換的音頻數據寫入到
音頻播放控制器的音頻數據寄存器中,從而達到播放一定采樣率的音頻的目 的。由于以特定速率直接向音頻播放控制器的音頻數據寄存器寫入音頻數據, 就不必再通過調用系統(tǒng)驅動程序來進行打開文件操作、設置音頻播放的采樣 率、聲道參數等,從而縮短了音頻開始播放的時間,達到快速播放音頻的目 的。
本發(fā)明實施例提供的快速播放音頻的方法,流程圖如圖4所示,包括如 下步驟
5401、 將要播放的音頻文件中的信息根據設定的采樣率w轉換為音頻播 放程序中的音頻數據數組中的數據。
通常播放的音頻以一定格式的音頻文件進行保存,為了能夠對音頻播放 控制器的音頻數據寄存器直接寫入音頻數據,需要將不同格式的音頻文件都 轉換為音頻數據寄存器所能接受的音頻數據,再將這些音頻數據存入到音頻 播放程序中的音頻數據數組。例如,AC97控制器的MODR寄存器為32位的, 其中低16位有效,則可以將音頻文件中的信息轉換為16位的音頻數據。
對于同 一個音頻文件采用不同的采樣率來轉換音頻數據會有不同的結 果。 一般來說,采樣率越高生成的音頻數據就越多,根據該音頻數據進行播 放的效果就越好。
通??梢愿鶕嶋H需要來確定采樣率。例如,確定該音頻的播放采用48K 的采樣率就可以達到要求了,那么可以通過音頻編輯器(比如Audacity軟件) 將截取的一段音頻片段,轉換為采樣率為48K,單聲道,8位采樣的原始數據 采樣格式(RAW格式)文件,再通過編輯軟件(比如UltraEdit軟件)打開該 文件,將里面的數據轉換為Ox開始的四位16進制數據。
5402、 根據接收的用戶的操作信息解析出音頻播放請求后,調用音頻播 放程序。
在接收到用戶的操作信息后,比如某個按鍵、或某幾個按鍵組合的信息 后,對用戶的操作信息進行解析,并確定有音頻播放請求后(比如點擊觸摸
屏按鍵即實現快速發(fā)聲的點屏音播放請求),則調用相應的音頻播放程序(點 屏音播放程序)。
S403、音頻播放程序將音頻數據數組中的數據以一定速率直接寫入到音 頻播放控制器的音頻數據寄存器。
音頻播放程序將音頻數據寫入到音頻播放控制器的音頻數據寄存器的速 率等于采樣率w,這樣就可以保證4番放的音頻不失真。
如果音頻播放程序將音頻數據寫入到音頻播放控制器的音頻數據寄存器 的速率小于采樣率w,那么播放的音頻會偏慢;
如果音頻播放程序將音頻數據寫入到音頻播放控制器的音頻數據寄存器 的速率大于釆樣率w,那么播放的音頻會變快,如同快進的效果。
音頻播放程序將音頻數據以 一定速率寫入到音頻播放控制器的音頻數據 寄存器,具體可以有如下方法
通過DMA控制器將音頻數據寫入到音頻播放控制器的音頻數據寄存器, 并且DMA控制器根據系統(tǒng)延時函數來控制寫入音頻數據的速率。具體為,在 延時函數延時時間到達時,DMA控制器即控制向音頻播放控制器的音頻數據 寄存器寫入一個音頻數據。延時函數(比如系統(tǒng)延時函數schedule_timeout) 的延時時間可以根據采樣率w計算出來(比如延時時間等于1/w)。
方法二
也可以是音頻播放程序直接向音頻數據寄存器寫入音頻數據,并且通過 延時函數(比如自定義的延時函數udelay())來控制向音頻數據寄存器寫入音 頻數據的速率。比如,對于模擬48K采樣率的音頻播放,即向音頻數據寄存 器以速率48K寫入音頻數據。這樣,每發(fā)送一個音頻數據需要20.8微秒的延 時,為了取得這個延時,可以采用發(fā)送6個數據共花費125微秒的方法,6個 數據中5個數據的延遲時間可以設為21微秒,1個數據的延遲時間可以設為 20微秒;也就是,每6個數據中的發(fā)送5個數據時延時函數udday()延時時 間設置為21微秒,發(fā)送1個數據時延時函數udelay()延時時間設置為20微
秒。這樣就精確的模擬了 48K采樣率音頻數據的播放。
音頻播放控制器的音頻數據寄存器可以是左、右聲道音頻數據寄存器、 或者混合音頻數據寄存器,本領域技術人員可以根據具體情況決定。
5404、 音頻播放控制器根據接收的音頻數據生成數據幀傳送到音頻播放 裝置。
5405、 音頻播放裝置根據接收的數據幀輸出相應的模擬信號到音響設備 進行音頻播放。
通過上述方法,由于直接以一定速率向音頻播放控制器的音頻數據寄存 器寫入音頻數據,就不必通過調用系統(tǒng)驅動程序來進行各種音頻播放的參數 設置,從而在播放音頻的過程中更節(jié)約系統(tǒng)資源、并縮短開始播放的延時時 間,達到快速音頻播放的目的。而且本發(fā)明實施例的方案更適合應用于要求 快速發(fā)音、且發(fā)音量小的音頻播放請求,例如點屏音播放請求。在用戶點屏 后,應該立即發(fā)出相應的聲音,如果聲音延遲過大,就會導致用戶對點屏操 作的誤解(以為點屏無效或者點錯了 ),而通常點屏音的播放非常簡短,比如 只是"嘟"的一聲,那么應用上述的方案能夠達到快速插^放點屏音的效果。
雖然上述方法節(jié)省了許多步驟、也節(jié)約了系統(tǒng)資源,但是如果在接收到 用戶的操作信息后,還解析出系統(tǒng)還需要進行一些其它操作,比如界面更新、 后臺計算、數據傳輸等。那么如果同時調用音頻播放程序并進行其它操作, 就可能出現系統(tǒng)資源搶占的情況。 一種避免系統(tǒng)資源搶占的方法是先調用 音頻播放程序,在調用音頻播放程序的一段時間后再進行其它操作。例如, 用戶點擊觸摸屏的按鍵后,由于按鍵抖動的原因,系統(tǒng)會在短時間(比如lms) 內接收到多個(比如10個)按鍵信號,則可以在接收到第m (比如2)個按 鍵信號時調用音頻播放程序,在接收到第A (比如3 )個按鍵信號時進行震動 操作,在接收到第"(比如4)個按鍵信號時進行界面更新等應用程序的操作。 其中,w小于A:, A小于w。由于將音頻播放程序與執(zhí)行其它操作的程序的執(zhí) 行時間錯開,從而能夠更好的保證音頻的快速播放、以及無失真。
由于多數系統(tǒng)同時配有耳機和揚聲器。那么在執(zhí)行上述步驟S403之前, 可以先確定系統(tǒng)是否接有耳機,如果是,則設置耳機聲音通道;若否,則設 置揚聲器聲音通道,并打開功放芯片(用于音頻放大的芯片),并在完成音頻 播放后關閉功放芯片。
此外,在進行該次音頻播放以前,系統(tǒng)有可能正在進行其它音頻的播放。 而在該次音頻播放完后,還需要繼續(xù)進行其它音頻的播放。那么在上述步驟 S403之前還需要保存當前通道參數,具體操作是將音頻播放控制器中的寄存 器的值進行保存,在該次音頻播放完后,再將保存的寄存器值重新寫入到音 頻播放控制器中,以恢復音頻播放控制器中各寄存器的值,這樣便恢復了初 始通道的參凄t。
本發(fā)明實施例提供的一種快速播放音頻的裝置,如圖5所示,包括用 戶操作信息解析模塊501、音頻數據寫入模塊502、音頻播放控制器503、音 頻播放裝置504。
用戶操作信息解析模塊501用于根據接收的用戶操作信息解析出音頻播 放請求。
音頻數據寫入模塊502用于根據解析出的音頻播》文請求將音頻數據數組 中的音頻數據依次以特定速率寫入到音頻播放控制器的音頻數據寄存器中; 所述音頻數據數組中的音頻數據是將要播放的音頻文件中的信息以設定采樣 率進行轉換的;所述特定速率根據所述采樣率確定。
音頻播放控制器503根據接收的音頻數據生成數據幀傳送到音頻播放裝 置504。
音頻播放裝置504根據接收的數據幀輸出相應的模擬信號到音響設備輸 出音頻。
進一步,用戶操作信息解析模塊501還用于根據接收的用戶操作信息還 解析出其它操作請求,并在輸出所述音頻播放請求一段時間后,再輸出其它 操作請求。
音頻播放裝置504還用于在寫入音頻數據前,將音頻播放控制器中的寄 存器的值進行保存;以及在所有音頻數據都寫入后,將保存的寄存器值重新 寫入到音頻播放控制器中。
本發(fā)明實施例由于直接以一定速率向音頻播放控制器的音頻數據寄存器 寫入音頻數據,就不必通過調用系統(tǒng)驅動程序來進行打開音頻文件、進行各 種音頻播放參數的設置,從而在播放音頻的過程中更節(jié)約系統(tǒng)資源、并縮短 了音頻開始插d丈的延時,達到快速播放音頻的目的。
進一步,由于將音頻播放程序與執(zhí)行其它操作的程序的執(zhí)行時間錯開, 從而能夠更好的保證音頻的快速播放、以及音頻播放無失真。
是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀 取存儲介質中,如ROM/RAM、磁碟、光盤等。
還可以理解的是,附圖或實施例中所示的裝置結構僅僅是示意性的,表 示邏輯結構。其中作為分離部件顯示的模塊可能是或者可能不是物理上分開 的,作為模塊顯示的部件可能是或者可能不是物理模塊。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普 通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤 飾,這些改進和潤飾也應S見為本發(fā)明的保護范圍。
權利要求
1、一種音頻快速播放方法,其特征在于,包括根據接收的用戶操作信息解析出的音頻播放請求,調用音頻播放程序;所述音頻播放程序將音頻數據數組中的音頻數據依次以特定速率寫入到音頻播放控制器的音頻數據寄存器中;所述音頻播放控制器根據寫入的音頻數據生成數據幀傳送到音頻播放裝置,所述音頻播放裝置根據接收的數據幀進行音頻播放。
2、 如權利要求l所述的方法,其特征在于,所述音頻數據數組中的音頻 數據是預先根據要播放的音頻文件中的信息以設定采樣率進行轉換的;所述 特定速率根據所述采樣率確定。
3、 如權利要求l所述的方法,其特征在于,所述音頻播》文程序將音頻數 據數組中的音頻數據依次以特定速率寫入到音頻播放控制器的音頻數據寄存 器中,具體包括所述音頻播放程序將音頻數據數組中的音頻數據通過直接內存存儲 DMA控制器寫入到音頻播放控制器的音頻數據寄存器中,在每次延時函數的 延時時間到達時,所述DMA控制器向音頻播放控制器的音頻數據寄存器寫入 一個音頻數據;所述系統(tǒng)延時函數的延時時間根據所述速率確定。
4、 如權利要求1所述的方法,其特征在于,所述音頻播放程序將音頻數 據數組中的音頻數據依次以特定速率寫入到音頻播;改控制器的音頻數據寄存 器中,具體包括在每次延時函數的延時時間到達時,所述音頻播放程序直接向音頻播放 控制器的音頻數據寄存器寫入一個音頻數據;所述延時函數的延時時間根據 所述速率確定。
5、 如權利要求l所述的方法,其特征在于,在調用音頻播放程序之前, 還包括根據接收的用戶操作信息還解析出其它操作請求;以及 根據音頻播放請求調用音頻播放程序 一段時間后,再根據所述其它操作 請求進行其它操作。
6、 如權利要求5所述的方法,其特征在于,所述用戶操作信息為點擊觸 摸屏按鍵操作信息、音頻播放請求為點屏音播放請求;以及所述在調用音頻播放程序一段時間后,再根據所述其它操作請求進行其它操作,具體包括在接收到用戶操作信息中第m個按^:信號時,調用音頻播放程序; 在接收到用戶操作信息中第w個按鍵信號時,根據所述其它操作請求進行其它操作;所述w小于w。
7、 如權利要求l所述的方法,其特征在于,在所述將音頻數據數組中的 音頻數據依次以特定速率寫入到音頻播放控制器的音頻數據寄存器之前,還 包括所述音頻播放程序確定系統(tǒng)是否接有耳機,如果是,則設置耳機聲音通 道;若否,則設置揚聲器聲音通道。
8、 如權利要求l所述的方法,其特征在于,在所述將音頻數據數組中的 音頻數據依次以特定速率寫入到音頻播放控制器的音頻數據寄存器之前,還 包括所述音頻播放程序將音頻播放控制器中的寄存器的值進行保存;以及 在所有音頻數據寫入到音頻播放控制器的音頻數據寄存器后,還包括 所述音頻播放程序將保存的寄存器值重新寫入到音頻播放控制器中。
9、 一種音頻快速播放裝置,包括音頻播放控制器,用于根據接收的音頻數據生成數據幀并輸出; 音頻播放裝置,用于根據接收的數據幀進行音頻播放; 操作信息解析模塊,用于根據接收的用戶操作信息解析出音頻播放請求; 音頻數據寫入模塊,用于根據解析出的音頻播放請求將音頻數據數組中 的音頻數據依次以特定速率寫入到所述音頻播放控制器的音頻數據寄存器 中。
10、 如權利要求9所述的裝置,其特征在于,所述音頻凄t據數組中的音 頻數據是預先根據要播放的音頻文件中的信息以設定采樣率進行轉換的;所 述特定速率根據所述采樣率確定。
11、 如權利要求9所述的裝置,其特征在于,所述操作信息解析模塊還用于根據接收的用戶操作信息還解析出其它操 作請求,并在輸出所述音頻播放請求一段時間后,再輸出其它才喿作請求。
全文摘要
本發(fā)明涉及多媒體播放領域,尤其涉及一種快速播放音頻的技術。一種音頻快速播放方法及裝置,包括根據接收的用戶操作信息解析出的音頻播放請求,調用音頻播放程序;所述音頻播放程序將音頻數據數組中的音頻數據依次以特定速率寫入到音頻播放控制器的音頻數據寄存器中;所述音頻播放控制器根據寫入的音頻數據生成數據幀傳送到音頻播放裝置,所述音頻播放裝置根據接收的數據幀通過音響設備進行音頻播放。由于直接以一定速率向音頻播放控制器的音頻數據寄存器寫入音頻數據,不必通過調用系統(tǒng)驅動程序來進行打開音頻文件、進行各種音頻播放參數的設置,從而縮短音頻開始播放的延時時間,達到快速播放音頻的目的。
文檔編號G11B20/10GK101364417SQ20081014931
公開日2009年2月11日 申請日期2008年9月17日 優(yōu)先權日2008年9月17日
發(fā)明者孫增國 申請人:青島海信移動通信技術股份有限公司