亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

實(shí)現(xiàn)Windows跨進(jìn)程發(fā)送和接收視頻畫面的方法與流程

文檔序號:39805338發(fā)布日期:2024-10-29 17:21閱讀:7來源:國知局
實(shí)現(xiàn)Windows跨進(jìn)程發(fā)送和接收視頻畫面的方法與流程

本發(fā)明涉及一種實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,屬于計(jì)算機(jī)圖形處理和跨進(jìn)程通信,尤其是針對windows程序跨進(jìn)程實(shí)現(xiàn)視頻畫面數(shù)據(jù)的高效共享與傳輸?shù)姆椒ā?/p>


背景技術(shù):

1、隨著實(shí)時(shí)圖形處理技術(shù)的發(fā)展,需要在不同的應(yīng)用程序之間共享和傳輸視頻畫面數(shù)據(jù)的場景越來越多,例如游戲直播、虛擬現(xiàn)實(shí)(vr)、增強(qiáng)現(xiàn)實(shí)(ar)等多媒體應(yīng)用。在這些應(yīng)用中,高效的數(shù)據(jù)共享機(jī)制對于保證用戶體驗(yàn)和系統(tǒng)性能至關(guān)重要。傳統(tǒng)的視頻數(shù)據(jù)共享方法往往涉及到顯著的cpu/gpu資源消耗、較高的延遲以及復(fù)雜的數(shù)據(jù)同步問題,尤其是在需要實(shí)時(shí)共享高分辨率視頻內(nèi)容的場合。因此需要改進(jìn)。


技術(shù)實(shí)現(xiàn)思路

1、為彌補(bǔ)現(xiàn)有技術(shù)的不足,本發(fā)明提供一種實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,實(shí)現(xiàn)windows程序跨進(jìn)程進(jìn)行低開銷、低延遲視頻畫面共享,?增強(qiáng)windows在多媒體交互和實(shí)時(shí)應(yīng)用中的功能,拓寬windows在虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)等領(lǐng)域的應(yīng)用范圍。

2、為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是:

3、本發(fā)明的實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,包括如下步驟:

4、(1)為windows程序創(chuàng)建c++原生插件,該插件封裝了spout框架,并為windows程序提供了發(fā)送和接收視頻畫面的相關(guān)接口;

5、(1-a)在windows操作系統(tǒng)上開辟共享內(nèi)存,用于管理視頻發(fā)送者和接收者的名稱、共享句柄、長寬及格式信息;

6、(1-b)管理direct3d?11或?12來創(chuàng)建共享資源、復(fù)制資源以及讀取資源,以支持視頻畫面的跨進(jìn)程共享;

7、(2)發(fā)送視頻時(shí),通過windows程序加載上述插件dll,創(chuàng)建發(fā)送方名稱,并選擇需要發(fā)送的texture;使用get?native?texture?ptr獲取原始texture指針,并通過commandbuffer將數(shù)據(jù)高效傳遞給插件;

8、(3)接收視頻時(shí),通過windosw程序加載上述插件dll,選擇發(fā)送方名稱,并通過原生插件讀取到texture數(shù)據(jù);使用create?external?texture創(chuàng)建windows程序可以直接顯示的texture。

9、進(jìn)一步優(yōu)選的,所述所述步驟(1)中的c++原生插件,?使用mingw-w64編譯c++生成winspout.dll,windows程序中使用dllimport引入插件接口。

10、進(jìn)一步優(yōu)選的,所述步驟(1-a)中windows操作系統(tǒng)上開辟共享內(nèi)存,是通過createfilemappinga為指定文件創(chuàng)建或打開文件映射對象,文件映射對象允許通過內(nèi)存訪問內(nèi)容,這樣實(shí)現(xiàn)多個(gè)進(jìn)程間共享數(shù)據(jù)。

11、進(jìn)一步優(yōu)選的,所述步驟(1-b)中,通過direct3d11或12的create?texture2d創(chuàng)建一個(gè)共享的texture資源,需要描述結(jié)構(gòu)體d3d11_texture2d_desc中設(shè)置misc?flags字段為d3d11_resource_misc_shared;通過open?shared?resource方法訪問此資源,copyresource方法復(fù)制到此資源。

12、進(jìn)一步優(yōu)選的,所述步驟(2)中,使用windows程序的command?buffer能夠創(chuàng)建渲染指令,通過graphics.execute?command?buffer執(zhí)行此指令,能夠最小化渲染線程的延遲和開銷,提高windows程序與插件交互效率。

13、進(jìn)一步優(yōu)選的,所述步驟(3)中的createexternal?texture允許windows應(yīng)用程序直接訪問和顯示來自外部源的texture,從而實(shí)現(xiàn)低延遲的視頻畫面顯示。

14、進(jìn)一步優(yōu)選的,所述步驟(1-b)中,管理direct3d能夠自動匹配和轉(zhuǎn)換不同版本的direct3d資源,保證視頻數(shù)據(jù)在不同版本的direct3d環(huán)境中能夠被正確處理和顯示。

15、本發(fā)明的有益效果是:主要基于開源的spout框架,利用顯卡的圖形渲染,在各個(gè)程序之間,?通過創(chuàng)建共享資源,寫入和讀取視頻畫面,從而實(shí)現(xiàn)了windows程序跨進(jìn)程進(jìn)行低開銷、低延遲視頻畫面共享,簡化數(shù)據(jù)同步,?增強(qiáng)windows在多媒體交互和實(shí)時(shí)應(yīng)用中的功能,拓寬windows在虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)等領(lǐng)域的應(yīng)用范圍。



技術(shù)特征:

1.一種實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,其特征在于,該方法包括如下步驟:

2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,其特征在于,所述所述步驟(1)中的c++原生插件,?使用mingw-w64編譯c++生成winspout.dll,windows程序中使用dllimport引入插件接口。

3.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,其特征在于,所述步驟(1-a)中windows操作系統(tǒng)上開辟共享內(nèi)存,是通過createfilemappinga為指定文件創(chuàng)建或打開文件映射對象,文件映射對象允許通過內(nèi)存訪問內(nèi)容,這樣實(shí)現(xiàn)多個(gè)進(jìn)程間共享數(shù)據(jù)。

4.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,其特征在于,所述步驟(1-b)中,通過direct3d?11或12的createtexture2d創(chuàng)建一個(gè)共享的texture資源,需要描述結(jié)構(gòu)體d3d11_texture2d_desc中設(shè)置miscflags字段為d3d11_resource_misc_shared,這樣就可以多進(jìn)程去讀取這個(gè)共享texture資源;通過opensharedresource方法訪問此資源,copyresource方法復(fù)制到此資源。

5.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,其特征在于,所述步驟(2)中,使用windows程序的commandbuffer能夠創(chuàng)建渲染指令,通過graphics.executecommandbuffer執(zhí)行此指令,能夠最小化渲染線程的延遲和開銷,提高windows程序與插件交互效率。

6.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,其特征在于,所述步驟(3)中的createexternaltexture允許windows應(yīng)用程序直接訪問和顯示來自外部源的texture,從而實(shí)現(xiàn)低延遲的視頻畫面顯示。

7.根據(jù)權(quán)利要求4所述的實(shí)現(xiàn)windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,其特征在于,步驟(1-b)中,所述管理direct3d能夠自動匹配和轉(zhuǎn)換不同版本的direct3d資源,保證視頻數(shù)據(jù)在不同版本的direct3d環(huán)境中能夠被正確處理和顯示。


技術(shù)總結(jié)
本發(fā)明的實(shí)現(xiàn)Windows跨進(jìn)程發(fā)送和接收視頻畫面的方法,包括以下步驟:為Windows程序創(chuàng)建C++插件,此插件主要封裝Spout框架,為Windows程序提供發(fā)送和接收的相關(guān)接口;Windows加載插件,當(dāng)發(fā)送視頻時(shí),創(chuàng)建Sender?Name,選擇需要發(fā)送Texture,GetNativeTexturePtr獲取原始Texture指針,使用-CommandBuffer,可以高效將Windows程序渲染數(shù)據(jù)傳遞給原生插件;當(dāng)接收視頻時(shí),選擇Sender?Name,通過插件讀取到Texture數(shù)據(jù),CreateExternalTexture創(chuàng)建Windows程序可以顯示的Texture,最終使用Graphics.Blit渲染出視頻畫面。該方法實(shí)現(xiàn)了低開銷、低延遲視頻畫面共享。增強(qiáng)Windows在多媒體交互和實(shí)時(shí)應(yīng)用中的功能,拓寬Windows在虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)等領(lǐng)域的應(yīng)用范圍。

技術(shù)研發(fā)人員:田林,魏代邦,修志遠(yuǎn),楊建,房蘭濤
受保護(hù)的技術(shù)使用者:山東浪潮超高清視頻產(chǎn)業(yè)有限公司
技術(shù)研發(fā)日:
技術(shù)公布日:2024/10/28
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1