




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、TCC8900VPU分析常見視頻編解碼格式及RGB和YUV存儲格式預研文檔修訂記錄版本時間修訂者|修訂內容1.02011-3-27劉文®創建文檔:每次修改與增加內容者,需在文檔修訂記錄中進行記錄常見視頻編解碼格式1視頻文件類別常言道:物以類聚,人以群分。視頻文件也不例外,細細算起來,視頻文件可以分成兩大類:其一是影像文件,比如說常見的VCD便是一例。其二是流式視頻文件,這是隨著國際互聯網的發展而誕生的后起視頻之秀,比如說在線實況轉播,就是構架在流式視頻技術之上的。1.1 影像格式日常生活中接觸較多的VCD多媒體CD光盤中的動畫,這些都是影像文件。影像文件不僅包含了大量圖像信息,同時還
2、容納大量音頻信息。所以,影像文件的“身材”往往不可小覷。1) AVI格式2) MOV格式3) MPEG/MPG/DA璐式1.2 流式視頻格式目前,很多視頻數據要求通過Internet來進行實時傳輸,前面我們曾提及到,視頻文件的體積往往比較大,而現有的網絡帶寬卻往往比較“狹窄”,千軍萬馬要過獨木橋,具結果當然可想而知。客觀因素限制了視頻數據的實時傳輸和實時播放,于是一種新型的流式視頻(StreamingVideo)格式應運而生了。這種流式視頻采用一種“邊傳邊播”的方法,即先從服務器上下載一部分視頻文件,形成視頻流緩沖區后實時播放,同時繼續下載,為接下來的播放做好準備。這種“邊傳邊播”的方法避免了
3、用戶必須等待整個文件從Internet上全部下載完畢才能觀看的缺點。到目前為止,Internet上使用較多的流式視頻格式主要是以下三種:1)RM(RealMedia脂式RM格式是RealNetworks公司開發的一種新型流式視頻文件格式,它麾下共有三員大將:RealAudio>RealVideo和RealFlashRealAudio用來傳輸接近CD音質的音頻數據,RealVideo用來傳輸連續視頻數據,而RealFlash則是RealNetworks公司與Macromedia公司新近合作推出的一種高壓縮比的動畫格式。RealMedia可以根據網絡數據傳輸速率的不同制定了不同的壓縮比率,從
4、而實現在低速率的廣域網上進行影像數據的實時傳送和實時播放。這里我們主要介紹RealVideo,它除了可以以普通的視頻文件形式播放之外,還可以與RealServe服務器相配合,首先由RealEncoder負責將已有的視頻文件實時轉換成RealMedia格式,RealServer則負責廣播RealMedia視頻文件。在數據傳輸過程中可以邊下載邊由RealPlayer播放視頻影像,而不必像大多數視頻文件那樣,必須先下載然后才能播放。目前,Internet上已有不少網站利用RealVideo技術進行重大事件的實況轉播。1) MOV文件格式(QuickTime)MOV也可以作為一種流文件格式。Quick
5、Time能夠通過Internet提供實時的數字化信息流、工作流與文件回放功能,為了適應這一網絡多媒體應用,QuickTime為多種流行的瀏覽器軟件提供了相應的QuickTimeViewer插件(Plug-in),能夠在瀏覽器中實現多媒體數據的實時回放。該插件的“快速啟動(FastStart)”功能,可以令用戶幾乎能在發出請求的同時便收看到第一幀視頻畫面,而且,該插件可以在視頻數據下載的同時就開始播放視頻圖像,用戶不需要等到全部下載完畢就能進行欣賞。止匕外,QuickTime還提供了自動速率選擇功能,當用戶通過調用插件來播放QuickTime多媒體文件時,能夠自己選擇不同的連接速率下載并播放影像
6、,當然,不同的速率對應著不同的圖像質量。止匕外,QuickTime還采用了一種稱為QuickTimeVR的虛擬現實(VR,VirtualReality)技術,用戶只需通過鼠標或鍵盤,就可以觀察某一地點周圍360度的景象,或者從空間任何角度觀察某一物體。2) ASF(AdvancedStreamingFormat)式Microsoft公司推出的AdvancedStreamingFormat(ASF高級流格式),也是一個在Internet上實時傳播多媒體的技術標準,Microsoft公司的野心很大,希圖用ASF取代QuickTime之類的技術標準。ASF的主要優點包括:本地或網絡回放、可擴充的媒體
7、類型、部件下載、以及擴展性等。ASF應用的主要部件是NetShow服務器和NetShow播放器。有獨立的編碼器將媒體信息編譯成ASF流,然后發送到NetShow服務器,再由NetShow服務器將ASF流發送給網絡上的所有NetShow播放器,從而實現單路廣播或多路廣播。這和Real系統的實時轉播則是大同小異。2常見的視頻的編碼及封裝格式2.1常見視頻編碼格式常見的編碼格式有H.264、H.263、MPEG-1MPEG-2MPEG4、SorensonSpark、VC-1、JPEGRVDivX、On2TrueMotionVP6。對于高清視頻來說,主流的編碼技術目前主要有MPEG-2DivX、XVI
8、DH264/AVCVC-1、RMVBffiWMV-H*等。其中,H264/AVCVC-1、MPEG-2是藍光(Blu-rayDisc)所選擇的編碼格式,也是目前最流行的高清視頻編碼格式。另外就是高清視頻的封裝格式,封裝格式和編碼格式是互相區別的,許多人會把它們混淆。下圖為常見編碼格式的logo:KM圖1.1常見編碼格式logo H264/X264/AVC編碼格式絕大多數視聽玩家對于H264編碼都不會感到陌生,H264編碼的身世顯赫,是ITU-T(國際電信聯盟視頻編碼專家組)與ISO/IEC(國際標準化組織動態圖像專家組)合作組成的JVT(聯合視頻組)推動的新一代數字視頻編碼標準,也稱為MPEG
9、-4/AVC編碼。H264編碼依托雄厚的背景,在技術上獨樹一幟,大幅領先于其它編碼算法。X264編碼,是H264編碼的一個開源分支,它符合H264標準,其功能在于編碼,而不作為解碼器使用,X264編碼最大的特點在于注重實用,它在不明顯降低編碼性能的前提下,努力降低編碼的計算復雜度,X264對于H264編碼中的一些復雜編碼特性做了折衷處理,其壓縮視頻體積小于XVID(MPEG-4編碼視頻,以小體積、高畫質的特點得到了廣泛認可。 H.263編碼格式H.263是國際電聯ITU-T的一個標準草案,是為低碼流通信而設計的。但實際上這個標準可用在很寬的碼流范圍,而非只用于低碼流應用,它在許多應用中可以認為
10、被用于取代H.261。H.263的編碼算法與H.261一樣,但做了一些改善和改變,以提高性能和糾錯能力。1998年IUT-T推出的H.263+是H.263建議的第2版,它提供了12個新的可協商模式和其他特征,進一步提高了壓縮編碼性能。如H.263只有5種視頻源格式,H.263+允許使用更多的源格式,圖像時鐘頻率也有多種選擇,拓寬應用范圍;另一重要的改進是可擴展性,它允許多顯示率、多速率及多分辨率,增強了視頻信息在易誤碼、易丟包異構網絡環境下的傳輸。另外,H.263+對H.263中的不受限運動矢量模式進行了改進,加上12個新增的可選模式,不僅提高了編碼性能,而且增強了應用的靈活性。H.263已經
11、基本上取代了H.261 MPEG-1編碼格式MPEG-健MPEG&織制定的第一個視頻和音頻有損壓縮標準。視頻壓縮算法于1990年定義完成。1992年底,MPEG-征式被批準成為國際標準。MPEG-吐為CD光碟介質定制的的視頻和音頻壓縮格式。一張70分鐘的CD光碟傳輸速率大約在1.4Mbps。而MPEG-采用了塊方式的運動補償、離散馀弦變換(DCT)、量化等技術,并為1.2Mbps傳輸速率進行了優化。MPEG-傅后被VideoCD采用作為核心技術。MPEG-酌輸出質量大約和傳統錄像機VCR信號質量相當,這也許是VideoCD在發達國家未獲成功的原因 MPEG-2編碼格式MPEG-2編碼標
12、準是由MPEG(MovingPictureExpertsGroup)工作組發布的視頻與音頻壓縮國際標準。MPEG-2編碼于1994年發布,常用于廣播信號(衛星電視、有線電視)的視頻和音頻編碼,經過后期不斷修改,不僅成為DVD的核心技術,還應用于HDTV高清電視傳輸。 MPEG-4編碼格式MPEG41998年11月公布,原預計1999年1月投入使用的國際標準MPEG4不僅是針對一定比特率下的視頻、音頻編碼,更加注重多媒體系統的交互性和靈活性。MPEG-標準主要應用于視像電話(VideoPhone),視像電子郵件(VideoEmail)和電子新聞(ElectronicNews)等,其傳輸速率要求較
13、低,在4800-64000bits/sec之間,分辨率為176X144MPEG-利用很窄的帶寬,通過幀重建技術,壓縮和傳輸數據,以求以最少的數據獲得最佳的圖像質量。 SorensenSpark編碼格式Sorenson編解碼器可以指三個專有的視頻編解碼器:Sorenson視頻,Sorenson視頻3或SorensonSpark。Sorenson視頻也被稱為Sorenson視頻編解碼器,Sorenson視頻量化或SVQSorensonSpark也被稱為H.263或FLV1Sorenson(而且有時誤為Flash視頻(FLV),這是以AdobeFlash容器格式名稱命名)。這兩種編解碼器的設計由So
14、renson媒體公司。Sorenson視頻是用在蘋果的QuickTime和SorensonSpark在用在AdobeFlash容器中。 VC-1編碼格式WMVWindowsMediaVideo)作為經久不衰的一種視頻編碼,一直在不斷改進,2003年,微軟基于WMV第九版(WMV9編碼技術,正式提出了VC-1編碼標準,并于2006年正式成為國際標準。VC-1編碼作為較晚推出的高清編碼算法,自然吸收了MPEG-2與H264編碼的優點,其壓縮比介于MPEG2和H264之間,編解碼復雜性僅有H264的一半,即壓縮時間更短、解碼計算更小,在微軟的大力推動下,VC-1編碼已經得到了BD藍光光盤、電影及電視
15、學會(SMPTE的支持。近幾年來,為了更好的推廣WMV9/VC-1編碼標準,微軟不遺余力的建立了WMV-HD(清資源站點,大量發布采用VC-1編碼壓制的720P、1080P宣傳片及演示片(WMV-HD!頻格式),試圖營造聲勢,吸引用戶關注。不過,中庸的技術(與H264相比無明顯編碼優勢)、封閉的平臺(限于Windows系統)、后發的劣勢(2006年通過成為國際標準)仍然給微軟VC-1編碼的應用前景帶來了較大的不確定性。 JPEG®碼格式JPEG是JointPhotographicExpertsGroup(聯合圖像專家小組)的縮寫。JPEG勺壓縮方式通常是破壞性資料壓縮(lossyco
16、mpression),意即在壓縮過程中圖像的品質會遭受到可見的破壞,有一種以JPE劭基礎的標準ProgressiveJPEG是采用無失真的壓縮方式,但ProgressiveJPEG并沒有受到廣泛的支援。 RV編碼格式RealVideo格式文件包才5后綴名為RARMRAMRMVB勺四種視頻格式。RealVideo是一種高壓縮比的視頻格式,可以使用任何一種常用于多媒體及Webh制作視頻的方法來創建RealVideo文件。例如Premiere、VideoShop以及AfterEffects等,對于文件的播放可用realplayer和暴風影音播放。 DivX編碼格式DivX格式,這是由MPEG4衍生出
17、的另一種視頻編碼(壓縮)標準,也即我們通常所說的DVDrip格式,它采用了MPEG酌壓縮算法同時又綜合了MPEG-4fMP3#方面的技術,說白了就是使用DivX壓縮技術對DVD®片的視頻圖像進行高質量壓縮,同時用MPMAC3對音頻進行壓縮,然后再將視頻與音頻合成并加上相應的外掛字幕文件而形成的視頻格式。其畫質直逼DVP且體積只有DVD的數分之一。這種編碼對機器的要求也不高,所以DivX視頻編碼技術可以說是一種對DVD®成威脅最大的新生視頻壓縮格式,號稱DV而手或DV球結者。 On2TrueMotionVP6編碼格式On2TrueMotionVP6是主要的移動視頻標準,他采用
18、了AdobeFlashLite?3的一些標準,數以百計的網絡門戶,用戶自己制作的內容,以及社交網絡普遍采用基于Flash的VP6格式。2.2視頻的封裝格式封裝格式其實是一個“容器”,它不同于編碼格式,封裝就相當于捆綁打包,將已經編碼好的視頻文件和音軌文件打包在一起,并按照一定規則建立排序和索引,便于播放器或播放軟件來索引播放。常見的封裝格式有MKVAVI、MOVTSPS等等,高清媒體文件的后綴名(擴展文件名)一般都是媒體的封裝格式。3) MO*式:MO"見于AppleQuickTime網站上的電影預告片。MOVfe似于RMVB過于封閉自守,民間制作組沒有人會用這個不方便的形式。4)
19、AVI格式:AVI封裝是微軟在上世紀90年代初創立的封裝標準,是當時為對抗QuickTime的MOV格式而推出的,因為當時還沒有流式播放需要,AVI的將索引布置在打包文件的尾部,這就使得AVI封裝不能做到流式播放(流媒體)0AVI封裝只能支持有限的幾種視頻音頻編碼形式,且AVI不能支持音頻的VBR動態比特率編碼。5) TS格式:TS(TransportStream)是一種比較先進的封裝形式,藍光原盤中,就采用了TS封裝。TS封裝支持幾乎所有編碼的高清視頻和音軌文件。PS(ProgramStream)封裝的技術基本和TS相同,但PS封裝和AVI一樣,都不是流媒體,不能夠支持流式播放,PS封裝使用
20、在原先的HDDVD中。在高清標準下,MPEG-2編碼的視頻文件主要采用TS封裝格式。6) MKV格式:MKMMatroska)是一種新興的多媒體封裝格式,可以將各類視頻編碼、16條或以上不同格式的音頻和語言不同的字幕封裝在一個文件內,它具有開放源代碼、音視頻編碼豐富、網絡親和性好等優勢,已經得到眾多視頻壓制組和玩家的支持,正逐漸成為高清視頻的主流視頻格式。H264編碼與X264編碼目前大多采用MKV封裝格式。3視頻的播放組件及調用流程視頻文件的解碼過程如下依次需要用到的組件有“分離器”、“解碼器”、“渲染器”,它們統稱為“濾鏡”。 分離器(Splitter)要正確地播放多媒體文件,播放器首先要
21、正確地調用分離器,把視頻流和(或)音頻流正確地分離出來,然后交給解碼器進行解碼,這就是分離器的使命。上文中說到有不少的封裝格式,每一種封裝格式都必須有相對應一種分離器,才能正確的把視頻和音頻分離出來以供解碼器解碼。常用的分離器有:GabestMPEGSplitter(MediaPlayerClassic作者編寫的分離器)、KMPSplitter(KMPlayer原配的分離器)HailiMediaSplitter這三種分離器能夠支持較多的封裝格式,其它的分離器還有Moonlight-ElecardMPEG2Demultiplexer(月光分離器)、nVIDIATransportDemux(nVI
22、DIA公司的分離器,配合PureVideo使用)、CyberLinkDemux(PowerDVD軟件中的分離器) 解碼器(Decoder解碼器在整個視頻的播放中占據了最主要的位置,它的作用是對由分離器分離出來的音頻流和視頻流分別進行解碼。解碼器又分為視頻解碼器和音頻解碼器。常見的視頻解碼器有:MPEG-2視頻解碼器InterVideoVideoDecoder(WinDVD的解碼器)CyberLinkDTVVideo/SPFilterCyberLinkVideo/SPFilter(PowerDVD的解碼器)Moonlight-ElecardMPEG2VideoDecodernVIDIAVideo
23、Decoder(nVIDIAPureVideo的解碼器)SonicCinemasterVideo、GabestVideoDecoderH264/X264/AVC視頻解碼器CyberLinkH.264/AVCDecoder(PowerDVD的解碼器)、CoreAVCDirectShowVideoDecoderMoonlightH264VideoDecoderffdshowMPEG-4VideoDecoderVC-1視頻解碼器CyberLinkVC-1Deocder(PowerDVD的解碼器)、MediaPlayerClassicVideoDecoder>WMVideoDecoderDMO微
24、軟的解碼器)等等。常見的音頻解碼器有:CyberLinkAudioDecoder(PowerDVD的解碼器)AC3FilterInterVideoAudioDecodernVIDIAAudioDecoder3.3渲染器(Rendered渲染器與解碼器一樣,分為視頻渲染器和音頻渲染器,解碼后的視頻數據經過視頻渲染器的渲染后呈現到顯示設備上,解碼后的音頻經過音頻渲染器的渲染后從聲卡輸出。渲染在視頻播放的過程中是很重要的,因為它會影響到視頻最終的效果,不同的渲染器有不同的技術特性,對電腦的配置(主要是CPU和顯卡)的要求也不一樣。視頻渲染器主要有以下幾種:舊式視頻渲染器(VideoRenderer)
25、:這種是最原始的渲染器,它接收到來自解碼器解碼后的數據流,在顯示設備上顯示。這種渲染器基本上不能調用到顯卡硬件特性,全靠CPU來完成渲染任務。覆蓋合成器(OverlayMixer):覆蓋合成器能夠將若干路視頻流合并輸出到顯示設備上,并且它能夠很好地調用顯卡硬件的拉伸,顏色空間變換等硬件功能,以減少對CPU資源的占用率。視頻覆蓋的畫面質量事實上取決于顯卡硬件。通常在使用覆蓋合成器的時候無法直接對正在播放的視頻截圖。VMR渲染器(VideoMixingRenderer):VMR對覆蓋合成器進行了改進,它是基于DirectX的視頻渲染器,能夠支持16路的視頻流混合。VMR根據DirectX版本的不同
26、,可以分為VMR7和VMR9其中VMR7基于DirectDraw7(2D),而VMR9基于Direct3D9(3D),VMR9可以支持視頻特效(VideoEffects)和視頻變換(VideoTransitions)。VMR根據渲染模式的不同又分為“窗口化”(Windowed、“無窗口”(Windowless)、“未渲染"(Renderless)模式。EVR增強型視頻渲染器(EnhancedVideoRenderer)微軟在WindowsVista系統就開始引入的新視頻渲染器,當然也包含在新的操作系統Windows7中。它與VMR最大的區別就是能夠支持DXVA2.0。二、RGB和YU
27、V視頻存儲格式視頻數據,圖像數據在存儲中的存儲格式主要有RGB和YUMRGB是多媒體數據進行數據存儲采用的主流格式;YUV格式所需存儲空間一般是RGB格式存儲空間的一半,所以YUV格式主要用于多媒體數據傳輸中。RGB視頻存儲格式RGB既述計算機彩色顯示器顯示色彩的原理與彩色電視機一樣,都是采用R(Red)、G(Green)、B(Blue)相加混色的原理:通過發射出三種不同強度的電子束,使屏幕內側覆蓋的紅、綠、藍磷光材料發光而產生色彩。這種色彩的表示方法稱為RGB色彩空間表示。根據三基色原理,任意一種色光F都可以用不同分量的R、G、B三色相加混合而成。F=rR+gG+bB其中,r、g、b分別為三
28、基色參與混合的系數。當三基色分量都為0(最弱)時混合為黑色光;而當三基色分量都為k(最強)時混合為白色光。調整r、g、b三個系數的值,可以混合出介于黑色光和白色光之間的各種各樣的色光。常見的RG昭式RGB的GUID(globallyuniqueidentifier全球唯一標識符)格式描述描述如下表表2.1RGB的GUID描述RGB的GUID描述符描述符說明MEDIASUBTYPERGB12每個像素用1位表示,需要調色板MEDIASUBTYPERGB4每個像素用4位表示,需要調色板16MEDIASUBTYPE_RGB8256每個像素用8位表示,需要調色板MEDIASUBTYPE_RGB565每個
29、像素用16位表示,RGB分量分別使用5位、6位、5位MEDIASUBTYPE_RGB555每個像素用16位表示,RGB分量都使用5位(剩下的1位不用)MEDIASUBTYPE_RGB24每個像素用24位表示,RGB分量各使用8位MEDIASUBTYPE_RGB32每個像素用32位表示,RGB分量各使用8位(剩下的8位不用)MEDIASUBTYPE_ARGB32每個像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha通道值)各種RG璐式介紹RGB1、RGB4RGB8都是調色板類型的RGB格式,在描述這些媒體類型的格式細節時,通常會在BITMAPINFOHEADER據結構后面跟著一
30、個調色板(定義一系列顏色)。它們的圖像數據并不是真正的顏色值,而是當前像素顏色值在調色板中的索引。RGB1以RGB1(2色位圖)為例,比如它的調色板中定義的兩種顏色值依次為0x000000(黑色)和0xFFFFFF白色),那么圖像數據001101010111,(每個像素用1位表示)表示對應各像素的顏色為:黑黑白白黑白黑白黑白白白,RGB565RGB565使用16位表示一個像素,這16位中的5位用于R,6位用于G,5位用于Bo程序中通常使用一個字(WORD,一個字等于兩個字節)來操作一個像素。當讀出一個像素后,這個字的各個位意義如下:高字節低字節RRRRRGGGGGGBBBBB可以組合使用屏蔽字
31、和移位操作來得到RGB各分量的值:#defineRGB565_MASK_RED0xF800#defineRGB565_MASK_GREEN0x07E0#defineRGB565_MASK_BLUE0x001FR=(wPixel&RGB565_MASK_RED)>>11;取值范圍0-31G=(wPixel&RGB565_MASK_GREEN)>>5;取值范圍0-63B=wPixel&RGB565_MASK_BLUE;取值范圍0-31RGB555RGB55呢另一種16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一個字讀出一個像素后,
32、這個字的各個位意義如下:高字節低字節XRRRRGGGGGBBBB(0C表示不用,可以忽略)可以組合使用屏蔽字和移位操作來得到RGB各分量的值:#defineRGB555_MASK_RED0x7C00#defineRGB555_MASK_GREEN0x03E0#defineRGB555_MASK_BLUE0x001FR=(wPixel&RGB555_MASK_RED)>>10;取值范圍0-31G=(wPixel&RGB555_MASK_GREEN)>>5;取值范圍0-31B=wPixel&RGB555_MASK_BLUE;取值范圍0-31RGB24
33、RGB248用24位來表示一個像素,RG盼量都用8位表示,取值范圍為0-255。注意在內存中RGB各分量的排列順序為:BGRBGRBGR。通常可以使用RGBTRIPLE據結構來操作一個像素,它的定義為:typedefstructtagRGBTRIPLEBYTErgbtBlue;藍色分量BYTErgbtGreen;/綠色分量BYTErgbtRed;/紅色分量RGBTRIPLE;RGB32RGB32使用32位來表示一個像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB3漪是帶Alpha通道的RGB32)注意在內存中RGB各分量的排列順序為:BGRABGRABGRA通常可以
34、使用RGBQUAD&據結構來操作一個像素,它的定義為:typedefstructtagRGBQUADBYTErgbBlue;藍色分量BYTErgbGreen;/綠色分量BYTErgbRed;/紅色分量BYTErgbReserved;淋留字節(用作Alpha通道或忽略)RGBQUAD;2YUV視頻存儲格式YUV概述在現代彩色電視系統中,通常采用三管彩色攝像機或彩色CCD攝像機進行攝像,然后把攝得的彩色圖像信號經分色、分別放大校正后得到RGB再經過矩陣變換電路得到亮度信號Y和兩個色差信號R-丫(即U)、BY(即V),最后發送端將亮度和色差三個信號分別進行編碼,用同一信道發送出去。這種色彩的
35、表示方法就是所謂的YUV色彩空間表示。采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機與黑白電視機的兼容問題,使黑白電視機也能接收彩色電視信號。本文講述的格式全部使用每個像素位置8位的方式來編碼Y頻道(也稱為燈光頻道),并使用每樣例8位的方式來編碼每個U或V色度樣例。但是,大多數YUV格式平均使用的每彳t素位數都少于24位,這是因為它們包含的U和V樣例比Y樣例要少。注在本文中,U一詞相當于Cb,V一詞相當于Cr。常見YUV的格式在DirectSho
36、w中,常見的YUV格式有YUY2YUYVYVYUUYVYAYUVY41RY411、Y211、IF09IYUVYV12YVU9YUV411、YUV420等。作為視頻媒體類型的輔助說明類型(Subtype),它們對應的GUID(GloballyUniqueIdentifier)如下表所示。表2.2YUV的GUID描述YUV的GUID描述符描述符說明MEDIASUBTYPE_YUY2YUY2以4:2:2方式打包MEDIASUBTYPE_YUYVYUYV實際格式與YUY2相同MEDIASUBTYPE_YVYUYVYU以4:2:2方式打包MEDIASUBTYPE_UYVYUYVY以4:2:2方式打包ME
37、DIASUBTYPE_AYUVAYUVAlpha通道的4:4:4YUV格式MEDIASUBTYPE_Y41PY41P以4:1:1方式打包MEDIASUBTYPE_Y411Y411實際格式與Y41P相同MEDIASUBTYPE_Y211Y211MEDIASUBTYPE_IF09IF09格式MEDIASUBTYPE_IYUVIYUV格式MEDIASUBTYPE_YV12YV12格式MEDIASUBTYPE_YVU9YVU9格式2.3YUV主要采樣格式主要的采樣格式有YCbCr4:2:0YCbCr4:2:2YCbCr4:1:儕口YCbCr4:4:4其中YCbCr4:1:1比較常用,其含義為:每個點保
38、存一個8bit的亮度值(也就是Y值),每2x2個點保存一個Cr和Cb值,圖像在肉眼中的感覺不會起太大的變化。所以,原來用RGB(RG,B都是8bitunsigned)模型,1個點需要8x3=24bits,若4:4:4按采樣后,YUV仍各占8bit。按4:1:1采樣后,而現在一個點平均僅需要8+(8/4)+(8/4)=12bits。這樣就把圖像的數據壓縮了一半。YUV的優點之一是,色度頻道的采樣率可比Y頻道低,同時不會明顯降低視覺質量。有一種表示法可用來描述法稱為A:B:C表示法:,4:4:4:表示色度頻道沒有下采樣4:2:2:表示2:1的水平下采樣,V樣例,每個掃描行都包含四個4:2:0:表示
39、2:1的水平下采樣,4:1:1:表示4:1的水平下采樣,U和V與Y的采樣頻率比例,這個表示沒有垂直下采樣。對于每兩個U樣例或Y樣例。2:1的垂直下采樣。沒有垂直下采樣。對于每個U樣例或V樣例,每個掃描行都包含四個Y樣例2.3.1YUV采樣格式圖示YUV4:4:4采樣下圖顯示了4:4:4圖片中使用的采樣網格。燈光樣例用叉來表示,色度樣例則用圈表小。®0d演演國圖2.1YUV4:4:4樣例位置YUV4:2:2采樣4:2:2采樣的這種主要形式在ITU-RRecommendationBT.601中進行了定義。圖2.1顯示了此標準定義的采樣網格。因X想X8!X0X0X0X!3X0J圖2.2YU
40、V4:2:2樣例位置YUV4:2:0采樣4:2:0采樣有兩種常見的變化形式。其中一種形式用于MPEG-2視頻,另一種形式用于MPEG-1以及ITU-TrecommendationsH.261和H.26&圖2.3顯示了MPEG-1方案中使用的采樣網格,圖2.4顯示了MPEG-2方案中使用的采樣網格。XIXXXXx)xx)xoQkxXX圖2.3YUV4:2:0樣例位置(MPEG-1方案)XXXXkxXXpo,KXx>d圖2.4YUV4:2:0樣例位置(MPEG-2方案)與MPEG-1方案相比,在MPEG-2方案與為4:2:2和4:4:4格式定義的采樣網格之間進行轉換更簡單一些。因此,
41、在Windows中首選MPEG-2方案,應該考慮將其作為4:2:0格式的默認轉換方案。2.3.2YUV存儲方式本文講述推薦用于視頻呈現的8位YUV格式。這些格式可以分為幾個類別:4:4:4格式,每像素32位4:2:2格式,每像素16位4:2:0格式,每像素16位4:2:0格式,每像素12位首先,理解下列概念,這樣才能理解接下來的內容:表面原點:對于本文講述的YUV格式,原點(0,0)總是位于表面的左上角。跨距:表面的跨距,有時也稱為間距,指的是表面的寬度,以字節數表示。對于一個表面原點位于左上角的表面來說,跨距總是正數。對齊:表面的對齊是根據圖形顯示驅動程序的不同而定的。表面始終應該DWORD
42、對齊,就是說,表面中的各個行肯定都是從32位(DWORD)邊界開始的。對齊可以大于32位,但具體取決于硬件的需求。打包格式與平面格式:YUV格式可以分為打包格式和平面格式。在打包格式中,Y、U和V組件存儲在一個數組中。像素被組織到了一些巨像素組中,巨像素組的布局取決于格式。在平面格式中,Y、U和V組件作為三個單獨的平面進行存儲。4:4:4格式,每像素32位推薦一個4:4:4格式,FOURCC碼為AYUM這是一個打包格式,其中每個像素都被編碼為四個連續字節,其組織順序如下所示。Increasingmemoryaddr2&getVOUOYDAOV1LJ1Y1A1V2U2YZA2圖2.5AY
43、UV內存布局標記了A的字節包含alpha的值。4:2:2格式,每像素16位支持兩個4:2:2格式,FOURCC碼如下:YUY2UYVY兩個都是打包格式,其中每個巨像素都是編碼為四個連續字節的兩個像素。這樣會使得色度水平下采樣乘以系數2。YUY2在YUY2格式中,數據可被視為一個不帶正負號的char值組成的數組,其中第一個字節包含第一個Y樣例,第二個字節包含第一個U(Cb)樣例,第三個字節包含第二個Y樣例,第四個字節包含第一個V(Cr)樣例,如圖2.6所示。ricrnsmcnrgod陪s®1yq|in1加¥2|tn|u圖2.6YUY2內存布局如果該圖像被看作由兩個little
44、-endianWORD值組成的數組,則第一個WORD在最低有效位(LSB)中包含Y0,在最高有效位(MSB)中包含U。第二個WORD在LSB中包含Y1,在MSB中包含V。YUY2是用于MicrosoftDirectX?VideoAcceleration(DirectXVA)的首選4:2:2像素格式。預期它會成為支持4:2:2視頻的DirectXVA加速器的中期要求。UYVY此格式與YUY2相同,只是字節順序是與之相反的一就是說,色度字節和燈光字節是翻轉的(圖7)。如果該圖像被看作由兩個little-endianWORD值組成的數組,則第一個WORD在LSB中包含U,在MSB中包含Y0,第二個W
45、ORD在LSB中包含V,在MSB中包含Y1。ric降維ng:msmenrgodfe加納圖2.7UYVY內存布局4:2:0格式,每像素16位推薦兩個4:2:0每像素16位格式,FOURCC碼如下:IMC1IMC3兩個FOURCC碼都是平面格式。色度頻道在水平方向和垂直方向上都要以系數2來進行再次采樣。IMC1所有Y樣例都會作為不帶正負號的char值組成的數組首先顯示在內存中。后面跟著所有V(Cr)樣例,然后是所有U(Cb)樣例。V和U平面與Y平面具有相同的跨距,從而生成如圖2.8所示的內存的未使用區域。i"口®®niBTOT*idre33«IMC3推薦四個
46、4:2:0每像素12位格式,FOURCC碼如下:IMC2IMC4YV12NV122來進在所有這些格式中,色度頻道在水平方向和垂直方向上都要以系數行再次采樣。IMC2此格式與IMC1相同,只是V(Cr)和U(Cb)行在半跨距邊界處進行了交錯。換句話說,就是色度區域中的每個完整跨距行都以一行V樣例開始,然后是一行在下一個半跨距邊界處開始的U樣例。此布局與IMC1相比,能夠更加高效地利用地址空間。它的色度地址空間縮小了一半,因此整體地址空間縮小了25%。在各個4:2:0格式中,IMC2是第二首選格式,排在NV12之后。IMC4此格式與YV12所有Y樣例都會作為不帶正負號的char值組成的數組首先顯示
47、在內存中此數組后面緊接著所有V(Cr)樣例。V平面的跨距為Y平面跨距的一半,面包含的行為Y平面包含行的一半。V平面后面緊接著所有U(Cb)樣例,它的跨距和行數與NV12所有Y樣例都會作為由不帶正負號的char值組成的數組首先顯示在內存中,并且行數為偶數。Y平面后面緊接著一個由不帶正負號的char值組成的數組,其中包含了打包的U(Cb)和V(Cr)樣例,如圖2.13所示。當組合的U-V數組被視為一個由little-endianWORD值組成的數組時,LSB包含U值,MSB包含V值。NV12是用于DirectXVA的首選4:2:0像素格式。預期它會成為支持4:2:0視頻的DirectXVA加速器的
48、中期要求。3YCbCr視頻存儲格式YCbCr其中Y是指亮度分量,Cb指藍色色度分量,而Cr指紅色色度分量。人的肉眼對視頻的Y分量更敏感,因此在通過對色度分量進行子采樣來減少色度分量后,肉眼將察覺不到的圖像質量的變化。主要的子采樣格式有YCbCr4:2:0、YCbCr4:2:2和YCbCr4:4:4。4:2:0表示每4個像素有4個亮度分量,2個色度分量(YYYYCbCr),僅采樣奇數掃描線,是便攜式視頻設備(MPEG-4)以及電視會議(H.263)最常用格式。4:2:2表示每4個像素有4個亮度分量,4個色度分量(YYYYCbCrCbCr),是DVD、數字電視、HDTV以及其它消費類視頻設備的最常
49、用格式。4:4:4表示全像素點陣(YYYYCbCrCbCrCbCrCbCr),用于高質量視頻應用、演播室以及專業視頻產品。4YUV與YCbCr的對比兩者與rgb之間換算公式的差異yuv<->rgbY'=0.299*R'+0.587*G'+0.114*B'U'=-0.147*R'-0.289*G'+0.436*B'=0.492*(B'-Y')V'=0.615*R'-0.515*G'-0.100*B'=0.877*(R'-Y')R'=Y'+1.
50、140*V'G'=Y'-0.394*U'-0.581*V'B'=Y'+2.032*U'yCbCr<->rgbY'=0.257*R'+0.504*G'+0.098*B'+16Cb'=-0.148*R'-0.291*G'+0.439*B'+128Cr'=0.439*R'-0.368*G'-0.071*B'+128R'=1.164*(Y-16)+1.596*(Cr'-128)兩者來源上的差異YUV色彩模型來源于RG
51、B模型。該模型的特點是將亮度和色度分離開,從而適合于圖像處理領域。顏色模型用于模擬彩色電視廣播。YCbC橫型來源于YUV模型。YCbC是一個的YUV色彩空間縮放和偏移的版本應用:數字視頻,ITU-RBT.601T推薦標準。5顏色空間和色度采樣率轉換本節提供了在YUV和RGB之間進行轉換的指南,以及在某些不同YUV格式之間進行轉換的指南。在本節中,我們會以兩個RGB編碼方案為例:8位計算機RGB和studio視頻RGB,前者也稱為sRGB或全范圍”RGB后者也稱為帶有頭空間和腳空間的RGB。這兩個方案的定義如下:計算機RGB對于每個紅色、綠色和藍色樣例都使用8位。黑色表示為R=G=B=0白色則表
52、示為R=G=B=255Studio視頻RGB對于每個紅色、綠色和藍色樣例使用一定的位數,即N位,其中N為8或更大的數字。Studio視頻RGB使用的縮放系數與計算機RGB使用的縮放系數不同,它具有一個偏移量。黑色表示為R=G=B=16*2n-8,白色則表示為R=G=B=235*2-8。但是,實際的值可能不在此范圍之內。Studio視頻RGB是Windows中視頻的首選RGB定義,而計算機RGB則是非視頻應用的首選RGB定義。在這兩種形式的RGB中,色度座標都與在RGB原色定義的ITU-RBT.709中指定的一樣。R、G和B的(x,y)座標分別為(0.64,0.33)、(0.30,0.60)和(
53、0.15,0.06)。基準白色為D65,座標為(0.3127,0.3290)。標稱灰度系數為1/0.45(大名勺為2.2),精確的灰度系數在ITU-RBT.709中進行了詳細定義。RGB和YUV之間的轉換我們首先講述RGB和4:4:4YUV之間的轉換。要將4:2:0或4:2:2YUV轉換為RGB我們建議首先將YUV數據轉換為4:4:4YUV然后再將4:4:4YUV轉換為RGBAYUV格式是一個4:4:4格式,它又t于每個Y、U和V樣例都使用8位。對于某些應用,還可以使用每樣例多于8位的位數定義YU對于數字視頻,定義了從RGB到兩個主要YUV的轉換。這兩個轉換都基于稱為ITU-RRecommen
54、dationBT.709的規范。第一個轉換是BT.709中定義用于50-Hz的較早的YUV格式。它與在ITU-RRecommendationBT.601中指定的關系相同,ITU-RRecommendationBT.60也被稱為它的舊名稱CCIR601這種格式應該被視為用于標準定義TV分辨率(720x576)和更低分辨率視頻的首選YUV格式。它的特征由下面兩個常量Kr和Kb的值來定義:Kr=0.299Kb=0.114第二個轉換為BT.709中定義用于60-Hz的較新YUV格式,應該被視為用于高于SDTV的視頻分辨率的首選格式。它的特征由下面兩個不同的常量值來定義:Kr=0.2126Kb=0.07
55、22從RGB到YUV轉換的定義以下列內容開始:L=Kr*R+Kb*B+(1-Kr-Kb)*G然后,按照下列方式獲得YUV值:Y=floor(2A(M-8)*(219*(LN)/S+16)+0.5)U=clip3(0,2AM-1,floor(2A(M-8)*(112*(B-L)/(1-Kb)*S)+128)+0.5)V=clip3(0,2AM-1,floor(2A(M-8)*(112*(R-L)/(1-Kr)*S)+128)+0.5)M為每個YUV樣例的位數(M>=8)。Z為黑電平變量。對于計算機RGB,Z等于00對于studio視頻RGB,Z等于16*2n-8,其中N為每個RGB樣例的位
56、數(N>=8)。S為縮放變量。對于計算機RGB,S等于255。對于studio視頻RGB,S等于219*2N-80函數floor(x)返回大于或等于x的最大整數。函數clip3(x,y,z)的定義如下所示:clip3(x,y,z)=(z<x)?x:(z>y)?y:z)Y樣例表示亮度,U和V樣例分別表示偏向藍色和紅色的顏色偏差。Y的標稱范圍為16*2M-8到235*2M-8O黑色表示為16*2m-8,白色表示為235*2M-8。U和V的標稱范圍為16*2M-8至I240*2m-8,值128*2M-8表示中性色度。但是,實際的值可能不在這些范圍之內。對于studio視頻RGB形式
57、的輸入數據,要使得U和V值保持在0到2M-1范圍之內,必需進行剪輯操作。如果輸入為計算機RGB,則不需要剪輯操作,這是因為轉換公式不會生成超出此范圍的值。這些都是精確的公式,沒有近似值。本文后面的所有內容均派生自這些公式。示例:將RGB888轉換為YUV4:4:4示例:將8位YUV轉換為RGB888將4:2:0YUV轉換為4:2:2YUV將4:2:2YUV轉換為4:4:4YUV將4:2:0YUV轉換為4:4:4YUV示例:將RGB888轉換為YUV4:4:4在輸入為計算機RGB,輸出為8位BT.601YUV的情況下,我們相信前面一節中給出的公式可以按照下列公式進行合理近似計算:Y=(66*R+129*G+25*B+128)>>8)+16U=(-38*R-74*G+112*B+128)>>8)+128V=(112*R-94*G-18*B+128)>>8)+128這些公式使用精確度不大于8位(不帶正負號)的系數計算出8位結果。中間結果需要最多16位的精確度。示例:將8位YUV轉換為RGB888從
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年道真自治縣“特崗計劃”教師招聘考試筆試試題(含答案)
- 【金華】2025年浙江金華義烏工商職業技術學院高層次人才引進26人筆試歷年典型考題及考點剖析附帶答案詳解
- 容積問題教學課件
- 教學課件教學目標
- 派熱克斯玻璃項目可行性研究報告
- 敬畏生命班會課課件
- 教學論課件封面
- ui的教學課件圖片
- 教育政策法規課件
- 教育技術課件下載
- CJT 313-2009 生活垃圾采樣和分析方法
- 《烏魯木齊市國土空間總體規劃(2021-2035年)》
- 2024大功率風電葉片回收技術
- 《酒店消防安全培訓》課件完整版
- 70歲以上的老年人駕考三力測試答案
- 國開2024年《法律基礎》形考作業1-4答案
- PDCA提高臥床患者踝泵運動的執行率
- 上海學前教育學院附屬青浦第二實驗幼兒園新生入園登記
- 水庫安保服務方案
- INSAR技術在城市地面沉降監測中的應用
- 產品審核VDA6.5培訓課件
評論
0/150
提交評論