【正文】
ecoder, // Filter CLSID LVHScreenDecoder, // String name MERIT_NORMAL, // Filter merit 2, // Number of pins sudpPins // Pin information }; 音視頻編碼解碼研究 –16– CFactoryTemplate g_Templates[] = { { LVHScreenDecoder , amp。CLSID_VHScreenEncoder , CVHScreenEncoder::CreateInstance , NULL , amp?;謴?fù)出源文件。 從子參數(shù)區(qū)得到碼長后. 按照與碼長編碼樹建立時(shí)同樣的規(guī)則 ,我們就可以得到了字符樹與距離樹,由字符樹可以得到字符碼與匹配長度碼,由距離樹可以得到匹配距離碼 。子參數(shù)區(qū) 2 從碼號 0 開始順序編碼至 257+NL。參數(shù)區(qū)的結(jié)構(gòu)見圖 。 ( 2) HSF 碼樹的構(gòu)造 在參數(shù)區(qū)中碼樹信息是由碼長來表達(dá)的。由于壓縮算法是預(yù)統(tǒng)計(jì)Huffman 編碼的壓縮算法碼樹或碼表是動態(tài)生成的,所以為了正確還原源文件,必須在壓縮文件中存儲壓縮時(shí)產(chǎn)生的碼樹或碼表等編碼信息,這些信息就是壓縮數(shù)據(jù)的參數(shù)區(qū)[11]。 257258對應(yīng)的是匹配長度及尾碼位數(shù);匹配距離碼的基碼編號為 029。 Huffman 編碼器根據(jù)滑動窗口壓縮器輸出的中間結(jié)果進(jìn)行統(tǒng)計(jì)形成兩棵 HSF樹. 其中單字符與匹配長度在一棵 HSF 樹上稱為字符樹。 2. Deflate 算法工作原理 Zlib 中的 Deflate 壓縮算法采用自適應(yīng)方式字典編碼, 壓縮之前是沒有字典的。當(dāng)函數(shù)退出后, destLen 是解壓出來的數(shù)據(jù)的實(shí)際大小。當(dāng)調(diào)用函數(shù)時(shí), destLen 表示 dest 緩沖區(qū)的大小, dest 緩沖區(qū)要足以容下解壓后的數(shù)據(jù)。 (4) int unpress (Bytef *dest, uLongf *destLen,const Bytef *source, uLong sourceLen); 功能:解壓縮。 press 若成功,則返回 Z_OK;若沒有足夠內(nèi)存,則返回 Z_MEM_ERROR;若輸出緩沖區(qū)不夠大,則返回 Z_BUF_ERROR。函數(shù)的第二個(gè)參數(shù) destLen 是傳址調(diào)用。 圖 解 碼器工作原理 ( 二 )壓縮算法 1.編碼解碼算法 本文研究的解碼算法采用無損壓縮中的字典壓縮法,壓縮算法調(diào)用 Zilb 函數(shù)庫的壓縮和解壓縮函數(shù),對視頻中的每一幀圖像進(jìn)行壓縮,對音頻中的采樣點(diǎn)進(jìn)行壓縮。 圖 DirectShow 工作原理圖 3.編碼器模型 由此可知音視頻編碼模塊工作原理:音視頻采集 卡作為 Source Filter,采用 Zlib 技術(shù)的編碼算法作為 Transform Filter,文件系統(tǒng)作為 Render Filter。這一整套過濾器集合被稱為過濾器圖 (Filter Graph)。 DirectShow 應(yīng)用程序中主要包含以下 5 種過濾器:源過濾器( Source Filter)、轉(zhuǎn)換過濾器( Transform Filter)、呈現(xiàn)過濾器( Render Filter),分別負(fù)責(zé)獲取數(shù)據(jù)流、處理數(shù)據(jù)流和播放數(shù)據(jù)流。 工作模型 DirectShow 使用模塊化的體系結(jié)構(gòu),最主要的組件是過濾器( Filter)把一系列過濾器組合起來形成 DirectShow 應(yīng)用程序。它是微軟公司對早先 Windows 視頻科技的一次更新 [9]。 zlib 使用抽象化的 DEFLATE 算法,最初是為 libpng函式庫所寫的,后來普遍為許多軟件所使用 。 ( 八 )音頻解碼原理 音頻解碼一般是音頻編碼的逆過程,它將對應(yīng)編碼格式的數(shù)碼流解碼成 PCM 數(shù)碼流,數(shù)碼流傳送的是的是量化實(shí)際音頻信息而得到的頻率系數(shù),數(shù)碼流的基本單位是同步幀 。一般使用 Windows Media Audio 編碼格式的文件以 WMA 作為擴(kuò)展名,一些使用 Windows Media Audio 編碼格式編碼其所有內(nèi)容的純音頻 ASF 文 件也使用 WMA 作為擴(kuò)展名。與其他會造成立體空間感減弱的編碼模型相比,這兩種技術(shù)都可以在保持編碼器的靈活性的同時(shí)而不損害本來的立體聲空間 音 像,而且實(shí)現(xiàn)的復(fù)雜程度比聯(lián)合立體聲方式要低。壓縮音樂文件時(shí),人們通常會說以多大的壓縮比率進(jìn)行壓縮,壓縮比率的單位為 Kbps(千字節(jié) /秒 )。 2. MP3 MP3 音樂的 編碼 原理說得簡單些, 就是將 音頻文件壓縮成 MP3 文件,其實(shí)就是找到并刪除音頻文件中人耳聽不到的聲音。我音視頻編碼解碼研究 –7– 們而習(xí)慣性的把 MP3 列入有損音頻編碼范疇,是相對 PCM 編碼的。 PCM 通過 采樣 、量化、編碼三個(gè)步驟將連續(xù)變化的模擬信號轉(zhuǎn)換為數(shù)字編碼 [7]。 ( 四 )視頻解碼原理 視頻解碼就是將編碼后的文件或數(shù)據(jù)流,沒有損失的或者最大限度的還原成原始圖像。 4. QuickTime 視頻編碼有 Sorenson Video Apple MPEG Apple 。 2. 系列:由 ITU(國際電傳視訊聯(lián)盟 )主導(dǎo),側(cè)重網(wǎng)絡(luò)傳輸 。 ( 4)子帶編碼 子帶編碼先將先將原圖用數(shù)字濾波器分解成不同頻率的成分的分量,在對這些分量進(jìn)行亞抽樣,形成子帶 圖像,最后對不同的子帶圖像分別用與其相匹配的方法進(jìn)行編碼。 ( 1)預(yù)測編碼方法 如果已知圖像一 個(gè)像素離散值,利用其相鄰像素的相關(guān)性,預(yù)測它下一個(gè)像素(水平方向或垂直方向)的可能性,求其兩者差,再量化、編碼,這種方法稱為預(yù)測編碼方法簡稱預(yù)測法。 ( 3)字典壓縮方法 目前廣泛采用的字典壓縮方法包括兩種類型。 編碼 ( 1)行程編碼( RunLength)技術(shù) 行程編碼是相對簡單的一種編碼,是指在一行掃描的像素中,比較相鄰像素的幅度(如亮度)。 ( 3)時(shí)間相關(guān)性:在數(shù)字視頻中,在時(shí)間上相鄰的兩幀圖像的大部分像素值變化很小。實(shí)際中存在著很多種數(shù)據(jù)相關(guān)性。有損編碼機(jī)制的優(yōu)點(diǎn)是可以得到比無損編碼更加高的壓縮比,但是它只能用近似的數(shù)據(jù)代替原始數(shù)據(jù),而這種相似數(shù)據(jù)由市容易被壓縮的。 輸入的符號可能包括量化的變換系數(shù) , 運(yùn)動向量 (對于每個(gè)運(yùn)動補(bǔ)償塊的向量值 x 和 y), 標(biāo)記 (在序列中用來表示重同步位的點(diǎn) ), 頭 (宏塊頭 ,圖象頭 ,序列的頭等 )以及附加信息 (對于正確解碼來說不重要的信息 )。這一過程導(dǎo)致精度的降低。 變換編碼不是直接對空域圖像信號進(jìn)行編碼,而是首先將空域圖像信號映射變換到另一個(gè)正交 矢量空間(變換域或頻域),產(chǎn)生一批變換系數(shù),然后對這些變換系數(shù)進(jìn)行編碼處理。 運(yùn)動估計(jì)算法是視頻壓縮編碼的核心算法之一。運(yùn)動矢量通過熵編碼進(jìn)行壓縮。 1. 去時(shí)域冗余信息 使用幀間編碼技術(shù)可去除時(shí)域冗余信息,它包括以下三部分: ( 1) 運(yùn)動補(bǔ)償 運(yùn)動補(bǔ)償是通過先前的局部圖像來預(yù)測、補(bǔ)償當(dāng)前的局部圖像,它是減少 幀 序列冗余信息的有效方法。 音視頻編碼解碼研究 –2– 二、 音 視頻編 解 碼原理 (一) 視頻編碼原理 所謂視頻編碼 就是指通過特定的壓縮技術(shù),將某個(gè)視頻格式的文件轉(zhuǎn)換成另一種視頻格式文件的方式。 ( 2)一 段 10 秒鐘 的 音頻取樣頻率為 44KHz 的 16 位立體聲 WAV 格式音頻 需要 的空間 ( WAV 格式文件所占容量 (bit) =取樣頻率 量化位數(shù) 聲道 時(shí)間/8 即 44K 16 2 10/8=KB) 。 首先,硬件方面的革新使這些方面發(fā)展成為可能。為了壓縮音、視頻數(shù)據(jù),出現(xiàn)了各種不同的編碼方法,并都取得了一定成效。 大量的音視頻數(shù)據(jù)被廣泛使用,如常見的 VCD、 DVD 都是將大量的音、視頻數(shù)據(jù)經(jīng)過處理后供用戶使用的。 關(guān)鍵詞: 音頻 ; 視頻 ; 編碼;解碼 音視頻編碼解碼研究 II The Research on Audio and Video Encoding and Decoding Abstract There are three main coding meaning: the digital simulation signal process, data pression process and data encryption process. This paper studies the range of audio and video Encoding and Decoding. The purpose is to research that basis on the existing of video encoding and decoding, try to be applied to audio and video with nondestructive pressed video encoding and decoding, developed a new kind of encoding and decoding method, in the process of encoding and decoding principle, verify and explore deeper understanding audio and video codec used in real life, the value of bining theory with practice. This paper first to research and summarize the video and audio codec principle, mechanism and mainstream decoding frame, and then based on the principle and new ideas to develop an audio and video codec encoding and decoding method, using VC + +, DirectShow as development tools, citing a function of Zlib to realize this method, and through the operation of the new test method of encoding and decoding CPU run after the impact, the code of the file size and work transmission time spent three aspects were tested and summarized. Through the research and develop the new decoding method, the new method of testing code spend more resources than when the CPU is not coding, the code file size is about the1/2 of the files without code, and work transmission spent less time. Through the research of audio and video encoding and decoding process is to pression and unpress process. nondestructive press also can better pression condition of audio and image data. Audio and video pression condition can be applied to the coding method for image still higher requirement of original. Key Words: Audio。 通過研究開發(fā)出了這種新的編解碼方法,經(jīng)測試發(fā)現(xiàn)新的編碼方法較未編碼時(shí)花費(fèi)較多的 CPU 資源,編碼后的文件大小大約是未編碼文件時(shí)的 1/2 左右,網(wǎng)絡(luò)傳輸時(shí)間的花費(fèi)也較少。音視頻編碼解碼研究 I 摘