Chapter 3 Design
3.3 Pre-decoding mechanism
由 3.2 中已經決定每一張 frame 的 PRT,但仍然無法確認每一張 frame 在 PRT 之後那些 pixels 仍須被使用。為了在每一張 frame 解碼之前,即確認該張 frame 所有 pixels 在 PRT 後是否仍須被使用,我們必須去追蹤後續 16 frames 的參考資 訊,其主要原因是每一張 frame 的 pixels 最多被後續 16 frames 所參考。
為了在每一張 frame 解碼之前,即確認該張 frame 所有 pixels 在 PRT 後是否 仍須被使用,我們提出 Pre-decoding mechanism。如 Figure 3-5 所示,此機制包 含了:
1. 一個 Partial decoder(為傳統 H.264 decoder 的 entropy decoder 的簡化),用 來獲得每一張 frame 的參考資訊。
33
2. 一個 PRT Table,用來記錄每一個 pixel 在 PRT 之後是否仍須被使用的資 訊。
3. 一個 Input Buffer,用來儲存由 encoder 所送來的 Encoded frames,當 Frame n 的 PRT 資訊紀錄完成後,則將 Encoded frame n 送入 decoder 做解碼。
Figure 3-5 Block diagram of pre-decoding mechanism.
3.3.1 Partial decoder
此 partial decoder 為傳統 H.264 decoder 中的 entropy decoder 的簡化,相較於 entropy decoder 其功用僅負責解碼出每一張 frame 的參考資訊,其中包含所參考 的 frame ID 、 motion vector( 所 參 考 的 位 置 ) 以 及 block size of motion compensation(所參考的範圍大小)並將上述資訊輸出給 PRT Table 做紀錄。
3.3.2 PRT Table
在預先解碼的過程中,我們額外設計一個儲存裝置,記錄每一個 pixel 在 PRT 之後是否仍須被使用,稱為 PRT Table,如 Figure 3-6 所示。由於每一個 pixel 是由 luma(亮度)以及 chroma(色度)所組成,且此兩部分的 PRT information 不盡 相同,因此我們須分別記錄 luma 以及 chroma 的 PRT info,此後我們皆以 luma 做舉例。為了縮減 PRT 所需的儲存空間,我們僅用 1 個 bit 去紀錄每一個 pixel
34
在 PRT 之後是否仍須留下。當每一張 frame 的 PRT 到達時,則每一個 pixel 的 PRT bit 即可代表此 pixel 是否仍需留下。
Figure 3-6 Data structure of PRT table.
PRT Table 同時須保留住 17 張 frames 相關的 PRT 資訊,我們由 Figure 3-7 來 說明原因。以 frame F0為例,F0的 PRT table 從時間 t1 開始記錄,直到時間 t17 結束此 F0PRT table 才完成。因此,我們需要同時保留 17 張 frames 的 PRT info.。
Figure 3-7 Pre-decoding and decoding time of frames.
由於同時保留 17 張 frames 的 PRT information,即使對於每一個 pixel 僅使用 1 個 bit 紀錄是否仍需留下,仍可能導致 PRT Table 儲存空間過大的問題。因此,
Time unit: Time to decode one frame
PRT table of F0 creation
PRT table of F0 done
…
35
決定適合的 block size 做為紀錄的單位,可以有效控制 PRT Table 所需的儲存空 間。(block:一張 frame 可切成多個相同大小的 block,並且彼此不重疊)
對於不同的 block sizes,Table 3-1 估算了 17 張 frames 所需的 PRT Table 儲存 空間,隨著 block size 增大,其所需的 PRT table size 則越來越小。但由於以不同 的 block sizes 做紀錄,會影響每一張 frame 在 PRT 後所需留下的資料量,當 block size 增加時,其所留下的資料量亦會增加。因此對於用何種 block size 作為紀錄 PRT info.的基本單位,我們將由 simulation 的結果決定。
Table 3-1 Required PRT table size for different block sizes in unit of storing on frame’s pixels.
3.3.3 Input Buffer
在 Pre-decoding mechanism 中,對於每一張 frame 我們為了預先部分解碼後續 16 張 frame 的參考資訊,因此延遲了每一張 frame 真正解碼的時間。由 Figure 3-7 所示,在 t17 之後才開始解碼 Frame 0,在此之前 Input Buffer 需保留住 Frame 0~Frame 16 經由編碼過後的資訊。因此,Input Buffer 同時須保留住 17 encoded frames。根據 H.264 壓縮率的統計[5],17 encoded frames 總共約 0.53 張 frame size(frame size: 儲存一張 frame 所需的儲存空間)。
Block size Size of PRT table of 17 frames (Unit : size of storing one frame)
The number of pixels which are needed to be kept after PRT for each frame 1 pixel (Luma)1.42+(chroma)0.36
2*2 pixels 0.36+0.09
4*4 pixels 0.09+0.023
8*8 pixels 0.023+0.06
16*16 pixels 0.006+0.0015
The number of pixels which is needed to be kept increase
36