|
1 文件格式 MP3文件格式四部分,按順序排列如下: ID3V2 Frame APEV2 ID3V1 1.1 ID3 V1 ID3 V1內(nèi)容按順序排列如下: 名稱 標(biāo)簽標(biāo)志'TAG' 標(biāo)題 藝術(shù)家 專輯 年代 注釋 流派 //note:因ID3 V1未規(guī)定填充內(nèi)容的格式,在某些情況下會(huì)引起問(wèn)題。如臺(tái)灣常常采用big5編碼,如果當(dāng)成ASCII碼處理就會(huì)出錯(cuò)。 1.2 ID3 V2 Tag Header Tag Frame 序列 1.2.1 Tag Header格式 標(biāo)識(shí) Version Revision Flag Size 1.2.2 Tag Frame格式 Frame ID對(duì)照表如下: AENC Audio encryption 1.3 APE V2 APE Tags Header
APE Tag Item 1 APE Tag Item 2 … APE Tag Item n-1 APE Tag Item n APE Tags Footer APE tag items should be sorted ascending by size. When streaming, parts of the APE tags can be dropped to reduce danger of drop outs between titles. This is not a must , but strongly recommended. Actually the items should be sorted by importance/byte, but this is not feasible. Only break this rule if you add less important small items and you don't want to rewrite the whole tag. An APE tag at the end of a file (strongly recommended) must have at least a footer, an APE tag in the beginning of a file (strongly unrecommended) must have at least a header. When located at the end of an MP3 file, an APE tag should be placed after the the last frame, just before the ID3v1 tag (if any). 1.4 Frame Frame Header Side Information Frame Data 1.4.1 Frame Header AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM 1.4.2 Side information main_data_begin: 表示一幀數(shù)據(jù)main_data開(kāi)始的位置。表示main data相對(duì)于該幀同步頭的負(fù)偏移。這里涉及到bit reservior技術(shù):即把當(dāng)前幀未使用完的bit數(shù),留給后面需要的幀使用,這就導(dǎo)致每一幀的main data開(kāi)始的位置,可能在它的Header和side information之前。 Private_bits:留作私用。 Scfsi:表明兩個(gè)granule是否使用相同的縮放因子。 scalefac_compress:被編碼的縮放因子所占的比特?cái)?shù)。 Part_2_3_length:表示main data中scalefactor和Huffman數(shù)據(jù)所占的比特?cái)?shù)。 Global_gain:全局量化步長(zhǎng)。 window_switching_flag、 block_bype和mixed_block_type:當(dāng)window_switching_flag未置位時(shí),block_type為0;當(dāng)其置位時(shí), block_type由mixed_block_type[gr][ch]指定,如下圖所示: 當(dāng)block_type為0、1、3時(shí),為長(zhǎng)塊;為2時(shí),為短塊。mixed_block_flag[gr][ch]為1時(shí),為混合塊。 Table_select、Big_value、count1_table_select、Region0_count和region1_count:參考Huffman碼表選擇。 subblock_gain:短窗量化時(shí)所用的增益偏移量。 preflag和scalefac_scale:反量化時(shí)用到的變量。 2 編碼原理及流程 以單聲道而言,MP3一幀包含1152個(gè)聲音取樣,一幀分為2節(jié)(granule)。mp3編碼時(shí),首先將原始的PCM數(shù)據(jù)送入濾波器組,分成32個(gè)等頻寬的子頻帶,然后再通過(guò)MDCT(modified discrete coding transform),將每個(gè)子帶,轉(zhuǎn)換成18個(gè)次頻帶。然后根據(jù)第二聲學(xué)模型提供的SMR(signal-to-mask ratio),對(duì)每一個(gè)子頻帶信號(hào),做位元分配和編碼。 Step 1:prediction 根據(jù)第二聲學(xué)模型做預(yù)測(cè),預(yù)測(cè)結(jié)果得到的SMR會(huì)作為位元分配的依據(jù)。第二聲學(xué)模型中幾個(gè)重要依據(jù)如下: 靜音閾值曲線、時(shí)域掩蔽效應(yīng)、頻域掩蔽效應(yīng)、臨界頻帶。 Step 2:子帶分離(Analysis Subband Filter) 首先將原始的PCM數(shù)據(jù)送入濾波器組,分成32個(gè)等頻寬的子頻帶。 MDCT濾波器將32個(gè)子帶中每一個(gè)子帶的的信號(hào)在頻域上進(jìn)一步劃分,長(zhǎng)塊進(jìn)行18點(diǎn)(18個(gè)頻域采樣點(diǎn))的MDCT變換,短塊進(jìn)行6點(diǎn)(6個(gè)頻域采樣點(diǎn))的MDCT變換,以窗為單位分3次進(jìn)行。MDCT包括三部分:MDCT窗框、MDCT、長(zhǎng)窗假象處理。 (a)MDCT加窗 窗框的選擇依據(jù)第二聲學(xué)模型,規(guī)則通常如下:子頻帶音頻訊號(hào)穩(wěn)定時(shí),采用長(zhǎng)窗來(lái)提供最細(xì)的頻譜解析度;子頻帶變動(dòng)較大時(shí),采用短窗提供較大的時(shí)域解析度。決定好窗框以后,就可以以窗框?yàn)閱挝贿M(jìn)行MDCT運(yùn)算。如果是長(zhǎng)窗,需要針對(duì)混跌做假象處理。 (b)MDCT 作用:將時(shí)域信號(hào)轉(zhuǎn)換成頻域信號(hào) In the case of long blocks ( block_type 0,1,3 ) there are 36 coefficents in the time domain and 18 in the frequency domain. In the case of short blocks (block_type 2 ) there are 3 transformations with short length. This leads to 12 coefficents in the time and 6 in the frequency domain. (c)長(zhǎng)窗假象處理(混疊消除) 什么是長(zhǎng)窗假象:使用長(zhǎng)窗時(shí),頻譜上可見(jiàn)鄰近的子頻帶間有明顯的重疊現(xiàn)象,處于重疊區(qū)間的訊號(hào)將會(huì)同時(shí)影響兩個(gè)子頻帶。 假象處理的方式:將處在相對(duì)應(yīng)位置的頻線之能量做一定比例的增減,蝶形運(yùn)算。 附:Step2和Step3的綜合圖為: Step 4: Joint Stereo(聯(lián)合立體聲) 編碼依據(jù):2個(gè)聲道存在相干性,方法有: Intensity Stereo(IS):Human hearing is predominantly less acute at perceiving the direction of certain audio frequencies Mid/Side (M/S) stereo :The mid channel is L + R. The side channel is L ? R Step 5:位元分配(bit allocation) 根據(jù)第二聲學(xué)模型的預(yù)測(cè)結(jié)果,進(jìn)行位元分配;位元分配是一個(gè)反復(fù)調(diào)整的過(guò)程。 Step 6:量化 以縮放因子頻帶為單位,進(jìn)行量化??s放因子頻帶內(nèi)使用相同的縮放因子。 mp3中一幀數(shù)據(jù)含有1152個(gè)PCM數(shù)據(jù),分成2節(jié)(granual)。每節(jié)含有576個(gè)PCM數(shù)據(jù),這576個(gè)值在不同的節(jié)類型有不同的定義。如下所述: (a)該節(jié)為長(zhǎng)塊:這576個(gè)值代表576條頻率線上的值,是時(shí)域上的576個(gè)pcm值經(jīng)過(guò)時(shí)頻變換的結(jié)果。這576條頻率線從低到高分成32個(gè)子帶,每個(gè)子帶含18條頻率線。同時(shí),也將這576個(gè)數(shù)據(jù)分成若干個(gè)縮放因子帶,每個(gè)縮放因子帶共用一個(gè)縮放因子。長(zhǎng)塊的縮放因子帶在44kHz按如下表格劃分,其中,418-575不屬于任何一個(gè)縮放因子帶,使用系統(tǒng)提供的默認(rèn)縮放因子: (b)該節(jié)為短塊:這576個(gè)值代表192條頻率線的值,192條頻率線分32個(gè)子帶,每條子帶包括6條頻率線。每條頻率線有3個(gè)值,分別屬于3個(gè)窗 (windows_0,windows_1,windows_2)。192條頻率線也被分成若干縮放因子帶,在44.1kHz時(shí)劃分如下圖,其中,136-191使用默認(rèn)縮放因子。
這576個(gè)值得排列順序?yàn)椋仁前纯s放因子帶從低到高排列;縮放因子帶內(nèi),按windows_0,windows_2,windows_3排列;每一個(gè)window中,頻率線從低到高排列。 (c)該節(jié)為混合塊: 解出來(lái)的值分2個(gè)部分,第一部分(前36個(gè)值)是長(zhǎng)塊,代表36條頻率線;第二部分(后540個(gè)值)為短塊,代表180個(gè)頻率線。2部分的排列方式分別于長(zhǎng)塊和短塊相同。 綜上,有: 附: 縮放因子 縮放因子帶在逆量化時(shí)共用的縮放因子,縮放因子被編碼于main_data中,欲解碼縮放因子,首先得知道縮放因子所占的比特?cái)?shù),在side information的scale_compress[gr][ch]提供這樣的信息,所用的bit數(shù)通過(guò)查如下表才能得到。slen 1和slen 2針對(duì)那些縮放因子帶,由塊類型決定。
Step 7:Huffman編碼 (a)Huffman碼表選擇 當(dāng)從一個(gè)縮放因子頻帶過(guò)渡到另一個(gè)縮放因子頻帶時(shí),Huffman碼表可能發(fā)生改變;需要進(jìn)行編碼的576個(gè)值分為大值區(qū)、小值區(qū)、零值區(qū): 不同的區(qū)域使用不同的Huffman表編碼,大值區(qū)每2個(gè)值一起編碼,小值區(qū)每4個(gè)值一起編碼,零值區(qū)無(wú)需編碼,大值區(qū)以縮放因子頻帶為單位,分為3個(gè)region。每個(gè)region使用不同的Huffman表。一共有32個(gè)Huffman表供選擇。 (b)huffman編碼(略) 注:大值區(qū)的Huffman表有一個(gè)參數(shù)linbits,用來(lái)指定Huffman表是否能用來(lái)編碼大于15的數(shù)。 Step 8:生成幀 加上Frame Header和Side Information,生成幀。 3 解碼流程 preprocessing:主要完成Header和side information的解碼。 Huffman decoding:選擇Huffman table,進(jìn)行解碼。 Requantization:逆量化,短塊和長(zhǎng)塊使用不同的公式。公式如下: Reodering:由于編碼時(shí)對(duì)短塊和混合塊中的短塊進(jìn)行了重排,具體見(jiàn)編碼部分,故解碼時(shí)需要重新排序 Stero decoding:立體聲解碼。 Alias reduction:長(zhǎng)塊間需要消除混跌。 IMDCT:每做一次MDCT產(chǎn)生36個(gè)輸出。昨晚IMDCT后,需再做加窗運(yùn)算。IMDCT做完后,再無(wú)長(zhǎng)塊、短塊概念,得到的結(jié)果是從低到高的32個(gè)子帶,每個(gè)子帶18個(gè)值。 子帶合成濾波:先是把32個(gè)子帶中,每個(gè)子帶取一個(gè)數(shù)據(jù),組成的32個(gè)值送入一個(gè)1024的FIFO中;接著把這1024個(gè)值中取出一半,對(duì)其做加窗運(yùn)算,加窗系數(shù)由MP3官方協(xié)議的表格提供;最后對(duì)加窗結(jié)果進(jìn)行疊加得到32個(gè)時(shí)域PCM輸出。 4 附錄 ID3 V2官網(wǎng):http://www./id3v2.3.0 APE V2官網(wǎng):http://wiki./index.php?title=APEv2_specification ISO/IEC 11172-3、ISO/IEC 13818-3: |
|
|