实现Windows跨进程发送和接收视频画面的方法与流程

文档序号:39805338发布日期:2024-10-29 17:21阅读:45来源:国知局
实现Windows跨进程发送和接收视频画面的方法与流程

本发明涉及一种实现windows跨进程发送和接收视频画面的方法,属于计算机图形处理和跨进程通信,尤其是针对windows程序跨进程实现视频画面数据的高效共享与传输的方法。


背景技术:

1、随着实时图形处理技术的发展,需要在不同的应用程序之间共享和传输视频画面数据的场景越来越多,例如游戏直播、虚拟现实(vr)、增强现实(ar)等多媒体应用。在这些应用中,高效的数据共享机制对于保证用户体验和系统性能至关重要。传统的视频数据共享方法往往涉及到显著的cpu/gpu资源消耗、较高的延迟以及复杂的数据同步问题,尤其是在需要实时共享高分辨率视频内容的场合。因此需要改进。


技术实现思路

1、为弥补现有技术的不足,本发明提供一种实现windows跨进程发送和接收视频画面的方法,实现windows程序跨进程进行低开销、低延迟视频画面共享, 增强windows在多媒体交互和实时应用中的功能,拓宽windows在虚拟现实、增强现实等领域的应用范围。

2、为了达到上述目的,本发明所采用的技术方案是:

3、本发明的实现windows跨进程发送和接收视频画面的方法,包括如下步骤:

4、(1)为windows程序创建c++原生插件,该插件封装了spout框架,并为windows程序提供了发送和接收视频画面的相关接口;

5、(1-a)在windows操作系统上开辟共享内存,用于管理视频发送者和接收者的名称、共享句柄、长宽及格式信息;

6、(1-b)管理direct3d 11或 12来创建共享资源、复制资源以及读取资源,以支持视频画面的跨进程共享;

7、(2)发送视频时,通过windows程序加载上述插件dll,创建发送方名称,并选择需要发送的texture;使用get native texture ptr获取原始texture指针,并通过commandbuffer将数据高效传递给插件;

8、(3)接收视频时,通过windosw程序加载上述插件dll,选择发送方名称,并通过原生插件读取到texture数据;使用create external texture创建windows程序可以直接显示的texture。

9、进一步优选的,所述所述步骤(1)中的c++原生插件, 使用mingw-w64编译c++生成winspout.dll,windows程序中使用dllimport引入插件接口。

10、进一步优选的,所述步骤(1-a)中windows操作系统上开辟共享内存,是通过createfilemappinga为指定文件创建或打开文件映射对象,文件映射对象允许通过内存访问内容,这样实现多个进程间共享数据。

11、进一步优选的,所述步骤(1-b)中,通过direct3d11或12的create texture2d创建一个共享的texture资源,需要描述结构体d3d11_texture2d_desc中设置misc flags字段为d3d11_resource_misc_shared;通过open shared resource方法访问此资源,copyresource方法复制到此资源。

12、进一步优选的,所述步骤(2)中,使用windows程序的command buffer能够创建渲染指令,通过graphics.execute command buffer执行此指令,能够最小化渲染线程的延迟和开销,提高windows程序与插件交互效率。

13、进一步优选的,所述步骤(3)中的createexternal texture允许windows应用程序直接访问和显示来自外部源的texture,从而实现低延迟的视频画面显示。

14、进一步优选的,所述步骤(1-b)中,管理direct3d能够自动匹配和转换不同版本的direct3d资源,保证视频数据在不同版本的direct3d环境中能够被正确处理和显示。

15、本发明的有益效果是:主要基于开源的spout框架,利用显卡的图形渲染,在各个程序之间, 通过创建共享资源,写入和读取视频画面,从而实现了windows程序跨进程进行低开销、低延迟视频画面共享,简化数据同步, 增强windows在多媒体交互和实时应用中的功能,拓宽windows在虚拟现实、增强现实等领域的应用范围。



技术特征:

1.一种实现windows跨进程发送和接收视频画面的方法,其特征在于,该方法包括如下步骤:

2.根据权利要求1所述的实现windows跨进程发送和接收视频画面的方法,其特征在于,所述所述步骤(1)中的c++原生插件, 使用mingw-w64编译c++生成winspout.dll,windows程序中使用dllimport引入插件接口。

3.根据权利要求1所述的实现windows跨进程发送和接收视频画面的方法,其特征在于,所述步骤(1-a)中windows操作系统上开辟共享内存,是通过createfilemappinga为指定文件创建或打开文件映射对象,文件映射对象允许通过内存访问内容,这样实现多个进程间共享数据。

4.根据权利要求1所述的实现windows跨进程发送和接收视频画面的方法,其特征在于,所述步骤(1-b)中,通过direct3d 11或12的createtexture2d创建一个共享的texture资源,需要描述结构体d3d11_texture2d_desc中设置miscflags字段为d3d11_resource_misc_shared,这样就可以多进程去读取这个共享texture资源;通过opensharedresource方法访问此资源,copyresource方法复制到此资源。

5.根据权利要求1所述的实现windows跨进程发送和接收视频画面的方法,其特征在于,所述步骤(2)中,使用windows程序的commandbuffer能够创建渲染指令,通过graphics.executecommandbuffer执行此指令,能够最小化渲染线程的延迟和开销,提高windows程序与插件交互效率。

6.根据权利要求1所述的实现windows跨进程发送和接收视频画面的方法,其特征在于,所述步骤(3)中的createexternaltexture允许windows应用程序直接访问和显示来自外部源的texture,从而实现低延迟的视频画面显示。

7.根据权利要求4所述的实现windows跨进程发送和接收视频画面的方法,其特征在于,步骤(1-b)中,所述管理direct3d能够自动匹配和转换不同版本的direct3d资源,保证视频数据在不同版本的direct3d环境中能够被正确处理和显示。


技术总结
本发明的实现Windows跨进程发送和接收视频画面的方法,包括以下步骤:为Windows程序创建C++插件,此插件主要封装Spout框架,为Windows程序提供发送和接收的相关接口;Windows加载插件,当发送视频时,创建Sender Name,选择需要发送Texture,GetNativeTexturePtr获取原始Texture指针,使用­CommandBuffer,可以高效将Windows程序渲染数据传递给原生插件;当接收视频时,选择Sender Name,通过插件读取到Texture数据,CreateExternalTexture创建Windows程序可以显示的Texture,最终使用Graphics.Blit渲染出视频画面。该方法实现了低开销、低延迟视频画面共享。增强Windows在多媒体交互和实时应用中的功能,拓宽Windows在虚拟现实、增强现实等领域的应用范围。

技术研发人员:田林,魏代邦,修志远,杨建,房兰涛
受保护的技术使用者:山东浪潮超高清视频产业有限公司
技术研发日:
技术公布日:2024/10/28
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1