CN102790924B - 一种计算机视频流处理方法和装置 - Google Patents

一种计算机视频流处理方法和装置 Download PDF

Info

Publication number
CN102790924B
CN102790924B CN201210226777.0A CN201210226777A CN102790924B CN 102790924 B CN102790924 B CN 102790924B CN 201210226777 A CN201210226777 A CN 201210226777A CN 102790924 B CN102790924 B CN 102790924B
Authority
CN
China
Prior art keywords
video
stream data
data
video stream
bag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active - Reinstated
Application number
CN201210226777.0A
Other languages
English (en)
Other versions
CN102790924A (zh
Inventor
秦光远
范纪鍠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
3600 Technology Group Co ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201610165415.3A priority Critical patent/CN105657553B/zh
Priority to CN201210226777.0A priority patent/CN102790924B/zh
Publication of CN102790924A publication Critical patent/CN102790924A/zh
Application granted granted Critical
Publication of CN102790924B publication Critical patent/CN102790924B/zh
Active - Reinstated legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明提供了种计算机视频流处理方法和装置,涉及计算机技术领域。所述方法包括:拦截应用程序的进程发送至视频设备的第一I/O请求包,并使所述第一I/O请求包进入等待过程;基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包;将所述第二I/O请求包下发至视频设备,获取视频流数据;根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据;将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待,并返回所述第一I/O请求包至应用程序的进程。通过本发明,可安全准确的将用户的个性化信息加入视频流数据中进行显示。

Description

一种计算机视频流处理方法和装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种计算机视频流处理方法和装置。
背景技术
随着互联网技术的发展,在互联网中用户可以通过视频设备(比如摄像头)与其他用户进行视频交互。
现有技术中,在用户通过视频进行交互时,用户端的调用视频设备的应用程序的进程直接把IRP(I/O请求包)发送至视频设备,IRP从视频设备获取到视频流数据后,直接返回应用程序的进程。因此用户端发送给交互对象的视频只能显示视频设备当前录制的实际的图像,图像单调,无法根据用户的需求在视频中显示用户需求的个性化的信息。
发明内容
本发明所要解决的技术问题是提供一种计算机视频流处理方法和装置,用于根据用户需求的参数在视频流数据中显示用户个性化的信息。
为了解决上述问题,本发明开了一种计算机视频流处理方法,包括:
拦截应用程序的进程发送至视频设备的第一I/O请求包,并使所述第一I/O请求包进入等待过程;
基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包;
将所述第二I/O请求包下发至视频设备,获取视频流数据;
根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据;
将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待,并返回所述第一I/O请求包至应用程序的进程。
优选的,拦截应用程序的进程发送至视频设备的第一I/O请求包,包括:
将由IRP_MJ_DEVICE_CONTROL函数处理的,,且控制码IoControlCode为IOCTL_KS_READ_STREAM的第一I/O请求包进行拦截。
优选的,所述基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包,包括:
获取包括第一I/O请求包中的用户空间指针,以及所述用户空间指针指向的结构体中包括的用于存储视频流数据的第一缓存空间地址,以及应用程序的进程和视频设备通讯的句柄的参数信息;
基于包括所述用户空间指针、所述第一缓存空间地址,和所述句柄的参数信息,创建工作结构体;
基于所述工作结构体中的参数信息,重新构造第二I/O请求包;其中所述第二I/O请求包、工作结构体、第一I/O请求包均采用所述第一缓存空间地址保存视频流数据。
优选的,所述将所述第二I/O请求包下发至视频设备,获取视频流数据,包括:
通过视频流过滤驱动将所述第二I/O请求包下发至视频设备,获取视频流数据,将所述视频流数据填入所述第一缓存空间地址;
当所述第二I/O请求包从视频设备获取视频流数据填入第一缓存空间地址,并返回至视频流过滤驱动后,将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾。
优选的,所述将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾之前还包括:
判断是否存在特效处理模块发送的特效处理打开指令,如果存在,则将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾;如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程;
和/或,判断是否存在特效处理模块发送的特效处理关闭指令,如果存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程。
优选的,所述根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据包括:
通过特效处理模块从视频流过滤驱动中获取视频流数据;
特效处理模块根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据。
优选的,所述通过特效处理模块从视频流过滤驱动中获取视频流数据包括:
视频流过滤驱动提取等待处理队列队首的工作结构体的第一缓存空间地址中的视频流数据;
将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地址;
将所述得到视频流数据的视频流数据获取I/O请求包返回至特效处理模块;
其中,视频流过滤驱动接收特效处理模块通过视频流数据获取消息发送的视频流数据获取I/O请求包,并将视频流数据获取I/O请求包所述按序插入获取数据队列队尾。
优选的,特效处理模块根据接收由视频流过滤驱动从视频设备获取并发送的视频流参数信息之前包括:
所述视频流过滤驱动收特效处理模块的监控指令,根据所述监控指令在视频流过滤驱动的控制模块中注册监控过滤器;所述监控过滤监控应用程序的进程是否打开视频设备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
优选的,所述特效处理模块根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据,包括:
将所述视频流数据转换为RGB格式数据,并基于所述RGB格式数据创建位图;
将所述位图通过位图加载函数SelectObject加载至设备描述表中;
基于所述修改参数,在所述设备描述表中修改所述位图;
从设备描述表中提取修改完的对应位图的RGB格式数据,基于所述视频流参数信息将所述RGB格式数据转换为原视频流数据的格式。
优选的,将所述视频流数据转换为RGB格式数据包括:
从视频流数据中选取指定位置和大小的数据,并转换为RGB格式;所述指定位置和大小根据所述视频流参数信息设置。
优选的,还包括:
由特效处理模块通过发送视频流数据发送消息将所述个性化视频流数据至视频流过滤驱动。
优选的,所述将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待包括:
根据所述结构体与第一I/O请求包的一一对应关系,将所述个性化数据填入第一I/O请求包的第一缓存空间地址,通知所述第一I/O请求包结束等待。
优选的,其特征在于,
所述视频设备只绑定一个特效处理模块。
相应的,还公开了一种计算机视频流处理装置,包括:
视频流过滤驱动和特效处理模块,
所述视频流过滤驱动包括:
第一I/O请求包拦截模块,用于拦截应用程序的进程发送至视频设备的第一I/O请求包,并使所述第一I/O请求包进入等待过程;
第二I/O请求包重构模块,用于基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包;
第二I/O请求包发送模块,用于将所述第二I/O请求包下发至视频设备,获取视频流数据;
第一I/O请求包完成模块,用于将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待,并返回所述第一I/O请求包至应用程序的进程;
所述特效处理模块包括:
数据修改模块,用于根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据。
优选的,所述第一I/O请求包拦截模块用于:
将由IRP_MJ_DEVICE_CONTROL函数处理的,且控制码IoControlCode为IOCTL_KS_READ_STREAM的第一I/O请求包进行拦截。
优选的,所述第二I/O请求包重构模块包括:
第一I/O请求包参数获取模块,用于获取包括第一I/O请求包中的用户空间指针;以及所述用户空间指针指向的结构体中包括的,用于标识存储视频流数据的第一缓存空间地址;以及应用程序的进程和视频设备通讯的句柄的参数信息;
工作结构体创建模块,用于基于包括所述用户空间指针、所述第一缓存空间地址,和所述句柄的参数信息,创建工作结构体;
第二I/O请求包重构子模块,用于重新构造第二I/O请求包;其中所述第二I/O请求包、工作结构体、第一I/O请求包均采用所述第一缓存空间地址保存视频流数据。
优选的,所述第二I/O请求包发送模块包括:
第二I/O请求包下发模块,用于通过视频流过滤驱动将所述第二I/O请求包下发至视频设备,获取视频流数据,将所述视频流数据填入所述第一缓存空间地址;
视频流数据队列管理模块,用于当所述第二I/O请求包从视频设备获取视频流数据填入第一缓存空间地址,并返回至视频流过滤驱动后,将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾。
优选的,所述将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾之前还包括:
打开指令判断模块,用于判断是否存在特效处理模块发送的特效处理打开指令,如果存在,则将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾;如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程;
和/或,关闭指令判断模块,用于判断是否存在特效处理模块发送的特效处理关闭指令,如果存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程。
优选的,所述数据修改模块包括:
视频流数据获取模块,用于从视频流过滤驱动中获取视频流数据;
第一修改模块,用于在特效处理模块中,根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据。
优选的,所述视频流数据获取模块包括:
视频数据提取模块,用于通过视频流过滤驱动提取等待处理队列队首的工作结构体的第一缓存空间地址中的视频流数据;
视频数据转存模块,用于将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地址;
视频数据返回模块,用于将所述得到视频流数据的视频流数据获取I/O请求包返回至特效处理模块;
其中,视频流过滤驱动接收特效处理模块通过视频流数据获取消息发送的视频流数据获取I/O请求包,并将视频流数据获取I/O请求包所述按序插入获取数据队列队尾。
优选的,还包括:
监控过滤器注册模块,用于所述视频流过滤驱动收特效处理模块的监控指令,根据所述监控指令在视频流过滤驱动的控制模块中注册监控过滤器;所述监控过滤监控应用程序的进程是否打开视频设备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
优选的,所述第一修改模块包括:
转换创建模块,将所述视频流数据转换为RGB格式数据,并基于所述RGB格式数据创建位图;
位图加载模块,用于将所述位图通过位图加载函数SelectObject加载至设备描述表中;
数据修改子模块,用于基于所述修改参数,在所述设备描述表中修改所述位图;
提取转换模块,用于从设备描述表中提取修改完的对应位图的RGB格式数据,基于所述视频流参数信息将所述RGB格式数据转换为原视频流数据的格式。
优选的,所述转换创建模块包括:
区域选取转换模块,用于从视频流数据中选取指定位置和大小的数据,并转换为RGB格式;所述指定位置和大小根据所述视频流参数信息设置。
优选的,还包括:
修改数据发送模块:由特效处理模块通过发送视频流数据发送消息,将所述个性化视频流数据发送至视频流过滤驱动。
优选的,所述第一I/O请求包完成模块包括:
第一完成模块,用于根据所述结构体与第一I/O请求包的一一对应关系,将所述个性化数据填入第一I/O请求包的第一缓存空间地址,通知所述第一I/O请求包结束等待。
优选的,所述视频设备只绑定一个特效处理模块。
与现有技术相比,本发明包括以下优点:
本发明实施例利用系统的视频流过滤驱动机制,将应用程序的进程发送的IRP(I/O请求包)进行拦截,而由本发明实施例利用应用程序的进程的IRP中的参数信息重新构造新IRP,再新IRP发送至视频设备获取视频流数据,新IRP获取到视频数据并返回视频流过滤驱动,再根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据,然后再将个性化视频流数据发给应用程序的进程的IRP,让其返回应用程序的进程,如此用户的个性化参数信息即可显示在视频中。通过本发明,没强行的暴力的阻断应用程序的进程和视频设备之间的通讯,也不会破坏应用程序的进程与视频设备之间正常交互的协议,可安全准确的将用户的个性化信息加入视频流数据中进行显示。
附图说明
图1是本发明实施例一种计算机视频流处理方法的流程示意图;
图2是本发明实施例优选的一种第二I/O请求重构步骤流程示意图;
图3是本发明实施例一种计算机视频流处理装置的结构示意图;
图4本发明实施例优选的一种第二I/O请求包重构模块的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的核心思想之一在于:本发明利用系统的视频流过滤驱动机制,将应用程序的进程发送的IRP阻拦在视频流过滤驱动中进行等待,而由本发明在过滤驱动中利用应用程序的进程的IRP中的参数信息重新构造新IRP,再由视频流过滤驱动将新IRP发送至视频设备获取视频流数据,新IRP获取到视频数据并返回视频流过滤驱动后,由本发明的特效处理模块从IRP中获取新IRP中的视频流数据,并根据用户个性化设置的修改参数根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据,再由特效处理模将修改后对应用户的个性化视频流数据发送至视频流过滤驱动,然后由视频流过滤驱动将所述修改后的视频流数据发送给应用程序的进程的IRP并返回给应用程序的进程。不用强行的暴力的阻断应用程序的进程和视频设备之间的通讯,也不会破坏应用程序的进程与视频设备之间正常交互的协议,可安全准确的将用户的个性化信息加入视频流数据中进行显示。
参照图1,示出了本发明实施例一种计算机视频流处理方法的流程示意图,具体可以包括:
步骤110,拦截应用程序的进程发送至视频设备的第一I/O请求包,并使所述第一I/O请求包进入等待过程。
在本发明实施例中,本发明实施例的系统可包括两个主体模块,即视频流过滤驱动和特效处理模块。在本发明实施例的方法执行之前,系统首先会加载视频流过滤驱动,即根据系统注册表加载所述视频流过滤驱动,并在所述视频流过滤驱动中创建控制模块和视频设备的物理驱动对象模块。
另外发明的特效模块和视频设备的绑定规则可以是:一个视频设备只允许绑定一个特效模块。
实际中,需要将加载视频设备(比如摄像头设备)的视频流过滤驱动(Imagingdevices),并在所述过滤驱动中创建控制模块和视频设备的设备对象。一般情况下,所述过滤驱动的加载是在系统启动时进行加载的,即根据系统注册表进行加载,本发明实施例的过滤驱动加载在系统注册表中的位置包括:
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\UpperFilters”
创建启动服务项,将该驱动服务随机启动(其中,“360Camera”为启动服务项名称,可根据实际情况进行修改)
启动服务项注册表路径:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\360Camera]
″Type″=dword:00000001
″Start″=dword:00000001
在加载过滤驱动后,在过滤驱动中会对每个实际的视频设备创建相应的物理驱动对象模块,还会创建一个控制模块用于接收特效处理模块的指令与数据。
在本发明实施例中,视频流过滤驱动加载后,特效处理模块需要在视频流过滤驱动中加载监控过滤器,
即步骤S50,由特效处理模块在所述视频流过滤驱动中的控制模块注册监控过滤器,监控应用程序的进程是否打开视频设备;
当应用程序的进程打开视频设备,则获取视频设备的视频流参数信息并发送至特效处理模块。
在特效处理模块启动后,特效处理模块首先会通过MJ_CREATE函数发送一个IPR_MJ_CREATE请求包到过滤驱动,过滤驱动接收到该请求包后首先会判断该请求包中的设备对象的句柄是否为预置的控制模块的句柄,其中,所述控制模块的句柄可以是所述控制模块的名称;如果是,则发送到控制模块以打开控制模块,即打开预置的设备对象句柄,并创建一个空属性的过滤器;然后特效处理模块再发送一条控制指令将该空属性的过滤器注册为监控过滤器,实际中,本发明实施例所述的注册是特效处理模块发送用于监控的IRP(I/Orequestpacket,I/O请求包)请求并被控制模块挂起,以便于物理驱动对象模块发送视频流参数信息和需要使用视频设备的应用程序的进程标识信息等。
其中,所述物理驱动对象模块通过分析IPR_MJ_CREATE函数中的消息获取所述视频流参数信息。
其中,所述的视频流参数信息包括视频流的压缩格式、视频的高宽、视频每一帧图片的size(尺寸),每一个像素所占的字节数等。对于每种应用程序的进程,其获取的视频流参数信息可能存在不同,比如应用程序的进程A获取的视频的高宽为360*480,而应用程序的进程B获取的视频的高宽为600*800,还比应用程序的进程获取的格式信息不同,比如格式YUY2格式、MJPG格式、RGB32格式、I420格式等。因此,相应不同应用程序的进程可能其获取的视频流参数信息不同。
另外,本发明实施例中,视频流过滤驱动获取到视频流参数信息可暂存在视频流过滤驱动,当后续步骤中特效处理模块需要使用时,再发送至特效处理模块。
优选的,拦截应用程序的进程发送至视频设备的第一I/O请求包包括:
步骤S60,将由IRP_MJ_DEVICE_CONTROL函数处理的,且控制码IoControlCode为IOCTL_KS_READ_STREAM的第一I/O请求包进行拦截。
在本发明实施例中,因为应用程序的进程与底层驱动进行信息交互基本上是采用IRP,且IRP的类型非常之多,而在本申请中,只需要对指定的IRP进行拦截即可,其他与本发明实施例不相关的IRP则可不对其进行拦截。对于前述的视频流过滤驱动和特效处理模块,本申请的过滤驱动对第一I/O请求包进行拦截时,可通过特效处理模块通知视频流过滤驱动拦截第一I/O请求包的类型,即通知视频流过滤驱动将由IRP_MJ_DEVICE_CONTROL函数处理的,且控制码IoControlCode为IOCTL_KS_READ_STREAM的第一I/O请求包进行拦截。
相应的使用视频设备的应用程序的进程发送上述IRP至视频流过滤驱动时,视频流过滤驱动则对其进行拦截。
在对第一I/O请求包进行拦截后,使所述第一I/O请求包在视频流过滤驱动中进入等待过程。
步骤120,基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包。
在本发明实施例拦截到应用程序的进程发送给视频设备的第一I/O请求包时,则对其进行解析,利用第一I/O请求包的参数重新构造第二I/O请求包。在现有技术中,应用程序的进程的第一I/O请求包是直接发送至视频设备处,获取视频流数据后返回至应用程序的进程,而本申请则在步骤110中将应用程序的进程发送的第一I/O请求包进行拦截,并重构第二I/O请求包,进入步骤130获取视频流数据。
优选的,参照图2,所述基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包,包括:
步骤A11,获取包括第一I/O请求包中的用户空间指针,以及所述用户空间指针指向的结构体中包括的用于存储视频流数据的第一缓存空间地址,以及应用程序的进程和视频设备通讯的句柄的参数信息;
IRP的数据结构包括许多结构,对于本发明实施例拦截的第一I/O请求包,用到了第一I/O请求包中的用户空间指针(IRP->UserBuffer)及该用户空间指针指向的结构体中包括的用于存储视频流数据的第一缓存空间地址,
用户空间指针示例如下:Irp->->UserBuffer
((Irp)->Tail.Overlay.CurrentStackLocation)->Parameters.DeviceIoControl.InputBufferLength
这里是将应用程序进行了MDL内存映射为R0的内存地址。
实际中,IRP->UserBuffer指针指向一个PKSSTREAM_HEADER的结构:
该结构体中的Data和FrameExtent数据域分别代表获取视频帧数据的Buffer(第一缓存空间地址)的地址和长度。
以及Tail.Overlay结构(Tail(Tail,显示文件结尾命令)联合中的一种结构)中对应的为进程和设备通讯的句柄,比如:
(((Irp)->Tail.Overlay.CurrentStackLocation)->FileObject;其中FileObject为进程和设备通讯的句柄。)
相应的本申请则用到了前述IRP->UserBuffer和其中的相关数据和FileObject去以便于在骤A12中创建工作结构体。
步骤A12,基于包括所述用户空间指针、所述第一缓存空间地址,和所述句柄的参数信息,创建工作结构体;
在步骤A11中获得的参数信息,即获得包括所述用户空间指针和所述标识存储视频流数据的第一缓存空间地址,和所述句柄后,即可基于上述数据,构建工作结构体。
其中,工作结构体部分示例可如下:typedefstruct
其中工作结构体名称为WORK_ITEM,其中PMDLpmdl_ubuf;和
PMDLpmdl_dbuf可用于将第一I/O请求包的存储视频流数据的第一缓存空间地址提供给第二I/O请求包使用,并且所述工作结构体对应第一缓存空间地址。所述工作结构体即使第一I/O请求包和第二I/O请求包公用同一个缓存空间地址,以存储视频流数据;其中IRPoldirp;则将工作结构体与第一I/O请求包进行了一一对应。
步骤A13,基于所述工作结构体中的参数信息,重新构造第二I/O请求包;其中所述第二I/O请求包、工作结构体、第一I/O请求包均采用所述第一缓存空间地址保存视频流数据。
因为前述工作结构中包括了第一I/O请求包的上述参数,那么即可根据工作结构体中的上述参数重新构造第二I/O请求包,用以下发至视频设备获取视频流数据。
其中,工作结构体,第二I/O请求包均采用的第一I/O请求包中用于存储视频流数据的第一缓存空间地址,因此第二I/O请求包、工作结构体、第一I/O请求包均采用所述第一缓存空间地址保存视频流数据。那么如果改变其中一个结构的第一缓存空间地址的数据,其他几个获得的数据也随之而变。
步骤130,将所述第二I/O请求包下发至视频设备,获取视频流数据;
在本发明实施例中,在视频流过滤驱动重构第二I/O请求包后,由视频流过滤驱动将第二I/O请求包下发至视频设备,获取视频流数据。在本发明实施例中,第二I/O请求包获取到视频设备的视频流数据后,返回视频流过滤驱动,而不是返回应用程序的进程。
在实际中,计算机系统中可能存在多层驱动,而视频流过滤驱动只是其中一层,相应的视频流过滤驱动中的IRP要获得视频设备中的数据时则需要将IRP下发至视频设备。
优选的,所述将所述第二I/O请求包下发至视频设备,获取视频流数据,包括:
步骤S131,通过视频流过滤驱动将所述第二I/O请求包下发至视频设备,获取视频流数据,将所述视频流数据填入所述第一缓存空间地址;
基于步骤A12中基于存储储视频流数据的第一缓存空间地址重构的第二I/O请求包,相应的在第二I/O请求包下发至视频设备后,从视频设备读取当前帧的视频流数据,存储于所述第一缓存空间地址,然后返回视频流过滤驱动。
步骤S132,当所述第二I/O请求包从视频设备获取视频流数据填入第一缓存空间地址,并返回至视频流过滤驱动后,将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾。
当所述第二I/O请求包从视频设备获取到一帧视频流数据,返回至视频流过滤驱动后,在本发明实时例中,是创建一个线程,将工作结构体按顺序插入等待处理处理队列,等待特效处理模块发送的视频流数据获取I/O请求包获取该队列中队首的数据。
在实际中每个第二I/O请求包只获取一帧数据存储于第一缓存空间地址中,因此插入队列的工作结构体也为一帧数据,而为了输出的视频数据流正常,需要按序对数据进行处理,因此可采用等待处理处理队列的形式管理视频流过滤驱动得到的每个工作结构体对应的每帧视频流数据。
步骤140,根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据;
在获取到视频流数据后,本申请即可将视频流数据根据用户的修改参数修改,修改为个性化视频流数据。
优选的,所述根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据包括:
步骤S141,通过特效处理模块从视频流过滤驱动中获取视频流数据;
在本申请中,可通过特效处理模块对视频流数据进行修改,首先,特效处理模块即需要从视频流过滤驱动中获取视频流数据。
优选的,所述通过特效处理模块从视频流过滤驱动中获取视频流数据包括:
步骤B11,视频流过滤驱动提取等待处理队列队首的工作结构体的第一缓存空间地址中的视频流数据;
步骤B12,将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地址;
步骤B13,将所述得到视频流数据的视频流数据获取I/O请求包返回至特效处理模块;
其中,视频流过滤驱动接收特效处理模块通过视频流数据获取消息发送的视频流数据获取I/O请求包,并将视频流数据获取I/O请求包所述按序插入获取数据队列队尾。
在本申请中,特效处理模块可能发送多个视频流数据获取I/O请求包,而为了使视频流数据处理顺序不产生紊乱,则需要在视频流过滤驱动中对视频流数据获取I/O请求包建立一个队列进行管理,将特效处理模块通过视频流数据获取消息(比如指定的CONTROL_FRAMEWAIT消息)发送的视频流数据获取I/O请求包按序插入获取数据队列队尾。然后步骤B11从等待处理队列队首的工作结构体的第一缓存空间地址中提取视频流数据,步骤B12将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地址,如此可一一对应并按序处理。
另外,对于等待处理队列队首的工作结构体,记录其等待的时间,如果超过阈值,则将该工作结构体从队列中剔除,并通知第一I/O请求包等待结束,可以返回应用程序的进行。在这个过程中,因为工作结构体与第一I/O请求包公用第一缓存空间地址存储视频流数据,那么此时第一I/O请求包也存在了视频流数据,当通知第一I/O请求包等待结束,那么第一I/O请求包即可携带原始的视频流数据返回应用程序。
优选的,所述将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾之前还包括:
步骤B31,判断是否存在特效处理模块发送的特效处理打开指令;
步骤B32,如果存在,则将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾;
步骤B32,如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程;
和/或,步骤B41,判断是否存在特效处理模块发送的特效处理关闭指令;
骤B42,如果存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程。
在本发明实施例中,还可在特效处理模块设置打开和关闭指令,即打开和关闭开关。
当打开特效处理模块时,特效处理模块向视频流过滤驱动发送特效处理打开指令,打开后特效处理模块才向视频流过滤驱动发送视频流数据获取消息,从视频流过滤驱动获取视频流数据进行修改。
那么在第二I/O请求包获取到数据返回值视频流过滤驱动后,本发明实施例中可创建前述线程,判断视频流过滤驱动中是否存在打开指令,如果存在,则将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾,并将第二I/O请求包完成。如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程;并将第二I/O请求包完成。
本发明实施例中,当关闭特效处理模块时,特效处理模块发送特效处理关闭指令至视频流过滤驱动,停止发送视频流数据获取消息,不从视频流过滤驱动获取视频流数据进行修改。
那么在第二I/O请求包获取到数据返回值视频流过滤驱动后,本发明实施例中可创建前述线程,判断是否存在特效处理模块发送的特效处理关闭指令,如果存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程,并完成第二I/O请求包。如果不存在,则说明特效处理模块处于打开状态,则将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾,并完成第二I/O请求包。
其中,当判断存在特效处理关闭指令时,如果等待处理队列中存在等待处理的工作结构体,那么结束这些等待处理的工作结构体,并通知这些工作结构体对应的第一I/O请求包结束等待,可返回应用程序的进程。
在本发明实施例中,特效处理模块的各种指令和逻辑是在特效处理模块在视频流过滤驱动中注册了监控过滤器后才执行。
步骤S142,特效处理模块根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据。
在本发明实施例中,特效处理模块可预先接收用户的个性化的修改参数。
另外,视频流参数信息可通过视频流过滤驱动从视频设备获取并发送至特效处理模块。
即,特效处理模块根据接收由视频流过滤驱动从视频设备获取并发送的视频流参数信息之前包括:
所述视频流过滤驱动收特效处理模块的监控指令,根据所述监控指令在视频流过滤驱动的控制模块中注册监控过滤器;所述监控过滤监控应用程序的进程是否打开视频设备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
本过程可由前述步骤S50进行,即由特效处理模块在所述视频流过滤驱动中的控制模块注册监控过滤器,监控应用程序的进程是否打开视频设备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
当特效处理模块得到用户输入的个性化的修改参数,和视频流参数信息后,对于获取到的视频流数据,则依据所述修改参数和所述视频流参数信息,根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据。
优选的,所述特效处理模块根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据,包括:
步骤C11,将所述视频流数据转换为RGB格式数据,并基于所述RGB格式数据创建位图;
本发明实施例中,特效处理模块接收到视频流数据后,将所述视频流数据转换为RGB格式(RGB格式,对一种颜色进行编码的方法统称为“颜色空间”或“色域”,其中R为红、G为绿、B为蓝)数据,并通过RGB格式数据创建位图(Bitmap,位图。位图是位的数组,它制订了像素矩阵中各像素的颜色,亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的)。
另外,优选的,将所述视频流数据转换为RGB格式数据包括:
步骤C111,从视频流数据中选取制定位置和大小的数据,并转换为RGB格式。
比如从视频流数据的宽*高为20*20,选择左下角5*5大小的数据并将其转换为RGB格式。
步骤C12,将所述位图通过位图加载函数SelectObject加载至设备描述表中;
在创建位图后,将位图通过位图加载函数SelectObject加载至设备描述表中(DC)中。
其中,设备描述表(DeviceContext,DC)是一个信息结构体,包含物理输出设备及其驱动程序。在Windows平台下,所有的的图形操作都是通过它完成。
位图加载函数SelectObject,该函数选择一对象到指定的设备上下文环境中(也即一个DC中),该新对象替换先前的相同类型的对象。
SelectObject函数原型:HGDIOBJSelectObject(HDChdc,HGDIOBJhgdiobj);其中,参数hdc:设备上下文环境的句柄,hgdiobj:被选择的对象的句型。
步骤C13,基于所述修改参数,在所述设备描述表中修改所述位图;
在本步骤中,优选的,基于所述修改参数,在所述设备描述表中修改所述位图包括:
当所述修改参数为文字信息时,调用DrawText函数在所述位图中函数添加文字信息。
即用户输入的修改参数为文字信息时,则可直接调用DrawText函数在所述位图中函数添加文字信息。
其中,DrawText函数在指定的矩形里写入格式化的正文,根据指定的方法对正文格式化(扩展的制表符,字符对齐、折行等)。该函数原型为:
当用户输入的为图片信息时,则根据将图片覆盖在位图之中即可。在本发明实施例中,对于图片处理时,需要在步骤C111中选择指定位置和大小的数据,即在原视频流数据中选择一块区域用于显示用户选择的个性化图片。
优选的,基于所述修改参数,在所述设备描述表中修改所述位图包括:
当所述修改参数为图片时,在所述设备描述表中修改所述位图包括:
当所述修改参数为静态图片时,直接将所述静态图片覆盖在所述位图中。
当所述修改参数为动态图片时,选择组成动态图片的各帧图片中的一帧图片覆盖在所述位图中。
比如对于GIF格式(GraphicsInterchangeFormat,“图像互换格式”)动态图,其是由多帧数据组合而成,相应的只需要选择其中一帧数据覆盖在所述位图之中即可。
当所述修改参数为流式网络图形格式图片时,选择组成所述流式网络图形图片的各幅图中的一幅图片覆盖在所述位图中。
流式网络图形格式(PortableNetworkGraphicFormat,流式网络图形)图片,其是由多幅图片组合而成,相应的选择其中一幅图片覆盖在所述位图中即可。
步骤C14,从设备描述表中提取修改完的对应位图的RGB格式数据,基于所述视频流参数信息将所述RGB格式数据转换为原视频流数据的格式。
当对所述位图修改完成后,从设备描述表中提取修改完的对应位图的RGB格式数据,然后基于原视频流数据的视频流参数信息(比如视频流数据的宽、高等),将所述RGB格式数据转换为原视频流数据的格式。
另外,当选择指定位置和大小的数据时,将由所述RGB格式数据转换得到的原视频流格式的数据替换之前从指定位置提取的数据。
如此,即可得到对应用户的个性化视频流数据。
在特效处理模块处理得到所述个性化视频流数据后,还包括:
将所述个性化视频流数据发送至视频流过滤驱动。
优选的,将所述个性化视频流数据发送至视频流过滤驱动包括:
步骤S143,由特效处理模块通过发送视频流数据发送消息,将所述个性化视频流数据至视频流过滤驱动。
视频流数据发送消息(比如指定的CONTROL_FRAMERECV消息)中包括了个性化视频流数据,和其对应的工作结构体的标识。
步骤150,将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待,并返回所述第一I/O请求包至应用程序的进程。
当视频流过滤驱动获得所述修改完成的个性化视频流数据后,则将该个性化数据填入相应的第一I/O请求包,通知所述I/O请求包完成并返回所述第一I/O请求包至应用程序的进程。
优选的所述将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待包括:
步骤S151,根据所述结构体与第一I/O请求包的一一对应关系,将所述个性化数据填入第一I/O请求包的第一缓存空间地址,通知所述第一I/O请求包结束等待。
在本发明实施例中,当视频流过滤驱动获得所述修改完成的个性化视频流数据后,其是通过等待处理队列和获取数据队列的对应关系进行的对应,那么所述视频流过滤驱动接收到所述个性化视频后,根据对应关系将等待处理队列队首的工作结构体的第一缓存空间地址中的内容用所述个性化视频流数据替换,而第一I/O请求包与所述工作结构体均采用所述第一缓存空间地址保存视频流数据,那么此时通知第一I/O请求包完成,然后将完成的第一I/O请求包至应用程序的进程,即可实现用户个性化视频数据的显示和传输。
如此,即可将用户的个性化参数添加至视频流数据中,进行显示和传输。
本实施例中,如前所述视频流过滤驱动中创建了针对视频设备的物理驱动模块,而本发明实施例的对第一I/O请求包的拦截过程,第二I/O请求包的重构过程,第一I/O请求包的完成过程均可由物理驱动模块进行,控制模块可负责物理驱动模块与特效处理模块之间的信息传递。
在本实施例中,首先,应用程序的进程的第一I/O请求包有视频流过滤驱动拦截,并让其在视频流过滤驱动中等待,使应用程序的进程的第一I/O请求包不再之间下发至视频设备;其次,视频流过滤驱动基于第一I/O请求包中的参数信息重构第二I/O请求包,并由视频流过滤驱动下发至视频设备,获取视频流数据返回至视频流过滤驱动;再次,由特效模块从视频流过滤驱动中获取视频流数据进行个性化的修改,然后将修改后的个性化视频流数据返回至视频流过滤驱动;最后,视频流过滤驱动将所述个性化视频流数据填入至前面等待的第一I/O请求包,使其返回应用程序的进程。不用强行的暴力的阻断应用程序的进程和视频设备之间的通讯,也不会破坏应用程序的进程与视频设备之间正常交互的协议,可安全准确的将用户的个性化信息加入视频流数据中进行显示。在本发明中,特效处理模块的特效处理除了添加文字、添加图片,还可包括添加边框等。
参照图3,其示出了本申请一种计算机视频流处理装置,包括:
视频流过滤驱动200和特效处理模块300,
所述视频流过滤驱动200包括:
第一I/O请求包拦截模块210,用于拦截应用程序的进程发送至视频设备的第一I/O请求包,并使所述第一I/O请求包进入等待过程;
第二I/O请求包重构模块220,用于基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包;
第二I/O请求包发送模块230,用于将所述第二I/O请求包下发至视频设备,获取视频流数据;
第一I/O请求包完成模块240,用于将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待,并返回所述第一I/O请求包至应用程序的进程;
所述特效处理模块300包括:
数据修改模块310,用于根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据。
其中,所述第一I/O请求包拦截模块用于:
将由IRP_MJ_DEVICE_CONTROL函数处理的,且控制码IoControlCode为IOCTL_KS_READ_STREAM的第一I/O请求包进行拦截。
其中,参照图4,所述第二I/O请求包重构模块包括:
第一I/O请求包参数获取模块A21,用于获取包括第一I/O请求包中的用户空间指针;以及所述用户空间指针指向的结构体中包括的,用于标识存储视频流数据的第一缓存空间地址;以及应用程序的进程和视频设备通讯的句柄的参数信息;
工作结构体创建模块A22,用于基于包括所述用户空间指针、所述第一缓存空间地址,和所述句柄的参数信息,创建工作结构体;
第二I/O请求包重构子模块A23,用于重新构造第二I/O请求包;其中所述第二I/O请求包、工作结构体、第一I/O请求包均采用所述第一缓存空间地址保存视频流数据。。
其中,所述第二I/O请求包发送模块包括:
第二I/O请求包下发模块,用于通过视频流过滤驱动将所述第二I/O请求包下发至视频设备,获取视频流数据,将所述视频流数据填入所述第一缓存空间地址;
视频流数据队列管理模块,用于当所述第二I/O请求包从视频设备获取视频流数据填入工作结构体的第一缓存空间地址,并返回至视频流过滤驱动后,将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾。
其中,所述数据修改模块包括:
视频流数据获取模块,用于从视频流过滤驱动中获取视频流数据;
第一修改模块,用于在特效处理模块中,根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据。
在所述将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾之前还包括:
打开指令判断模块,用于判断是否存在特效处理模块发送的特效处理打开指令,如果存在,则将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列队尾;如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程;
和/或,关闭指令判断模块,用于判断是否存在特效处理模块发送的特效处理关闭指令,如果存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程。
其中,所述视频流数据获取模块包括:
视频数据提取模块,用于通过视频流过滤驱动提取等待处理队列队首的工作结构体的第一缓存空间地址中的视频流数据;
视频数据转存模块,用于将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地址;
视频数据返回模块,用于将所述得到视频流数据的视频流数据获取I/O请求包返回至特效处理模块;
其中,视频流过滤驱动接收特效处理模块通过视频流数据获取消息发送的视频流数据获取I/O请求包,并将视频流数据获取I/O请求包所述按序插入获取数据队列队尾。
其中,还包括:
监控过滤器注册模块,用于所述视频流过滤驱动收特效处理模块的监控指令,根据所述监控指令在视频流过滤驱动的控制模块中注册监控过滤器;所述监控过滤监控应用程序的进程是否打开视频设备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
其中,所述第一修改模块包括:
转换创建模块,将所述视频流数据转换为RGB格式数据,并基于所述RGB格式数据创建位图;
位图加载模块,用于将所述位图通过位图加载函数SelectObject加载至设备描述表中;
数据修改子模块,用于基于所述修改参数,在所述设备描述表中修改所述位图;
提取转换模块,用于从设备描述表中提取修改完的对应位图的RGB格式数据,基于所述视频流参数信息将所述RGB格式数据转换为原视频流数据的格式。
其中,所述转换创建模块包括:
区域选取转换模块,用于从视频流数据中选取制定位置和大小的数据,并转换为RGB格式;所述指定位置和大小根据所述视频流参数信息设置。
其中,还包括:
修改数据发送模块:由特效处理模块通过发送视频流数据发送消息,将所述个性化视频流数据发送至视频流过滤驱动。
其中,所述第一I/O请求包完成模块包括:
第一完成模块,用于根据所述结构体与第一I/O请求包的一一对应关系,将所述个性化数据填入第一I/O请求包的第一缓存空间地址,通知所述第一I/O请求包结束等待
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
以上对本发明实施例所提供的一种计算机视频流处理方法和装置,进行了详细介绍,本文中应用了具体个例对本发明实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明实施例的限制。

Claims (24)

1.一种计算机视频流处理方法,其特征在于,所述方法利用系统的视频流过滤驱动机制,所述方法包括:
拦截应用程序的进程发送至视频设备的第一I/O请求包,并使所述第一I/O请求包进入等待过程;
基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包;
将所述第二I/O请求包下发至视频设备,获取视频流数据;
根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据;
将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待,并返回所述第一I/O请求包至应用程序的进程。
2.根据权利要求1所述的方法,其特征在于,拦截应用程序的进程发送至视频设备的第一I/O请求包,包括:
将由IRP_MJ_DEVICE_CONTROL函数处理的,且控制码IoControlCode为IOCTL_KS_READ_STREAM的第一I/O请求包进行拦截。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包,包括:
获取包括第一I/O请求包中的用户空间指针,以及所述用户空间指针指向的结构体中包括的用于存储视频流数据的第一缓存空间地址,以及应用程序的进程和视频设备通讯的句柄的参数信息;
基于包括所述用户空间指针、所述第一缓存空间地址,和所述句柄的参数信息,创建工作结构体;
基于所述工作结构体中的参数信息,重新构造第二I/O请求包;其中所述第二I/O请求包、工作结构体、第一I/O请求包均采用所述第一缓存空间地址保存视频流数据。
4.根据权利要求3所述的方法,其特征在于,所述将所述第二I/O请求包下发至视频设备,获取视频流数据,包括:
通过视频流过滤驱动将所述第二I/O请求包下发至视频设备,获取视频流数据,将所述视频流数据填入所述第一缓存空间地址;
当所述第二I/O请求包从视频设备获取视频流数据填入第一缓存空间地址,并返回至视频流过滤驱动后,将所述的第一缓存空间地址的工作结构体插入等待处理队列队尾。
5.根据权利要求4所述的方法,其特征在于,所述将所述的第一缓存空间地址的工作结构体插入等待处理队列队尾之前还包括:
判断是否存在特效处理模块发送的特效处理打开指令,如果存在,则将所述的第一缓存空间地址的工作结构体插入等待处理队列队尾;如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程;
和/或,判断是否存在特效处理模块发送的特效处理关闭指令,如果存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程。
6.根据权利要求4所述的方法,其特征在于,所述根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据包括:
通过特效处理模块从视频流过滤驱动中获取视频流数据;
特效处理模块根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据。
7.根据权利要求6所述的方法,其特征在于,所述通过特效处理模块从视频流过滤驱动中获取视频流数据包括:
视频流过滤驱动提取等待处理队列队首的工作结构体的第一缓存空间地址中的视频流数据;
将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地址;
将所述得到视频流数据的视频流数据获取I/O请求包返回至特效处理模块;
其中,视频流过滤驱动接收特效处理模块通过视频流数据获取消息发送的视频流数据获取I/O请求包,并将视频流数据获取I/O请求包按序插入获取数据队列队尾。
8.根据权利要求6所述的方法,其特征在于,在特效处理模块根据接收的、由视频流过滤驱动从视频设备获取并发送的视频流参数信息之前包括:
所述视频流过滤驱动接收特效处理模块的监控指令,根据所述监控指令在视频流过滤驱动的控制模块中注册监控过滤器;所述监控过滤器监控应用程序的进程是否打开视频设备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
9.根据权利要求6所述的方法,其特征在于,所述特效处理模块根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据,包括:
将所述视频流数据转换为RGB格式数据,并基于所述RGB格式数据创建位图;
将所述位图通过位图加载函数SelectObject加载至设备描述表中;
基于所述个性化参数,在所述设备描述表中修改所述位图;
从设备描述表中提取修改完的对应位图的RGB格式数据,基于所述视频流参数信息将所述RGB格式数据转换为原视频流数据的格式。
10.根据权利要求9所述的方法,其特征在于,将所述视频流数据转换为RGB格式数据包括:
从视频流数据中选取指定位置和大小的数据,并转换为RGB格式;所述指定位置和大小根据所述视频流参数信息设置。
11.根据权利要求6所述的方法,其特征在于,还包括:
由特效处理模块通过发送视频流数据发送消息,将所述个性化视频流数据发送至视频流过滤驱动。
12.根据权利要求4所述的方法,其特征在于,所述将所述个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待包括:
根据所述结构体与第一I/O请求包的一一对应关系,将所述个性化视频流数据填入第一I/O请求包的第一缓存空间地址,通知所述第一I/O请求包结束等待。
13.一种计算机视频流处理装置,其特征在于,所述装置利用系统的视频流过滤驱动机制,所述装置包括:
视频流过滤驱动和特效处理模块,
所述视频流过滤驱动包括:
第一I/O请求包拦截模块,用于拦截应用程序的进程发送至视频设备的第一I/O请求包,并使所述第一I/O请求包进入等待过程;
第二I/O请求包重构模块,用于基于所述第一I/O请求包中的参数信息重新构造第二I/O请求包;
第二I/O请求包发送模块,用于将所述第二I/O请求包下发至视频设备,获取视频流数据;
第一I/O请求包完成模块,用于将个性化视频流数据填入所述第一I/O请求包,通知所述第一I/O请求包结束等待,并返回所述第一I/O请求包至应用程序的进程;
所述特效处理模块包括:
数据修改模块,用于根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视频流数据。
14.根据权利要求13所述的装置,其特征在于,所述第一I/O请求包拦截模块用于:
将由IRP_MJ_DEVICE_CONTROL函数处理的,且控制码IoControlCode为IOCTL_KS_READ_STREAM的第一I/O请求包进行拦截。
15.根据权利要求13所述的装置,其特征在于,所述第二I/O请求包重构模块包括:
第一I/O请求包参数获取模块,用于获取包括第一I/O请求包中的用户空间指针;以及所述用户空间指针指向的结构体中包括的,用于标识存储视频流数据的第一缓存空间地址;以及应用程序的进程和视频设备通讯的句柄的参数信息;
工作结构体创建模块,用于基于包括所述用户空间指针、所述第一缓存空间地址,和所述句柄的参数信息,创建工作结构体;
第二I/O请求包重构子模块,用于重新构造第二I/O请求包;其中所述第二I/O请求包、工作结构体、第一I/O请求包均采用所述第一缓存空间地址保存视频流数据。
16.根据权利要求15所述的装置,其特征在于,所述第二I/O请求包发送模块包括:
第二I/O请求包下发模块,用于通过视频流过滤驱动将所述第二I/O请求包下发至视频设备,获取视频流数据,将所述视频流数据填入所述第一缓存空间地址;
视频流数据队列管理模块,用于当所述第二I/O请求包从视频设备获取视频流数据填入第一缓存空间地址,并返回至视频流过滤驱动后,将所述的第一缓存空间地址的工作结构体插入等待处理队列队尾。
17.根据权利要求16所述的装置,其特征在于,所述将所述的第一缓存空间地址的工作结构体插入等待处理队列队尾之前还包括:
打开指令判断模块,用于判断是否存在特效处理模块发送的特效处理打开指令,如果存在,则将所述的第一缓存空间地址的工作结构体插入等待处理队列队尾;如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程;
和/或,关闭指令判断模块,用于判断是否存在特效处理模块发送的特效处理关闭指令,如果存在,则通知所述第一I/O请求包结束等待,返回应用程序的进程。
18.根据权利要求16所述的装置,其特征在于,所述数据修改模块包括:
视频流数据获取模块,用于从视频流过滤驱动中获取视频流数据;
第一修改模块,用于在特效处理模块中,根据接收的由用户输入的个性化参数,和由视频流过滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性化视频流数据。
19.根据权利要求18所述的装置,其特征在于,所述视频流数据获取模块包括:
视频数据提取模块,用于通过视频流过滤驱动提取等待处理队列队首的工作结构体的第一缓存空间地址中的视频流数据;
视频数据转存模块,用于将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地址;
视频数据返回模块,用于将所述得到视频流数据的视频流数据获取I/O请求包返回至特效处理模块;
其中,视频流过滤驱动接收特效处理模块通过视频流数据获取消息发送的视频流数据获取I/O请求包,并将视频流数据获取I/O请求包按序插入获取数据队列队尾。
20.根据权利要求18所述的装置,其特征在于,还包括:
监控过滤器注册模块,用于所述视频流过滤驱动接收特效处理模块的监控指令,根据所述监控指令在视频流过滤驱动的控制模块中注册监控过滤器;所述监控过滤器监控应用程序的进程是否打开视频设备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
21.根据权利要求18所述的装置,其特征在于,所述第一修改模块包括:
转换创建模块,将所述视频流数据转换为RGB格式数据,并基于所述RGB格式数据创建位图;
位图加载模块,用于将所述位图通过位图加载函数SelectObject加载至设备描述表中;
数据修改子模块,用于基于所述个性化参数,在所述设备描述表中修改所述位图;
提取转换模块,用于从设备描述表中提取修改完的对应位图的RGB格式数据,基于所述视频流参数信息将所述RGB格式数据转换为原视频流数据的格式。
22.根据权利要求21所述的装置,其特征在于,所述转换创建模块包括:
区域选取转换模块,用于从视频流数据中选取指定位置和大小的数据,并转换为RGB格式;所述指定位置和大小根据所述视频流参数信息设置。
23.根据权利要求17所述的装置,其特征在于,还包括:
修改数据发送模块:由特效处理模块通过发送视频流数据发送消息,将所述个性化视频流数据发送至视频流过滤驱动。
24.根据权利要求16所述的装置,其特征在于,所述第一I/O请求包完成模块包括:
第一完成模块,用于根据所述结构体与第一I/O请求包的一一对应关系,将所述个性化视频流数据填入第一I/O请求包的第一缓存空间地址,通知所述第一I/O请求包结束等待。
CN201210226777.0A 2012-06-29 2012-06-29 一种计算机视频流处理方法和装置 Active - Reinstated CN102790924B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610165415.3A CN105657553B (zh) 2012-06-29 2012-06-29 一种计算机视频流处理方法和装置
CN201210226777.0A CN102790924B (zh) 2012-06-29 2012-06-29 一种计算机视频流处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210226777.0A CN102790924B (zh) 2012-06-29 2012-06-29 一种计算机视频流处理方法和装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201610165415.3A Division CN105657553B (zh) 2012-06-29 2012-06-29 一种计算机视频流处理方法和装置

Publications (2)

Publication Number Publication Date
CN102790924A CN102790924A (zh) 2012-11-21
CN102790924B true CN102790924B (zh) 2016-04-20

Family

ID=47156207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210226777.0A Active - Reinstated CN102790924B (zh) 2012-06-29 2012-06-29 一种计算机视频流处理方法和装置

Country Status (1)

Country Link
CN (1) CN102790924B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678689B (zh) * 2013-12-27 2017-03-01 成都索贝数码科技股份有限公司 一种基于文件驱动逻辑的多媒体文件片段快速拼接方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1929629A (zh) * 2006-09-27 2007-03-14 华为技术有限公司 一种触发智能业务的方法、系统及信令处理装置
CN101556578A (zh) * 2009-05-12 2009-10-14 南京师范大学 一种gis矢量数据文件访问控制方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129834A (ja) * 2006-11-21 2008-06-05 Matsushita Electric Ind Co Ltd 宅内端末遠隔起動システム、および宅内端末遠隔起動システムに用いる端末装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1929629A (zh) * 2006-09-27 2007-03-14 华为技术有限公司 一种触发智能业务的方法、系统及信令处理装置
CN101556578A (zh) * 2009-05-12 2009-10-14 南京师范大学 一种gis矢量数据文件访问控制方法

Also Published As

Publication number Publication date
CN102790924A (zh) 2012-11-21

Similar Documents

Publication Publication Date Title
CN105338358B (zh) 对图像进行解码的方法及装置
CN108647527B (zh) 文件打包、文件包解包方法、装置及网络设备
US11586683B2 (en) Methods, systems and recording mediums for managing conversation contents in messenger
CN107315580A (zh) 用户界面的组件处理方法、装置及设备、可读介质
CN108345511A (zh) 一种应用数据校验方法、装置及电子设备
CN105373471B (zh) 用于内存泄露漏洞的检测方法和装置
CN109964204A (zh) 用于处理图形的方法和系统
US20230077907A1 (en) Image data encoding method and apparatus, display method and apparatus, and electronic device
CN107391119A (zh) 一种横竖屏实现方法及装置
CN112579322A (zh) 多应用共享摄像头的方法、装置及计算机可读存储介质
EP1306776A1 (en) Method of using muldi-media information, system and program recording medium therefor
CN102790924B (zh) 一种计算机视频流处理方法和装置
CN103309695A (zh) 一种加载图标的方法和终端
CN109144479A (zh) 开发架构
CN101192149A (zh) 一种生成应用程序界面的方法及系统
CN105989075A (zh) 一种浏览器显示图像的方法、装置和系统
CN103020071B (zh) 数据同步方法及装置
CN105657553A (zh) 一种计算机视频流处理方法和装置
CN108681449A (zh) 数字卫星载荷情报压缩复接源代码人工智能书写方法
CN112486476A (zh) 地图生成方法、装置、存储介质及计算机设备
CN115049755A (zh) 一种图片生成方法、装置、设备以及存储介质
WO2012073070A1 (en) Method and apparatus for frame transfer using virtual buffer
CN109145263B (zh) 一种文档处理方法及装置、计算机可读存储介质
CN110417978A (zh) 菜单配置方法、装置、设备及存储介质
CN116708886B (zh) 视频处理方法、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: BEIJING QIHU TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: QIZHI SOFTWARE (BEIJING) CO., LTD.

Effective date: 20121026

Owner name: QIZHI SOFTWARE (BEIJING) CO., LTD.

Effective date: 20121026

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100016 CHAOYANG, BEIJING TO: 100088 XICHENG, BEIJING

TA01 Transfer of patent application right

Effective date of registration: 20121026

Address after: 100088 Beijing city Xicheng District xinjiekouwai Street 28, block D room 112 (Desheng Park)

Applicant after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Applicant after: Qizhi software (Beijing) Co.,Ltd.

Address before: The 4 layer 100016 unit of Beijing city Chaoyang District Jiuxianqiao Road No. 14 Building C

Applicant before: Qizhi software (Beijing) Co.,Ltd.

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160420

Termination date: 20190629

RR01 Reinstatement of patent right
RR01 Reinstatement of patent right

Former decision: termination of patent right due to unpaid annual fee

Former decision publication date: 20200623

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220819

Address after: No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science and Technology Park, High-tech Zone, Binhai New District, Tianjin 300000

Patentee after: 3600 Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.