• 沒有找到結果。

第四章 系統演進方法

4.1 軟體實現

4.1.2 MP3 解碼器軟體分析

依照 MP3 軟體解碼流程進行軟體區塊執行時間分析,MP3 音樂檔案採 用下載自網頁[14]之 MP3 檔案作為測試位元流輸入樣本,只選擇其中取樣 率為 44.1kHz 且為 MPEG-1 Layer-3 之 Funky.mp3、Spot2.mp3、Spot3.mp3 三檔案為輸入測試位元流;同時也擷取歌曲 Song1.mp3 及樂曲 Cello1.mp3 做為輸入測試位元流,各 MP3 位元流詳細檔案格式請參照圖表 15。

檔名 (.mp3)

取樣頻率 (kHz)

位元速率 (kbit/s)

壓縮等級 (MPEG-1)

長度 (min.)

檔案來源

Funky 44.1 kHz 96 kbit/s Layer-III 1:02 J. Here (FhG) Spot2 44.1 kHz 96 kbit/s Layer-III 0:11 OMNI-MEDIASOUND Spot3 44.1 kHz 96 kbit/s Layer-III 0:11 OMNI-MEDIASOUND Song1 44.1 kHz 128 k bit/s Layer-III 5:08 Sacrifice by Elton John Cello1 44.1 kHz 48 kbit/s Layer-III 2:36 Abendlied by R.Schumann

圖表 15 MP3 測試位元流檔案格式表

首先,針對 Fraunhofer IIS MP3 解碼程式原始碼進行追蹤,紀錄所有軟 體程序(Procedure)個別之執行時間,再比較各 MP3 軟體程序之執行時間的 長短就可以篩選出確切消耗 CPU 資源較多的軟體程序段,這裡將列出那些 MP3 解碼軟體程序段,它們的執行時間總和佔 MP3 解碼程序執行時間約 99.56%者;詳細請參考圖表 16,第一行表示在 MP3 原始程式碼中,相關 之軟體程序名稱,第二行到第六行表示是各個 MP3 測試位元流經追蹤計算 後,在各個軟體程序上所所消耗總執行時間之百分比,第七行表示將所有 測試位元流的各個特定軟體程序執行時間加總後之平均值,依其所佔用總 執行時間的百分比表示之。

程序名稱/位元流 Funky Spot2 Spot3 Song1 Cello1 平均 Decode 3.89% 4.50% 5.67% 5.05% 5.23% 4.79%

Dequantize 24.82% 26.25% 24.13% 26.03% 25.83% 25.41%

Stereo 2.81% 2.38% 1.44% 0.40% 0.54% 1.51%

Reorder 0.25% 1.06% 0.24% 0.35% 0.26% 0.30%

Antialias 0.44% 0.26% 0.24% 0.34% 0.22% 0.30%

Hybrid 47.75% 46.44% 42.07% 47.90% 47.52% 46.34%

SubBandSynthesis 17.72% 16.98% 17.02% 17.74% 18.13% 17.52%

圖表 16 MP3 軟體解碼流程區塊執行時間對照表

Decode(解碼)軟體程序的執行時間用於解譯位元資料流中之檔頭、錯 誤偵測碼和附屬資料以及作 MP3 位元流同步的動作,而且將依據附屬資料 中所記載的霍夫曼(Huffman)資訊、比例因子(Scalefactors)資訊及位元儲藏 處(Bit reservoir)資訊去解碼位元資料流中之主要資訊,也依據霍夫曼資訊對 主要資訊中之霍夫曼碼之資料進行解碼功能;由實驗數據獲得,本軟體區 塊佔用 MP3 解碼程式的總執行時間約 4.79%。

Dequantize(還原量化) 軟體程序的執行時間主要用於重建經 MP3 編碼 非均勻量化器(Non-Uniform Quantization)量化後之數值, Fraunhofer IIS MP3 解碼軟體使用查表方式進行還原工作,由實驗數據獲得,本軟體區塊 佔用 MP3 解碼程式約 25.41%之執行時間。

Stereo(立體聲處理) 軟體程序的執行時間主要用於依據檔頭中所記錄 音 訊 模 式 (Mode) 為 立 體 聲 (stereo) 、 雙 聲 合 一 (joint_stereo) 、 對 偶 聲 式 (dual_channel) 或單聲式(single_channel)進行不同之處理,如為 Layer-3 之位 元流則搭配檔頭中之模式延伸(mode_extension)標記,然後決定使用何種雙

聲合一(joint_stereo)之模式,本軟體區塊佔用 MP3 解碼程式約 1.51%之執行 時間。

Reorder(重組) 軟體程序的執行時間主要是在回復短窗(short window) 之頻譜位置;因為改良型餘弦(MDCT)採用短窗(short window)及長窗(long window) 兩種區塊編碼型態,而它們在經MDCT 轉換之後,這兩種型態經 MDCT 轉換之後其頻譜的排列方式不同,為使霍夫曼編碼能更加有效率,

因而在進行霍夫曼編碼前,將短窗之頻譜的位置重新排列而長窗編碼則不 受影響,本軟體區塊佔用MP3解碼程式約0.30%之執行時間。

Antialias(逆假像) 軟體程序的執行時間主要是進行還原假像之處理程 序;在 MP3 編碼時,因為分析濾波器排(Analysis Filter Bank)會將原始輸入 的 PCM 音訊,轉換成 32 個等頻寬的子頻帶訊號(Subband Signals);由於分 析濾波器排之特性,當原始音訊被分成 32 個子頻帶時,在頻譜上可見鄰近 的子頻帶間有明顯的重疊現象,所以在經過 MDCT 轉成頻線訊號時,需對 鄰近相對應的頻線訊號作假像處理,其方式是將處在相對應位置的頻線能 量做一定比例的增減;逆假像處理是做其反向步驟,本軟體區塊佔用 MP3 解碼程式約 0.30%之執行時間。

Hybrid(混合濾波) 軟體程序的執行時間主要是針對 Layer-3 所特有的 混合濾波器排進行反相處理程序;MP3 編碼動作,以單聲道而言,MP3 的 一個編碼框(Frame)有 1152 個聲音取樣,而一個編碼框又分成兩個單位 (Granule),所以每個 Granule 有 576 個時域樣本;Layer-3 編碼為了要提高 頻譜之解析度,將原始音訊經過分析濾波器排所分成 32 個等寬的子頻帶訊 號;經由改良式離散餘弦轉換 MDCT(Modified Discrete Consine Transform),

再細分成 18 個頻線訊號;MDCT 的運算包括 MDCT 窗框、DCT 及常窗框 假像處理三部分[20]。本軟體區塊就是將位元流進行 MP3 編碼時之處理程 序做還原處理動作,佔用 MP3 解碼程式約 46.34%之執行時間,詳細 MP3 解碼混合濾波器示意圖請參考圖表 17。

取材自:ISO/IEC 11172-3[6]

圖表 17 MP3 解碼器混合濾波器示意圖

SubBandSynthesis(多相濾頻器合成) 軟體程序的執行時間主要是將 IMDCT所產生之32組向量值,依序經由搬移、矩陣相乘及加總運算,最後 將原始PCM音訊還原回來,本軟體區塊佔用MP3解碼程式約17.52%之執行 時間。

由 MP3 軟 體 解 碼 流 程 區 塊 執 行 時 間 對 照 表 中 之 實 驗 數 據 得 知 , Hybrid(混合濾波) 軟體程序之執行時間最長,佔整體執行時間之46.34%,

Dequantize( 還 原 量 化 ) 軟 體 程 序 的 執 行 時 間 次 之 , 佔 整 體 執 行 時 間 之 25.41%,SubBandSynthesis(多相濾頻器合成) 軟體程序的執行時間為第三,

佔整體執行時間之17.52%,這三個軟體程序的執行時間總和約佔MP3軟體 解碼程式執行時間之89.27%,也就是最消耗CPU使用率的軟體程序碼,因 此將列為最優先考量進行最佳化之MP3軟體解碼程式段。