一種編碼方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及音視頻文件編解碼技術(shù)領(lǐng)域,特別涉及一種編碼方法及裝置。
【背景技術(shù)】
[0002]從信息論的觀點(diǎn)來(lái)看,描述信源的數(shù)據(jù)由信息和數(shù)據(jù)冗余組成。數(shù)據(jù)冗余有許多種,如空間冗余、時(shí)間冗余、視覺(jué)冗余、統(tǒng)計(jì)冗余等。將音頻或視頻作為一個(gè)信源,音頻或視頻壓縮編碼的實(shí)質(zhì)是減少音頻或視頻中的冗余。
[0003]音頻和視頻都需要可定制的壓縮方法,以均衡視頻的質(zhì)量、碼率、編碼算法和解碼算法的復(fù)雜度、魯棒性、編輯的方便性、端到端的延時(shí)等其它一些因素。
[0004]目前的音頻或視頻編碼過(guò)程中,需要對(duì)某些處理步驟輸出的數(shù)據(jù)進(jìn)行緩存供后續(xù)編碼處理使用,圖1為現(xiàn)有技術(shù)中編碼流程的示意圖,如圖1所示,現(xiàn)有的編碼方案需要對(duì)DCT (Discrete Cosine Transform,離散余弦變換)的結(jié)果進(jìn)行緩存供后續(xù)編碼使用。
[0005]綜上所述,現(xiàn)有的音頻或視頻的編碼方案對(duì)緩存的需求量較大,緩存資源消耗大。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提出了一種編碼方法及裝置,用以解決現(xiàn)有的音頻或視頻的編碼方案對(duì)緩存的需求量較大,緩存資源消耗大的問(wèn)題。
[0007]本發(fā)明實(shí)施例提供了一種編碼方法,包括如下步驟:
[0008]緩存待編碼文件;
[0009]對(duì)所述待編碼文件中的源信息進(jìn)行第一次離散余弦變換;
[0010]對(duì)所述待編碼文件中的源信息進(jìn)行第二次離散余弦變換;
[0011]根據(jù)所述第一次離散余弦變換結(jié)果確定編碼碼率;
[0012]根據(jù)所述第二次離散余弦變換結(jié)果及所述編碼碼率進(jìn)行編碼。
[0013]本發(fā)明實(shí)施例還提供了一種編碼裝置,包括:
[0014]緩存單元,用于緩存待編碼文件;
[0015]變換單元,用于對(duì)所述待編碼文件中的源信息進(jìn)行第一次離散余弦變換;對(duì)所述待編碼文件中的源信息進(jìn)行第二次離散余弦變換;
[0016]碼率確定單元,用于根據(jù)所述第一次離散余弦變換結(jié)果確定編碼碼率;
[0017]編碼單元,用于根據(jù)所述第二次離散余弦變換結(jié)果及所述編碼碼率進(jìn)行編碼。
[0018]本發(fā)明有益效果如下:
[0019]本發(fā)明實(shí)施例提供一種編碼方法及裝置,由于將待編碼文件中的源信息進(jìn)行兩次離散余弦變換,將第一次離散余弦變換用于確定編碼碼率,根據(jù)第二次離散余弦變換和確定的編碼碼率進(jìn)行編碼,無(wú)需緩存待編碼文件中的源信息離散余弦變換的結(jié)果,從而有效降低了編碼方案對(duì)于緩存資源的消耗,節(jié)約了緩存資源。
【附圖說(shuō)明】
[0020]下面將參照附圖描述本發(fā)明的具體實(shí)施例,
[0021]圖1為現(xiàn)有技術(shù)中編碼流程的示意圖;
[0022]圖2為本發(fā)明實(shí)施例中提供的編碼方法的流程示意圖;
[0023]圖3為本發(fā)明實(shí)施例中提供的編碼方法實(shí)施流程示意圖;
[0024]圖4為本發(fā)明實(shí)施例中提供的編碼方法中實(shí)現(xiàn)編碼、解碼時(shí)分復(fù)用的流程示意圖;
[0025]圖5為本發(fā)明實(shí)施例中提供的編碼裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026]為了使本發(fā)明的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明的示例性實(shí)施例進(jìn)行進(jìn)一步詳細(xì)的說(shuō)明,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是所有實(shí)施例的窮舉。并且在不沖突的情況下,本說(shuō)明書(shū)中的實(shí)施例及實(shí)施例中的特征可以互相結(jié)合。
[0027]圖2為本發(fā)明實(shí)施例中提供的編碼方法的流程示意圖,如圖2所示,本發(fā)明實(shí)施例中提供的編碼方法,可以包括如下步驟:
[0028]步驟201:緩存待編碼文件;
[0029]步驟202:對(duì)待編碼文件中的源信息進(jìn)行第一次離散余弦變換;
[0030]步驟203:對(duì)待編碼文件中的源信息進(jìn)行第二次離散余弦變換;
[0031]步驟204:根據(jù)第一次離散余弦變換結(jié)果確定編碼碼率;
[0032]步驟205:根據(jù)第二次離散余弦變換結(jié)果及編碼碼率進(jìn)行編碼。
[0033]具體實(shí)施中,待編碼文件可以是視頻文件或音頻文件,也可以其他可被編碼處理的文件。
[0034]緩存是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache)。由于緩存的運(yùn)行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運(yùn)行。通常,當(dāng)某一硬件要讀取數(shù)據(jù)時(shí),會(huì)優(yōu)先從緩存中查找需要的數(shù)據(jù),如果在緩存中找到了所需數(shù)據(jù),則讀取所需數(shù)據(jù)繼續(xù)執(zhí)行處理任務(wù);如果在緩存中找不到所需數(shù)據(jù),才從內(nèi)存中查找所需數(shù)據(jù)。本發(fā)明實(shí)施例中為了保證編碼的速度,對(duì)待編碼文件進(jìn)行緩存。
[0035]本發(fā)明實(shí)施例中通過(guò)對(duì)待編碼文中的源信息件進(jìn)行第一次離散余弦變換和第二次離散余弦變換,即對(duì)待編碼文件中的源信息進(jìn)行兩次離散余弦變換,替換現(xiàn)有技術(shù)中的對(duì)待編碼文件中的源信息進(jìn)行一次離散余弦變換和一次離散余弦變換結(jié)果緩存,減少了對(duì)待編碼文件中的源信息進(jìn)行離散余弦變換結(jié)果的緩存。具體實(shí)施中,還可以對(duì)第一次離散余弦變換和一次離散余弦變換結(jié)果進(jìn)行Zigzag排序I處理,便于后續(xù)編碼處理。
[0036]例如,若待編碼文件為高清1920X 50i的視頻文件,原始視頻文件的數(shù)據(jù)量為74.25X20Mb,采用現(xiàn)有的編碼方案,首先需要將原始視頻文件(74.25X20Mb)緩存。然后,對(duì)該視頻文件進(jìn)行離散余弦變換后的數(shù)據(jù)量為74.25X32Mb,對(duì)離散余弦變換結(jié)果進(jìn)行緩存需要緩存資源74.25 X 32Mb, FPGA進(jìn)行碼率處理時(shí),還需要將緩存的離散余弦變換結(jié)果進(jìn)行讀緩存,需要緩存資源74.25X 32Mb,即:針對(duì)待編碼的文件進(jìn)行編碼需要的緩存資源為:(74.25X20+74.25X32+74.25X32)Mb。而采用本發(fā)明實(shí)施例提供的編碼方案后,首先需要將原始視頻文件(74.25 X 20Mb)緩存,兩次離散余弦變換需要對(duì)原始視頻文件進(jìn)行讀緩存,需要緩存資源為:74.25X20MbX2,兩次離散余弦變換后的結(jié)果直接用于編碼計(jì)算,無(wú)需緩存,因此,本發(fā)明實(shí)施例提供的編碼方案,需要的緩存資源為:(74.25X20X2)Mb。由上可知,本發(fā)明實(shí)施例提供的編碼方案相對(duì)于現(xiàn)有的編碼方案,可以節(jié)約緩存資源為(74.25X20+74.25X32+74.25X32)Mb-(74.25X20X2)Mb = 3.267Gbps,從而可以有效降低緩存資源消耗。
[0037]碼率又稱為采樣率。通常,單位時(shí)間內(nèi)采樣率越大,精度就越高,處理后的文件就越接近原始文件。但是文件體積與采樣率成正比,所以幾乎所有的編碼格式重視的都是如何用最低的碼率達(dá)到最少的失真,圍繞這個(gè)核心衍生出來(lái)的固定碼率編碼與可變碼率編碼。
[0038]根據(jù)第二次離散余弦變換結(jié)果及編碼碼率進(jìn)行編碼是因?yàn)榫幋a過(guò)程中,需要在一定編碼碼率下,將待編碼文件中的源信息作為編碼輸入進(jìn)行編碼。在具體實(shí)施中,編碼碼率可以采用固定碼率,也可以可變碼率。
[0039]實(shí)施中,該編碼方法,可以采用現(xiàn)場(chǎng)可編程門(mén)陣列FPGA對(duì)待編碼文件中的源信息進(jìn)行第一次離散余弦變換和第二次離散余弦變換。
[0040]具體實(shí)施中,由于FPGA是在PAL(ProgrammabIe Array Logic,可編程陣列邏輯)、GAL(Generic Array Logic,通用陣列邏輯)、CPLD (Complex Programmable LogicDevice,復(fù)雜可編程邏輯器件)等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。FPGA作為ASIC (Applicat1n Specific Integrated Circuit,特定用途集成電路)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的不足。本發(fā)明實(shí)施例提供的編碼方案中采用FPGA依據(jù)實(shí)際的編碼需要對(duì)FPGA進(jìn)行編程以處理待編碼文件中的源信息的第一次離散余弦變換和第二次離散余弦變換。
[0041 ] FPGA 內(nèi)部包括 CLB (Conf igurable Logic Block,可配置邏輯模塊)、1B (InputOutput Block,輸入輸出模塊)和內(nèi)部連線三個(gè)部分。FPGA利用小型查找表(16X1RAM)來(lái)實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來(lái)驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)1/0,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到1/0模塊。FPGA的邏輯是通過(guò)向內(nèi)部靜態(tài)存儲(chǔ)單元加載編程數(shù)據(jù)來(lái)實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與1/0間的連接方式,并最終決定了 FPGA所能實(shí)現(xiàn)的功能,F(xiàn)PGA允許無(wú)限次的編程。
[0042]實(shí)施中,該編碼方法,還可以包括:
[0043]將編碼配置存儲(chǔ)于第一配置模塊內(nèi);
[0044]將解碼配置存儲(chǔ)于第二配置模塊內(nèi);
[0045]通過(guò)控制模塊控制片選信號(hào)確定啟動(dòng)第一配置模塊內(nèi)的編碼配置,采用FPGA根據(jù)啟動(dòng)的第一配置模塊內(nèi)的編碼配置進(jìn)行編碼;
[0046]或者,
[0047]通過(guò)控制模塊控制片選信號(hào)確定啟動(dòng)第二配置模塊內(nèi)的解碼配置,采用FPGA根據(jù)啟動(dòng)的第二配置模塊內(nèi)的編碼配置進(jìn)行解碼。
[0048]具體實(shí)施中,由于在一些特定場(chǎng)景中,編碼和解碼不是同時(shí)進(jìn)行的,例如,攝像機(jī)在拍攝視頻文件時(shí),會(huì)將視頻文件中的源信息進(jìn)行編碼存儲(chǔ);攝像機(jī)在播放視頻文件時(shí),會(huì)將存儲(chǔ)的已編碼的文件進(jìn)行解碼。所以,本發(fā)明實(shí)施例中還提出了將編碼和解碼進(jìn)行時(shí)分復(fù)用。圖4為本發(fā)明實(shí)施例中提供的編碼方法中實(shí)現(xiàn)編碼、解碼時(shí)分復(fù)用的流程示意圖,如圖4所示,具體實(shí)現(xiàn)如下:
[0049]將編碼配置和解碼配置分開(kāi)存儲(chǔ)。即:將編碼配置存儲(chǔ)至第一配置模塊內(nèi),將解碼配置存儲(chǔ)于第二配置模塊內(nèi)。其中第一配置模塊和第二配置模塊均為可以存儲(chǔ)配置信啟、的存儲(chǔ)器。
[0050]設(shè)置一個(gè)由控制模塊控制的片選信號(hào),通過(guò)控制模塊控制片選信號(hào)來(lái)控制啟動(dòng)存儲(chǔ)編碼配置的第一配置模塊,采用FPGA依據(jù)編碼配置進(jìn)行編碼;通過(guò)控制模塊控制片選信號(hào)來(lái)控制啟動(dòng)存儲(chǔ)解碼配置的第二配置模塊,采用FPGA依據(jù)編碼配置進(jìn)行解碼。其中,控制模塊可以采用具有控制功能的CPU(Central Processing Unit,中央處理器)、單片機(jī)或其他控制功能模塊。
[0051]這樣采用一組FPGA計(jì)算處理能力只需大于編碼和解碼所需的最大值即可,就可以滿足視頻編解碼的需求。
[0052]實(shí)施中,采用FPGA根據(jù)啟動(dòng)的第一配置模塊內(nèi)的編碼配置進(jìn)行編碼,可以具體包括:
[0053]根據(jù)啟動(dòng)的第一配置模塊內(nèi)的編碼配置對(duì)FPGA進(jìn)行編碼初始化;
[0054]采用FPGA基于編碼初