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