專利名稱:一種音頻數(shù)據(jù)解碼方法、裝置及音頻播放器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于音頻技術(shù)領(lǐng)域,尤其涉及一種音頻數(shù)據(jù)解碼方法、裝置及音頻播放器。
背景技術(shù):
目前,許多嵌入式高清解碼芯片不支持硬件解碼。因此,對(duì)于APE,在不支持硬件解碼APE壓縮格式的嵌入式播放平臺(tái)上,只能采用軟件解碼APE音樂(lè)?,F(xiàn)有技術(shù)在使用軟件解碼時(shí),大多使用開(kāi)源的FFmpeg解碼庫(kù),F(xiàn)Fmpeg是一個(gè)開(kāi)源免費(fèi)跨平臺(tái)的視頻和音頻流方案。通過(guò)FFmpeg解碼庫(kù)進(jìn)行軟件解碼的常用流程是通過(guò) FFmpeg解碼庫(kù)將APE音頻的每幀數(shù)據(jù)解碼成脈碼調(diào)制(Pulse Code Modulation, PCM)音頻數(shù)據(jù),然后直接通過(guò)解碼芯片的軟件的數(shù)據(jù)傳送接口,將PCM音頻數(shù)據(jù)送給硬件芯片解碼播放。上述的操作流程,要求開(kāi)發(fā)人員必須對(duì)解碼芯片廠商的軟件開(kāi)發(fā)工具包 (Software Development Kit, SDK)進(jìn)行修改,并且需要非常深入了解解碼芯片,才能處理好;同時(shí),目前很多只開(kāi)發(fā)中間件和應(yīng)用層的第三方設(shè)計(jì)室公司,他們可能會(huì)只開(kāi)發(fā)一套通用的中間件來(lái)配合許多不同廠家的硬件解碼芯片,這樣處理就會(huì)造成每更換一塊硬件解碼芯片,就必須修改硬件解碼芯片提供的SDK以完成針對(duì)APE音樂(lè)的軟件解碼功能,開(kāi)發(fā)成本很1 。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種音頻數(shù)據(jù)解碼方法,旨在解決現(xiàn)有技術(shù)在解碼無(wú)損壓縮格式的音頻數(shù)據(jù)時(shí),需要修改硬件解碼芯片提供的SDK來(lái)對(duì)無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,開(kāi)發(fā)成本高的問(wèn)題。本發(fā)明是這樣實(shí)現(xiàn)的,一種音頻數(shù)據(jù)解碼方法,所述方法包括下述步驟對(duì)將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù);將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流;通過(guò)解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。本發(fā)明的另一目的在于提供一種音頻數(shù)據(jù)解碼裝置,所述裝置包括PCM數(shù)據(jù)生成單元,用于對(duì)將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成 PCM數(shù)據(jù);WAV音頻生成單元,用于將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV 音頻數(shù)據(jù)流;音頻解碼單元,用于通過(guò)解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。本發(fā)明的另一目的在于提供一種音頻播放器,所述音頻播放器包括如上所述的音頻數(shù)據(jù)解碼裝置。在本發(fā)明中,先將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù),再將生成的PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流,然后可以通過(guò)硬件解碼芯片廠商提供的解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。由于目前市面上所有的硬件解碼芯片,都能直接播放PCM的WAV音頻文件或者WAV音頻數(shù)據(jù)流。因此將打包成的WAV音頻文件或者數(shù)據(jù)流傳送給硬件芯片,可以直接使用芯片廠商開(kāi)發(fā)的硬件解碼芯片解碼無(wú)損壓縮格式的音頻數(shù)據(jù),不需要Design house公司再開(kāi)發(fā)、修改硬件解碼芯片廠商提供的SDK,大大節(jié)省了開(kāi)發(fā)成本。
圖1是本發(fā)明實(shí)施例提供的音頻數(shù)據(jù)解碼方法的實(shí)現(xiàn)流程圖;圖2是本發(fā)明實(shí)施例提供的APE音頻數(shù)據(jù)解碼方法的實(shí)現(xiàn)流程圖;圖3是本發(fā)明實(shí)施例提供的音頻數(shù)據(jù)解碼裝置的結(jié)構(gòu)框圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在本發(fā)明實(shí)施例中,先將要播放無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù),再將生成的PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流,然后可以通過(guò)硬件解碼芯片廠商提供的硬件解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。圖1是本發(fā)明實(shí)施例提供的音頻數(shù)據(jù)解碼方法的實(shí)現(xiàn)流程,詳述如下在步驟SlOl中,對(duì)將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù)。在本實(shí)施例中,判斷所要播放的音頻數(shù)據(jù)的類型,若該音頻數(shù)據(jù)是WAV音頻數(shù)據(jù), 則使用芯片廠商提供的硬件芯片直接可以解碼該音頻數(shù)據(jù);若該音頻文件是無(wú)損壓縮格式的音頻數(shù)據(jù),比如APE、0GG、FLAC等類型的音頻數(shù)據(jù),則通過(guò)解碼庫(kù)將APE、0GG、FLAC等類型的音頻數(shù)據(jù)解碼成PCM數(shù)據(jù)。其中解碼時(shí),首先將APE、0GG、FLAC等音頻數(shù)據(jù)的文件頭中的信息解碼成PCM格式的WAV文件頭,該音頻數(shù)據(jù)的文件頭中的信息包括聲道數(shù)、采樣率、比特率、采樣大小,并將WAV文件頭保存在WAV數(shù)據(jù)流中或者WAV文件中,該WAV文件頭包括所解碼的音頻數(shù)據(jù)的聲道數(shù)、采樣頻率、比特率、采樣大??;再繼續(xù)將APE、0GG、FLAC等類型的音頻數(shù)據(jù)的數(shù)據(jù)體中的信息解碼成PCM格式的WAV文件數(shù)據(jù)體。在本實(shí)施例中,用FFmpeg 解碼庫(kù)將APE音頻數(shù)據(jù)解碼成PCM數(shù)據(jù),使用Iibvorbis將OGG音頻數(shù)據(jù)解碼成PCM數(shù)據(jù), 使用Iibflac或者FFmpeg解碼庫(kù)將FLAC音頻數(shù)據(jù)解碼成PCM數(shù)據(jù)。在步驟S102中,將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流。在本實(shí)施例中,由于目前市面上所有的硬件解碼芯片,都能直接播放PCM格式的 WAV音頻文件。因此,將解碼生成的WAV文件頭和WAV文件數(shù)據(jù)體打包后按照WAV編碼的格式保存在WAV數(shù)據(jù)流中或者WAV文件中后,傳送給硬件芯片的SDK,使用芯片廠商開(kāi)發(fā)的 SDK直接播放。其中WAV文件數(shù)據(jù)體保存在WAV文件頭的后面。在步驟S103中,通過(guò)解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。
在本實(shí)施例中,由于目前市面上所有的硬件解碼芯片,都能直接播放PCM格式的 WAV音頻文件,因此,可直接通過(guò)硬件解碼芯片廠商提供的硬件解碼芯片解碼打包生成的 WAV音頻文件或者WAV音頻數(shù)據(jù)流。以下以無(wú)損壓縮格式的音頻數(shù)據(jù)為APE為例,對(duì)本發(fā)明實(shí)施例的實(shí)現(xiàn)進(jìn)行具體說(shuō)明。圖2是本發(fā)明實(shí)施例提供的APE音頻數(shù)據(jù)解碼方法的實(shí)現(xiàn)流程,詳述如下在步驟S201中,判斷將要播放的音頻數(shù)據(jù)是否是APE數(shù)據(jù)。在本實(shí)施例中,判斷將要播放的音頻數(shù)據(jù)是否是APE數(shù)據(jù),當(dāng)該音頻數(shù)據(jù)是APE數(shù)據(jù)時(shí),執(zhí)行步驟S201,否則,一直檢測(cè)將要播放的音頻數(shù)據(jù)的類型。在步驟S202中,當(dāng)所述音頻數(shù)據(jù)是APE數(shù)據(jù)時(shí),將所述音頻數(shù)據(jù)進(jìn)行解碼,生成 PCM數(shù)據(jù)。在本實(shí)施例中,當(dāng)音頻數(shù)據(jù)是APE數(shù)據(jù)時(shí),采用FFmpeg解碼庫(kù)中的APEcodec對(duì) APE數(shù)據(jù)進(jìn)行軟件解碼,生成PCM數(shù)據(jù)。在步驟S203中,將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流。在步驟S204中,通過(guò)解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。在本實(shí)施例中,由于目前市面上所有的硬件解碼芯片,都能直接播放PCM格式的 WAV音頻文件,因此,可直接通過(guò)硬件解碼芯片廠商提供的硬件解碼芯片解碼打包生成的 WAV音頻文件或者WAV音頻數(shù)據(jù)流。圖3是本發(fā)明實(shí)施例提供的音頻播放裝置的結(jié)構(gòu)框,為了便于說(shuō)明,僅示出了本發(fā)明實(shí)施例相關(guān)的部分。該裝置可以是內(nèi)置于音頻播放器的軟件單元、硬件單元或者軟硬件結(jié)合的單元。該裝置包括PCM數(shù)據(jù)生成單元31、WAV音頻生成單元32和音頻解碼單元33。PCM數(shù)據(jù)生成單元31用于對(duì)將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成 PCM數(shù)據(jù);WAV音頻生成單元32用于將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者 WAV音頻數(shù)據(jù)流,該P(yáng)CM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流包括WAV文件頭和WAV數(shù)據(jù)體,其中WAV文件頭包括聲道數(shù)、采樣率、比特率、采樣大??;音頻解碼單元33用于通過(guò)解碼芯片解碼所述WAV音頻生成單元32生成的WAV音頻文件或者WAV音頻數(shù)據(jù)流。另外,PCM數(shù)據(jù)生成單元31包括文件頭生成模塊311和數(shù)據(jù)體生成模塊312。其中,文件頭生成模塊311用于將所述音頻數(shù)據(jù)的文件頭中的信息解碼成PCM格式的WAV文件頭;數(shù)據(jù)體生成模塊312用于將所述音頻數(shù)據(jù)的數(shù)據(jù)體中的信息解碼成PCM格式的 WAV文件數(shù)據(jù)體。WAV音頻生成單元32包括WAV音頻生成模塊321,該模塊用于將文件頭生成模塊 311生成的WAV文件頭和數(shù)據(jù)體生成模塊312生成的WAV文件數(shù)據(jù)體按照WAV編碼的格式保存在WAV文件中或者WAV數(shù)據(jù)流中。在本發(fā)明實(shí)施例中,將APE、OGG、FLAC等無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù)后,沒(méi)有直接送給硬件解碼芯片播放,而是將通過(guò)解碼庫(kù)解碼所獲取的APE等格式的音頻數(shù)據(jù)文件頭的聲道數(shù)、采樣頻率、比特率、采樣大小以及文件數(shù)據(jù)體,打包成PCM格式的WAV音頻文件或者音頻數(shù)據(jù)流。由于目前市面上所有的硬件解碼芯片,都能直接播放 PCM的WAV音頻數(shù)據(jù)。因此將打包成的WAV音頻文件或者數(shù)據(jù)流傳送給硬件解碼芯片,通過(guò)硬件解碼芯片解碼后傳送給芯片廠商開(kāi)發(fā)的SDK,使用芯片廠商開(kāi)發(fā)的SDK直接播放,不需要Design house公司再開(kāi)發(fā)、修改硬件解碼芯片廠商提供的SDK,而是只在Design house 所開(kāi)發(fā)的中間件中,增加使用解碼庫(kù)解碼APE等類型的音頻數(shù)據(jù)成PCM數(shù)據(jù),并打包成WAV 音頻文件或者音頻數(shù)據(jù)流。這樣可以做到Design house設(shè)計(jì)的中間件的APE等解碼模塊, 可以通用所有的硬件平臺(tái)。 以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種音頻數(shù)據(jù)解碼方法,其特征在于,所述方法包括下述步驟 對(duì)將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù); 將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流; 通過(guò)解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。
2.如權(quán)利要求1所述的方法,其特征在于,所述PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流包括WAV文件頭和WAV數(shù)據(jù)體;所述WAV文件頭包括聲道數(shù)、采樣率、比特率、采樣大小。
3.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述音頻文件進(jìn)行解碼,生成PCM數(shù)據(jù)的步驟具體包括將所述音頻文件的文件頭中的信息解碼成PCM格式的WAV文件頭; 將所述音頻文件的數(shù)據(jù)體中的信息解碼成PCM格式的WAV文件數(shù)據(jù)體。
4.如權(quán)利要求3所述的方法,其特征在于,所述將所述PCM數(shù)據(jù)打包成PCM格式的WAV 音頻文件的步驟具體包括將所述WAV文件頭和所述WAV文件數(shù)據(jù)體按照WAV編碼的格式保存在WAV文件中或者 WAV數(shù)據(jù)流中。
5.如權(quán)利要求1所述的方法,其特征在于,所述無(wú)損壓縮格式的音頻數(shù)據(jù)為APE數(shù)據(jù)。
6.一種音頻數(shù)據(jù)解碼裝置,其特征在于,所述裝置包括PCM數(shù)據(jù)生成單元,用于對(duì)將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù);WAV音頻生成單元,用于將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流;音頻解碼單元,用于通過(guò)解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。
7.如權(quán)利要求6所述的裝置,其特征在于,所述PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流包括WAV文件頭和WAV數(shù)據(jù)體;所述WAV文件頭包括聲道數(shù)、采樣率、比特率、采樣大小。
8.如權(quán)利要求6所述的裝置,其特征在于,所述PCM數(shù)據(jù)生成單元包括文件頭生成模塊,用于將所述音頻數(shù)據(jù)的文件頭中的信息解碼成PCM格式的WAV文件頭;數(shù)據(jù)體生成模塊,用于將所述音頻數(shù)據(jù)的數(shù)據(jù)體中的信息解碼成PCM格式的WAV文件數(shù)據(jù)體。
9.如權(quán)利要求8所述的裝置,其特征在于,所述WAV音頻生成單元包括WAV音頻生成模塊,用于將所述WAV文件頭和所述WAV文件數(shù)據(jù)體按照WAV編碼的格式保存在WAV文件中或者WAV數(shù)據(jù)流中。
10.一種音頻播放器,其特征在于,所述音頻播放器包括如權(quán)利要求6至9任一項(xiàng)所述的音頻數(shù)據(jù)解碼裝置。
全文摘要
本發(fā)明適用于音頻技術(shù)領(lǐng)域,提供了一種音頻數(shù)據(jù)解碼方法、裝置及音頻播放器,所述方法包括下述步驟對(duì)將要播放的無(wú)損壓縮格式的音頻數(shù)據(jù)進(jìn)行解碼,生成PCM數(shù)據(jù);將所述PCM數(shù)據(jù)打包成PCM格式的WAV音頻文件或者WAV音頻數(shù)據(jù)流;通過(guò)解碼芯片解碼所述WAV音頻文件或者所述WAV音頻數(shù)據(jù)流。本發(fā)明,將無(wú)損壓縮格式的音頻數(shù)據(jù)打包成的WAV音頻文件或者數(shù)據(jù)流傳送給解碼芯片進(jìn)行解碼后,傳輸給芯片廠商開(kāi)發(fā)的SDK直接播放,不需要開(kāi)發(fā)公司再開(kāi)發(fā)、修改硬件解碼芯片廠商提供的SDK,大大節(jié)省了開(kāi)發(fā)成本。
文檔編號(hào)G10L19/00GK102385864SQ20101026812
公開(kāi)日2012年3月21日 申請(qǐng)日期2010年8月31日 優(yōu)先權(quán)日2010年8月31日
發(fā)明者孫茂杰 申請(qǐng)人:Tcl集團(tuán)股份有限公司