專利名稱:優(yōu)化進(jìn)程間圖像渲染的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)圖像處理技術(shù)領(lǐng)域,特別涉及一種優(yōu)化進(jìn)程間圖像渲染的方法。
背景技術(shù):
現(xiàn)有技術(shù)一般在解碼渲染圖像時(shí),采用2種方法一種是在一個(gè)進(jìn)程內(nèi)完成解碼和渲染,此種方法創(chuàng)建的窗口不能被其他進(jìn)程作為渲染目標(biāo),缺少靈活性,這就造成每切換一次信號類型,就必須開關(guān)窗一次;另一種方法是使用2個(gè)進(jìn)程,一個(gè)為解碼/預(yù)渲染進(jìn)程, 用來將圖像數(shù)據(jù)解碼和預(yù)渲染,并獲取預(yù)渲染后的圖像數(shù)據(jù);另一個(gè)為顯示進(jìn)程,用來接收預(yù)渲染的圖像數(shù)據(jù)并顯示。在這種方法中,要顯示一幅圖像,實(shí)際進(jìn)行了兩次渲染,造成顯示遲緩和系統(tǒng)資源浪費(fèi)。。發(fā)明內(nèi)容
本發(fā)明提出了一種優(yōu)化進(jìn)程間圖像渲染的方法,針對現(xiàn)有技術(shù)的不足,通過使用跨進(jìn)程渲染的方法,達(dá)到減少渲染次數(shù)、提升系統(tǒng)效率的目的。
本發(fā)明優(yōu)化進(jìn)程間圖像渲染的方法,包括窗口進(jìn)程和解碼進(jìn)程
所述窗口進(jìn)程響應(yīng)用戶的開窗、開始顯示特定類型圖像、停止顯示特定類型圖像、 移動(dòng)窗口、改變窗口大小和關(guān)窗操作,
所述開窗操作,包括步驟
創(chuàng)建窗口,獲取所創(chuàng)建窗口的id ;
將所述id賦值給WinID,
所述停止顯示特定類型圖像操作,包括步驟
觸發(fā)當(dāng)前顯示圖像類型對應(yīng)的解碼進(jìn)程停止工作;
將WinIDEo,
所述開始顯示特定類型圖像操作,包括步驟
執(zhí)行上述操作“停止顯示特定類型圖像”;
將所述id賦值給WinID ;
獲取待顯示的圖像類型;
觸發(fā)待顯示圖像類型對應(yīng)的解碼進(jìn)程開始工作,
所述關(guān)窗操作,包括步驟
執(zhí)行上述操作“停止顯示特定類型圖像”;
關(guān)閉窗口,
每種圖像類型對應(yīng)一個(gè)所述解碼進(jìn)程,每個(gè)所述解碼進(jìn)程包括解碼線程和渲染線程,
所述解碼進(jìn)程按照以下步驟開始工作
SO 所述渲染線程獲取WinID的繪圖上下文WinContext ;
Sl 所述渲染線程綁定WinContext ;
S2:所述渲染線程獲取窗口的寬和高,根據(jù)獲取到的寬、高,更新所述渲染線程中的繪圖環(huán)境;
S3:所述解碼線程解碼待顯示圖像類型的圖像數(shù)據(jù),將解碼后的所述圖像數(shù)據(jù)交給渲染線程;
S4 所述渲染線程將所述圖像數(shù)據(jù)渲染到窗口 ;
S5 重復(fù)執(zhí)行上述步驟S2、S3、S4,
所述解碼進(jìn)程按照以下步驟停止工作
所述解碼線程停止解碼;
所述渲染線程停止渲染;
所述渲染線程與WinContext脫離。
優(yōu)選地,所述圖像類型包括IP圖像、本地圖像、RGB圖像和疊加顯示圖像。
本發(fā)明優(yōu)化進(jìn)程間圖像渲染的方法,包括窗口進(jìn)程和解碼進(jìn)程,解碼進(jìn)程又包括解碼線程和渲染線程,窗口操作和圖像的解碼與渲染分開來執(zhí)行。這樣,圖像從數(shù)據(jù)到在窗口顯示出來,只需渲染一次,相比現(xiàn)有技術(shù),至少少執(zhí)行一次后臺渲染和一次讀緩沖區(qū)。且解碼線程與渲染線程同一個(gè)進(jìn)程中,不再跨進(jìn)程,便于進(jìn)行解碼和渲染兩個(gè)操作之間的同步,降低了系統(tǒng)的復(fù)雜度。
圖1是本發(fā)明優(yōu)化進(jìn)程間圖像渲染方法的開窗操作過程中,窗口進(jìn)程與解碼進(jìn)程所執(zhí)行步驟的示意圖2是本發(fā)明優(yōu)化進(jìn)程間圖像渲染方法的開始顯示IP圖像操作過程中,窗口進(jìn)程與解碼進(jìn)程所執(zhí)行步驟的示意圖3是本發(fā)明優(yōu)化進(jìn)程間圖像渲染方法的關(guān)窗操作過程中,窗口進(jìn)程與解碼進(jìn)程所執(zhí)行步驟的示意圖。
具體實(shí)施方式
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)和不足,通過使用跨進(jìn)程渲染的方式,達(dá)到減少渲染次數(shù)、提升系統(tǒng)效率的目的。下面結(jié)合附圖與實(shí)施例詳細(xì)將誒是本發(fā)明。
本發(fā)明優(yōu)化進(jìn)程間圖像渲染的方法包括窗口進(jìn)程和解碼進(jìn)程,窗口進(jìn)程和解碼進(jìn)程之間共享一個(gè)數(shù)據(jù)窗口 ID,即WinID。
窗口進(jìn)程用于響應(yīng)用戶的開窗、開始顯示特定類型圖像、停止顯示特定類型圖像、 移動(dòng)窗口、改變窗口大小、關(guān)窗、等操作。其在響應(yīng)“開窗”時(shí),創(chuàng)建窗口 ;在“顯示特定類型圖像”時(shí),通知與該類型圖像對應(yīng)的解碼進(jìn)程開始工作;在響應(yīng)“移動(dòng)窗口、改變窗口大小” 時(shí),改變窗口的位置、窗口寬高等屬性;在響應(yīng)“關(guān)窗”時(shí),銷毀窗口,并通知與當(dāng)前顯示圖像類型對應(yīng)的解碼進(jìn)程停止工作。
1、開窗
SO 創(chuàng)建窗口,獲取到該窗口的id;
Sl 將 id 賦值給 WinID。
2、停止顯示特定類型圖像
SO 觸發(fā)與當(dāng)前顯示圖像數(shù)據(jù)類型對應(yīng)的解碼進(jìn)程停止工作;
Si:將 WinID 歸 0。
3、開始顯示特定類型圖像
SO 執(zhí)行上述操作“停止顯示特定類型圖像”,停止顯示當(dāng)前類型的圖像;
Sl 將 id 賦值給 WinID ;
S2 獲取用戶要顯示的圖像類型;
S3 觸發(fā)與該圖像數(shù)據(jù)類型對應(yīng)的解碼進(jìn)程開始工作。
作為一個(gè)優(yōu)選的實(shí)施例,所述圖像類型包括IP圖像、本地圖像、RGB圖像和疊加顯示圖像等。顯示下一類型圖像前,要先將當(dāng)前類型圖像的解碼進(jìn)程結(jié)束掉。
4、移動(dòng)窗口、改變窗口大小
不影響WinID和相應(yīng)的解碼進(jìn)程。
此操作隨時(shí)可能發(fā)生,與停止顯示特定類型圖像和開始顯示特定類型圖像的操作沒有先后關(guān)系。
5、關(guān)窗
SO 執(zhí)行上述操作“停止顯示特定類型圖像”,停止顯示當(dāng)前類型的圖像;
S2:關(guān)閉窗口。
解碼進(jìn)程有2個(gè)功能解碼與該插件對應(yīng)類型的圖像數(shù)據(jù)、將解碼后的圖像渲染到WinID窗口,相應(yīng)地,其內(nèi)部有2個(gè)基本線程解碼線程、渲染線程。解碼線程用于解碼圖像數(shù)據(jù);渲染線程用于將圖像數(shù)據(jù)渲染到指定窗口。
解碼進(jìn)程有2個(gè)接口 開始、停止。
1、開始
SO 獲取 WinID 的繪圖上下文 WinContext ;
Sl 將WinContext綁定到渲染線程中,使渲染線程能夠繪圖到WinID窗口 ;
S2:獲取該窗口的寬和高,根據(jù)獲取到的寬、高,更新渲染線程中的繪圖環(huán)境;此步驟決定了待渲染的圖像數(shù)據(jù)要繪制到多寬、多高的一個(gè)窗口區(qū)域中,從而決定了待渲染圖像數(shù)據(jù)的寬、高縮放比例;當(dāng)窗口大小改變時(shí),該步驟也使渲染線程盡快調(diào)整渲染圖像的縮放比例,防止圖像顯示花屏錯(cuò)亂。
S3 解碼圖像數(shù)據(jù),將圖像數(shù)據(jù)交給渲染線程;
S4 渲染線程將圖像數(shù)據(jù)渲染到WinID窗口
S5 重復(fù)執(zhí)行上述步驟S2、S3、S4,直至收到“停止”命令。
步驟S2決定了待渲染的圖像數(shù)據(jù)要繪制到多寬、多高的一個(gè)窗口區(qū)域中,從而決定了待渲染圖像數(shù)據(jù)的寬、高縮放比例;當(dāng)窗口大小改變時(shí),該步驟也使渲染線程盡快調(diào)整渲染圖像的縮放比例,防止圖像顯示花屏錯(cuò)亂。
2、停止
SO 停止解碼圖像數(shù)據(jù);
Sl 停止渲染圖像;
S2 將渲染線程與WinContext脫離。
為便于描述,假設(shè)目前系統(tǒng)有IP圖像解碼插件、圖片疊加顯示插件和RGB解碼插件。下面通過模擬實(shí)際操作步驟進(jìn)行詳細(xì)說明。
(—)、如圖1所示是開窗操作過程中,窗口進(jìn)程和解碼進(jìn)程所執(zhí)行步驟的示意圖。
A.窗口進(jìn)程
SO 創(chuàng)建窗口,獲取到該窗口的id ;
Sl 將 id 賦值給 WinID ;
B.解碼進(jìn)程
無操作。
(二)、圖2所示是開始顯示特定類型圖像-IP圖像的操作過程中,窗口進(jìn)程與解碼進(jìn)程所執(zhí)行步驟的示意圖。
A.窗口進(jìn)程
SO 觸發(fā)IP圖像解碼插件開始工作;
B.解碼進(jìn)程
SO 獲取 WinID 的繪圖上下文 WinContext ;
Sl 將WinContext綁定到渲染線程中,使渲染線程能夠繪圖到WinID窗口 ;
S2 獲取該窗口的寬和高,根據(jù)獲取到的寬、高,更新渲染線程中的繪圖環(huán)境;
S3 解碼圖像數(shù)據(jù),將圖像數(shù)據(jù)交給渲染線程;
S4渲染線程將圖像數(shù)據(jù)渲染到WinID窗口
S5 重復(fù)執(zhí)行上述步驟S2、S3、S4,直至收到“停止”命令。
(三)、開始顯示特定類型圖像-圖片疊加顯示。
A.窗口進(jìn)程
SO 使當(dāng)前的IP圖像解碼進(jìn)程停止工作;
Sl 觸發(fā)圖片疊加顯示插件開始工作;
B.解碼進(jìn)程
SO :IP圖像插件停止解碼圖像數(shù)據(jù);
Sl :IP圖像插件停止渲染圖像;
S2 將IP圖像插件的渲染線程與WinContext脫離;
S3 圖片疊加顯示插件獲取WinID的繪圖上下文WinContext ;
S4 將WinContext綁定到圖片疊加顯示插件的渲染線程中,使圖片疊加顯示插件的渲染線程能夠繪圖到WinID窗口 ;
S5:獲取該窗口的寬和高,根據(jù)獲取到的寬、高,更新圖片疊加顯示插件渲染線程中的繪圖環(huán)境;
S6:圖片疊加顯示插件解碼圖像數(shù)據(jù),將圖像數(shù)據(jù)交給圖片疊加顯示插件渲染線程;
S7圖片疊加顯示插件渲染線程將圖像數(shù)據(jù)渲染到WinID窗口
S8 重復(fù)執(zhí)行上述步驟S5、S6、S7,直至收到“停止”命令。
上述步驟SO S2實(shí)際執(zhí)行了停止IP圖像插件的操作,上述步驟S3 S8實(shí)際執(zhí)行了 “開始圖片疊加顯示插件”的操作。
(四)圖3所示是關(guān)窗操作過程中,窗口進(jìn)程與解碼進(jìn)程所執(zhí)行步驟的示意圖。
A.窗口進(jìn)程
SO 停止圖片疊加顯示插件;
Si:關(guān)閉窗口;
B.解碼進(jìn)程
SO 圖片疊加顯示插件停止解碼圖像數(shù)據(jù);
Sl 圖片疊加顯示插件停止渲染圖像;
S2 將圖片疊加顯示插件的渲染線程與WinContext脫離。
以上所述的本發(fā)明實(shí)施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種優(yōu)化進(jìn)程間圖像渲染的方法,其特征在于,包括窗口進(jìn)程和解碼進(jìn)程所述窗口進(jìn)程響應(yīng)用戶的開窗、開始顯示特定類型圖像、停止顯示特定類型圖像、移動(dòng)窗口、改變窗口大小和關(guān)窗操作, 所述開窗操作,包括步驟 創(chuàng)建窗口,獲取所創(chuàng)建窗口的id ; 將所述id賦值給WinID, 所述停止顯示特定類型圖像操作,包括步驟 觸發(fā)當(dāng)前顯示圖像類型對應(yīng)的解碼進(jìn)程停止工作; 將 WinID 歸 0,所述開始顯示特定類型圖像操作,包括步驟執(zhí)行上述操作“停止顯示特定類型圖像”;將所述id賦值給WinID ;獲取待顯示的圖像類型;觸發(fā)待顯示圖像類型對應(yīng)的解碼進(jìn)程開始工作,所述關(guān)窗操作,包括步驟執(zhí)行上述操作“停止顯示特定類型圖像”;關(guān)閉窗口,每種圖像類型對應(yīng)一個(gè)所述解碼進(jìn)程,每個(gè)所述解碼進(jìn)程包括解碼線程和渲染線程, 所述解碼進(jìn)程按照以下步驟開始工作50所述渲染線程獲取WinID的繪圖上下文WinContext ;51所述渲染線程綁定WinContext ;52所述渲染線程獲取窗口的寬和高,根據(jù)獲取到的寬、高,更新所述渲染線程中的繪圖環(huán)境;S3:所述解碼線程解碼待顯示圖像類型的圖像數(shù)據(jù),將解碼后的所述圖像數(shù)據(jù)交給渲染線程;S4:所述渲染線程將所述圖像數(shù)據(jù)渲染到窗口 ; S5 重復(fù)執(zhí)行上述步驟S2、S3、S4, 所述解碼進(jìn)程按照以下步驟停止工作 所述解碼線程停止解碼; 所述渲染線程停止渲染; 所述渲染線程與WinContext脫離。
2.根據(jù)權(quán)利要求1所述的優(yōu)化進(jìn)程間圖像渲染的方法,其特征在于,所述圖像類型包括IP圖像、本地圖像、RGB圖像和疊加顯示圖像。
全文摘要
本發(fā)明公開了一種優(yōu)化進(jìn)程間圖像渲染的方法,包括窗口進(jìn)程和解碼進(jìn)程,解碼進(jìn)程又包括解碼線程和渲染線程,窗口操作和圖像的解碼與渲染分開來執(zhí)行。這樣,圖像從數(shù)據(jù)到在窗口顯示出來,只需渲染一次,相比現(xiàn)有技術(shù),至少少執(zhí)行一次后臺渲染和一次讀緩沖區(qū)。且解碼線程與渲染線程同一個(gè)進(jìn)程中,不再跨進(jìn)程,便于進(jìn)行解碼和渲染兩個(gè)操作之間的同步,降低了系統(tǒng)的復(fù)雜度。
文檔編號G06F9/44GK102520937SQ20111038920
公開日2012年6月27日 申請日期2011年11月29日 優(yōu)先權(quán)日2011年11月29日
發(fā)明者荊建營 申請人:廣東威創(chuàng)視訊科技股份有限公司