專利名稱:媒體播放器的錄放控制器的輸入緩沖器的管理方法
技術(shù)領(lǐng)域:
本發(fā)明是提供一種動(dòng)態(tài)影像壓縮標(biāo)準(zhǔn)音頻層III(MP3)播放器的錄放控制器的輸入緩沖器的管理方法,尤指一種預(yù)先存儲(chǔ)足夠的main_data區(qū)域的數(shù)據(jù)以進(jìn)行解碼的方法,而使得該MP3播放器可從任一個(gè)音頻幀或起始音頻幀開始播放MP3文件。
背景技術(shù):
動(dòng)態(tài)影像壓縮標(biāo)準(zhǔn)音頻層III(Motion Picture Experts Group Layer IIIAudio,MP3)是符合國(guó)際標(biāo)準(zhǔn)化組織及國(guó)際電子技術(shù)協(xié)會(huì)(InternationalOrganization for Standardization and International Electrotechnical Commission,ISO/IEC)的高音質(zhì)且高解碼效能(組譯效能)的一種音頻標(biāo)準(zhǔn)。
參考圖1,圖1為MP3播放器10讀取MP3文件的示意圖。MP3文件是存儲(chǔ)于光盤驅(qū)動(dòng)器上的光盤中,而MP3播放器10包括一個(gè)語(yǔ)法分析器(parser)101、輸入緩沖器(input buffer)102、MP3解碼器(decoder)103。其中,MP3解碼器103是用來(lái)解碼經(jīng)由光盤驅(qū)動(dòng)器、語(yǔ)法分析器101及輸入緩沖器102所傳送過(guò)來(lái)的MP3文件中的音頻幀(frames)。
請(qǐng)參考圖2,圖2為MP3文件的數(shù)據(jù)結(jié)構(gòu)圖。每一個(gè)MP3文件包括由多個(gè)媒體幀所構(gòu)成的幀串,每一個(gè)媒體幀在此定義為一個(gè)音頻幀,每一個(gè)音頻幀是MP3文件用來(lái)計(jì)算數(shù)據(jù)量的單位,且存儲(chǔ)有足夠的數(shù)據(jù)量以供解碼(decode)以及產(chǎn)生一定數(shù)量的音頻取樣(audio samples)之用。以圖2中音頻幀7為例,音頻幀7包括幀頭71、錯(cuò)誤檢查碼72、取樣數(shù)據(jù)73以及附加數(shù)據(jù)74。幀頭71是32比特(bits)長(zhǎng)度的比特串,并包括12比特長(zhǎng)度的同步字711。此外,幀頭71的32比特的其中2比特是用來(lái)記錄取樣頻率,其中4比特用來(lái)記錄壓縮比率,而其它比特則記錄一些相關(guān)信息。并非每MP3文件都包括錯(cuò)誤檢查碼72,MP3文件制作者在制作MP3文件時(shí),可選擇是否要使MP3文件內(nèi)附有錯(cuò)誤檢查碼72,而錯(cuò)誤檢查碼72是16比特的比特串,用來(lái)作為檢測(cè)錯(cuò)誤之用。取樣數(shù)據(jù)73包括了解碼此音頻幀7的音頻取樣時(shí)所必須的一些數(shù)據(jù),而附加數(shù)據(jù)74則包括一些其它與音頻數(shù)據(jù)無(wú)關(guān)的數(shù)據(jù)。取樣數(shù)據(jù)73包括main_data_begin區(qū)域731、audio_data區(qū)域732以及main_data區(qū)域733,其中main_data_begin區(qū)域731的作用將在下面說(shuō)明,audio_data區(qū)域732是用來(lái)存儲(chǔ)一些解碼時(shí)所應(yīng)用到的算法的參數(shù)數(shù)據(jù),而main_data區(qū)域733包括一些經(jīng)過(guò)編碼的音頻取樣數(shù)據(jù)。此外,audio_data區(qū)域732以及main_data區(qū)域733所存儲(chǔ)的數(shù)據(jù)量可能會(huì)因?qū)?yīng)于不同的音頻幀而有所變化。
需特別說(shuō)明的是,并非每種音頻在被壓縮之后都需相同大小的空間來(lái)存儲(chǔ)。例如,在相同時(shí)間間隔內(nèi)壓縮在安靜環(huán)境下所錄制的音源而產(chǎn)生的文件大小會(huì)比壓縮管弦樂(lè)的音源而產(chǎn)生的文件小很多。因此,當(dāng)編碼MP3的音樂(lè)時(shí),MP3的標(biāo)準(zhǔn)允許main_data區(qū)域733的溢出值記錄到音頻幀7上游其它音頻幀中所未使用到的數(shù)據(jù)存儲(chǔ)空間,以完整地使用到全部的音頻。
舉例來(lái)說(shuō),main_data區(qū)域733實(shí)際的數(shù)據(jù)容量大小為100字節(jié)(bytes),而解碼音頻幀7時(shí)所需的總音頻取樣是203字節(jié),因此會(huì)有103字節(jié)的數(shù)據(jù)存儲(chǔ)至位于音頻幀7上游其它音頻幀中的main_data區(qū)域(如音頻幀6的main_data區(qū)域633)。然而假使main_data區(qū)域633的剩余空間仍不足以存儲(chǔ)這103字節(jié)的數(shù)據(jù),則其它所剩下的尚未存儲(chǔ)的字節(jié)將會(huì)存儲(chǔ)至音頻幀5的main_data區(qū)域533中。此外,音頻幀7的main_data_begin區(qū)域731會(huì)記錄一個(gè)數(shù)值為103的數(shù)據(jù),以標(biāo)示出音頻幀7的溢出值的大小(103字節(jié))。此外,若main_data區(qū)域633的大小只有70個(gè)字節(jié),則表示還另有33個(gè)字節(jié)大小的溢出值,而這33個(gè)字節(jié)大小的溢出值會(huì)被再度存儲(chǔ)至音頻幀5的main_data區(qū)域533中。此外,為避免MP3文件出錯(cuò),依據(jù)MP3的標(biāo)準(zhǔn),凡MP3文件的第一個(gè)音頻幀(如圖2中的音頻幀1)其main_data_begin區(qū)域所記錄的值必須為零。
為正確地解碼MP3文件的音頻幀,MP3解碼器有時(shí)會(huì)需要一些位于上游音頻幀的數(shù)據(jù)來(lái)解碼特定的音頻幀,因此,MP3解碼器通常會(huì)預(yù)先讀取MP3文件的第一個(gè)音頻幀的數(shù)據(jù)以開始解碼。然而,在某些播放模式下(例如循環(huán)播放模式、倒帶播放模式),語(yǔ)法分析器101會(huì)無(wú)法從第一個(gè)音頻幀開始提供數(shù)據(jù)給MP3解碼器以進(jìn)行解碼,且在某些情形下,MP3文件會(huì)受到破壞而使得main_data_begin區(qū)域無(wú)法存儲(chǔ)正確的數(shù)據(jù),上述的這些情況都會(huì)使得MP3解碼器無(wú)法順利地讀取第一個(gè)音頻幀。然而,一旦MP3解碼器忽略main_data_begin區(qū)域所記錄的數(shù)據(jù)而直接將音頻幀解碼,會(huì)使得MP3解碼器無(wú)法完全正確地解碼并使得剛開始所播放出來(lái)的音效出現(xiàn)爆音。
發(fā)明內(nèi)容
因此本發(fā)明最主要的目的是提供一種MP3播放器的錄放控制器的輸入緩沖器的管理方法,以解決上述的問(wèn)題。
簡(jiǎn)要地說(shuō),本發(fā)明的方法是用于管理媒體播放器的輸入緩沖器以播放媒體文件。其中,該媒體文件包括由多個(gè)媒體幀所構(gòu)成的幀串,而每一個(gè)媒體幀包括至少一個(gè)main_data區(qū)域及一個(gè)main_data_begin區(qū)域。該main_data區(qū)域包括編碼取樣,而該main_data_begin區(qū)域是用來(lái)表示該main_data區(qū)域的一個(gè)溢出值。該媒體播放器包括一個(gè)語(yǔ)法分析器、輸入緩沖器、一個(gè)解碼器以及一個(gè)加法計(jì)算器。該語(yǔ)法分析器可以將該幀串分析后傳送至該解碼器,并且可以通知該解碼器從該媒體文件的始起端或中間點(diǎn)開始解碼。本發(fā)明的方法包括(1)如果該解碼器被通知從該媒體文件的中間點(diǎn)開始解碼時(shí),則(a)從該幀串中定位第一媒體幀,該第一媒體幀包括第一main_data區(qū)域及第一main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值小于該第一main_data_begin區(qū)域所記錄的值時(shí),則將該第一main_data區(qū)域的大小加入該加法計(jì)算器中,并將該第一main_data區(qū)域存儲(chǔ)至該輸入緩沖器中;并且,(b)從該幀串中定位第二媒體幀,該第二媒體幀是位于該第一媒體幀的下游,該第二媒體幀包括第二main_data區(qū)域及第二main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值等于或大于該第二main_data_begin區(qū)域所記錄的值時(shí),則通過(guò)存儲(chǔ)于該輸入緩沖器中的第一main_data區(qū)域以及該第二main_data區(qū)域由該第二媒體幀開始對(duì)該幀串進(jìn)行解碼;以及(2)如果該解碼器被通知從該媒體文件的起始點(diǎn)開始解碼時(shí),則從該幀串中定位第三媒體幀,該第三媒體幀包括第三main_data區(qū)域及第三main_data_begin區(qū)域,并由該第三媒體幀開始對(duì)該幀串進(jìn)行解碼,而其中該第三main_data_begin區(qū)域所記錄的值為零。
本發(fā)明還提供一種管理媒體播放器的輸入緩沖器以播放媒體文件的方法,該媒體文件包括由多個(gè)媒體幀所構(gòu)成的幀串,每一個(gè)媒體幀包括至少一個(gè)main_data區(qū)域及一個(gè)main_data_begin區(qū)域,其中該main_data區(qū)域包括編碼取樣,而該main_data_begin區(qū)域是用來(lái)表示該main_data區(qū)域的一個(gè)溢出值,該媒體播放器包括該輸入緩沖器以及一個(gè)加法計(jì)算器,該方法包括從該幀串中定位第一媒體幀,該第一媒體幀包括第一main_data區(qū)域及第一main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值小于該第一main_data_begin區(qū)域所記錄的值時(shí),則將該第一main_data區(qū)域的大小加入該加法計(jì)算器中,并將該第一main_data區(qū)域存儲(chǔ)至該輸入緩沖器中;從該幀串中定位第二媒體幀,該第二媒體幀是位于該第一媒體幀的下游,該第二媒體幀包括第二main_data區(qū)域及第二main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值等于或大于該第二main_data_begin區(qū)域所記錄的值時(shí),則通過(guò)存儲(chǔ)于該輸入緩沖器中的第一main_data區(qū)域以及該第二main_data區(qū)域從該第二媒體幀開始對(duì)該幀串進(jìn)行解碼。
本發(fā)明還提供一種管理MP3錄放控制器的輸入緩沖器以播放MP3文件的方法,該MP3文件包括由多個(gè)音頻幀所構(gòu)成的幀串,每一個(gè)音頻幀包含數(shù)據(jù),該方法包括從該幀串中定位位于下游的音頻幀,如果一個(gè)加法計(jì)算器所記錄的值小于該音頻幀的一個(gè)main_data_begin區(qū)域所記錄的值時(shí),則將該main_data區(qū)域的大小加入該加法計(jì)算器中,并將該main_data區(qū)域存儲(chǔ)至該輸入緩沖器中,以供后續(xù)解碼時(shí)作為參考之用。
本發(fā)明還提供一種用來(lái)解碼及輸出MP3文件的MP3播放器,該MP3播放器包括輸入緩沖器,用來(lái)存儲(chǔ)MP3音頻幀的一個(gè)main_data區(qū)域,以供后續(xù)解碼時(shí)作為參考之用;錄放控制器,用來(lái)管理該輸入緩沖器,該錄放控制器可決定是否利用全部存儲(chǔ)于該輸入緩沖器的main_data區(qū)域來(lái)對(duì)該MP3音頻幀進(jìn)行解碼。
通過(guò)本發(fā)明的方法,不論從媒體文件任何一點(diǎn)開始播放或倒帶播放,都不會(huì)出現(xiàn)如先前技術(shù)中發(fā)出爆音的情形,而使得播放品質(zhì)得到完善地控制。
圖1為MP3播放器讀取MP3文件的示意圖。
圖2為MP3文件的數(shù)據(jù)結(jié)構(gòu)圖。
圖3為根據(jù)本發(fā)明的某一實(shí)施例的流程圖。
圖示的符號(hào)說(shuō)明1~8 音頻幀 10 MP3播放器51 幀頭 52 錯(cuò)誤檢查碼53 取樣數(shù)據(jù) 54 附加數(shù)據(jù)71 幀頭 72 錯(cuò)誤檢查碼73 取樣數(shù)據(jù) 74 附加數(shù)據(jù)101 語(yǔ)法分析器102 輸入緩沖器103 MP3解碼器531、731 main_data_begin區(qū)域532、732 audio_data區(qū)域533、733 main_data區(qū)域711 同步字具體實(shí)施方式
通過(guò)本發(fā)明,使用者可以從MP3文件的任何一個(gè)音頻幀正向地或逆向地開始播放音樂(lè),且不會(huì)產(chǎn)生爆音的情況。另外,本發(fā)明的方法只需在開始播放MP3文件時(shí)或使用者切換到其它的音頻幀播放時(shí),才會(huì)運(yùn)用到。解碼MP3文件的方式已為熟悉本技術(shù)領(lǐng)域者所公知,故以下的說(shuō)明中不再對(duì)此部分多作描述。
參考圖3,圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的流程圖。需要說(shuō)明的是,實(shí)施本發(fā)明的方法時(shí)所需運(yùn)用到的相關(guān)裝置如圖1中所示,且其所解碼的MP3文件的數(shù)據(jù)結(jié)構(gòu)如同圖2中所示。其中,輸入緩沖器102會(huì)隨著MP3文件解碼操作的進(jìn)行,適時(shí)地清除一些本身所存儲(chǔ)且已不再使用到的數(shù)據(jù)。在本實(shí)施例中,有兩個(gè)參數(shù)會(huì)被用到,更詳細(xì)的操作方式將于下面的說(shuō)明中闡述。然而,需特別強(qiáng)調(diào)的是,運(yùn)用其它數(shù)據(jù)類型的參數(shù)以及其它累加器(如寄存器或計(jì)數(shù)器)來(lái)實(shí)施本發(fā)明的方法,仍然符合本發(fā)明的精神,也應(yīng)屬本發(fā)明專利所欲覆蓋的范疇。此外,其它具有累加數(shù)目功能的裝置,都應(yīng)視為在本發(fā)明說(shuō)明書中所述的加法計(jì)算器(totalizer)。
如圖3所示,參數(shù)W被用來(lái)標(biāo)示是否某一個(gè)起始音頻幀已經(jīng)被選定,而使目前所欲播放的音頻所對(duì)應(yīng)的音頻幀可完整、正確地被解碼并加以播放。在本實(shí)施例中,參數(shù)W可以是用布爾(Boolean)類型的數(shù)據(jù),且會(huì)被初始化為“否(false)”,而其值為零。另一個(gè)參數(shù)A則被用來(lái)作為一個(gè)加法計(jì)算器(totalizer),用來(lái)記錄已經(jīng)存儲(chǔ)至輸入緩沖器102的main_data區(qū)域的大小的總和值。同樣地,參數(shù)A開始時(shí)也會(huì)被初始化為零。當(dāng)完成初始化參數(shù)W及參數(shù)A(步驟901)后,解碼MP3文件的幀串的操作即可開始進(jìn)行。
在本實(shí)施例中,是在選擇音頻幀7開始播放MP3文件的情況下所作出的說(shuō)明。在本發(fā)明的下一個(gè)步驟902中,MP3播放器會(huì)從MP3文件中搜索第一個(gè)12比特長(zhǎng)度的同步字711。當(dāng)同步字711被定位后,音頻幀7的幀頭71將被解碼出對(duì)應(yīng)的壓縮比及其它各種信息(即步驟903)。幀頭71包括用來(lái)標(biāo)示在解碼音頻幀7時(shí)是否需執(zhí)行相關(guān)錯(cuò)誤檢查操作的一比特長(zhǎng)度的數(shù)據(jù),如需執(zhí)行相關(guān)錯(cuò)誤檢查操作時(shí),錯(cuò)誤檢查碼72將被讀取出來(lái)(即步驟904),但須說(shuō)明的是,本發(fā)明的方法的應(yīng)用并不局限于是否需讀取錯(cuò)誤檢查碼,利用錯(cuò)誤檢查碼只是本發(fā)明各種附加的功能之一。接著,取樣數(shù)據(jù)73會(huì)被解碼,而main_data_begin區(qū)域731的數(shù)據(jù)會(huì)被讀取,且main_data區(qū)域733所存儲(chǔ)的數(shù)據(jù)量會(huì)被計(jì)算出(即步驟905)。此時(shí),決定一個(gè)起始音頻幀的操作即可開始,而是否執(zhí)行此決定的操作是根據(jù)參數(shù)W的值來(lái)決定的(步驟907),進(jìn)一步說(shuō),若參數(shù)W的值依然為否,這即表示所欲決定的起始音頻幀尚未被發(fā)現(xiàn),然而假使參數(shù)W的值為真(true),這即表示所欲決定的起始音頻幀已經(jīng)被發(fā)現(xiàn),且之后不須再執(zhí)行其它判斷步驟而進(jìn)一步地可象先前技術(shù)那樣將MP3文件解碼并輸出(即步驟913)。然而,假使參數(shù)W的值依然為否,此即表示目前尚未有足夠的數(shù)據(jù)量來(lái)播放音頻幀7所對(duì)應(yīng)的音頻。
如果參數(shù)W的值依然為否,由此可知存在下列兩種情況其中一種情況是,此時(shí)所欲決定的起始音頻幀尚未被發(fā)現(xiàn);而另一種情況是,目前已存儲(chǔ)在輸入緩沖器102的數(shù)據(jù)量可獲得。加法計(jì)算器A會(huì)記錄目前已存儲(chǔ)在輸入緩沖器102的數(shù)據(jù)量。目前音頻幀7的main_datab_egin區(qū)域731被用來(lái)標(biāo)示由main_data區(qū)域733所存儲(chǔ)的相關(guān)音頻取樣是否完整。如果main_data區(qū)域733所存儲(chǔ)的相關(guān)音頻取樣不完整,而還有其它數(shù)據(jù)存儲(chǔ)在音頻幀7上游的其它音頻幀之中時(shí),則main_datab_egin區(qū)域731會(huì)記錄音頻幀7所溢出的數(shù)據(jù)量的大小(即前述的溢出值)。舉例來(lái)說(shuō),如果解碼音頻幀7所需的總音頻取樣量為203個(gè)字節(jié),而main_data區(qū)域733可用來(lái)存儲(chǔ)數(shù)據(jù)的空間只有100個(gè)字節(jié)時(shí),則一個(gè)數(shù)值為103的值會(huì)記錄到main_data_begin區(qū)域731之中,以表示音頻幀7尚有103個(gè)字節(jié)的數(shù)據(jù)是存儲(chǔ)在其上游其它音頻幀的main_data區(qū)域之中。因此,MP3解碼器103必須將存儲(chǔ)在上游音頻幀中的音頻取樣定位并加以解碼。此外,main_data_begin區(qū)域731所記錄的值可視為以字節(jié)為單位的情況下相對(duì)于起始音頻幀且數(shù)值為負(fù)值的位移,而在下面的步驟中將針對(duì)加法計(jì)算器A所記錄的數(shù)值大小是否大于或等于目前音頻幀7的main_data_begin區(qū)域731所記錄的值來(lái)加以判別。
當(dāng)語(yǔ)法分析器101分析MP3文件的幀串并將其所分析的結(jié)構(gòu)傳送至MP3解碼器103時(shí),語(yǔ)法分析器101同時(shí)也會(huì)通知MP3解碼器103需從MP3文件起始點(diǎn)或中間點(diǎn)開始對(duì)音頻取樣進(jìn)行解碼(即步驟908)。當(dāng)MP3解碼器103被通知需從MP3文件的中間點(diǎn)開始對(duì)音頻取樣進(jìn)行解碼時(shí),假使加法計(jì)算器A所記錄的數(shù)值大小已經(jīng)大于或等于目前音頻幀7的main_data_begin區(qū)域731所記錄的數(shù)值時(shí),此即表示目前輸入緩沖器102已經(jīng)存儲(chǔ)有足夠的音頻取樣數(shù)據(jù),使得MP3解碼器103可依據(jù)輸入緩沖器102所存儲(chǔ)的音頻取樣數(shù)據(jù)正確地對(duì)音頻幀7進(jìn)行解碼的操作。因此,參數(shù)W的值會(huì)變成“真”,以表示MP3文件的幀串至此之后可被正確地解碼(即步驟913)。
另一方面,如果加法計(jì)算器A所記錄的數(shù)值大小是小于目前音頻幀7的main_data_begin區(qū)域731所記錄的數(shù)值時(shí),此即表示目前輸入緩沖器102尚未存儲(chǔ)有足夠的音頻取樣數(shù)據(jù)以使得MP3解碼器103可依據(jù)輸入緩沖器102所存儲(chǔ)的音頻取樣數(shù)據(jù)正確地對(duì)音頻幀7進(jìn)行解碼的操作。因此,音頻幀7的main_data區(qū)域733的大小會(huì)被加入到加法計(jì)算器A內(nèi),而求和后的結(jié)果會(huì)存儲(chǔ)至加法計(jì)算器A內(nèi)(即步驟911)。此外,main_data區(qū)域733會(huì)被存儲(chǔ)至輸入緩沖器102內(nèi),以作為MP3解碼器103進(jìn)行解碼時(shí)的參考依據(jù)。
在起始音頻幀尚未被搜索到的情形下,MP3解碼器103會(huì)重復(fù)上述各步驟(如定位下一個(gè)音頻幀的同步字、將幀頭及音頻取樣解碼等等)。假使讀取下一個(gè)音頻幀數(shù)據(jù)并加以判斷后,加法計(jì)算器A所記錄的值仍然小于此音頻幀的main_data_begin區(qū)域所記錄的數(shù)值時(shí),即表示此音頻幀的main_data區(qū)域的大小會(huì)累加至加法計(jì)算器A,且MP3解碼器103會(huì)再次開始搜索下一個(gè)同步字。以上的步驟會(huì)一直重復(fù)執(zhí)行,直到MP3解碼器103搜索到符合“其main_data_begin區(qū)域所記錄的數(shù)值大于或等于加法計(jì)算器A所記錄的值”的條件的音頻幀為止。此時(shí),MP3解碼器103即擁有足夠的數(shù)據(jù)來(lái)對(duì)MP3文件進(jìn)行解碼,以輸出音頻。
當(dāng)語(yǔ)法分析器101通知MP3解碼器103從MP3文件的起始點(diǎn)開始對(duì)音頻取樣進(jìn)行解碼時(shí)(步驟908),因?yàn)檎5腗P3文件的第一個(gè)音頻幀的main_data_begin區(qū)域所記錄的數(shù)值必定為零,所以此時(shí)我們即可將此當(dāng)作檢查錯(cuò)誤的標(biāo)準(zhǔn)。進(jìn)一步講,若第一個(gè)音頻幀的main_data_begin區(qū)域所記錄的數(shù)值不為零時(shí),則MP3解碼器103會(huì)將此音頻幀忽略并重新搜索下一個(gè)音頻幀中的同步字(步驟902),直到找到其main_data_begin區(qū)域所記錄的數(shù)值為零的音頻幀為止。
與先前的方法相比較,本發(fā)明的方法,一方面,在播放MP3文件之前,不須忽略掉所讀取的音頻幀的數(shù)據(jù),而所讀取到的音頻幀的取樣數(shù)據(jù)可暫存到輸出緩沖器以累積足夠的音頻取樣,進(jìn)而確保解碼時(shí)的正確性;另一方面,本發(fā)明的方法會(huì)搜索一個(gè)起始音頻幀,其中,次起始音頻幀的main_data區(qū)域會(huì)記錄次起始音頻幀的所有相關(guān)的取樣數(shù)據(jù)。因此,通過(guò)本發(fā)明的方法可防止播放MP3文件時(shí)發(fā)生爆音的情形,同時(shí)也可增加播放效能。
以上所述僅為本發(fā)明的較佳實(shí)施例,凡是依照本發(fā)明權(quán)利要求所做的同等變化與修改,都應(yīng)屬本發(fā)明專利的覆蓋范圍。
權(quán)利要求
1.一種管理媒體播放器的輸入緩沖器以播放媒體文件的方法,該媒體文件包括由多個(gè)媒體幀所構(gòu)成的幀串,每一個(gè)媒體幀包括至少一個(gè)main_data區(qū)域及一個(gè)main_data_begin區(qū)域,其中該main_data區(qū)域包括編碼取樣,而該main_data_begin區(qū)域是用來(lái)表示該main_data區(qū)域的一個(gè)溢出值,該媒體播放器包括一個(gè)語(yǔ)法分析器、輸入緩沖器、一個(gè)解碼器以及一個(gè)加法計(jì)算器,該語(yǔ)法分析器可以將該幀串分析后傳送至該解碼器,并且可以通知該解碼器從該媒體文件的起始點(diǎn)或中間點(diǎn)開始解碼,該方法包括如果該解碼器被通知從該媒體文件的中間點(diǎn)開始解碼時(shí),則從該幀串中定位第一媒體幀,該第一媒體幀包括第一main_data區(qū)域及第一main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值小于該第一main_data_begin區(qū)域所記錄的值時(shí),則將該第一main_data區(qū)域的大小加入該加法計(jì)算器中,并將該第一main_data區(qū)域存儲(chǔ)至該輸入緩沖器中;從該幀串中定位第二媒體幀,該第二媒體幀是位于該第一媒體幀的下游,該第二媒體幀包括第二main_data區(qū)域及第二main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值等于或大于該第二main_data_begin區(qū)域所記錄的值時(shí),則通過(guò)存儲(chǔ)于該輸入緩沖器中的第一main_data區(qū)域以及第二main_data區(qū)域由該第二媒體幀開始對(duì)該幀串進(jìn)行解碼;以及如果該解碼器被通知從該媒體文件的起始點(diǎn)開始解碼時(shí),則從該幀串中定位第三媒體幀,該第三媒體幀包括第三main_data區(qū)域及第三main_data_begin區(qū)域,并由該第三媒體幀開始對(duì)該幀串進(jìn)行解碼,而其中該第三main_data_begin區(qū)域所記錄的值為零。
2.如權(quán)利要求1所述的方法,其中該媒體文件為MP3文件。
3.如權(quán)利要求1所述的方法,其中該加法計(jì)算器被初始化為零。
4.一種管理媒體播放器的輸入緩沖器以播放媒體文件的方法,該媒體文件包括由多個(gè)媒體幀所構(gòu)成的幀串,每一個(gè)媒體幀包括至少一個(gè)main_data區(qū)域及一個(gè)main_data_begin區(qū)域,其中該main_data區(qū)域包括編碼取樣,而該main_data_begin區(qū)域是用來(lái)表示該main_data區(qū)域的一個(gè)溢出值,該媒體播放器包括該輸入緩沖器以及一個(gè)加法計(jì)算器,該方法包括從該幀串中定位第一媒體幀,該第一媒體幀包括第一main_data區(qū)域及第一main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值小于該第一main_data_begin區(qū)域所記錄的值時(shí),則將該第一main_data區(qū)域的大小加入該加法計(jì)算器中,并將該第一main_data區(qū)域存儲(chǔ)至該輸入緩沖器中;從該幀串中定位第二媒體幀,該第二媒體幀是位于該第一媒體幀的下游,該第二媒體幀包括第二main_data區(qū)域及第二main_data_begin區(qū)域,如果該加法計(jì)算器所記錄的值等于或大于該第二main_data_begin區(qū)域所記錄的值時(shí),則通過(guò)存儲(chǔ)于該輸入緩沖器中的第一main_data區(qū)域以及該第二main_data區(qū)域從該第二媒體幀開始對(duì)該幀串進(jìn)行解碼。
5.如權(quán)利要求4所述的方法,其中該媒體文件為MP3文件。
6.如權(quán)利要求4所述的方法,其中該加法計(jì)算器被初始化為零。
7.一種管理MP3錄放控制器的輸入緩沖器以播放MP3文件的方法,該MP3文件包括由多個(gè)音頻幀所構(gòu)成的幀串,每一個(gè)音頻幀包含數(shù)據(jù),該方法包括從該幀串中定位位于下游的音頻幀,如果一個(gè)加法計(jì)算器所記錄的值小于該音頻幀的一個(gè)main_data_begin區(qū)域所記錄的值時(shí),則將該main_data區(qū)域的大小加入該加法計(jì)算器中,并將該main_data區(qū)域存儲(chǔ)至該輸入緩沖器中,以供后續(xù)解碼時(shí)作為參考之用。
8.如權(quán)利要求7所述的方法,還包括若該音頻幀包含錯(cuò)誤檢查碼,則讀取該錯(cuò)誤檢查碼,并通過(guò)該錯(cuò)誤檢查碼校驗(yàn)該音頻幀的數(shù)據(jù)的完整性。
9.如權(quán)利要求7所述的方法,其中該輸入緩沖器可供該錄放控制器存取存儲(chǔ)器的數(shù)據(jù)。
10.如權(quán)利要求7所述的方法,其中該錄放控制器選擇一個(gè)語(yǔ)法分析器或選擇該輸入緩沖器作為音頻數(shù)據(jù)的來(lái)源以進(jìn)行解碼及播放的操作。
11.如權(quán)利要求7所述的方法,其中該加法計(jì)算器被初始化為零。
12.如權(quán)利要求7所述的方法,還包括利用一個(gè)參數(shù)來(lái)表示一個(gè)起始音頻幀是否已從該幀串中定位。
13.如權(quán)利要求12所述的方法,其中該參數(shù)為布爾數(shù)據(jù)類型。
14.如權(quán)利要求7所述的方法,還包括對(duì)該音頻幀的幀頭進(jìn)行解碼。
15.如權(quán)利要求7所述的方法,還包括對(duì)該音頻幀的音頻數(shù)據(jù)進(jìn)行解碼。
16.如權(quán)利要求7所述的方法,還包括對(duì)該音頻幀的同步字進(jìn)行定位。
17.一種用來(lái)解碼及輸出MP3文件的MP3播放器,該MP3播放器包括輸入緩沖器,用來(lái)存儲(chǔ)MP3音頻幀的一個(gè)main_data區(qū)域,以供后續(xù)解碼時(shí)作為參考之用;錄放控制器,用來(lái)管理該輸入緩沖器,該錄放控制器可決定是否利用全部存儲(chǔ)于該輸入緩沖器的main_data區(qū)域來(lái)對(duì)該MP3音頻幀進(jìn)行解碼。
18.如權(quán)利要求17所述的MP3播放器,還包括一個(gè)加法計(jì)算器,該加法計(jì)算器可被該錄放控制器所使用,以分別決定該輸入緩沖器中及該音頻幀的main_data區(qū)域的大小。
19.如權(quán)利要求17所述的MP3播放器,其中是利用霍夫曼解碼方法對(duì)該音頻幀的main_data區(qū)域進(jìn)行解碼。
全文摘要
一種MP3播放器的錄放控制器的輸入緩沖器的管理方法,包括(1)將加法計(jì)算器初始化為零;(2)從音頻幀中尋找同步字;(3)對(duì)幀頭進(jìn)行解碼;(4)計(jì)算main_data區(qū)域的大??;以及(5)對(duì)選定的音頻數(shù)據(jù)進(jìn)行解碼。其中如果該加法計(jì)算器所記錄的值小于該音頻幀的main_data_begin區(qū)域所記錄的值時(shí),則將該main_data區(qū)域存儲(chǔ)至該輸入緩沖器中,并將該main_data區(qū)域的大小加入該加法計(jì)算器中,并重復(fù)上述步驟以開始搜索下一個(gè)音頻幀的同步字,直到該加法計(jì)算器所記錄的值大于或等于目前音頻幀的main_data_begin區(qū)域所記錄的值為止。由此可正常地獲取解碼該音頻幀時(shí)所需的所有音頻數(shù)據(jù),使得MP3播放器可正常地解碼和進(jìn)行音頻播放。
文檔編號(hào)G06F13/00GK1467726SQ0215144
公開日2004年1月14日 申請(qǐng)日期2002年11月19日 優(yōu)先權(quán)日2002年7月11日
發(fā)明者林宗瑤 申請(qǐng)人:聯(lián)發(fā)科技股份有限公司