- 新一代通用視頻編碼H.266/VVC:原理、標準與實現
- 萬帥等
- 7471字
- 2024-03-22 11:48:57
1.2.2 視頻編碼標準的發展
視頻編碼的國際標準化過程始于20世紀80年代早期,至今已經走過了將近40個年頭。圖1.3給出了主流視頻編碼國際標準的發展歷程。在H.266/VVC出現之前,H.264/AVC和H.265/HEVC在相當長的時間內占據了主導地位。H.264/AVC誕生后,國際標準組織圍繞該標準進行了可伸縮視頻編碼(Scalable Video Coding, SVC)和多視點視頻編碼(Multiview Video Coding, MVC)等擴展。H.265/HEVC制定完成后,也在可伸縮、多視角、三維、屏幕內容等方面進行了擴展,以適應更廣的應用范圍。目前最新的H.266/VVC標準已經正式完成,其擴展正在高動態范圍、高比特位深、基于神經網絡編碼等多個方面進行探索。
2002年6月,我國原信息產業部科學技術司成立了“數字音視頻編解碼技術標準工作組”(簡稱AVS工作組),制定了具有自主知識產權的音視頻編碼標準AVS。2006年2月,國家標準化管理委員會(SAC)發布通知:《信息技術 先進音視頻編碼 第2部分:視頻》于2006年3月起實施,AVS視頻編碼部分正式成為國家標準。隨著廣電高清數字廣播的發展,2012年3月,工業和信息化部電子信息司與國家廣播電影電視總局科技司聯合發文共同成立“AVS技術應用聯合推進工作組”;2016年12月,工作組完成了第二代視頻編碼標準AVS2;2019年6月,工作組完成第三代視頻編碼標準第一階段標準(AVS3 Phase 1);2021年4月,工作組完成AVS3第二階段標準(AVS3 Phase 2)。

圖1.3 主流視頻編碼國際標準的發展歷程
除國際、國內標準外,視頻編碼領域的另一大熱點是開放式標準。在谷歌的主導下,開放媒體聯盟(Alliance for Open Media, AOM)于2015年成立,其致力于開發開放式、無版權費的視頻編碼標準。在開源編解碼器VP9的基礎上,2018年底,AOM完成了AV1視頻編碼格式(標準),其性能優于x265編碼器。目前,AOM正在組織開發下一代視頻編碼標準AV2。
1.H.26x系列標準
(1)H.261標準。
H.261標準[5]是ITU-T在1990年制定的一個數字視頻編碼標準,其制定目的是能夠在帶寬為64kbit/s倍數的綜合業務數字網(Integrated Services Digital Network, ISDN)上傳輸質量可接受的視頻信號,它被稱為一種p×64kbit/s的編解碼器(p為1~30)。此時H.261標準主要針對的應用是基于ISDN的視頻通信應用,如可視電話、視頻會議等。
由于世界各國采用的電視制式不同,主要有PAL(Phase Alternating Line)和NTSC(National Television System Committee)兩大類,要在這些國家之間建立可視電話或視頻會議業務,是不能直接使用電視信號進行傳輸的。因此,H.261標準提出一種通用的中間格式視頻(Common Intermediate Format, CIF)來解決上述問題。CIF格式視頻的空間分辨率為352×288,幀率為30fps,可以很方便地轉化為PAL和NTSC制式的電視信號。另外,H.261標準也可處理QCIF(Quarter CIF,分辨率為176×144)的視頻,主要面對的是更低帶寬下視頻傳輸的應用。
H.261標準主要采用的編碼方法包括基于運動補償的幀間預測、離散余弦變換(Discrete Cosine Transform, DCT)、量化、zig-zag掃描和熵編碼等。這些編碼技術組合在一起就形成了沿用至今的混合編碼(Hybrid Coding)框架,可以認為H.261標準是混合編碼標準的鼻祖。
(2)H.263標準。
H.263標準[6]由ITU-T制定,最初是針對低碼率的視頻會議應用而設計的。后期應用證明,H.263標準視頻編碼并不局限于低碼率傳輸環境,還適用于很大范圍的動態碼率。H.263標準最初為H.324系統設計,進而成功應用于基于H.323標準的視頻會議系統,以及基于H.320、RTSP(Real Time Streaming Protocol)和SIP(Session Initiation Protocol)標準的視頻通信系統。
H.263標準仍然以混合編碼框架為核心,其基本原理、原始數據和碼流組織都與H.261標準十分相似。同時,H.263標準也吸收了MPEG系列標準等其他一些國際標準的技術,如半像素精度的運動估計、PB幀預測、無限制運動矢量和8×8塊的幀間預測等。通過使用這些當時最先進的編碼技術,H.263標準的編碼性能有了革命性的提高。當時,H.263標準在所有測試碼率下的性能均優于H.261標準。在很長一段時間里,H.263標準是各大相關廠商必須支持的標準之一。
在H.263標準的發展中,出現了兩個具有增強功能的改進版本,分別是H.263+標準[7]和H.263++標準[8]。H.263+標準也叫作H.263v2標準。相比H.263標準,H.263+標準允許更多的圖像輸入格式,拓寬了視頻編碼的范圍;采用了幀內預測及去塊效應濾波,提高了壓縮效率;增加了時間分級、信噪比和空間分級,提高了視頻信號傳輸的有效性,增強了視頻傳輸的抗誤碼能力。
H.263++(也稱H.263v3)標準在H.263+標準的基礎上增加了附加選項(Annex)U(增強型參考幀選擇)、V(數據分片)和W(補充信息)來提高碼流的抗出錯性能(Error Resilience),這些措施同時提高了編碼效率。
2.MPEG系列標準
(1)MPEG-1標準。
MPEG-1標準[9]是MPEG制定的第一個視頻和音頻有損壓縮標準,也是最早推出及在市場上應用的MPEG技術。當初,它主要是針對數字存儲媒體(如CD光盤),記錄活動圖像及其伴音的編碼方式。MPEG-1標準后來成為影音光碟VCD(Video CD)的核心技術,其數據編碼輸出速率定位為1.5Mbit/s,在這個碼率下它的編碼質量與傳統錄像機相當。由于編碼能力的限制,MPEG-1標準對運動較快的視頻信號進行編碼會產生“馬賽克”現象,因此較為適合運動適中或較慢的視頻內容。MPEG-1標準可以實現傳統磁帶式錄像機的各項功能,包括存取、正放、快進、快退和慢放等功能,曾成功應用于卡拉OK、VCD影音光碟及視頻點播(Video On Demand, VOD)等多種音像系統。
(2)MPEG-2標準。
MPEG-2標準[10]是繼MPEG-1標準制定之后由MPEG推出的音視頻編碼標準,于1994年面世。MPEG-2標準的應用領域包括衛星電視、有線電視等,經過少量修改后,成為廣為人知的DVD產品的核心技術。前面曾提到,MPEG-2視頻編碼標準(MPEG-2標準第2部分)事實上是由MPEG和ITU-T聯合制定的,ITU-T的H.262與MPEG-2視頻編碼標準是完全相同的。不過,MPEG-2標準是人們更為熟悉的名稱。
比較特別的是,MPEG-2視頻編碼標準中開始引入了檔次(Profile)和等級(Level)概念,能夠針對不同應用要求進行編碼模式的選擇。MPEG-2標準按編碼圖像的分辨率分為4個“等級”,按不同的編碼復雜程度分為5個“檔次”。“等級”與“檔次”的若干組合構成MPEG-2視頻編碼標準在某種特定應用下的子集:對某一輸入格式的圖像,采用特定集合的編碼工具,產生規定速率范圍內的編碼碼流。
(3)MPEG-4標準。
MPEG-4標準[11]在1998年11月被ISO/IEC正式批準,于1999年被正式命名為ISO/IEC 14496國際標準。相比于MPEG-1標準和MPEG-2標準,MPEG-4標準涵蓋的內容非常豐富,它包括31個部分(Parts)。MPEG-4標準的不同部分分別定義了系統、音視頻編碼、多媒體傳輸集成框架、知識產權管理、動畫框架擴展和3D圖形壓縮等內容,其中第10部分就是著名的H.264/AVC標準。MPEG-4標準支持面向對象編碼,面向的應用包括數字電視、動畫、影音合成、網頁瀏覽和交互式多媒體等。它將眾多多媒體應用集成在一個完整框架內,旨在為各類多媒體通信及應用環境提供標準算法及工具,從而建立起一種能被多媒體傳輸、存儲、檢索等應用領域普遍采用的統一數據格式。
(4)H.264/AVC標準。
H.264/AVC標準[12]是由ITU-T的VCEG和ISO/IEC的MPEG組成的聯合視頻組(Joint Video Team, JVT)共同開發的數字視頻編碼標準,也稱ITU-T H.264建議和MPEG-4第10部分先進視頻編碼(Advanced Video Coding, AVC)標準。
H.264/AVC標準仍然沿用了混合編碼的理念,此框架支持了許多先進的編碼技術,如具有方向性的幀內預測、多參考幀的運動補償、靈活分塊的運動補償、可用于預測的B幀、4×4/8×8的整數DCT變換、環路去方塊濾波和自適應熵編碼等。H.264/AVC標準還提供了一系列增強視頻編碼魯棒性的編碼方式,如數據分割、靈活宏塊順序等。這些編碼方式均在H.264/AVC標準中的視頻編碼層(Video Coding Layer, VCL)進行規定。除VCL外,H.264/AVC標準還定義了網絡抽象層(Network Abstraction Layer, NAL),通過NAL單元,將H.264/AVC標準中的VCL碼流數據與下層傳輸協議有機“黏合”。
由于采用了先進的編碼技術,H.264/AVC標準獲得了遠超以往標準的編碼性能。在相同重建視頻質量條件下,H.264/AVC標準比H.263+、MPEG-4(SP)標準減少了約50%的碼率。同時,H.264/AVC標準具有非常好的網絡適配性和抗出錯性能,因此適用于各類交互式網絡視頻應用。H.264/AVC標準的優秀壓縮性能也保證了它在視頻存儲、廣播和流媒體等領域的廣泛應用。不過,這些優秀的性能都來自復雜的編碼方式,因此H.264/AVC標準的復雜度也較以往編碼標準高出許多。
(5)H.265/HEVC標準。
H.265/HEVC標準[13-14]也是由ITU-T的VCEG和ISO/IEC的MPEG組成的聯合視頻組JVT共同開發的數字視頻編碼標準,也稱為ITU-T H.265建議和ISO/IEC 23008-2高性能視頻編碼(High Efficiency Video Coding, HEVC)標準,簡稱為H.265/HEVC標準。
H.265/HEVC標準沿用了混合編碼框架,支持更多先進的編碼技術,如四叉樹編碼單元劃分結構、35種幀內預測模式、運動信息融合技術、先進的運動矢量預測技術、自適應變換技術、像素自適應補償技術等。H.265/HEVC標準還進一步進行了擴展,如支持更高的比特深度(Bit Depth)、4:4:4色度采樣視頻、多視角HEVC(Multiview High Efficiency Video Coding)、可伸縮HEVC(Scalable High Efficiency Video Coding)、3D HEVC(3D High Efficiency Video Coding)、HEVC屏幕內容編碼HEVC-SCC(Screen Content Coding)等。
由于采用了先進的編碼技術,H.265/HEVC標準獲得了遠超以往的編碼性能。在相同重建視頻質量條件下,H.265/HEVC標準比H.264/AVC標準減少了約50%的碼率。
3.AVS系列標準
《信息技術 先進音視頻編碼 第2部分:視頻》[15](簡稱AVS1-P2)是第一個AVS視頻標準,于2006年2月頒布。AVS1-P2針對標清和高清視頻進行編碼工具的優化,在編碼性能與編解碼復雜度之間實現了較好的平衡。AVS1-P2標準采用了16×16的宏塊結構,幀內預測塊的尺寸設置為8×8,采用了5個幀內預測模式進行幀內預測;幀間預測塊的尺寸可為16×16、16×8和8×16,可以采用兩個前向參考幀或前后各一個參考幀進行幀間預測。為了進一步降低復雜度,AVS1-P2采用4抽頭濾波器進行1/2幀間預測插值及采用2抽頭濾波器進行1/4幀間預測插值;變換塊和環路濾波器尺寸設置為8×8,并且采用自適應2D變長碼(Variable Length Coding, VLC)進行熵編碼。此外,AVS1-P2還引入增強直接模式和對稱模式,用于雙向編碼幀(B幀)的模式編碼和運動信息(包含運動矢量及參考幀索引值)編碼,兼顧了低復雜度和高效編碼的需求[16]。經國家廣播電視總局、工業和信息化部測試機構測試,AVS1-P2編碼效率比MPEG-2提高1倍以上[17]。
在AVS1-P2的基礎上,AVS標準工作組與中央電視臺、國家廣播電視總局針對廣播電視高清視頻的需求聯合制定了廣電行業標準《廣播電視先進音視頻編解碼 第1部分:視頻》(簡稱AVS+)[18],并于2012年7月獲批成為行業標準。AVS+相比于AVS1-P2增加了高級熵編碼、加權量化和增強場編碼3類編碼工具,顯著提升了AVS在廣播電視視頻內容方面的主觀和客觀質量。目前,AVS+標準已經廣泛應用于中央電視臺及多個地方電視臺標清和高清電視節目的播放[17]。
隨著視頻內容分辨率由高清向4K過渡,以及視頻內容比特位寬由8bit演進為10bit,中國視頻產業界對視頻編碼效率的要求日益增長。因此,AVS標準工作組于2012年啟動第二代AVS視頻編解碼標準制定工作(簡稱AVS2-P2),2016年5月和12月,AVS2-P2分別被頒布為行業標準和國家標準[18-19]。AVS2-P2相比AVS1-P2和AVS+做了全面的技術升級。AVS2-P2將編碼單元尺寸由16×16擴展為64×64,并采用了四叉樹編碼單元劃分結構進行塊劃分;幀內預測模式由5種模式擴展為33種模式,并采用短距離幀內編碼技術(Short Distance Intra Prediction, SDIP)和1/32精度幀內插值技術;幀間預測過程采用非對稱幀間預測塊劃分、8抽頭幀間插值濾波器、F幀技術,其中F幀是一種采用雙前向參考技術的特殊P幀[20]。在變換技術領域,AVS2-P2標準采用4×4、8×8、16×16、32×32的方形塊變換,以及16×4、4×16、32×8、8×32的非方形塊變換(Non-Square Transform),并且將LOT(Logical Transform)技術應用于64×64系數塊,以及將二次變換(Secondary Transform)應用于幀內預測殘差[20]。在系數編碼方面,兩級系數編碼策略及系數組的概念被引入AVS2-P2標準。為了增強環路濾波的性能,AVS2-P2還采納了像素自適應補償和自適應濾波技術。此外,為了有效提升視頻監控場景的編碼壓縮性能,AVS2-P2還采用背景幀和背景建模技術,背景幀可以看作一類特殊的長期參考幀技術。
得益于AVS2-P2技術的全面升級,在廣播電視應用場景中,其比AVS1-P2編碼壓縮性能提升了1倍,與H.265/HEVC編碼壓縮性能相當。在監控場景中,AVS2-P2編碼性能可超過H.265/HEVC。目前,AVS2-P2標準已應用于中央電視臺和部分地方電視臺4K廣播頻道的音視頻播放[17]。
第三代AVS3視頻編解碼標準(AVS3-P2)于2017年12月啟用,于2019年6月完成AVS3-P2第一階段標準(AVS3-P2 Phase 1)的制定,于2021年4月完成AVS3-P2第二階段標準(AVS3-P2 Phase 2)的制定。AVS3-P2兩個階段標準版本分別反映了在不同應用場景下的編解碼需求。AVS3-P2 Phase 1針對較低復雜度應用,在編碼性能與編解碼實現復雜度上進行了較好的平衡。根據相關文獻的測試[21],AVS3-P2 Phase 1比AVS2-P2在4K分辨率方面有超過25%的性能提升,解碼復雜度增加幅度可控制在合理的范圍內。AVS3-P2 Phase 2則面向高編碼壓縮性能的應用,其目標性能與H.266/VVC基本持平。
AVS3-P2 Phase 1標準化過程中側重于篩選對解碼器實現影響較小的編碼工具。在塊結構方面,Phase 1標準的編碼塊尺寸由64×64擴展為128×128,并使用四叉樹(Quad Tree)+二叉樹(Binary Tree)+增強四叉樹(Enhanced Quad Tree)的方法進行塊劃分標識。幀內預測的模式數仍與AVS2-P2保持一致,但引入了新的幀內濾波技術及跨亮度分量的色度預測編碼技術(Cross-Component Prediction Mode)[22]。幀間預測和編碼過程引入了仿射變換、基于歷史的運動矢量預測、多精度運動矢量編碼及新型的運動矢量和運動矢量差表示技術[22]。在變換編碼技術領域,AVS3-P2 Phase 1標準采用了基于位置的變換組合技術,可根據變換塊的位置從DCT-II型、DCT-VII型、DST-VII型(Discrete Sine Transform, DST)選擇合適的變換對[22]。考慮到實現復雜度,AVS3-P2 Phase 1標準的系數編碼技術替換為基于游程編碼的系數編碼方案,大幅降低了系數編解碼的實現代價。此外,AVS3-P2 Phase 1標準設計了大跨度編碼技術(Cross-rap)用于提升監控類視頻場景的編碼質量[23]。
AVS3-P2 Phase 2標準則在AVS3-P2 Phase 1的基礎上引入了更多對編碼性能提升有幫助的工具。幀內編碼的預測模式數由33種擴展為65種,并采用非方形的幀內預測塊劃分技術。幀間預測和編碼過程引入了解碼端導出運動信息及修正運動信息的技術,并將濾波技術應用于幀間預測塊的獲取過程,以及采用了更靈活的幀間預測塊劃分形狀(非方形),擴展了運動矢量和預測模式的編碼方式。在濾波技術上,AVS3-P2 Phase 2標準亦有較多擴展,增強像素自適應補償、跨分量的像素自適應補償及自適應濾波改進技術均被采納到標準中。系數編碼技術領域則新設計了多假設概率模型熵編碼和基于掃描區域的系數編碼方案,用于提高系數編碼的性能[24]。除此以外,AVS3-P2 Phase 2標準還針對屏幕內容編碼引入了新的編碼工具,主要涉及幀內塊復制(Intra Block Copy, IBC)、串匹配(String Matching)、跳過變換塊(Transform Skip)和環路濾波器條件修改4類技術[25]。AVS3-P2 Phase 2標準是第一個將屏幕內容編碼工具標準化的AVS標準,其編碼性能與H.266/VVC標準的屏幕內容編碼性能基本相當。
4.AOM標準
(1)開放媒體聯盟。
2015年9月,谷歌、微軟、Netflix等多家科技巨頭創立了開放媒體聯盟AOM,旨在通過制定全新、開放、免版權費的視頻編碼標準和視頻格式,以創建一個持久的生態系統,為下一代多媒體體驗創造新的機遇。截至2021年6月,AOM已經擁有48家會員單位,包括14家理事會成員單位(Founding Members)和34家Promoter會員單位。這些會員單位涵蓋了從采集制作、傳輸分享到播放消費的視頻完整生態系統,包括:流媒體平臺,如YouTube、Netflix、Facebook、騰訊視頻等;瀏覽器供應商,如谷歌(Chrome)、蘋果(Safari)、微軟(Edge)及Mozilla(Firefox);硬件制造商,如Intel、AMD、NVIDIA、ARM、SAMSUNG、Xilinx、Broadcom、華為等;云服務商,如北美的亞馬遜(AWS)、微軟(Azure)、谷歌(GCP)、IBM,以及中國的阿里(阿里云)、騰訊(騰訊云)、金山云、華為(華為云)等;同時包括思科等網絡與系統提供商。
(2)AV1標準歷程。
2010年,谷歌啟動開源項目WebM,旨在為互聯網視頻提供開源解決方案。同年,谷歌收購了專注視頻編解碼的On2公司,并開源了VP8編解碼方案。
2011年11月至2013年7月,谷歌研發了開源的VP9編碼標準,在不同測試條件下,VP9的性能與HEVC相當[26]或低于HEVC[27]。
2014年起,谷歌開始了VP10編碼標準的研發工作。到2015年底,VP10的性能已經比VP9高出15%~20%。不過,隨著2015年9月AOM的成立,谷歌就停止了VP10的研發工作,而后AOM開始了AV1標準的研究。
2018年6月,AOM發布了其首款免版權費、開源的視頻編碼格式AV1。AV1沿襲了傳統混合視頻編碼框架,它始于同樣免版權費、開源格式的VP9的衍生版本,同時采納了Google VP10、Mozilla Daala、Cisco Thor共3款開源編碼項目中的技術成果。2018年6月,AV1封稿。AV1相比其前身VP9,共推出了100多個新的編碼工具,在壓縮效率方面顯著優于同期的編碼器,在實現方面也考慮了硬件可行性和后續可擴展性。
(3)AV1編碼工具[26]。
編碼塊的劃分:在VP9中,劃分樹有4種方法,尺寸從最大的64×64開始,一直可以遞歸到4×4,不過,可獨立選擇幀內/幀間模式及參考幀的最小單元為8×8。AV1不僅將劃分樹擴展到了10種結構,還將最大的分塊尺寸(AV1的Superblock)擴大至128×128。值得注意的是,這10種結構中包括4:1/1:4的矩形劃分,并且這種矩形劃分是不可再分的。同時,對于8×8及以下的編碼單元,AV1允許每個編碼單元有獨立的幀內、幀間模式和參考幀選擇。
幀內預測:AV1使用了多種不同的方法進行幀內預測,在方向預測上,AV1在VP9的8個角度的基礎上,增加了48種模式,即共有56種方向模式。另外,AV1提供了4種無方向的幀內模式,它們分別是DC_PRED、SMOOTH_PRED、SMOOTH_V_PRED和SMOOTH_H_PRED。在預測方法上,AV1支持基于遞歸濾波的預測和根據亮度來預測色度(Chroma from Luma,CfL)。此外,AV1提供了塊復制(IntraBC Mode)、調色板模式(Pallette Mode)等適用于屏幕內容編碼的特定工具。
幀間預測:VP9允許在至多3個候選參考幀中選擇1~2個作為參考,然后進行基于塊平移的運動補償,當編碼塊有兩個參考幀時,取這兩次預測的平均值作為該編碼塊的最終預測值。AV1將每個編碼幀的候選參考幀數量擴展到7個,使用復雜的參考幀結構來挖掘時域幀之間的相關性,以達到最大可能的壓縮性能,并滿足不同的應用需求。在預測中,AV1支持單幀幀間預測和復合幀間預測方法(如Wedge預測、Mask預測、基于幀距離的預測、幀內和幀間混合預測),以及可變塊大小的重疊塊運動補償(Overlapped Block Motion Compensation, OBMC)、仿射運動補償(包括全局仿射與局部仿射,分別應對相機移動和局部運動)。
變換編碼:為支持上述豐富的塊劃分方式,AV1能夠完成尺寸從4×4到64×64的正方形及2:1或1:2、4:1或1:4的長方形的變換,由水平方向和垂直方向的4種一維變換基共可以組合成16種可分離變換基。這4種一維變換基通常適用于不同的內容:離散余弦變換(DCT)適用于壓縮常規的自然信號,對于尖銳的邊緣可以不進行變換(IDTX),而非對稱離散正弦變換(ADST)或翻轉非對稱離散正弦變換(flip-ADST)對殘差能量單調變化的情況非常有效。為了最大化編碼效率,AV1針對不同的變換塊尺寸和預測模式,定義了不同的變換基選擇范圍。
熵編碼:VP9中所用的熵編碼是基于二叉樹的布爾非自適應二進制算術編碼,AV1則使用了符號間自適應多符號算術編碼器,與純二進制算術編碼相比,多符號熵編碼能夠使吞吐量降低50%以上。
環路濾波:AV1中包括3種環路濾波工具,分別是去塊(Deblock)濾波器、受約束的方向增強濾波器(Constrained Directional Enhancement Filter, CDEF)和環路恢復(Loop Restoration, LR)濾波器。其中,CDEF旨在保留方向細節;LR濾波器又包括兩個可開關的濾波器,即Wiener濾波器和Self-Guided濾波器,旨在對圖像進行去噪或邊緣增強。
AV1還采用了一種超高分辨率編碼模式,該模式允許將高分辨率的編碼幀進行橫向下采樣得到低分辨率幀再進行編碼,在更新參考幀緩沖區前,通過上采樣及環路恢復濾波將低分辨率幀恢復至高分辨率圖像。
此外,電影或電視場景中的顆粒通常是創作內容的一部分,為在壓縮中能夠保留這些顆粒,AV1提供了一種膠片顆粒合成的后處理技術:編碼前,將顆粒從編碼幀中刪除,僅在碼流中傳輸相關參數;解碼時,通過解析相關參數再合成顆粒,并添加到視頻內容中。
- Python自動化運維快速入門
- 算法大爆炸:面試通關步步為營
- NativeScript for Angular Mobile Development
- Flash CS6中文版應用教程(第三版)
- Hands-On Reinforcement Learning with Python
- 青少年信息學競賽
- Windows內核編程
- Python+Tableau數據可視化之美
- Julia 1.0 Programming Complete Reference Guide
- Web前端開發技術:HTML、CSS、JavaScript
- Spring Data JPA從入門到精通
- Mastering Drupal 8
- ASP.NET Core and Angular 2
- Java核心技術速學版(第3版)
- C++面向對象程序設計教程