亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        軟硬結(jié)合解碼方式的4K視頻播放系統(tǒng)①

        2017-05-17 10:00:01徐圣凱南京理工大學(xué)自動化學(xué)院南京210000
        關(guān)鍵詞:解碼器使用率解碼

        徐圣凱, 潘 飛(南京理工大學(xué) 自動化學(xué)院, 南京 210000)

        軟硬結(jié)合解碼方式的4K視頻播放系統(tǒng)①

        徐圣凱, 潘 飛
        (南京理工大學(xué) 自動化學(xué)院, 南京 210000)

        針對4K視頻數(shù)據(jù)量很大, 傳統(tǒng)的CPU軟件解碼技術(shù)無法滿足性能要求. 設(shè)計了一種軟硬結(jié)合解碼方式的4K視頻播放系統(tǒng), 采用DirectShow和NVIDIA CUDA技術(shù)進(jìn)行GPU硬件解碼. 系統(tǒng)功能包括硬件系統(tǒng)信息獲取, 視頻源讀取, 視頻硬解碼和視頻顯示. 實驗結(jié)果表明, 此播放系統(tǒng)在進(jìn)行4K視頻解碼播放時, 既保障了視頻效果, 又極大降低了CPU使用率.

        4K; 軟硬結(jié)合解碼; DirectShow; CUDA; CPU使用率

        近些年來, 多媒體技術(shù)得到了長足的發(fā)展, 1080P全高清攝像頭, 4K電影, 4K超高清顯示屏等產(chǎn)品的問世不斷地刷新著分辨率、幀率等參數(shù)極限[1], 為用戶提供了更完美的用戶體驗. 然而4K超高清視頻的信號容量是巨大的, 視頻信號經(jīng)過采集, 解碼后才能呈現(xiàn)在顯示屏上, 其中的解碼過程算法復(fù)雜, 對運算處理能力要求很高. 傳統(tǒng)的軟件解碼技術(shù)依賴CPU的計算能力, 已經(jīng)無法滿足性能要求, 而嵌入式純硬件解碼不僅價格昂貴且架構(gòu)不靈活,無法大眾化推廣. 如何在保證視頻解碼效果的前提下, 降低成本、加快解碼速度、降低CPU使用率成為了研究熱點.

        純軟件解碼播放4K視頻時CPU使用率過高導(dǎo)致主機(jī)卡頓現(xiàn)象明顯, 很多高校和視頻處理公司開始關(guān)注軟件框架與硬件解碼器相結(jié)合的播放體系, 利用GPU分擔(dān)部分視頻解碼工作. 當(dāng)前通過GPU解碼的技術(shù)主要有兩大類: 利用GPU內(nèi)部并行工作的流處理單元進(jìn)行硬件解碼, 編寫在GPU上運行的代碼, 例如ATI的Stream與NVIDI的CUDA, 第二種是間接通過GPU加速, 通過制定統(tǒng)一的解碼接口來實現(xiàn), 例如微軟的DXVA(DirectX Video Acceleration). 其中CUDA解碼方案中, 流處理器數(shù)量會對效率有一定的影響,不過這些主要在使用低端顯卡時才會出現(xiàn)差異, 而對于目前的入門級(9600GSO)以及中高端顯卡來說, 解碼時的差異并不明顯. DXVA解碼方案中, 雖然解碼器支持DXVA規(guī)范, 但不代表就能利用DXVA規(guī)范里面所有的功能組合, 它可以選擇自己有能力支持的, 或者想要支持的那些功能組合, 其他功能組合也許就放棄了. 還有, 某顯卡雖然表示支持某種能力, 但如果解碼器認(rèn)為這個能力的支持不夠穩(wěn)定, 容易導(dǎo)致系統(tǒng)崩潰或錯誤, 或者性能低下, 它也可以放棄這種能力.大量研究表明DXVA解碼方案的CPU使用率要比CUDA解碼稍低一些, 但利用CUDA解碼極大地釋放CPU壓力的同時, 不像DXVA解碼方案那樣存在各種兼容性問題, 而且功耗也比CPU軟解方案要關(guān)低不少,可以說CUDA解碼是一個折中的解碼方案. 基于這些技術(shù), 臺灣訊連科技公司的知名商業(yè)軟件PowerDVD和騰訊公司的QQ影音播放器開始支持CUDA硬件解碼, 不過PowerDVD是一款收費軟件, QQ影音播放器進(jìn)行硬件解碼時配置復(fù)雜, 且解碼器進(jìn)行了產(chǎn)權(quán)保護(hù)[2-9].

        本文軟硬結(jié)合解碼方式的4K視頻播放系統(tǒng)采用CUDA解碼方式, 依靠靈活的軟件框架, 實現(xiàn)軟解碼與CUDA硬解碼自動設(shè)置機(jī)制, 對于支持CUDA解碼的硬件設(shè)備自動啟動CUDA硬解碼, 不需要繁瑣的手動設(shè)置. 自開發(fā)的CUDA解碼器獨立封裝, 全程碼流追蹤透明高效, 也為后續(xù)深度開發(fā)提供了支持. 實驗表明該系統(tǒng)播放4K視頻, 自啟動硬解碼時, CPU使用率巨幅下降, 保證了系統(tǒng)操作的流暢性.

        1 4K簡介

        4K指的是分辨率, 于2007年提出, 2012年規(guī)范,因其橫向解析度約為4000像素而得名, 包括4096*2160、3840*2160等多種分辨率規(guī)格. 從分辨率參數(shù)來看, 4K約達(dá)到了全高清視頻(1080P)的4倍, 如圖1所示.

        圖1 4K分辨率示意圖

        2 系統(tǒng)設(shè)計與實現(xiàn)

        本文設(shè)計的軟硬結(jié)合解碼方式的4K視頻播放系統(tǒng), 主要實現(xiàn)的功能有本地文件的讀取, 4K視頻的H.264硬件解碼和視頻顯示. 4K視頻播放系統(tǒng)結(jié)構(gòu)如圖2, 系統(tǒng)分為硬件系統(tǒng)信息獲取模塊, 4K視頻源讀取模塊, 硬解碼Filter模塊, 模塊間連接與顯示模塊.硬件系統(tǒng)信息獲取模塊根據(jù)硬件情況選擇解碼器類型,對支持CUDA解碼的系統(tǒng)提供無感知的硬件解碼功能,系統(tǒng)軟解碼器采用第三方解碼器.

        圖2 4K視頻播放系統(tǒng)結(jié)構(gòu)

        2.1 視頻源讀取模塊

        DirectShow提供了大量的Filter用以支持基本的應(yīng)用. 如圖3所示是4K視頻文件播放的部分鏈路. 其中, 箭頭方向即是數(shù)據(jù)的流向, Filter Source(Async)屬于Source Filter, 它用于管理硬盤上指定的播放文件,并根據(jù)Splitter的要求提供數(shù)據(jù), Splitter負(fù)責(zé)向Filter Source(Async)索取數(shù)據(jù), 并將取得數(shù)據(jù)的音頻和視頻進(jìn)行分離, 然后分別從各自的輸出Pin輸出給音頻解碼器和視頻解碼器, 此Source Filter硬盤讀取速度滿足要求, 可以直接用作系統(tǒng)的視頻源讀取模塊.

        圖3 4K視頻文件播放的部分鏈路

        2.2 硬解碼器模塊設(shè)計與實現(xiàn)

        CUDA是一種由NVIDIA推出的通用并行計算架構(gòu), 該架構(gòu)使GPU能夠解決復(fù)雜的計算問題. 它包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計算引擎. 開發(fā)人員可以使用C語言來為CUDA?架構(gòu)編寫程序, 所編寫出的程序可以在支持CUDA?的處理器上以超高性能運行. NVIDIA在CUDA的基礎(chǔ)上建立了一套SDK用于使用顯卡硬件加速來進(jìn)行H.264編碼, 可以在CPU占用率很小的情況下完成高質(zhì)量實時的H264編碼. 系統(tǒng)需要硬件顯卡驅(qū)動支持CUDA.

        系統(tǒng)硬解碼Filer功能設(shè)計為: 接收H.264視頻流輸入, 解碼后輸出RGB24或者YUY2格式的圖像幀序列, 一個輸入Pin一個輸出Pin, 類型為Transform Filter, 采用CSource作為Filter的父類, 因為CSource的輸出Pin(從CSourceStream類派生)實現(xiàn)了一個數(shù)據(jù)線程, 在這個線程中, 可以控制整個解碼過程. 設(shè)計一個比較大的緩沖管理H.264流數(shù)據(jù), 當(dāng)輸入Pin有Sample輸人時, 直接把數(shù)據(jù)放入緩沖等待解碼線程讀;解碼線程也可以主動訪問該緩沖, 并從中取出足夠數(shù)據(jù)以完成圖像幀的解碼.

        硬解碼器Filter的實現(xiàn): Filter類名為CudaDecode,輸入Pin類名為CudaInputPin, 輸出Pin類名為DecodeStream, 它們的類繼承關(guān)系如圖4.

        圖5 系統(tǒng)解碼

        實現(xiàn)硬件解碼器核心部分是實現(xiàn)CUDA解碼, 首先我們配置nvcuvid.dll 和 cutil32.dll動態(tài)鏈接庫, 系統(tǒng)解碼過程如圖5, 主要函數(shù)有:

        (1) InitCuda(CUvideoctxlock *pLock). pLock參數(shù)為關(guān)鍵段類似于CrticalSection, 函數(shù)的主要功能是初始化顯卡并創(chuàng)建一個顯卡設(shè)備.

        (2)HandleVideoSequence(void *pvUserData, CUVIDEOFORMAT *pFormat). 函數(shù)的功能是創(chuàng)建初始化H.264流分析器.

        (3)HandlePictureDecode(void *pvUserData, CUVIDPICPARAMS *pPicParams). 函數(shù)功能是解碼每幀視頻數(shù)據(jù).

        (4)HandlePictureDisplay(void *pvUserData, CUVIDPARSERDISPINFO *pPicParams). 函數(shù)用來轉(zhuǎn)換, 處理顯示轉(zhuǎn)碼后的數(shù)據(jù).

        2.3 連接與顯示模塊

        本文4K視頻播放系統(tǒng)的硬件結(jié)構(gòu)是電腦主機(jī)通過高清晰度多媒體接口(英文: High Definition Multimedia Interface, HDMI)與4K顯示屏連接, 軟件結(jié)構(gòu)方面: 各個功能模塊作為獨立的Filter注冊在windows系統(tǒng)中, 功能模塊的連接即為Filter上Pin的連接. 連接的方向是由上一級Filter(Upstream Filter)的輸出Pin指向下一級(Downstream Filter)的輸入Pin. Pin是一種COM組件, 而且每個Pin上都實現(xiàn)了IPin接口, Pin正是通過這個IPin接口來完成連接的, 一般調(diào)用接口方法IFilterGraph::ConnectDirect來實現(xiàn). 本文Renderer Filter的功能是是接收硬解碼Filter解碼后的數(shù)據(jù), 然后在4K顯示器上顯示. Renderer Filter的實現(xiàn): Filter類名為CVideoRender, Pin的類名為CVideoInputPin, 屬性頁類名為CQualityProperties. 關(guān)鍵類CVideoRender類中定義的一些成員變量有:

        CImageAllocator m_ImageAllocator; //Sample管理器

        CVideoInputPin m_InputPin; // 輸入Pin

        CImageDisplay m_Display; // 管理圖像顯示格式

        CMediaType m_mtIn; // 連接用的媒體類型

        CVideoText m_VideoText; //視頻窗口

        CImagePalette m_ImagePalette; // 管理調(diào)色板

        CDrawImage m_DrawImage; // 畫圖工作

        SIZE m_VideoSize; // 當(dāng)前視頻圖像大小定義上述成員使用了一系列的工具類, 它們的繼承關(guān)系如圖:

        Filter需要重寫CheckMediaType,CompleteConnect等一系列函數(shù), 并完成進(jìn)度條, 屬性頁的功能, 最終注冊后供系統(tǒng)使用.

        圖6 繼承關(guān)系

        3 實驗驗證

        硬件環(huán)境: CPU為Intel(R)Core(TM)i5-5200U , 主頻為2.2GHz, GPU為GeForce 940M. 軟件環(huán)境: Windows 7 、vs2010 、DirectShow開發(fā)環(huán)境. 本文主要測試CPU使用率這個指標(biāo). 測試時播放4K視頻文件(時長4分3秒, 內(nèi)存占614M, 壓縮格式為h264,封裝格式為MP4)的前20秒內(nèi)容, 使用Process Explorer檢測CPU使用率. 當(dāng)使用純軟件解碼器系統(tǒng)播放4K視頻時CPU使用率如圖7, 利用本文系統(tǒng)播放4K視頻時CPU使用率如圖8.

        圖7與圖8比較可以看出, 播放4k視頻, 在保證畫面清晰流暢的前提下, 本文硬解碼播放系統(tǒng)CPU使用率只有20%左右, 而純軟件解碼系統(tǒng)CPU使用率達(dá)到了80%左右.

        圖7 純軟件解碼器系統(tǒng)播放4K視頻時CPU使用率

        4 結(jié)語

        本文基于DirectShow與CUDA技術(shù), 開發(fā)了4K視頻播放系統(tǒng), 實現(xiàn)了4K視頻硬解碼. 采用了軟硬件結(jié)合的方式, 兼顧軟件解碼的靈活和硬件解碼的速度,大大降低了計算機(jī)CPU的使用率, 在實際應(yīng)用中有很大的價值.

        圖8 CUDA硬解碼播放4K視頻文件時CPU使用率

        1 武鳳翔.基于DirectShow和WPF的實時視頻圖像采集與處理系統(tǒng)設(shè)計與實現(xiàn).計算機(jī)應(yīng)用與軟件,2015,(3):331–333.

        2 伍開勝,羅宇,劉斌.基于directshow的視頻播放器設(shè)計與實現(xiàn).科技視界,2015,(31):184–185.

        3 朱偉.基于CUDA的H.264視頻解碼[碩士學(xué)位論文].長沙:湖南師范大學(xué),2011.

        4 尚青青.多場所多路高清視頻監(jiān)控中心的設(shè)計與實現(xiàn)[碩士學(xué)位論文].南京:南京郵電大學(xué),2013.

        5 李虎.H.264解碼器并行算法設(shè)計與基于CUDA的實現(xiàn)[碩士學(xué)位論文].大連:大連理工大學(xué),2014.

        6 劉旭鳳.基于4K2K電視構(gòu)架的視頻解碼顯示研究[碩士學(xué)位論文].濟(jì)南:山東大學(xué),2013.

        7 章劍.基于CUDA平臺的H.264視頻編碼器研究設(shè)計[碩士學(xué)位論文].南京:南京航空航天大學(xué),2012.

        8 金曙陽.基于GPU并行編碼的全高清互動教學(xué)系統(tǒng)的設(shè)計與實現(xiàn)[碩士學(xué)位論文].南京:南京郵電大學(xué),2014.

        9 Adeyemi-Ejeye AO, Walker S, Fleury M. 4kUHD H264 wireless live video streaming using CUDA. Journal of Electrical and Computer Engineering, 2014.

        4K Video Playback System Based on Hard and Soft Decoding Mode

        XU Sheng-Kai, PAN Fei
        (School of Automatization, Nanjing University of Science and Technology, Nanjing 210000, China)

        Due to the amount of 4K video data is large, and the traditional CPU software decoder technology cannot meet the performance requirement. The 4K video playback system based on combination of hard and soft decoding mode is designed, which uses DirectShow and CUDA hardware decoding technology. And the system includes functions of hardware system information acquisition, video source reader, video hard decoding, and video display. Experimental results show that this system can achieve good effect and greatly reduce the CPU occupancy rate when playing 4K video. Key words: 4K; hard and soft decoding; DirectShow; CUDA; CPU occupancy rate

        2016-07-09;收到修改稿時間:2016-08-08

        10.15888/j.cnki.csa.005669

        猜你喜歡
        解碼器使用率解碼
        《解碼萬噸站》
        科學(xué)解碼器(一)
        科學(xué)解碼器(二)
        科學(xué)解碼器(三)
        線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍(lán)蜻蜓解碼器
        解碼eUCP2.0
        中國外匯(2019年19期)2019-11-26 00:57:32
        NAD C368解碼/放大器一體機(jī)
        Quad(國都)Vena解碼/放大器一體機(jī)
        胃腸外科圍手術(shù)期合理使用抗菌藥物的探討
        初中生學(xué)習(xí)·低(2012年4期)2012-04-29 04:29:50
        人妻夜夜爽天天爽三区麻豆av网站| 日本高清一区二区三区在线| 久久99精品综合国产女同 | 免费a级毛片18禁网站app| 97久久综合区小说区图片区| 男女性高爱潮免费观看| 人妻在线中文字幕| 人妻系列影片无码专区| 一级黄片草逼免费视频| 最新中文字幕亚洲一区| 80s国产成年女人毛片| 午夜福利麻豆国产精品| 午夜影视啪啪免费体验区入口| 扒开双腿操女人逼的免费视频| 亚洲av成熟国产精品一区二区| 男女性杂交内射女bbwxz| 国产真人无码作爱视频免费| 久久精品国产91久久性色tv| 日韩精品免费一区二区中文字幕| 日韩少妇人妻中文字幕| 亚洲av无码国产精品色午夜洪| 日本少妇人妻xxxxx18| 91精品久久久久含羞草| 蜜桃在线观看免费高清| 日本中文字幕精品久久| 亚洲成av人在线播放无码 | 好吊妞人成免费视频观看| 久久久国产不卡一区二区| 日韩人妖干女同二区三区| 极品人妻被黑人中出种子| 粉嫩被粗大进进出出视频| 性饥渴艳妇性色生活片在线播放 | 永久免费毛片在线播放| 精品人妻系列无码人妻免费视频| 91久久久久无码精品露脸| 天堂影院久久精品国产午夜18禁| 日本精品久久久久中文字幕| 天码人妻一区二区三区| 丝袜欧美视频首页在线| 久久久亚洲av午夜精品| 久久99精品久久久久婷婷|