• 沒有找到結果。

I-Shou University Institutional Repository:Item 987654321/21501

N/A
N/A
Protected

Academic year: 2021

Share "I-Shou University Institutional Repository:Item 987654321/21501"

Copied!
106
0
0

加載中.... (立即查看全文)

全文

(1)

高效能嵌入式視訊編碼位元率控制系統之研究

A study of highly efficient embedded rate control for

video encoding system

研究生:彭采庭

指導教授:王周珍 博士

共同指導:謝東宏 博士

義守大學

電子工程學系

碩士班碩士論文

A Thesis Submitted to

Department of Electronic Engineering

I-Shou University

in

Partial Fulfillment of the Requirements

for the Master degree

with a

Major in Electronic Engineering

July 2017

Kaohsiung, Taiwan

Republic of China

(2)
(3)

高效能嵌入式視訊編碼位元率控制系統之研究

研究生:彭采庭

指導教授:王周珍

義守大學電子工程研究所

摘要

H.264 是現今最常採用的商業視訊編碼標準,尤其是應用在視訊電話和視訊 監控系統,然而早期視訊設備因硬體限制和價格考量,大多採用 30 萬畫素低解 析度(640480)的視訊,因此當影像放大後常常導致品質不佳且模糊,以至於無法 進行影像識別。為了克服此問題,本論文提出高效能視訊編碼位元率控制系統, 並進一步嵌入至 ADSP-BF548 的數位訊號處理(digital signal processing: DSP)開發 板中,來完成高解析度之 H.264 視訊編碼與傳輸的 DSP 實現。

H.264 視訊標準在測試平台(JM11.0)進行位元率控制時[5],須先利用線性迴 歸分析(linear regress analysis)來預測待編巨方塊(macroblock: MB)的平均絕對値 差(mean absolute distortion: MAD),再運用二次方位元量化模型(rate-quantization model: R-Q model)來達到各層的位元率控制(包括 frame layer 和 MB layer),並進 行位元配置(bits allocate)和決定量化參數(quantization parameter: QP),最後執行 最佳位元失真(rate distortion optimization: RDO)完成編碼。但因 H.264 所採用 R-Q 的模型較簡單,常導致 MAD 預測的準確度不高,以致於視訊品質仍無法滿足 要求。為了改善上述的問題,本論文利用自然視訊具有高時空相關性(spatio-temporal correlation)的本質,結合快速畫框內模式預測(intra-mode prediction)與位 元率控制器,建構出一個高效能 H.264 位元率控制系統。由實驗結果可以發現在 不同頻寬的傳輸通道下,本論文所提出的位元率控制演算法比 JM 11.0 更能達到

(4)

穩定的視訊傳輸效能,並且提供較好的視訊品質,特別是在畫面變動率較高或者 是場景變換的情形。

此外,為了有效完成所提出 H.264 視訊位元率控制器在 DSP 硬體的實現, 首先必須完成 DSP 內部記憶體最佳化配置,我們將高效能位元控制緩衝器配置 在外部記憶體 L3(DDR SDRAM)中,來提高解析度至 19201080 全高畫質(full high definition: FHD)視訊編碼,並將運動估測(motion estimation: ME)模組所需之 參考畫面直接配置到內部記憶體 L2(SRAM)中,進一步提升 ME 模組的執行效 率。其次,我們利用 Blackfin 系列專用指令對程式碼進行撰寫與優化[11],使程 式能夠更流暢的運作於 ADSP-BF548 開發板,提高 H.264 整體編碼效率。最後, 我們將所提的高效能 H.264 視訊編碼位元率控制系統,成功嵌入在 ADSP-BF548 開發板上,並完成實驗模擬與測試。 經由不同解析度影像序列進行 DSP 硬體實驗結果顯示,本論文所提高效能 H.264 嵌入式位元率控制系統的視訊品質(PSNRY)比 JM 11.0 平均改善約 0.59 dB, 而且可以大幅改善 JM11.0 所造成的跳畫框情形。此外,經由最佳的記憶體配置, 整體編碼的時間改善率(time improving ratio: TIR)平均約為 44.07%。從實驗結果 的驗證,論文所提方法確實能大幅提升 H.264 位元率控制效能,提供更穩定的視 訊品質,適合直接應用在現今的視訊監控產品上。

(5)

A study of highly efficient embedded rate control for

video encoding system

Student: Tsai-Ting Peng Advisor: Chou-Chen Wang

Department of Electronic Engineering, I-Shou University

ABSTRACT

Nowadays, H.264 video standard is widely used in many commercial applications, especially used for videophone and surveillance systems. However, most of early surveillance equipment adopts low-resolution (640×480 pixels) video standard due to the consideration of hardware and cost. This leads to an obstacle for image recognition since the quality of enlarged image is poor and blurring. In order to overcome this problem, a highly efficient video rate control system is embedded on ADSP-BF548 digital signal processor (DSP). Finally, we achieve a H.264 baseline encoder for full high definition (FHD) video transmission.

When performing H.264 rate control (JM11.0) [16], a linear regression analysis is firstly used to predict mean absolute distortion (MAD) of macroblock (MB). Then, a quadratic rate-quantization (R-Q) model is adopted to reach rate control of each layer (including frame layer and MB layer). Finally, a proper quantization parameter (QP) is determined according to the number of allocated bits and R-Q model to achieve video rate control. However, traditional rate control schemes cannot meet the requirement of FHD video quality due to a simple R-Q model. To meet FHD video quality, an improved rate control scheme for low delay H.264 video coding is proposed in this

(6)

thesis. A fast and best selection of initial QP is firstly proposed in the group of pictures (GOP) layer rate control. Then, an improved MAD prediction model and overhead bits prediction method is adopted in the MB layer rate control.

In order to achieve a FHD video low-delay requirement of embedded H.264 encoder based on ADSP-BF548, we use a highly efficient memory assignment technique to modify the allocated internal memory and optimize the source codes, separately. Firstly, the we analysis the complexity of encoding modules for H.264, and then we re-allocate the reference frame from L3 DDR-RAM to L2 SRAM to increase the speed of execution of ME module and re-allocate the function of consuming module from L3 DDR-RAM to L1 SRAM. Secondly, we make use of direct memory access (DMA) and the default function of ADSP-BF548 to carry out program steps. Finally, we completed the highly efficient embedded rate control for video encoding system based on ADSP-BF548 successfully.

Experimental results show that our proposed rate control system for FHD video can achieve an average PSNRY gain of about 0.59 dB when compared with JM11.0. In addition, the proposed scheme improves the number of frame skipped and reduces the quality deviations of the initial frames by choosing the best initial QP. Furthermore, we can achieve an average time improving ratio (TIR) about 44.07% when compared with the directly embedded H.264 encoder on ADSP-BF548. It is obvious that the proposed embedded H.264 video rate control system can be directly applied to consumer high-resolution video applications.

(7)

致謝

研究室的兩年生活即將結束,首先要先感謝王周珍老師,總是不厭其煩地傳 授專業的相關知識給我,時常也會撥出自己額外的時間來教導我,並且在老師細 心嚴謹的教導下,使我專業能力提升不少。除了吸收老師的專業相關知識外,也 學到很多老師做人處事的態度,尤其是凡事都嚴謹的態度更是讓我佩服,是我值 得學習的對象。除此之外,在學習中難免會有挫折,謝謝老師時不時的提醒與鼓 勵。 回想剛進實驗室的我,對程式是滿腔的熱血,但進實驗才發現程式沒有大學 時寫個九九乘法這麼容易,在此感謝彥慈、奕安、明順、俊儒學長,教導我寫程 式的基礎及技巧,且在我遇到困難時,互相切磋程式技巧並適時的幫助我,使我 程式技巧更上一層樓。 也感謝在這兩年說長不長說短不短的時間裡,一起寫程式,一起趕報告,一 起研究論文的同學,亮君、博珽、宏銘,有許多問題,經由我們互相討論之後都 迎刃而解。以及松輝、涵郁,每次研討會或開會都幫忙準備一些資料及架電腦, 讓我在報告之前都保持頭腦清晰,也因為有你們,我的研究生涯多采多姿。 特別感謝棋偉以及世欣學長,百忙之中特別抽空幫助我快速的熟悉開發板, 讓我可以很快的進入狀況,並且碰到關於開發板的問題也都很熱心的回答我,此 外也常常跟我分享工作經驗,讓我知道進入職場前要準備哪些專業知識及技能。 最後非常感謝這兩年來支持我的家人,讓我毫無後顧之憂,能夠使我專心研 讀。且在我心情低落時鼓勵我,讓我重振心情繼續奮發圖強,你們的支持是我精 神上永遠的支柱。 謹以此論文獻給我的父母、師長及所有關心我的人

(8)

目錄

摘要 ... i

ABSTRACT ... iii

致謝 ... v

目錄 ... vi

圖目錄 ... ix

表目錄 ... xii

第一章 緒論 ... 1

1.1 研究背景 ... 1

1.2 研究動機 ... 2

1.3 論文架構 ... 3

第二章 ADSP-BF548 開發板 ... 4

2.1 開發板的選擇 ... 4

2.2 ADSP-BF548 開發板硬體介紹 ... 6

2.2.1 ADSP-BF548 處理器 ... 6

2.2.2 ADSP-BF548 硬體架構 ... 8

2.2.3 ADSP-BF548 記憶體架構 ... 9

2.3 ADSP-BF548 韌體開發環境介紹 ... 11

(9)

2.3.1 DSP 記憶體配置 ... 13

2.3.2 ADSP-BF548 記憶體配置 ... 14

2.4 ADSP-BF548 周邊介紹... 17

2.4.1 UART ... 17

2.4.2 USB ... 19

2.4.3 DMA ... 23

第三章 H.264 視訊編碼標準與位元率控制 ... 24

3.1 H.264 視訊編碼標準介紹 ... 24

3.1.1 H.264 規範 ... 24

3.1.2 H.264 編碼系統架構 ... 27

3.2 H.264 位元率控制系統 ... 30

3.2.1 H.264 位元率控制系統演算法 ... 33

3.2.2 H.264 位元率控制系統問題分析 ... 34

3.2.3 適應性 H.264 位元率控制系統 ... 38

第四章 高效能嵌入式視訊編碼位元率控制系統 ... 45

4.1 記憶體配置 ... 45

4.1.1 記憶體配置分析 ... 47

4.1.2 模組複雜度分析 ... 52

4.1.3 最佳記憶體配置 ... 53

4.2 探討解析度限制 ... 56

(10)

4.2.1 記憶體使用對於解析度的限制 ... 56

4.2.2 高解析度程式的改良 ... 59

第五章 實驗結果與討論 ... 62

5.1 實驗參數設定 ... 62

5.2 實驗結果分析與比較 ... 68

第六章 結論 ... 76

參考文獻 ... 77

附錄 A ... 79

A.1 記憶體配置檔 ... 79

附錄 B ... 86

B.1 改良 H.264 程式段 ... 86

(11)

圖目錄

圖 2.1、晶片效能與靈活度關係曲線示意圖[6] ... 5 圖 2.2、ADSP-BF548 示意圖 ... 5 圖 2.3、ADSP-BF548 處理器核心結構示意圖[8] ... 7 圖 2.4、ADSP-BF548 硬體架構示意圖[8] ... 7 圖 2.5、ADSP-BF548 記憶體架構示意圖 ... 8 圖 2.6、ADSP-BF548 記憶體位址分佈示意圖[8] ... 10 圖 2.7、嵌入式系統-交叉平台開發架構示意圖 ... 12 圖 2.8、VDSP++將程式嵌入至 ADSP-BF548 開發板的流程示意圖 ... 12 圖 2.9、DSP 記憶體區塊配置舉例示意圖... 14 圖 2.10、memory 虛指令格式示意圖 ... 15 圖 2.11、sections 虛指令格式示意圖 ... 15 圖 2.12、Proj_548_ezkit_heaptab.c 指令格式示意圖 ... 16 圖 2.13、L1_heap 使用指令格式示意圖 ... 16

圖 2.14、L1_heap memory map 示意圖 ... 16

圖 2.15、start_code 記憶體位址示意圖 ... 17 圖 2.16、UART 傳輸示意圖 ... 18 圖 2.17、UART 串列通訊非同步傳輸封包格式示意圖 ... 19 圖 2.18、PC 設定鮑率資訊示意圖 ... 19 圖 2.19、FAT16 結構示意圖 ... 22 圖 2.20、DMA 與周邊關係示意圖 ... 22 圖 3.1、H.264 的分層架構示意圖 ... 27 圖 3.2、H.264 檔案格式示意圖 ... 28 圖 3.3、H.264 VCL 系統方塊示意圖 ... 28

(12)

圖 3.4、H.264 位元率控制系統示意圖 ... 30 圖 3.5、緩衝器控制正常情形示意圖 ... 31 圖 3.6、緩衝器控制溢位情形示意圖 ... 32 圖 3.7、緩衝器控制不足情形示意圖 ... 32 圖 3.8、JM11.0 位元率控制系統示意圖 ... 33 圖 3.9、832×480 Race Horses 影像序列 ... 35

圖 3.10、頻寬 2 Mbps 下,RaceHorses 位元率控制效能圖,(a) PSNRY 趨勢圖(b) PSNRY 緩衝器位元佔有率趨勢圖 ... 37 圖 3.11、局部畫面劇烈變化時示意圖 ... 38 圖 3.12、於 2 Mbps 頻寬下,BSA 搜尋最佳量化參數示意圖 ... 39 圖 3.13、時空關聯性模型示意圖 ... 40 圖 3.14、檔頭位元的時間關聯性分析 ... 41 圖 3.15、實際 MAD 與粗略 MAD 的差異性分析 ... 41 圖 3.16、適應性 H.264 位元率控制流程圖 ... 44 圖 4.1、H.264 L1 heap 區段實際使用情況示意圖 ... 50 圖 4.2、畫框切 Slice 示意圖 ... 60

圖 4.3、系統流程示意圖(a)傳統 H.264 系統流程(b)encode one frame 系統流程 ... 60

圖 4.4、系統流程示意圖(a)改良 H.264 系統流程(b)encode one frame 系統流程 ... 61

圖 5.1、QCIF Akiyo 影像序列 ... 63 圖 5.2、QCIF Foreman 影像序列 ... 63 圖 5.3、QCIF Stefan 影像序列 ... 63 圖 5.4、416×240 BQ Square 影像序列 ... 63 圖 5.5、416×240 Blowing Bubbles 影像序列 ... 64 圖 5.6、416×240 Race Horses 影像序列 ... 64 圖 5.7、832×480 BQ Mall 影像序列 ... 64

(13)

圖 5.9、1280×720 Vidyo1 影像序列 ... 65 圖 5.10、1280×720 Vidyo3 影像序列 ... 66 圖 5.11、1280×720 Vidyo 4 影像序列 ... 66 圖 5.12、1920×1080 Cactus 影像序列 ... 67 圖 5.13、1920×1080 Basketball Drive 影像序列 ... 67 圖 5.14、1920×1080 BQ Terrace 影像序列 ... 68

圖 5.15、頻寬 27 Kbps 下,Foreman 位元率控制效能圖,(a) PSNRY 比較(b)緩衝器位元 佔有率比較 ... 69

圖 5.16、頻寬 500 Kbps 下,Blowing Bubbles 位元率控制效能圖(a) PSNRY 比較(b)緩衝 器位元佔有率比較 ... 70

圖 5.17、頻寬 2 Mbps 下,Race Horses 位元率控制效能圖(a) PSNRY 比較(b)緩衝器位元 佔有率比較 ... 71

圖 5.18、頻寬 2 Mbps 下,vidyo 4 位元率控制效能圖(a) PSNRY 比較(b)緩衝器位元佔有 率比較 ... 72

圖 5.19、頻寬 2 Mbps 下,Basketball Drive 位元率控制效能圖(a) PSNRY 比較(b)緩衝器 位元佔有率比較 ... 73

(14)

表目錄

表 2.1、CBW 封包結構 ... 20 表 2.2、CSW 封包結構 ... 21 表 3.1、H.264 視訊編碼標準 Level 規格表 ... 26 表 3.2、H.264 最佳模式選擇的數學工具表 ... 30 表 4.1、ADSP-BF548 周邊記憶體配置 ... 46 表 4.2、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L1) ... 48 表 4.3、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L2) ... 49 表 4.4、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L3) ... 50 表 4.5、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L1)初步調整 ... 51 表 4.6、模組複雜度分析 ... 52 表 4.7、最佳化記憶體配置(L1) ... 54 表 4.8、最佳化記憶體配置(L2) ... 54 表 4.9、最佳化記憶體配置(L3) ... 55 表 4.10、H.264 對於 ADSP L3 配置及應用 ... 57 表 4.11、H.264 解析度 832×480 對於記憶體的使用 ... 58 表 4.12、H.264 解析度 1920×1080 需要的記憶體大小 ... 58 表 4.13、H.264 解析度 1920×160 需要的記憶體大小 ... 61 表 5.1、不同解析度對於頻寬設定對照表 ... 62 表 5.2、不同解析度 QCIF,於頻寬 27 Kbps 下效能 ... 74 表 5.3、解析度 416×240,於頻寬 500 Kbps 下效能 ... 74 表 5.4、解析度 832×480,於頻寬 2 Mbps 下效能... 74 表 5.5、解析度 1280×720,於頻寬 2 Mbps 下效能... 74 表 5.6、解析度 1920×1080,於頻寬 2 Mbps 下效能... 75

(15)
(16)

第一章 緒論

隨著科技產業的蓬勃發展,現今視訊編碼標準更是包羅萬象。隨著多媒體及 行動裝置的普及化,以及人們對於這些電子產品的需求不斷的增加,視訊標準勢 必要跟著不斷的進步。從以前的 MPEG、H.26x 系列直到現在最廣泛使用的 H.264, 在我們的生活周遭隨處可見的監控系統,不論是政府、企業或是私人所用,大部 分都還是以 H.264 為主。因為 H.265 視訊標準剛制定完善,尚未普及化,且專利 授權費用依然高,所以在短時間內是無法汰舊換新的,那麼在市場上的需求 H.264 依然是非常重要。

1.1 研究背景

進 階 視 訊 編 碼 (advanced video coding: AVC) 標 準 , 通 常 又 合 併 稱 之 為 H.264/AVC,或簡稱 H.264[1],是由國際電信聯盟(international telecommunication union: ITU)中的視訊編碼專家組(video coding experts group: VCEG)以及國際標準 組 織 (international organization for standardization: ISO) 中 的 動 態 圖 像 專 家 組 (moving picture experts group: MPEG)所共同制定的視訊壓縮標準,也是近年來使 用最普及的視訊標準。

H.264 提供了四種主要的規範:基本規範(baseline profile: BP)、主要規範(main profile: MP)、高級規範(high profile: HP)以及延伸規範(extended profile: EP)[2]。其 中 BP 視訊格式複雜度低,主要應用於行動視訊裝置;MP 壓縮效能較好,主要 應用於數位電視;HP 提供較好的量化步階參數,主要應用於高畫質的數位電視; EP 更是提供較高的壓縮能力及技巧,主要應用於多媒體串流,這些規範提供使 用者可以根據不同的情況來選擇適合的規範來使用。

為了使 H.264 視訊標準能廣泛運用於消費性電子產品,近年有很多學者會採 用低功耗且高效能的數位訊號處理(digital signal processing: DSP)開發板來進行模

(17)

擬及研究,本論文將採用亞德諾(ADI)和英特爾(Intel)這兩個公司所聯合開發的 ADSP-BF548 開發板[3],並有效的將 H.264 視訊位元控制器在 DSP 硬體中實現。

1.2 研究動機

如今的社會是人手一支智慧型手機或是擁有一台平板電腦,甚至是家家戶戶 都有一台數位電視,甚至是滿街的監控系統,這些數位行動多媒體的產品在我們 不知不覺裡,已充斥在我們的生活上成為不可或缺的產品。而以監控系統來說, 早期設備因硬體的限制和價格上的考量,大多採用較低的影像解析度,而近期也 有新聞報導台北捷運站監視器至今仍有 8 成依舊只有 30 萬低影像解析度[4],然 而若將影像放大,常常導致影像品質不佳且模糊,所以無法進行影像識別。為了 克服此問題,本論文提出高效能視訊編碼位元率控制系統,並進一步嵌入至 ADSP-BF548 的數位訊號處理開發板中,來完成高解析度之 H.264 視訊編碼與傳 輸。 除了高解析度的編碼之外,在傳輸環境中的位元率的控制也是不容小覷的, 尤其是在高畫質的傳輸上,其資料量勢必很大,那麼所存的資料以及傳輸頻寬的 重要性可想而知。而 H.264 視訊標準在測試平台(JM11.0)進行位元率控制時[5], 必須先利用線性迴歸分析(linear regress analysis)來預測待編巨方塊(macroblock: MB)的平均絕對値差(mean absolute distortion: MAD),而後進行二次方的位元量 化模型(rate-quantization model: R-Q model) 來達到各層的位元率控制,包括畫框 群層(group of pictures: GOP layer)、畫框層(frame layer)和基本單元層(basic unit layer)或稱 MB 層(MB layer),並進行位元配置(bits allocate)和決定量化參數 (quantization parameter: QP),最後再執行最佳位元失真(rate distortion optimization: RDO)完成編碼。但 H.264 再最初進行位元率控制中,初始 QP 則是會影響後續 的 QP 決定,QP 的決定又會影響這一張畫面的位元率。對於固定傳輸頻寬,若 是一開始為了保持品質而設定的 QP 較小,也就是第一張畫面位元率高過於傳輸 頻寬,將會導致第二張為了要壓縮位元率,QP 變大而位元率則小於傳輸頻寬,

(18)

但相對地第二張畫面品質就會突然變得很差,並且造成延遲的問題,所以初始 QP 不應該草率決定,那如何設定初始 QP 是一個可以探討的問題。除了初始 QP 的 設定之外,H.264 位元率控制所使用的線性回歸預測 MAD,雖然有考慮到時空 的關聯性,但因為預測的模型過於簡單,導致預測 MAD 的準確度並不高,這也 是一個值得探討的問題。 由於 H.264 程式過於龐大,無法直接應用於消費性產品上,若能完成全高畫 質 19201080 (full high definition: FHD)視訊嵌入到 ADSP-BF548 內,對未來在監 控上將有很大的商機。其中 ADSP-BF548 開發板有與 PC 相似的運算性能,可以 讓使用者能夠快速又方便地進行軟體的升級和增加新的功能,且具有低價格、低 功耗和適應性廣泛等優點,而經由我們多方面的考慮後,我們決定採用 ADSP-BF548 開發板。並藉由此開發板來探討其實際韌體架構,尤其是如何在有限的記 憶體中,將 H.264 編碼系統嵌入至 ADSP-BF548,且規劃出高效能的記憶體配置, 而達到 FHD 即時編碼為本篇論文所要研究的主題。

1.3 論文架構

本篇論文架構:第一章說明研究背景、動機與目的;第二章說明所使用的 ADSP-BF548 開發板的環境與周邊介紹;第三章一開始說明 H.264 訊編碼標準的 規範以及系統架構,並且介紹位元率的控制及其分析、探討和改良;第四章則是 將 H.264 位元控制改良嵌入至 ADSP-BF548,並且分析及探討所遇到的問題;第 五章實驗結果與討論;第六章是最後結論。

(19)

第二章 ADSP-BF548 開發板

現在市面上有各式各樣的多媒體行動產品,包括手機、平板、電視等,這些 都是嵌入式系統的應用,它的蹤跡早已遍佈在你我生活的周遭。這些嵌入式系統 產品主要是針對某些特定的功能做開發,而開發人員可以對它進行最佳化,同時 考慮到使用著的需求設計成小尺寸,及成本如何降到最低。 所以選擇開發板及軟體開發工具是首要項目,而市面上所提供的開發板更是 五花八門,如何在這琳瑯滿目的開發板中挑選出適合應用於多媒體行動裝置,勢 必需要了解其處理器的核心速度、架構及其週邊設備,貨比三家之後再做選擇, 本章節一開始將會選擇適合的開發板並介紹其核心速度、架構及周邊設置。

2.1 開發板的選擇

現今主流的數位訊號處理開發板,有以下幾個具代表性的廠商,如德州儀器、 亞德諾、飛思卡爾等大廠,每一家廠商產品所搭載的晶片各不相同其成本及效能 亦大大不相同,如圖 2.1 所示的晶片效能與靈活度關係曲線示意圖,以產品開發 者的角度來看,雖然特殊應用積體電路(application-specific integrated circuit: ASIC) 與應用特定標準產品(application-specific standard product: ASSP)可以專為數位視 訊的應用去特別設計,並可以提供出色的性能以及低功耗,但是依指定規格所製 作的晶片,是無法對電路的組態作任意的改變,而開發過程中若需要變換模組, 則需要再一次重新設計晶片,所以靈活性並不高,並不適合應用於需要不斷變更 產品設計的開發過程中。相對而言,DSP 及現場可程式化邏輯閘陣列(field programmable gate arrays: FPGA)它們的效能雖然不及 ASIC 和 ASSP,但在硬體 上還是具有乘法器及累加器來加速視訊編解碼演算法的執行速度,且兩者都具有 可以更改電路組態的靈活性及可重配置性,適合用於產品開發與設計階段時之應 用,且可以縮短開發的時程及成本的降低。而在 DSP 及 FPGA 中,DSP 除了有

(20)

圖 2.1、晶片效能與靈活度關係曲線示意圖[6]

(21)

提供運算功能外,更將微控制器功能、訊號處理最佳化及多種晶片內建周邊,整 合於同一封裝中,能夠符合成本效益加快開發時間。最後考慮其效能及價格,本 論文採用亞德諾的 ADSP-BF548 來進行 H.264 編碼器的實現。

2.2 ADSP-BF548 開發板硬體介紹

由上一小節得出本論文採用亞德諾與英特爾一起聯合開 發的 Blackfin® ADSP-BF548[7],如圖 2.2 所示,其模組包括 LCD 面板、通用序列匯流排(universal serial bus ports: USB)、keypad 和通用非同步收發傳輸器(universal asynchronous receiver/transmitter ports: UART)等,Blackfin® ADSP-BF54X 這一系列的 DSP 晶 片是專門針對多媒體應用所設計,並支援音訊、視訊、通訊等應用,詳細的處理 器、硬體架構、開發環境與周邊在以下小節將會詳細說明。

2.2.1 ADSP-BF548 處理器

ADSP-BF548 處 理 器 所 採 用 的 改 良 過 的 哈 佛 結 構 (modified harvard architecture)如圖 2.3 所示,主要分成三部分:位址運算單元,控制單元、資料運 算單元。其中資料運算單元包括 2 個 40 位元的邏輯運算單元(arithmetic logic unit: ALU)、4 個 8 位元的視頻 ALU、1 個 40 位元的移位器(barrel shifter)、2 個 40 位 元的累加器(A0、A1)及 2 個 16 位元的乘法器是計算單元,是用來處理暫存器中 的 8、16 或 32 位元的資料,而且含有乘加器(multiply-accumulate: MAC)技術, 在每一週期完成一次 16 位元乘 16 位元的乘法運算,可以直接把結果累加到 40 位元的累加器中。位址運算單元則包括資料位址產生器(data address generator: DAG)、堆疊指標(stack pointer: SP):於記憶體規劃一範圍來暫存資料採用先進後 出、變址暫存器(I0-I3):時被存取的資料位址、長度暫存器(L0-L3):用在環狀緩 衝的長度、修正暫存器(M0-M3):於運算後修正變址暫存器內容值、指標暫存器 (P0-P5):記錄記憶體的位置、數據暫存器(R0.H-R7.H、R0.L-R7.L):其中 H 表示

(22)

圖 2.3、ADSP-BF548 處理器核心結構示意圖[8]

(23)

高位元而 L 表示低位元。而控制單元則是負責取指令、指令排序、指令解碼以及 記憶體緩衝器。

2.2.2 ADSP-BF548 硬體架構

ADSP-BF548 硬體架構如圖 2.4 所示,包括靜態隨機存取記憶體(static random access memory: SRAM)內部記憶體:L1 和 L2、雙倍資料率同步動態隨機存取記 憶體(double data rate synchronous dynamic random access memory: DDR SDRAM) 外部記憶體:L3、直接記憶體存取控制器(direct memory access: DMA)、UART、 串流周邊介面(serials peripheral interface ports: SPIs)、串流埠(serials ports: SPORTs)、 進階並行外部接口(enhanced parallel peripheral interface: EPPI)、雙線介面(two 2-wire interface: TWI)、USB ports 及 keypad 等其他設備。

(24)

2.2.3 ADSP-BF548 記憶體架構

ADSP-BF548 記憶體架構如圖 2.5 所示,使用的是多階層的記憶體結構 (hierarchical memory structure),總共 3 層:內部記憶體(internal memory) Level 1(L1)、Level 2(L2)及外部記憶體 Level 3(L3)。其中 L1 共有 196KB,通常以全速 533MHz 運作,是速度最快的;而 L2 共有 128KB 提供使用者自由規劃,速度為 最高核心速度一半 267MHz;外部記憶體 L3 則有 64MB,其容量最大,但速度 僅 133MHz,是三種記憶體中速度最慢的。 其 ADSP-BF548 記憶體位址分佈如圖 2.6 所示,L1 有 4KB 的快取記憶體 (scratchpad SDRAM),記憶體位址從 0×FFB0 0000 至 0×FFB0 0FFF、64KB 的指 令記憶體,分別為 0×FFA1 0000 至 0×FFA1 3FFF(instruction SRAM / cache: 16KB) 以及 0×FFA0 0000 至 0×FFA0 BFFF(instruction bank A SRAM、instruction bank B SRAM: 48KB)和 64KB 的資料記憶體分別為 0×FF90 0000 至 0×FF90 7FFF(data bank B SRAM / cache、data bank B SRAM: 32KB)以及 0×FF80 0000 至 0×FF80 7FFF(data bank A SRAM / cache、data bank A SRAM: 32KB);而 L2 共有 128KB 的 SRAM 記憶體位址從 0×FEB0 0000 至 0×FEB1 FFFF;L3 則共有 64MB 的 DDR SDRAM 記憶體位址從 0×0000 0000 至 0×03FF FFFF。

(25)
(26)

2.3 ADSP-BF548 韌體開發環境介紹

嵌入式系統主要分成三個部分,硬體系統、軟體系統以及開發工具但在嵌入 式系統中軟硬體資源都非常有限,所以嵌入式系統的軟體通常採用交叉平台的開 發的方式進行,其架構如圖 2.7 所示,嵌入時使用的電腦也就是主機平台,使用 軟體開發工具把程式嵌入至開發板,開發板則是目標平台。而主機平台即是跨平 台開發的工具,它主要的任務就是將開發者所寫好的程式碼轉換成在目標平台上 可以執行的程式執行檔,其中我們將使用到一些周邊包括 USB 和 UART,USB 可以讀取影像的原始檔,而 UART 可以將我們所要了解的資訊秀出來。 ADSP-BF548 軟體開發工具是採用 亞德諾所提供的 Visual DSP++(簡稱 VDSP++)這一套軟體,且支援 Blackfin® ADSP-BF54x 系列晶片的集成開發環境 (integrated development environment: IDE),如圖 2.8 所示,可以使用 C 或 C++語 言來撰寫,並且有程式的編譯器、組譯器以及鏈結器等。VDSP++可以將我們所 寫好的程式碼(.C、.ASM)透過編譯器(compiler)及組譯器(assembler)轉譯成二位碼 的物件檔(.DOJ),再藉由鏈結器(linker)將事先配置好的記憶體配置檔(.LDF)以及 所有引用到的函式庫檔(.DLB),鏈結成 ADSP-BF548 開發板可以執行的執行檔 (.DXE),最後將執行檔載入至 ADSP-BF548 開發板中執行。

(27)

圖 2.7、嵌入式系統-交叉平台開發架構示意圖

(28)

2.3.1 DSP 記憶體配置

在進行嵌入之前必須先了解 DSP 中需要配置的區段,分為以下幾種: 1. program 區段:此區段專配置所撰寫的程式。 2. data 區段:此區段包含有設定初始值的全域或區域的變數以及定義為 定值的變數(constant data)。 3. bsz 區段:此區段配置設定初始值為 0 的全域或區域變數。 4. stack 區段:而這一個區段主要是配置程式正在執行的函數,其過程中 所宣告的參數及其返回位址以及區域變數。所以當程式使 用太多區域變數,或是函數呼叫太多層等情況,都可能會 造成堆疊區段的記憶體不足,則導致將其他區段的資料覆 蓋過去,而影響程式正常運作,此情況則稱為堆疊溢位 (stack overflow),而 ADSP-BF548 中所預設的堆疊區段其 大小為 4 KB。

5. heap 區段:在程式中可以使用 malloc()、heap_ malloc()和 calloc()函示進 行的動態記憶體配置,呼叫此函示時,會再 heap 區段中分 配出一段記憶體並回傳其指標,之後即可依據此指標進行資 料的存取。而如果 heap 區段沒有足夠的連續空間滿足所配 置請求時,則程式將會被迫停止或進入不可預知的情況。 這裡以一段小程式舉例說明,如圖 2.9 所示,任何程式的撰寫都包含定義變 數、函式或是使用 malloc()函式來開記憶體空間,當正在執行主函數(main(void)) 時,其函數的參數及其返回位址(main return address)以及區域變數(i)會被配置在 stack 區段,在 DSP 中會配置於預設的 Scratchpad SRAM 記憶體區段,而一開始 所定義的有初始值全域變數(a、b)則會被配置在 data 區段,另外無初始值全域變 數(buffer_size)則會被配置在 bsz 區段,由於 data 和 bsz 都是屬於存取的資料,所

(29)

圖 2.9、DSP 記憶體區塊配置舉例示意圖

以在 DSP 中會配置於 L1 data cache 和 L1 data SRAM 記憶體區段,其中若有使用 malloc()函式來開記憶體空間(buffer)會被配置在事先開好的 DSP heap 區段,最後 所寫的程式(program) 會配置在 DSP 中 L1 instruction cache 和 L1 instruction SRAM 記憶體區段。

2.3.2 ADSP-BF548 記憶體配置

若要自行配置 ADSP-BF548 開發板上的記憶體,則要了解 VDSP++對於記憶 體配置指令的用法,在使用之前要先了解 ADSP-BF548 開發板的記憶體位置的 分布及,其分布在 2.2.3 節已有詳細說明。接著藉由記憶體(memory)虛指令格式 來定義我們要使用的記憶體,以在 L1 開出一個 heap 的記憶體區段來做舉例,格 式如圖 2.10 所示,包含名稱、屬性、起始位址、結束位置及在 ADSP-BF548 開 發板中每一筆資料的寬度(width)為 8 位元。設定完虛指令格式後,還須設定記憶 體的區段(sections) 虛指令格式,來設定程式中使用的記憶體區段應該暫用那些 記憶體,格式如圖 2.11 所示,其格式包含區段名稱、區段起始位址、區段結束位 址、區段大小及記憶體名稱,其中記憶體名稱是圖 2.10 中所設定的記憶體。除此 之外,在程式 Proj_548_ezkit_heaptab.c 檔中還須使用 extern 來引用外部記憶體變

(30)

數,如圖 2.12 所示,包括記憶體空間和長度,並在 heap_table 中定義其索引標籤 (index),在此將 L1_heap 的索引標籤定義為 1,而使用時如圖 2.13 所示,以 H.264 存檔頭資訊的 start_code 做舉例,以 heap_malloc 指令來開記憶體空間,其指令 需要 3 個變數來完成,包括索引標籤、記憶體空間數量和開一個記憶體空間的基 本大小,在此索引標籤為 1 即表示在 L1_heap 記憶體區段中開記憶體空間,且總 共開了 21 個大小為位元組(byte: B)的紀體空間給 start_code。在 VDSP++中可以 從記憶體配置圖(memory map)中驗證,如圖 2.14 所示,L1_heap 所配置的記憶體 區段確實是從 0×FF90 0000 至 0×FF90 7FFF,並利用 UART 秀出 start_code 第一 個記憶體位址,如圖 2.15 所示,可以驗證 start_code 確實是開在 L1_heap 記憶體 區段。

圖 2.10、memory 虛指令格式示意圖

(31)

圖 2.12、Proj_548_ezkit_heaptab.c 指令格式示意圖

圖 2.13、L1_heap 使用指令格式示意圖

(32)

圖 2.15、start_code 記憶體位址示意圖

2.4 ADSP-BF548 周邊介紹

為了將 H.264 實現在 ADSP-BF548 開發板上,若要使用周邊的設備,必須先 了解其功能及用法,以下介紹將使用到的一些周邊設備。

2.4.1 UART

通用非同步收發傳輸器是一種 CPU 與周邊裝置間的資料傳輸方法之一,我 們將會使用 UART 來做 PC 與 ADSP-BF548 開發板的傳輸介面。主要作用是接 收 ADSP-BF548 開發板所執行的一些資訊,並將這些資訊顯示在 PC 上。接下來 我簡單的介紹一下 UART 工作模式,其傳輸示意圖如圖 2.16 所示,UART 為兩 種傳輸通訊模式:平行通訊(parallel communication),每一次可以傳輸多個位元, 所傳輸的資料較大,相對地時間花費短,但是需要較多條地傳輸線;串列通訊 (serial communication),每一次只傳輸一個位元且依序傳送,速度較慢,但線路簡 單,只需要三條傳輸線即可完成雙向通訊傳輸,也因為線路簡單,可以防止雜訊 地干擾。而 ADSP-BF548 與周邊設備做傳輸是以串列傳輸為主,且在 UART 晶 片內有暫存器,可將接收到的資料儲存於暫存器中,並以平行輸出至處理器。 其中串列通訊傳輸又分為兩種,同步與非同步傳輸。其中非同步傳輸封包格 式如圖 2.17 所示,包括 1 個起始位元(start bit)、8 個資料位元(data bits)、1 個同

(33)

位位元(parity bit)以及 1 或 2 個停止位元,所以在傳輸地過程中最多只會傳送 12 個位元。尚未傳輸時,信號會一直維持在 1(mark)的狀態也就是高電位時,而開 始傳輸時,也就是起始位元必須是 0 狀態也就是低電位時,接著實際位元傳輸資 訊,接著是同位位元,是為了要檢查資料是否無誤,此同位位元是可以省略的, 最後傳送一個高電位的停止位元,而後信號會恢復 mark 狀態,得以繼續傳送下 一筆資料。此外,還必須設定互相串列傳輸速率又稱鮑率(baud rate),此設定只 要將兩個要進行串列傳輸的裝置,將鮑率設為相同,即可確保資料傳輸正確無誤。 一般常使用的鮑率設定有有 1,200、2,400、4,800、9,600、19,200、115,200 等, 而我們採用的是最大的鮑率 115,200,如圖 2.18 所示。 圖 2.16、UART 傳輸示意圖

(34)

圖 2.17、UART 串列通訊非同步傳輸封包格式示意圖 圖 2.18、PC 設定鮑率資訊示意圖

2.4.2 USB

通用序列匯流排,是一個連接外部裝置的匯流排,提供高速的序列傳輸,使 用上隨插隨用非常方便,發展至今已成為電子產品中不可或缺的一部分,可以說 是最重要的傳輸工具,而我們也將使用 USB 來讀取 H.264 編碼前的影像資料, 以下將簡潔的介紹 USB。 USB 的傳輸方式分為以下四種:控制傳輸、中斷傳輸、巨量傳輸、等時傳輸, 而依我們的需求,需要讀取較大的資料量,所以採用的是巨量傳輸。巨量傳輸顧

(35)

名思義是用來傳送大量的資料,是一種單向或雙向的傳輸,由於這些龐大的資料 量必須準確無誤的傳送,然而卻沒有傳輸速度上的限制,原因是巨量傳輸時必須 先等待等時傳輸、中斷傳輸等,這些傳輸傳完之後整個匯流排處於閒置狀態方可 執行巨量傳輸,此時傳輸的速度就會非常的快速。若是因為一些錯誤導致傳送失 敗的狀況,就必須重新再傳送一次,此巨量傳輸一般應用於掃描機、印表機、USB、 硬碟等。接下來必須了解巨量傳輸的規範,根據此規範去設定 ADSP-BF548 開發 板的驅動程式。

而市面上支援 USB 的大多是小型計算機系統界面(small computer system interface: SCSI),而 SCSI 指令會經由 USB 端點傳輸,端點由指令與資料共同使 用且每一項傳輸都以命令封包(command block wrapper: CBW)開始,如表 2.1 所 示,CBW 封包是由 31 個 byte 所組成的,其中包含了 SCSI 指令、傳輸方向、預 估傳輸時間以及獨特的標籤。當隨身碟中的 USB-to-Flash 控制晶片收到 CBW 時, 會開始將回傳當前命令執行狀態,且由 命令狀態封包(command status wrapper: CSW)回傳,如表 2.2 所示,CSW 是由 13 個 byte 所組成的,且如此完成一個命 令。 表 2.1、CBW 封包結構 bit Byte 7 6 5 4 3 2 1 0 0-3 dCBWSignature 4-7 dCBWTag 8-11 dCBWDataTransferLength 12 bmCBWFlags 13 Reserved(0) bCBWLUN 14 Reserved(0) bCBWCBLength 15-30 CBWCB

(36)

表 2.2、CSW 封包結構 Bit Byte 7 6 5 4 3 2 1 0 0-3 dCSWSignature 4-7 dCSWTag 8-11 dCSWDataResidue 12 bCSWStatus

除此之外,還須了解 USB 中存取資料的格式檔案配置表(file allocation table: FAT),是一種磁碟的格式,當電腦在儲存檔案的時候,磁碟機必須記錄檔案的名 稱、大小、位址等資訊,而這些資訊會一一記錄在 FAT 裡,那麼電腦在存取檔 案的時候就可以透過 FAT 找到所需要的檔案。而我們將使用最早的版本 16 位元 的 FAT(FAT16),其架構如圖 2.19 所示。主要分為主引導磁區(main boot record: MBR)、引導磁區(dos boot record: DBR)、檔案配置表 1(FAT1)、檔案配置表 2(FAT2)、 根目錄(file directory table: FDT)以及資料區(data)共五個部分。

再來要先了解相關的存取單位,而磁碟機存取最小單位為 sector,每一個 sector 有 512B 資訊,但一般並不會以 sector 來做存取單位,若用 sector 做存取則 存取的效率會很差,而會以 cluster 為一基本檔案單位,每一個 cluster 是 sector 的 2 次方倍數,舉例來說連續的 8 個 sector 組成 1 個 cluster,所以 cluster 大小為 512×8=4,096 B,如此一來在做存取時相對效率也就提升了,但並不是越大越好, 還是要考慮檔案的存取效能以及檔案的大小是否會浪費硬碟空間,再設定適當的 存取單位。

當要寫入或讀取某個資料夾下的檔案時,則必須去知道這個檔案在硬碟或磁 碟的 cluster 位置並計算所對應的實際位置。首先會讀取 MBR 得到 DBR 位置及 隨身碟格式,再來讀取引導磁區得到 USB 資訊 USB 格式、FAT 位置、FDT 位 置、及 Data 起始位置等等,再從 FDT 讀取資料夾或檔案資訊,找出檔案在磁碟 的實際位置,並從根目錄得到的路徑資訊,在資訊中運算出其在 FAT1 中的實際

(37)

主引導磁區(MBR) 引導磁區(DBR) 檔案配置表(FAT1) 檔案配置表(FAT2) 根目錄(FDT) 資料區(Data) 圖 2.19、FAT16 結構示意圖 圖 2.20、DMA 與周邊關係示意圖

(38)

位置,接著在 FAT1 實際位置中取得相關 cluster 資訊,再依據這 cluster 的真正 所在位置,於 Data 區取得檔案的內容。

2.4.3 DMA

直接記憶體存取是一種在內部轉移資訊的周邊設備,它可以允許記憶體不須 透過中央處理器的參與,直接轉資料,通常是應用在資料流量較大的時候,方可 節省許多時間。而一個處理器可以有多個 DMA 控制器,DMA 具有與內部和外 部記憶體相連的控制器,每一個 DMA 控制器都包含 1 條位址匯流排、1 條資料 匯流排和一個 DMA 控制器。使用 DMA 時一開始會先設置位址、資料匯流排和 待轉移資料大小及位址,並向處理器取得控制權,方可轉移資料,如圖 2.20 所 示。

(39)

第三章 H.264 視訊編碼標準與位元率控制

在日新月異的變遷下,隨著科技的發展與進步,尤其是視訊的應用愈來 愈普及,如行動數位視訊電話及數位電視,而人們對於影像解析度也愈來愈大, 然而解析度越高資料量也越大,這些龐大的資料量若在有限的頻寬下傳輸,勢必 造成時間上的延遲,所以透過國際組織來制定統一的視訊規格,並更進一步使用 位元率控制系統來控制編碼資料大小。而本章節將對於 H.264 做詳細的介紹,首 先 3.1 節將詳細介紹 H.264 視訊標準規格及架構,3.2 節則會介紹 H.264 對於位 元率控制系統以及分析與討論 H.264 對於位元率控制系統所遭遇的問題並加以 改良。

3.1 H.264 視訊編碼標準介紹

在高品質的數位多媒體時代,市售的數位產品五花八門,如智慧型手機、數 位電視、平板、監控系統等,為了能夠適應不同產品解析度的使用介面,在 H.264 的標準中提供以下幾種規範,主要有基本規範、主要規範、高級規範以及延伸規 範,使用者可以依自己的需求,彈性的選擇適合其應用的規範。

3.1.1 H.264 規範

首先介紹 H.264 所提供的規範:基本規範、主要規範、高級規範以及延伸規 範,其中基本規範低位元率、低複雜度,主要應用於視訊通訊、行動多媒體;主 要規範支援交錯式(interlaced)編碼,壓縮效能較好,主要應用於高畫質數位電視 (high definition television: HDTV);高級規範為主要規範的延伸,提供較好的量化 步階參數,主要應用於藍光(blue-ray)DVD、專業攝影、電影製片;延伸規範更是 提供較高的壓縮效能且具有高抗錯性(error resilient)編碼,主要應用於網路電視 (internet protocol television: IPTV)、多媒體傳輸(multimedia on demand: MOD)。

(40)

而不同的應用根據不同的規範所支援的解析度大小與其相對應的位元率也 有所不同,如表 3.1 所示,級數(level)最小為 1.0 直到最大 5.1,以解析度的應用 範圍而言,level 5.1 所支援的解析度最大,包含 4,096×2,304 的超高解析度至 1,920×1,080 的高解析度。不同的 level 規定不同的畫面解析度、最大影像位元率 以及畫面率,以 level 4.0 做舉例,支援解析度最大為 2,048×1,024,最大畫面尺 寸 8,192,也就是代表一張畫面最多由 8,192 個 MB 組成,而編碼時每秒須達到 245,760 個 MB 的編碼,即畫面率(frame per sec: fps)30 張,最大影像位元率為 20Mbit/s。

(41)
(42)

3.1.2 H.264 編碼系統架構

H.264 的系統架構,如圖 3.1 所示,總共包含網路抽象層(network abstraction layer: NAL) 與視訊編碼層(video coding layer: VCL)兩層,NAL 主要負責將 VCL 所輸出的編碼資料,也就是原始位元序列負載(raw byte sequence payload: RBSP) 格式化並加以封裝,封裝成適當大小的封包單位(NAL-unit: NALU),所以一段視 訊序列經由 H.264 編碼過後,將分成許多個 NALU 封包在網路上傳輸,而為了 要區隔每個 NALU,依據 H.264 的編碼格式,如圖 3.2 所示,在每個 NALU 前加 上長度為 4 個 byte 且值固定為 0×00000001 的起始碼(start code),使得解碼時能 做判斷。且 H.264 的 NAL 提供許多種的封裝格式,包括 MP4、MPEG-2、H.32x、 IP 網路、傳輸串流等,NAL 將依該傳輸協定附加其檔頭資訊後進行傳輸。此外, NAL 還有一個重要的功能,當網路發生壅塞導致封包錯誤時,則傳輸層協定會 在 reference flag 作設定,而接收端 VCL 收到這種 NAL 的封包時,將進行糾錯, 在解壓縮的同時也會將錯誤修正回來,具有高的抗錯能力,使 H.264 適合相當多 的媒體串流或行動通訊的應用。

(43)

圖 3.2、H.264 檔案格式示意圖

圖 3.3、H.264 VCL 系統方塊示意圖

而 VCL 主要負責視訊壓縮流程的部分,如圖 3.3 所示,其架構主要包含畫 框內預測(intra prediction)、畫面間預測(inter prediction)包含運動估測(motion estimation: ME)和運動補償(motion compensation: MC)、整數餘弦轉換(integer cosine transform: ICT)、反整數餘弦轉換(inverse integer cosine transform: IICT)、量 化(quantize: Q)、反量化(inverse quantize: IQ)、熵編碼(entropy coding)、去方塊濾

(44)

波器(deblocking filter)及位元控制器模組(rate control module)包括位元控制(rate control: RC)和位元控制緩衝器(RC buffer)。其中熵編碼包含適應性變動長度編碼 法(context-based adaptive variable-length code: CAVLC)及適應性二元算術編碼 (context-based adaptive binary arithmetic coding: CABAC)兩種編碼方式,而我們是 採用 CAVLC。首先當前畫面(current frame)進來,並將影像切成 16×16 大小的 MB 作為編碼的單位,接下來利用畫框內預測或畫框間預測之運動估測找到最佳的模 式,其中畫框內提供 9 種 4×4 亮度預測模式(luma prediction mode)、4 種 16×16 亮度預測模式(luma prediction mode)和 4 種 8×8 彩度預測模式(chroma prediction mode),而畫框間提供 7 種不同的預測模式,而後將去除影像之間的相似性來得 到所謂的差值影像(residual),並以 4×4 的方塊利用 ICT 與量化去除影像視覺的冗 餘,其中量化時透過位元率控制器找出適合的量化參數,最後使用熵編碼編成位 元流(bitstream),並存放在位元緩衝器中控制輸出,而後以 NALU 的資料形式傳 送。而另一方面,為了要提供畫框間預測時 ME 做使用,將方才量化後的資料透 過 IQ 與 IICT 且經由 DF 處理後,將資料儲存在參考畫面的儲存器中,以便提供 下一次畫框間預測使用。 在 H.264 標準中,為了從畫框內或畫框間預測模式中選出每塊 MB 的最佳預 測模式(best mode),所使用的量測數學工具會依不同的預測模式而改變,不同的 RDO 所使用到的位元率-失真成本(rate-distortion cost: RD cost)計算公式,如表 3.2 所示,其中 J 代表 RD cost,λ 為 lagrange multiplier),Rate 代表位元率,經由畫 框間預測及畫框內預測兩者各自選出的最佳模式後,兩者必須再透過 Jmode比較,

才能決定出當前 MB 的最佳模式。詳細的 H.264 畫框內和畫框外預測編碼請參 考文獻[2]。

(45)

表 3.2、H.264 最佳模式選擇的數學工具表

圖 3.4、H.264 位元率控制系統示意圖

3.2 H.264 位元率控制系統

為了使 H.264 能有效在異質網路傳輸,所以 H.264 提供位元率控制,其系統 如圖 3.4 所示,而依位元率壓縮方式又可以分為兩種,固定位元率(constant bit rate: CBR)壓縮以及可變位元率(variable bit rate: VBR)壓縮,其中固定位元率的優點是 省效能、速度快,本論文將針對 CBR 位元率控制做深入的探討。對於影像視訊 通訊而言,因為頻寬是有限的,而為了讓影像編碼位源流能夠順利的傳輸以及頻 寬充分有效率的使用,則需要對影像編碼的位元進行管控,即位元率控制(rate

(46)

control)又可以稱為緩衝器控制(buffer control),其原理在於編碼時設有緩衝器儲 存多餘的位元率,其緩衝器會依據傳輸通道頻寬(channel rate)的大小來輸出位元, 達到匹配的效果,在進行巨方塊運動補償的過程中,必須計算位元-失真成本(rate-distortion cost: RDcost)來決定最佳的運動估測區塊模式以達到 RDO,並經由 RDO 才能計算 MAD,最後透過位元-量化模型計算出適合的 QP。 而在緩衝器控制時,必須要避免溢位(overflow)或是不足(underflow)的情況發 生,如圖 3.5 到圖 3.7 所示,在正常情況下影像是連續的,若緩衝器發生溢位的 情況,則影像視訊的資料容易遺失,此時則必須減少輸出位元甚至是加入跳畫框 (frame skipped)機制來降低緩衝器的位元,其中跳畫框機制啟動時即表示當前畫 框不做編碼,而在解碼端所看到的畫面為前一張畫面,若緩衝器發生不足的情況, 則必須等下一張畫框資料補足緩衝器才能傳送畫框資料,而造成影像視訊的延遲, 且無法提供好的影像品質,所以可以根據緩衝器的控制來判斷位元率控制器的優 劣。以下小章節將會詳細介紹 H.264 位元率控制系統。 圖 3.5、緩衝器控制正常情形示意圖

(47)

圖 3.6、緩衝器控制溢位情形示意圖

(48)

3.2.1 H.264 位元率控制系統演算法

由於 H.264 在進行巨方塊運動補償的過程中,必須計算 RDcost 來決定最佳 的運動估測區塊模式以達到 RDO,並經由 RDO 才能計算 MAD,最後透過位元 -量化模型計算出適合的 QP,但在第一張畫面必須先給定量化參數 QP 才能執行 RDO 來得到最佳的編碼,導致 H.264 無法在執行位元率控制時得到現在 MB 的 實際 MAD 資訊,因此無法沿用傳統視訊編碼系統所採用的位元率控制方法,所 以有許多學者對於此相關問題進行研究。 其中由 Li 等學者所組成的研究團隊,於 2003 年提出 JVT-G012 草案[9],如 圖 3.8 所示,他們主要是針對 H.264 的位元控制提出預測模型(Predict Models)解 決方案,利用線性迴歸的方法來預測待編 MB 的 MAD,並依據 MAD 的預測值 來計算適合的量化參數,解決了 RDO 的問題,並在 H.264 標準 JM11.0 平台中 已採用此方法[2]。 圖 3.8、JM11.0 位元率控制系統示意圖

(49)

3.2.2 H.264 位元率控制系統問題分析

JM11.0 平台中位元率控制主要分為三層來做控制,分別是畫框群層位元率 控制、畫框層位元率控制、基本單元層位元率控制,又稱 MB 層位元率控制,在 這三層中的位元率控制中我們發現一些問題,以下我們將詳細探討所發現的問題。 為了探討 RC 的效能,採用客觀 PSNRY 與緩衝器位元佔有率( buffer fullness )二 項指標來做評量準則。PSNRY 的計算方式如下: 2 10 255 10 log PSNRY MSE  (3.1)

其中的均方誤差( mean squared error: MSE)的計算方式如下:

2 1 1 N n n n MSE s c N  

 (3.2) 緩衝器位元佔有率的定義如下:          F U j A j B j B( ) ( 1) ( ) (3.3) 其中B( j)代表第 j 張畫框的緩衝器位元佔有率,A( j)代表第 j 張畫框實際編 碼位元數, u 和Fr分別代表頻寬和畫框播放率。 實驗參數如下: 1. 緩衝器大小,其數學式如下:  1.25 r s F u B (3.4) 其中Bs代表緩衝器大小,u 代表通道頻寬,Fr代表畫框率。

(50)

2. 跳畫框機制即目標位元率(target bit rate),其臨界條件式如下: T 0.8Bs (3.5) 其中 T 代表跳畫框機制的臨界值,當緩衝器位元佔有率大於臨界 值則捨棄不編碼。 3. 影像大小: 832×480 4. 影像序列:Race Horses 5. 編碼序列:IPPPP 6. 參考畫面:1 (for P frame) 7. 編碼方式:CAVLC 8. 搜尋範圍:±16 pels(for P frame) 9. 畫框率:30Hz 10. 頻寬:2M 圖 3.9、832×480 Race Horses 影像序列

(51)

如圖 3.10 所示,首先在 GOP 層中,JM11.0 並沒有考慮到初始 QP 的選擇, 一開始為了保持影像品質,所設定的初始 QP 較低,雖然影像品質良好,但畫面 位元率非常高,而導致嚴重跳畫框的情形,可以看到圖中 25 張之前其實只編了 5 張畫面,其 PSNR 驟降的部份表示跳畫框機制啟動也就是當前畫面不做編碼, 而以前一張所編好的畫面來計算其 PSNR,所以產生 PSNR 遞減的情況發生,一 直到 25 張畫面之後 PSNR 才維持了平衡,從緩衝器位元佔有率來看,25 張畫面 之前常常發生超過目標位元率,也是一直到 25 張畫面之後才維持在目標位元率 之內。 而在畫框層及 MB 層中使用了的 MAD 和 R-Q 預測模型來預測 QP,其預測 模型數學是如下所示: MADcba1MADpba2 (3.6)

其中 MADcb代表當前 MB 的 MAD,MADpb代表參考畫面 MB 的 MAD,a1、

a2則為預測模型的兩個線性回歸係數。 2 2 1 1      i i i i i a Q a Q M H R (3.7) 其中 Ri代表總位元率,Hi代表檔頭位元率,Mi代表 MAD,Qi代表 QP,a1、 a2則為 R-Q 預測模型的兩個線性回歸係數。 然而上述 MAD 預測數學式過於簡單,且只有考慮時間相關性,並沒有考慮 空間上相關性,所以在畫面劇烈變化時,會有預測不準確的情況,如圖 3.11 所 示,在劇烈變化的前後兩張畫面,當前 MB 在前一張畫面((t-1)th frame)相對位置 上找不到相似的 MB 來做預測,而在同一張畫面(t th frame)空間中卻可以得到相 似的 MB 來做預測。

(52)

(a)

(b)

圖 3.10、頻寬 2 Mbps 下,RaceHorses 位元率控制效能圖,(a) PSNRY 趨勢圖(b) PSNRY 緩衝器位元佔有率趨勢圖

(53)

圖 3.11、局部畫面劇烈變化時示意圖

3.2.3 適應性 H.264 位元率控制系統

由 3.3.2 小節得知,由 Li 等學者提出的 JVT-G012 草案,雖然成功利用線性 迴歸的方法來預測待編 MB 的 MAD,並依據 MAD 的預測值來計算適合的量化 參數,解決了 RDO 的問題,但卻沒有考慮到初始 QP 的設定以及空間的相關性 所以在畫面變動劇烈情況下無法準確的做預測。 所以我們提出適應性 H.264 位元率控制系統來改進此問題,改進方式如下: 1. GOP 層: 首先在 GOP 層,由於第一張影像是沒有其他畫框可以參考,所以若 要找出最佳地初始 QP,最簡單地方法就是全搜尋法(full search),將 51 種 QP 都實際做一遍編碼,如此一來將會大幅增加編碼時間,而 A. Armstrong 等學者[9]也發現了此問題,所以他們提出二元搜尋法(binary search algorithm: BSA)來尋找出最佳化初始 QP,而此方法只需要做 6 次 編碼即可得到最佳初始 QP,如圖 3.12 所示,在頻寬 2 Mbps 下 QP 從 26 開始做編碼,而後依據所編位元率還調整更高或是更低地 QP。

(54)

然而 BSA 仍然需要 6 次的編碼,其所花費時間依然耗時,所以我們 結合了之前研究的快速化框內模式預測(fast intra mode decision: FIMD), 其方法是利用 I 畫面待編碼方塊臨近的四個已編碼區塊相對應的模式, 優先作為候選的測試模式,並透過臨界値的組合來終止模式決策的過程, 達到快速預測,透過 FIMD 和 BSA 的結合,可以大幅降低計算最佳量化 參數的處理時間,達到低延遲的效果。 圖 3.12、於 2 Mbps 頻寬下,BSA 搜尋最佳量化參數示意圖 2. 畫框層: 而在畫框層中,除了利用畫框的時間關聯性,使用前一張畫框的檔 頭來預測我們目前要編碼的檔頭預測資訊,更進一步利用畫框內有很高 的空間關聯性,因此我們提出一個時空關聯性模型[10],如圖 3.13 所示, 並且分析在不同半徑下,檔頭位元數差最小之機率統計,如圖 3.14 所示, 我們可以清楚的觀察到,當搜尋的半徑越大所找到和實際檔頭位元一樣 的 MB 機率就越高,而更進一步統計,如圖 3.15 所示,經 RDO 後所得 到的實際 MAD 和只經 INTER 16×16 和 INTRA 16×16 二個框內預測模

(55)

式後的粗略 MAD(簡稱 MADrough)來加以分析,可以發現 MADrough和實

際 MAD 有相同的趨勢,即表示有很強的相關性,因此我們可以利用

MADrough的資訊量來進行空間關聯性的 MAD 預測,並提出時空關聯性

的 MAD 預測模式,其公式如下所示:

2 1

. [i] a MAD [i] a

MADcurtemp   prev  (3.8)

2 1

, [i] b MAD [i] b

MADcurspat   rough (3.9)

(56)

圖 3.14、檔頭位元的時間關聯性分析

(57)

3. MB 層: 最後在 MB 層中,考慮為了能有效的預測變化較大的場景,我們採 用了時空判斷演算法,來決定我們要使用空間的資料還是時間的資料, 其判斷式及演算法如下:

    i S i n actual temp cur

tempi MAD n MAD n

E [ ] , [ ] [ ] (3.10)

    i S i n actual spat cur

spat i MAD n MAD n

E [] , [ ] [ ]

(3.11)

If Espat[i]Etemp[i] then ] 1 [ ] 1 [ , , i MAD i

MADpredadapt predtemp

Else ] 1 [ ] 1 [ . , i MAD i

MADpredadapt predspat

End if 其中 S 代表 MAD 取樣的數目,用來量測E。這個預測 MAD 的方 法,能夠適應的切換於空間的資訊量還是時間的資訊量,當Espat大於 temp E ,就採用時間的線性回歸模型,反之當Etemp大於Espat時,則採用 空間的 MAD,其演算法流程圖如圖 3.16,而詳細的演算法步驟如下: 使用BSA 快速搜尋法來選擇最佳化初始量化參數。 判斷是否為I 畫框或是第一張 P 畫框,若成立就使用初始 QP 來編碼。 使用前一張畫框的QP,來計算畫框內 16×16 和畫框間 16×16,

(58)

分別求得MADrough,比較最小min_cost,並記錄起來,做為線

性回歸的預測資訊量。

利 用 我 們 所 記 錄 的 MAD , 分 別 代 入 公 式 MADcur.temp[i] 與

MADcur.spat[i],求得我們所要的 MAD 預測資訊。

判斷是否為第一個巨方塊,如果是則採用上一張畫框平均 QP 來編碼,直接跳到步驟十二,如果不是,繼續往步驟六編碼。 分別累加計算時間與空間的量測指標E。

比較當前量測指標E,如果Espat大於Etemp到步驟十,如果Espat

小於Etemp到步驟九。

利用先前計算空間的MADrough,在已發生的半徑2 範圍內找到

差值最小的MAD 來當作所要預測的MADpred,adapt

利用先前計算空間的MADrough,在已發生的半徑2 範圍內找到 差值最小的MAD 的那塊已編碼過的巨方塊的檔頭來當作要預 測的檔頭,並且跳到步驟十二。 使用先前所計算的𝑀𝐴𝐷𝑐𝑢𝑟.𝑡𝑒𝑚𝑝[i],𝑚𝑖𝑛,到前一張畫框中相對位 置,半徑為2 的範圍找到差值最小的 MAD 來當作我們要預測 的𝑀𝐴𝐷𝑝𝑟𝑒𝑑.𝑎𝑑𝑎𝑝𝑡[i]。 利用先前所計算時間的 MADpred,temp[i],min,到前一張畫 框中相對位置,半徑為2 的範圍找到差值最小的 MAD,來 當作時間關連性的檔頭預測,並且跳到步驟十二。 利用RQ 模型所算出的 QP,實際參與 RDO 的運算,並計算 出最小的RD-Cost,決定最佳的模式。 判斷是否為最後一塊巨方塊,如果不是就繼續下一巨方塊編 碼,跳至步驟二,如果是就跳下一張畫框到步驟一,完成其 它編碼程序。

(59)

圖 3.16、適應性 H.264 位元率控制流程圖

load one frame

1st

I/P frame ? encode with initial QP

allocate frame bit budget

R-Q model encode MB last MB ? update MAD prediction model update R-Q model parameter Yes No update buffer initial

allocate GOP bit budget

select optimal QP using BSA and fast intra mode methods

rough motion compensation load one MB 1st MB? encode with average QP frame budget < 0? MB layer MAD Prediction

allocate MB bit budget encode with QPi = QPi-1+1 finish one MB last frame ? end Yes No No Yes Yes No Yes No

(60)

第四章 高效能嵌入式視訊編碼位元率控制系統

隨著科技業的不斷創新與改變,行動多媒體產品已是當代的潮流,主要以輕 薄短小為主,有許多業者及學者使用嵌入式系統來做模擬及研發,而對於 H.264 即時應用,若是未經過有系統的規劃,其最大效能是無法展現出來的。由於在有 限的記憶體中,如何發揮其最大效能,是一門重要的課題。然而這麼龐大得嵌入 式系統,若記憶體交給 VDSP++自行配置,則執行的效能通常不是最好的。

4.1 記憶體配置

對於時常需要滿足即時應用的嵌入式硬體而言,若是未經過系統的規劃,是 無法表現出硬體的最大效能的,尤其是在記憶體有限的情況下,記憶體的管理以 及如何有效率的配置就成為重要的一環了。而我們透過 VDSP++開發環境可以將 H.264 嵌入至 ADSP-BF548 開發板,關於記憶體的配置主要是在記憶體配置檔規 劃的。然而若沒有在開發者的規劃下,直接交由 VDSP 在記憶體配置檔內自行配 置記憶體的話,系統整體的執行效率往往並不是最理想的。例如有可能將極少運 算量的模組配置在傳輸速度較快的內部記憶體 L1、L2,或者是將需要頻繁且重 覆運算的模組配置在傳輸速度較慢的外部記憶體 L3,導致系統執行的效率變差, 以下將詳細分析及探討記憶體配置。

(61)

表 4.1、ADSP-BF548 周邊記憶體配置

memory module function capacity

(KB) utilization (%) Scratchpad SRAM (4KB) stack stack 4.00 100.00% L1 instruction cache (16KB)

ADSP-BF548 module usb (USB/program) 10.83

99.88% (15.98KB/16KB)

ADSP-BF548 module dma (DMA/program) 0.21

ADSP-BF548 module fat (USB/program) 2.14

File System Control Center FS_main(program) 1.45

function Function(program) 0.45

UART uart(program) 0.41

ADSP-BF548 module libio532y.dlb

(program) 0.49 L1 instruction SRAM (48KB) UART uart(program) 1 7.19% (3.45KB/48KB)

ADSP-BF548 module libio532y.dlb

(program) 2.45 L1 data cache (32KB) none none 0.00 0% (0KB/32KB) L1 data SRAM (32KB)

constant (data) constant (data) 2.82 10.97%

(3.51KB/32KB) bsz bsz 0.69 L2 cache/ SRAM (128KB) none none 0.00 0% (0KB/128KB) L3 DDR SDRAM (64MB) none none 0.00 0% (0KB/64MB)

(62)

4.1.1 記憶體配置分析

首先將幾個重要的周邊驅動於 ADSP-BF548 上,並分析其記憶體,如表 4.1 所示,其自行配置時會將 USB、DMA、FAT、UART 等周邊優先配置在速度最 快的 L1,其中 stack 佔據了所有快取記憶體區段共 4KB,而 L1 指令快取記憶體

區段(16KB)也幾乎被周邊的 USB、DMA、UART 等程式使用,而其餘 L1(L1 instruction SRAM、L1 data cache、L1 data SRAM)、L2 和 L3 還有很多的記憶體 空間是可以供給所要嵌入的目標 H.264。 接著將 H.264 嵌入於 ADSP-BF548 並讓 VDSP++自行配置,如表 4.2 所示, 周邊的驅動一樣會先配置在 L1,因位這些驅動有些是原本就存在於 ROM,而有 些只能配置在 RAM 並交由開發者所自行管理。配置時會從 L1 開始配置,其次 是 L2,由於 H.264 程式過於龐大,所以必須開出 L3 的記憶體使得過多的程使碼 及資料得以進行配置。且在配置的過程中,若發生所配置區段記憶體空間不足時, 則將要配置的檔案可能會直接配置到下一個記憶體區段,或是被分成小段分開配 置,從表 4.2 到表 4.4 中可以得知 L1 已經幾乎被佔據,而 L2 則佔了 84%,還有 些許的空間,而過多的程式資料則配置在 L3,其中 L3 的記憶體大小是開發者自 行配置的,因為考慮之後程式的開發所已將其大小配置了 1 MB,可供之後研究 開發做使用。 另外,在嵌入的過程中,還碰到了一些問題,就是當使用 USB 時,則會發 生記憶體存取錯誤,近一步偵錯了解原因,其原因為 stack 區段記憶體不足,由 於周邊驅動必須執行 L1 的 RAM 中,所以進一步分析 L1 的配置,其中又發現 L1 heap 區段其實不需要配置到這麼多的記憶體,實際上只使用了 1080 B,如圖 4.1 所示,而後做了初步的記憶體配置的調整,如表 4.5 所示,將原本預設的 stack 區段移到 L1 並將其大小加大為 5 KB 而 L1 heap 區段大小考慮之後 H.264 程式 的研究將配置 2 KB 可以使用。

(63)

表 4.2、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L1)

Memory module function capacity

(KB) utilization (%) Scratchpad SRAM (4KB) stack stack 4.00% 100.00% L1 instruction cache (16KB)

ADSP-BF548 module usb (USB/program) 10.90

93.38% (11.11KB/16KB)

ADSP-BF548 module dma (DMA/program) 0.04

init_frame 264image(program) 4.00 L1 instruction SRAM (48KB) init_frame 264image(program) 4.76 98.77% (34.40KB/48KB)

ADSP-BF548 module dma (DMA/program) 0.17

intra prediciton intrapred (intra/program) 12.57

ICT/Q block (ICT/Q/ program) 9.81

Fast_ME fast_me(program) 12.94

ME_epzs epzs(program) 6.78

other fmo (FMO/program) 0.24

other filehandle (NAL/program) 0.14

L1 data cache

(32KB)

heap(data) L1_heap (data) 32.00 28.13%

(9KB/32KB) L1

data SRAM (32KB)

constant (data) constant (data) 32.00 0%~100%

(64)

表 4.3、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L2)

memory module function capacity

(KB) utilization (%) L2 cache/ SRAM (128KB)

ADSP-BF548 module fat (USB/program) 2.21

84.00% (107.52KB/128KB) inter/intra prediction mode_decision (inter/intra/program) 13.09 decoder (MC/program) 7.71

intra prediciton Macroblock

(intra/program) 28.98

inter prediction mv-search

(ME/program) 25.77

Parameter set parset(program) 0.24

write out picture output(program) 2.02

memalloc memalloc(program) 3.46

storable picture mbuffer(program) 23.15

MB mb_access (program) 3.45 264_main lencod(program) 11.9 calculate Leaky Buffer parameters leaky_bucket (program) 1.22 intra macroblock refresh Intraefresh (program) 0.57

ADSP-BF548 module img_main(program) 0.33

encode_header header(program) 3.2

function function(program) 0.45

File System

Control Center FS_main(program) 1.62

deblocking filter loopFilter

(DF/program) 4.77

other fmo (FMO/program) 2.79

(65)

表 4.4、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L3)

memory module function capacity

(KB) utilization (%) L3 DDR SDRAM (1024KB)

other slice (program) 4.63

35.90% (367.65KB/1024KB) inter prediction mv-search (ME/program) 5.14

Parameter set parset(program) 2.43

Quantization q_matrix(program) 5.19

refbuf refbuf(program) 1.17

UART uart(program) 1.30

inter/intra prediction Rdopt

(RDO/program) 19.22

CAVLC Vlc

(CAVLC/ program) 2.84

ADSP-BF548 module libio532y.dlb (program) 22.08

constant (data) constant (data) 3.71

inter prediction imgY_11

(Ref_frame/data) 24.75

inter/intra prediction orig_MB (orig_MB/data) 0.25

bsz bsz 274.94

(66)

表 4.5、ADSP-BF548 對於 H.264 VDSP++自行記憶體配置(L1)初步調整

memory module function capacity

(KB) utilization (%) Scratchpad SRAM (4KB) none none 0.00 0.00% L1 instruction cache (16KB)

ADSP-BF548 module usb (USB/program) 10.90

93.38% (11.11KB/16KB)

ADSP-BF548 module dma (DMA/program) 0.04

init_frame 264image(program) 4.00 L1 instruction SRAM (48KB) init_frame 264image(program) 4.76 98.77% (34.40KB/48KB)

ADSP-BF548 module dma (DMA/program) 0.17

intra prediciton intrapred (intra/program) 12.57

ICT/Q block (ICT/Q/ program) 9.81

Fast_ME fast_me(program) 12.94

ME_epzs epzs(program) 6.78

other fmo (FMO/program) 0.24

other filehandle (NAL/program) 0.14

L1 data cache (32KB)

heap(data) L1_heap (data) 2.00 21.88%

(7KB/32KB)

Stack stack 5.00

L1 data SRAM (32KB)

constant (data) constant (data) 32.00 0%~100%

數據

表 5.7、H.264 位元控制器嵌入 ADSP-BF548 編碼效能比較 ............................................. 75
圖 2.1、晶片效能與靈活度關係曲線示意圖[6]
圖 2.3、ADSP-BF548 處理器核心結構示意圖[8]
圖 2.5、ADSP-BF548 記憶體架構示意圖
+7

參考文獻

相關文件

從視覺藝術學習發展出來的相關 技能與能力,可以應用於日常生 活與工作上 (藝術為表現世界的知

• 與資訊科技科、常識科、視藝科進行跨 科合作,提升學生資訊素養能力。圖書

近期全球各地皆藉由停止上班上課以遏制新冠肺炎疫情的傳播,正是需要遠端視訊或會 議軟體的時刻,然而視訊會議工具 Zoom

近期全球各地皆藉由停止上班上課以遏制新冠肺炎疫情的傳播,正是需要遠端視訊或會 議軟體的時刻,然而視訊會議工具 Zoom

¾系統思考( systems thinking)法 第五項 修煉( fifth

自 1998 年起,教育局制訂了一系列資訊科技教育策略,促進學 校將資訊科技融入學與教當中。於 2000

資訊和通訊科技 物料和結構 營運和製造 策略和管理 系統和控制

MP4:屬於 MPEG 的其中一類,具有版權保護功能,是現今主流的音訊、視訊格式,例如 YouTube 便是採用 MP4