ct;其中 FileObject为进程和设备通讯的句柄。)
[0134] 相应的本申请则用到了前述IRP-〉Use巧uffer和其中的相关数据和FileObject去 W便于在骤A12中创建工作结构体。
[0135] 步骤A12,基于包括所述用户空间指针、所述第一缓存空间地址,和所述句柄的参 数信息,创建工作结构体;
[0136] 在步骤All中获得的参数信息,即获得包括所述用户空间指针和所述标识存储视 频流数据的第一缓存空间地址,和所述句柄后,即可基于上述数据,构建工作结构体。
[0137] 其中,工作结构体部分示例可如下:typedef struct
[013 引
[0139] 其中工作结构体名称为W0RK_ITEM,其中PMDL pmdl_ubuf;和PMDL pmdl_^uf可用 于将第一 I/O请求包的存储视频流数据的第一缓存空间地址提供给第二I/O请求包使用,并 且所述工作结构体对应第一缓存空间地址。所述工作结构体即使第一 I/O请求包和第二I/O 请求包公用同一个缓存空间地址,W存储视频流数据;其中IRP Oldirp;则将工作结构体与 第一 I/O请求包进行了一一对应。
[0140] 步骤A13,基于所述工作结构体中的参数信息,重新构造第二I/O请求包;其中所述 第二I/O请求包、工作结构体、第一 I/O请求包均采用所述第一缓存空间地址保存视频流数 据。
[0141] 因为前述工作结构中包括了第一 I/O请求包的上述参数,那么即可根据工作结构 体中的上述参数重新构造第二I/O请求包,用W下发至视频设备获取视频流数据。
[0142] 其中,工作结构体,第二I/O请求包均采用的第一I/O请求包中用于存储视频流数 据的第一缓存空间地址,因此第二I/O请求包、工作结构体、第一 I/O请求包均采用所述第一 缓存空间地址保存视频流数据。那么如果改变其中一个结构的第一缓存空间地址的数据, 其他几个获得的数据也随之而变。
[0143] 步骤130,将所述第二I/O请求包下发至视频设备,获取视频流数据;
[0144] 在本发明实施例中,在视频流过滤驱动重构第二I/O请求包后,由视频流过滤驱动 将第二I/O请求包下发至视频设备,获取视频流数据。在本发明实施例中,第二I/O请求包获 取到视频设备的视频流数据后,返回视频流过滤驱动,而不是返回应用程序的进程。
[0145] 在实际中,计算机系统中可能存在多层驱动,而视频流过滤驱动只是其中一层,相 应的视频流过滤驱动中的IRP要获得视频设备中的数据时则需要将IRP下发至视频设备。
[0146] 优选的,所述将所述第二I/O请求包下发至视频设备,获取视频流数据,包括:
[0147] 步骤S131,通过视频流过滤驱动将所述第二I/O请求包下发至视频设备,获取视频 流数据,将所述视频流数据填入所述第一缓存空间地址;
[0148] 基于步骤A12中基于存储储视频流数据的第一缓存空间地址重构的第二I/O请求 包,相应的在第二I/O请求包下发至视频设备后,从视频设备读取当前帖的视频流数据,存 储于所述第一缓存空间地址,然后返回视频流过滤驱动。
[0149] 步骤S132,当所述第二I/O请求包从视频设备获取视频流数据填入第一缓存空间 地址,并返回至视频流过滤驱动后,将所述公用第一缓存空间地址的工作结构体插入等待 处理处理队列队尾。
[0150] 当所述第二I/O请求包从视频设备获取到一帖视频流数据,返回至视频流过滤驱 动后,在本发明实时例中,是创建一个线程,将工作结构体按顺序插入等待处理处理队列, 等待特效处理模块发送的视频流数据获取I/O请求包获取该队列中队首的数据。
[0151] 在实际中每个第二I/O请求包只获取一帖数据存储于第一缓存空间地址中,因此 插入队列的工作结构体也为一帖数据,而为了输出的视频数据流正常,需要按序对数据进 行处理,因此可采用等待处理处理队列的形式管理视频流过滤驱动得到的每个工作结构体 对应的每帖视频流数据。
[0152] 步骤140,根据用户的个性化参数,将所述视频流数据修改为所述用户的个性化视 频流数据;
[0153] 在获取到视频流数据后,本申请即可将视频流数据根据用户的修改参数修改,修 改为个性化视频流数据。
[0154] 优选的,所述根据用户的个性化参数,将所述视频流数据修改为所述用户的个性 化视频流数据包括:
[01巧]步骤S141,通过特效处理模块从视频流过滤驱动中获取视频流数据;
[0156] 在本申请中,可通过特效处理模块对视频流数据进行修改,首先,特效处理模块即 需要从视频流过滤驱动中获取视频流数据。
[0157] 优选的,所述通过特效处理模块从视频流过滤驱动中获取视频流数据包括:
[0158] 步骤B11,视频流过滤驱动提取等待处理队列队首的工作结构体的第一缓存空间 地址中的视频流数据;
[0159] 步骤B12,将所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包 的第二缓存空间地址;
[0160] 步骤B13,将所述得到视频流数据的视频流数据获取I/O请求包返回至特效处理模 块;
[0161 ]其中,视频流过滤驱动接收特效处理模块通过视频流数据获取消息发送的视频流 数据获取I/O请求包,并将视频流数据获取I/O请求包所述按序插入获取数据队列队尾。
[0162] 在本申请中,特效处理模块可能发送多个视频流数据获取I/O请求包,而为了使视 频流数据处理顺序不产生素乱,则需要在视频流过滤驱动中对视频流数据获取I/O请求包 建立一个队列进行管理,将特效处理模块通过视频流数据获取消息(比如指定的CONTROL FRAMEWAIT消息)发送的视频流数据获取I/O请求包按序插入获取数据队列队尾。然后步骤 B11从等待处理队列队首的工作结构体的第一缓存空间地址中提取视频流数据,步骤B12将 所述视频流数据填入获取数据队列队首的视频流数据获取I/O请求包的第二缓存空间地 址,如此可--对应并按序处理。
[0163] 另外,对于等待处理队列队首的工作结构体,记录其等待的时间,如果超过阔值, 则将该工作结构体从队列中剔除,并通知第一I/O请求包等待结束,可W返回应用程序的进 行。在运个过程中,因为工作结构体与第一I/O请求包公用第一缓存空间地址存储视频流数 据,那么此时第一 I/O请求包也存在了视频流数据,当通知第一 I/O请求包等待结束,那么第 一 I/O请求包即可携带原始的视频流数据返回应用程序。
[0164] 优选的,所述将所述公用第一缓存空间地址的工作结构体插入等待处理处理队列 队尾之前还包括:
[0165] 步骤B31,判断是否存在特效处理模块发送的特效处理打开指令;
[0166] 步骤B32,如果存在,则将所述公用第一缓存空间地址的工作结构体插入等待处理 处理队列队尾;
[0167] 步骤B32,如果不存在,则通知所述第一I/O请求包结束等待,返回应用程序的进 程;
[0168] 和/或,步骤B41,判断是否存在特效处理模块发送的特效处理关闭指令;
[0169] 骤B42,如果存在,则通知所述第一 I/O请求包结束等待,返回应用程序的进程。
[0170] 在本发明实施例中,还可在特效处理模块设置打开和关闭指令,即打开和关闭开 关。
[0171] 当打开特效处理模块时,特效处理模块向视频流过滤驱动发送特效处理打开指 令,打开后特效处理模块才向视频流过滤驱动发送视频流数据获取消息,从视频流过滤驱 动获取视频流数据进行修改。
[0172] 那么在第二I/O请求包获取到数据返回值视频流过滤驱动后,本发明实施例中可 创建前述线程,判断视频流过滤驱动中是否存在打开指令,如果存在,则将所述公用第一缓 存空间地址的工作结构体插入等待处理处理队列队尾,并将第二I/O请求包完成。如果不存 在,则通知所述第一 I/O请求包结束等待,返回应用程序的进程;并将第二I/O请求包完成。
[0173] 本发明实施例中,当关闭特效处理模块时,特效处理模块发送特效处理关闭指令 至视频流过滤驱动,停止发送视频流数据获取消息,不从视频流过滤驱动获取视频流数据 进行修改。
[0174] 那么在第二I/O请求包获取到数据返回值视频流过滤驱动后,本发明实施例中可 创建前述线程,判断是否存在特效处理模块发送的特效处理关闭指令,如果存在,则通知所 述第一 I/O请求包结束等待,返回应用程序的进程,并完成第二I/O请求包。如果不存在,贝U 说明特效处理模块处于打开状态,则将所述公用第一缓存空间地址的工作结构体插入等待 处理处理队列队尾,并完成第二I/O请求包。
[0175] 其中,当判断存在特效处理关闭指令时,如果等待处理队列中存在等待处理的工 作结构体,那么结束运些等待处理的工作结构体,并通知运些工作结构体对应的第一 I/O请 求包结束等待,可返回应用程序的进程。
[0176] 在本发明实施例中,特效处理模块的各种指令和逻辑是在特效处理模块在视频流 过滤驱动中注册了监控过滤器后才执行。
[0177] 步骤S142,特效处理模块根据接收的由用户输入的个性化参数,和由视频流过滤 驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个性 化视频流数据。
[0178] 在本发明实施例中,特效处理模块可预先接收用户的个性化的修改参数。
[0179] 另外,视频流参数信息可通过视频流过滤驱动从视频设备获取并发送至特效处理 模块。
[0180] 目P,特效处理模块根据接收由视频流过滤驱动从视频设备获取并发送的视频流参 数信息之前包括:
[0181] 所述视频流过滤驱动收特效处理模块的监控指令,根据所述监控指令在视频流过 滤驱动的控制模块中注册监控过滤器;所述监控过滤监控应用程序的进程是否打开视频设 备;当应用程序的进程打开视频设备,则获取到所述视频设备的视频流参数信息并发送至 特效处理模块。
[0182] 本过程可由前述步骤S50进行,即由特效处理模块在所述视频流过滤驱动中的控 制模块注册监控过滤器,监控应用程序的进程是否打开视频设备;当应用程序的进程打开 视频设备,则获取到所述视频设备的视频流参数信息并发送至特效处理模块。
[0183] 当特效处理模块得到用户输入的个性化的修改参数,和视频流参数信息后,对于 获取到的视频流数据,则依据所述修改参数和所述视频流参数信息,根据用户的个性化参 数,将所述视频流数据修改为所述用户的个性化视频流数据。
[0184] 优选的,所述特效处理模块根据接收的由用户输入的个性化参数,和由视频流过 滤驱动从视频设备获取并发送的视频流参数信息,将所述视频流数据修改为所述用户的个 性化视频流数据,包括:
[0185] 步骤C11,将所述视频流数据转换为RGB格式数据,并基于所述RGB格式数据创建位 图;
[0186] 本发明实施例中,特效处理模块接收到视频流数据后,将所述视频流数据转换为 RGB格式(RGB格式,对一种颜色进行编码的方法统称为"颜色空阿'或"色域",其中R为红、G 为绿、B为蓝)数据,并通过RGB格式数据创建位图(Bitmap,位图。位图是位的数组,它制订了 像素矩阵中各像素的颜色,亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个 点组成的)。
[0187] 另外,优选的,将所述视频流数据转换为RGB格式数据包括:
[0188] 步骤cm,从视频流数据中选取制定位置和大小的数据,并转换为RGB格式。
[0189] 比如从视频流数据的宽*高为20巧0,选择左下角5巧大小的数据并将其转换为RGB 格式。
[01