縮方法實(shí)施例的壓縮數(shù)據(jù)頭信息 overhead數(shù)據(jù)存儲(chǔ)格式圖。
[0024] 圖8是本發(fā)明的應(yīng)用于視頻硬解碼的無(wú)損壓縮系統(tǒng)的結(jié)構(gòu)框圖。
[0025] 圖9是本發(fā)明的應(yīng)用于視頻硬解碼的無(wú)損壓縮系統(tǒng)中視頻解碼模塊的結(jié)構(gòu)框圖。
[0026] 圖10是本發(fā)明的應(yīng)用于視頻硬解碼的無(wú)損壓縮系統(tǒng)中壓縮模塊的結(jié)構(gòu)框圖。
[0027] 圖11是本發(fā)明的應(yīng)用于視頻硬解碼的無(wú)損壓縮系統(tǒng)中解壓縮模塊的結(jié)構(gòu)框圖。
[0028] W下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
【具體實(shí)施方式】
[0029] 參見(jiàn)圖1,圖1是本發(fā)明應(yīng)用于視頻硬解碼的無(wú)損壓縮方法的流程圖。首先執(zhí)行視 頻解碼步驟SI,解碼視頻碼流,輸出解碼后的YUV數(shù)據(jù),然后執(zhí)行步驟壓縮步驟S2,視頻解碼 步驟Sl輸出的YUV數(shù)據(jù)進(jìn)行無(wú)損壓縮,接著執(zhí)行存儲(chǔ)步驟S3,存放無(wú)損壓縮數(shù)據(jù),然后執(zhí)行 解壓縮步驟S4,對(duì)無(wú)損壓縮數(shù)據(jù)進(jìn)行解壓縮W及恢復(fù)原始YUV數(shù)據(jù)。
[0030] 下面結(jié)合圖2對(duì)上述壓縮步驟S2進(jìn)行詳細(xì)說(shuō)明,壓縮步驟S2首先執(zhí)行預(yù)測(cè)步驟 S21,通過(guò)預(yù)測(cè)模式對(duì)Y亮度塊、U色度塊和V色度塊分別進(jìn)行預(yù)測(cè)的步驟和計(jì)算預(yù)測(cè)值,然后 執(zhí)行分組步驟S22,根據(jù)預(yù)測(cè)值和原始值計(jì)算殘差的步驟W及對(duì)殘差進(jìn)行分組,最后執(zhí)行賭 編碼步驟S23,對(duì)分組步驟S22分組后的殘差的值進(jìn)行賭編碼。
[0031] 上述預(yù)測(cè)模式包括水平預(yù)測(cè)、垂直預(yù)測(cè)W及均值預(yù)測(cè),賭編碼步驟包括根據(jù)預(yù)測(cè) 模式和殘差計(jì)算各預(yù)測(cè)模式下Y亮度塊、U色度塊或者V色度塊的比特?cái)?shù)W及找出預(yù)測(cè)后使Y 亮度塊、U色度塊和V色度塊的比特?cái)?shù)最小的預(yù)測(cè)模式,并判斷最小的比特?cái)?shù)是否超過(guò)Y亮度 塊、U色度塊和V色度塊的原始比特?cái)?shù)。
[0032] 本發(fā)明的無(wú)損壓縮方法采用設(shè)計(jì)的VD-LFRC無(wú)損壓縮算法,此無(wú)損壓縮算法采用 大小為16x4的Y亮度塊和對(duì)應(yīng)的大小為8x2的U色度塊和V色度塊作為一個(gè)壓縮單元進(jìn)行無(wú) 損壓縮,壓縮步驟主要包括預(yù)測(cè)步驟,分組步驟W及賭編碼步驟。
[0033] 參見(jiàn)圖3,圖3為本發(fā)明應(yīng)用于視頻硬解碼的無(wú)損壓縮方法實(shí)施例的亮度預(yù)測(cè)圖, 對(duì)于一個(gè)壓縮單元,預(yù)測(cè)步驟將16x4的Y亮度塊分成2個(gè)大小為8x4塊分別壓縮,8x2的U色度 塊和8x2的V色度塊分別壓縮。對(duì)每個(gè)8x4的Y亮度塊或8x2的U或V色度塊,首先進(jìn)行預(yù)測(cè),預(yù) 測(cè)模式可使用水平預(yù)測(cè),垂直預(yù)測(cè)和均值預(yù)測(cè)算法,如圖3所示 表示水平預(yù)測(cè),采用左
邊的值進(jìn)行預(yù)測(cè)
表示垂直預(yù)測(cè),采用上邊的值進(jìn)行預(yù)測(cè): 表示水平均值預(yù)測(cè),采 用水平方向左邊和右邊的值進(jìn)行二值平均進(jìn)行預(yù)測(cè);
表示垂直均值預(yù)測(cè),采用垂直方 向上邊和下邊的值二值平均進(jìn)行預(yù)測(cè)。
[0034] 經(jīng)過(guò)上面的預(yù)測(cè)步驟,已經(jīng)得到每個(gè)點(diǎn)對(duì)應(yīng)的預(yù)測(cè)值,然后用原始數(shù)據(jù)減去所對(duì) 應(yīng)的預(yù)測(cè)值數(shù)據(jù),得到每個(gè)點(diǎn)經(jīng)過(guò)預(yù)測(cè)后的殘差值,分組步驟根據(jù)不同的預(yù)測(cè)模式對(duì)殘差 值進(jìn)行分組,參見(jiàn)圖4,根據(jù)預(yù)測(cè)順序W及依賴關(guān)系,將殘差值分為五組。
[0035] 賭編碼步驟對(duì)分組后的殘差值進(jìn)行賭編碼,為了描述方便,設(shè)為n組,每組m[ i ]個(gè) 殘差,i=〇~n-1。首先找到每組內(nèi)殘差的最大值和最小值,然后根據(jù)圖5所不的Bit Length 化ader范圍對(duì)應(yīng)表,算出此組數(shù)表示此范圍殘差所需要的比特?cái)?shù),記為head_length[i],i = 0~n,此值固定3個(gè)比特編碼,然后組內(nèi)的每個(gè)殘差數(shù)據(jù)根據(jù)head_length[i]進(jìn)行定長(zhǎng)賭編 碼,此外,編碼整組殘差數(shù)據(jù)還需要加上DC值,固定8比特,預(yù)測(cè)模式所需要的比特?cái)?shù),如采 用四種預(yù)測(cè)模式進(jìn)行編碼,則固定2比特表示預(yù)測(cè)模式,如采用八種預(yù)測(cè)模式進(jìn)行編碼,貝U 需固定化k特表示預(yù)測(cè)模式,故亮度賭編碼后總的bit數(shù)計(jì)算如下: Total_bit_model = 8 +預(yù)測(cè)模式比特?cái)?shù)
算出亮度預(yù)測(cè)模式進(jìn)行預(yù)測(cè)編碼后所需要的bit數(shù),選取bit數(shù)最小的預(yù)測(cè)模式作為此 亮度8x4壓縮的最佳模式。此外,在賭編碼階段,會(huì)判斷最佳的總的bit數(shù)是否超過(guò)當(dāng)前塊的 原始數(shù)據(jù),原始數(shù)據(jù)塊大小為8x4即為32byte,也就是25化it,如果超過(guò),直接用原始數(shù)據(jù)代 替。
[0036] 8x2的U色度塊和8x2的V色度塊的壓縮算法和8x4亮度塊的壓縮算法類(lèi)似,只是色 度U分量和色度V分量的大小只有亮度的一半,而且只有兩行,在預(yù)測(cè)上,可W減少色度分量 的預(yù)測(cè)模式,其它和亮度一樣。
[0037] 在經(jīng)過(guò)上面的無(wú)損壓縮步驟后,得到經(jīng)過(guò)壓縮后的數(shù)據(jù),為了和視頻解碼模塊配 合,在壓縮數(shù)據(jù)的存放上采用了如圖6所示的壓縮數(shù)據(jù)存儲(chǔ)格式,即對(duì)整帖圖像W四個(gè)像素 行為單位進(jìn)行緊湊壓縮存放,并且每四個(gè)像素行的起始地址固定,每四行壓縮后存放的起 始地址偏移為: ((PicUire Width + 15)〉〉 4) * 16* 4 * 1.5 除了壓縮數(shù)據(jù)外,為了方便讀取參考帖數(shù)據(jù)時(shí)進(jìn)行隨機(jī)訪問(wèn),還需要存放表示壓縮數(shù) 據(jù)長(zhǎng)度的頭信息overhead數(shù)據(jù),此部分?jǐn)?shù)據(jù)的存放格式如下:每四個(gè)壓縮單元占用56bit, 前面16bit為offset偏移信息,表示當(dāng)前四個(gè)壓縮單元存放地址相比其所在行起始地址的 偏移。后面的40bit存放四個(gè)壓縮單元占用的byte數(shù)及是否壓縮信息,每個(gè)壓縮單元lObit, 前兩個(gè)bit分別表示兩個(gè)8x4的Y亮度塊是否需要壓縮,第=個(gè)bit表示兩個(gè)8x2的U色度塊和 8x2的V色度塊是否壓縮,為了節(jié)省比特?cái)?shù),U色度塊和V色度塊作為一個(gè)整體來(lái)是否需要壓 縮,后面的屯個(gè)比特表示當(dāng)前壓縮單元經(jīng)過(guò)壓縮后的總長(zhǎng)度-1,Kbyte為單位。。
[0038] 在視頻解碼模塊解碼過(guò)程中,當(dāng)解碼到非INTRA塊時(shí),需要到DDR讀取參考帖數(shù)據(jù) 進(jìn)行插值運(yùn)算,此部分參考帖數(shù)據(jù)讀取消耗的帶寬占視頻解碼模塊解碼總帶寬的70%左右, 為了進(jìn)一步節(jié)省參考帖數(shù)據(jù)讀取的帶寬消耗,在采用VD-LFRC無(wú)損壓縮算法后,對(duì)參考帖數(shù) 據(jù)的讀取采用了二級(jí)化che架構(gòu)。一級(jí)化che為2D-Cache,用來(lái)緩存VD-LFRC解壓縮后的原始 YUV數(shù)據(jù),此2D-Cache的存在避免了同樣的YUV數(shù)據(jù)從DDR反復(fù)讀取的情況,由于數(shù)據(jù)已經(jīng)緩 存到了 2D-Cache,下次讀取時(shí),直接從2D-Cache讀取。具體設(shè)計(jì)上,此化che采用的是多way 的直接映射,亮度Luma大小為Wl X Hl X NI,Wl為寬度,考慮到DDR的屬性,Wl可定為32,H1 為高度,可設(shè)計(jì)為8,16,32,64等,NI表示way數(shù),可設(shè)計(jì)為2,4,8,16等;色度C虹oma大小為W2 X H2 X N2,W2為寬度,同樣考慮到DDR的屬性W2可定為32,肥為高度,可設(shè)計(jì)為8,16,32等, N2表示way數(shù),可設(shè)計(jì)為2,4,8,16等。在替換策略上,亮度和色度都可采用整帖數(shù)據(jù)的直接 地址映射,多way的替換可采用FIFO先進(jìn)先出策略,方便硬件實(shí)現(xiàn)。另外一級(jí)Cache為 Compress-Cache ,Compress-Cache用來(lái)存放壓縮后數(shù)據(jù),當(dāng)從孤R中讀取的壓縮數(shù)據(jù)在進(jìn)行 解壓縮時(shí),有很大概率在解壓縮的過(guò)程中,只用掉了部分讀取到的壓縮數(shù)據(jù),還有部分壓縮 數(shù)據(jù)未被解壓縮,但極大的概率在下一個(gè)塊的參考帖讀取中需要用到,為了節(jié)省帶寬,所W 加入了Compress-Cache來(lái)緩存壓縮數(shù)據(jù),此Cache的大小為:W3 X H3 X N3,W3同樣考慮DDR 屬性可定為32,H3為高度,可設(shè)計(jì)為8,16,32,64等,N3表示way數(shù),可設(shè)計(jì)為2,4,8,16等。由 于在VD-LFRC壓縮算法中將亮度和色度是作為一