CN117435532B - 基于视频硬件加速接口的拷贝方法、装置及存储介质 - Google Patents

基于视频硬件加速接口的拷贝方法、装置及存储介质 Download PDF

Info

Publication number
CN117435532B
CN117435532B CN202311777290.6A CN202311777290A CN117435532B CN 117435532 B CN117435532 B CN 117435532B CN 202311777290 A CN202311777290 A CN 202311777290A CN 117435532 B CN117435532 B CN 117435532B
Authority
CN
China
Prior art keywords
data
copying
memory
dma
video
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
Application number
CN202311777290.6A
Other languages
English (en)
Other versions
CN117435532A (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.)
Nanjing Sietium Semiconductor Co ltd
Original Assignee
Nanjing Sietium Semiconductor 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 Nanjing Sietium Semiconductor Co ltd filed Critical Nanjing Sietium Semiconductor Co ltd
Priority to CN202311777290.6A priority Critical patent/CN117435532B/zh
Publication of CN117435532A publication Critical patent/CN117435532A/zh
Application granted granted Critical
Publication of CN117435532B publication Critical patent/CN117435532B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本公开实施例公开了一种基于视频硬件加速接口的拷贝方法、装置及存储介质,该方法可以包括:将经视频硬件加速接口编码完成的录屏数据存储至显存;根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态;若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存;若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存。通过该技术方案,能够提升数据传输的性能并减少CPU的占用率。

Description

基于视频硬件加速接口的拷贝方法、装置及存储介质
技术领域
本公开实施例涉及图像处理技术领域,尤其涉及一种基于视频硬件加速接口的拷贝方法、装置及存储介质。
背景技术
计算机技术与总线技术的发展推动了数据传输在当前各个领域的广泛应用。随着数据传输技术的发展,高速接口总线更新换代迅速,传输数据带宽越来越大,***组件互连扩展(Peripheral Component Interconnect Express,PCIE)作为一种新一代的总线接口标准,受迅速发展的工业技术的影响,相对于前代总线***组件互连(PeripheralComponent Interconnect,PCI),它表现出了高带宽、高性能、低功耗、低延时及传输可靠性高等优点。
在录屏软件或者播放器软件中,可以使用视频加速与演示基础设施(VideoAcceleration and Presentation Infrastructure,VAAPI)接口,即视频硬件加速接口进行编解码的硬件加速,并将经VAAPI接口编码之后的数据存储到显存中,如果需要将所述数据写文件或者推流,则需要将所述数据从显存拷贝至***内存,然后通过中央处理器(CentralProcessing Unit,CPU)写文件或者推流。现有技术方案中,通过CPU控制PCIE总线将所述数据从显存拷贝至***内存,CPU直接通过PCIE总线与其他部件连接并进行数据传输。CPU为适应外部设备的工作频率,需要花费大量的时钟周期等待数据与中断,导致CPU在传输数据过程中性能低并且对CPU占用率高。
发明内容
有鉴于此,本公开实施例期望提供一种基于视频硬件加速接口的拷贝方法、装置及存储介质,能够提升数据传输的性能并减少CPU的占用率。
本公开实施例的技术方案是这样实现的:
第一方面,本公开实施例提供一种基于视频硬件加速接口的拷贝方法,包括:
将经视频硬件加速接口编码完成的录屏数据存储至显存;
根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态;
若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存;
若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存。
第二方面,本公开实施例提供一种基于视频硬件加速接口的拷贝装置,所述装置包括:编码部分、获取部分、第一拷贝部分以及第二拷贝部分;其中,
所述编码部分,经配置为将经视频硬件加速接口编码完成的录屏数据存储至显存;
所述获取部分,经配置为根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态;
所述第一拷贝部分,经配置为若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存;
所述第二拷贝部分,经配置为若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存。
第三方面,本公开实施例提供了一种计算设备,所述计算设备包括:通信接口,存储器和处理器;各个组件通过总线***耦合在一起;其中,
所述通信接口,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行第一方面所述基于视频硬件加速接口的拷贝方法。
第四方面,本公开实施例提供了一种计算机存储介质,所述计算机存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现第一方面所述基于视频硬件加速接口的拷贝方法。
本公开实施例提供了一种基于视频硬件加速接口的拷贝方法、装置及存储介质,通过调用视频硬件加速接口将所述录屏数据从显存拷贝至***内存。所述视频硬件加速接口的实现为根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态。若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存,通过多通道DMA和一级缓存最大程度减少了DMA读写的延迟时间并消除了拷贝过程中CPU的干预,可以提升数据传输的性能并减少CPU的占用率。若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存,由于NEON指令是专门针对大规模的并行运算而设计的,则NEON指令拷贝方式也可以提升数据传输的性能。
附图说明
图1为本公开实施例提供的一种计算设备的组成示意图;
图2为本公开实施例提供的一种基于视频硬件加速接口的拷贝方法流程图;
图3为本公开实施例提供的一种基于视频硬件加速接口的拷贝详细流程图;
图4为本公开实施例提供的一种基于视频硬件加速接口的拷贝装置示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了能够实现本公开实施例技术方案的计算设备100的组成示意图,需注意,图1所示出的计算设备是可能的设备的仅一个示例,并且可根据需要在各种设备中的任一设备中实现本公开的实施方案。该计算设备100的组成具体可以为任意类型的计算装置,包括且不限于台式计算机、服务器、工作站、膝上计算机、基于计算机的仿真器、无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器等。如图1所示,计算设备100的组成可以包括CPU 10、图形处理器(Graphic Processing Unit,GPU),如图1所示的GPU 20、***内存30以及直接内存访问(Direct Memory Access,DMA)控制器40。
具体来说,CPU 10可以包括内核11、一级缓存12以及寄存器堆13,所述一级缓存12和寄存器堆13作为一个硬件模块封装整体为CPU 10,其中,所述内核11,经配置用于获取DMA通道状态以及配置源地址和目的地址,其内部运行有内核程序。所述一级缓存12,即高速缓存存储器,经配置用于存储CPU 10频繁访问的数据和指令以提高数据访问速度和整体性能。所述寄存器堆13是位于CPU 10内部的一种高速存储设备,经配置用于存储指令、数据和中间结果。CPU10中包含多个寄存器,例如,通用寄存器、浮点寄存器、向量寄存器等,用于不同类型的数据处理操作。因此,可以将上述寄存器统称为寄存器堆。CPU 10还可包括控制计算设备100运算的通用或专用处理器,其经配置以处理供执行的计算机程序的指令。在一些示例中,所述计算设备100还包括通信接口(未图示),用户可经由通信接口与其他外部网元之间进行收发信息过程中信号的接收和发送,将输入提供给计算设备100组成中的CPU10,以使得CPU 10执行一或多个计算机程序的指令。在CPU 10上执行的计算机程序可为利用GPU 20的功能性的任何应用程序,可包括图形用户接口(GraphicUser Interface,GUI)应用程序、操作***、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序或使用2D、3D图形渲染应用程序等,本公开实施例以执行图形渲染应用程序为例,所述图形渲染应用程序也可简称为应用程序。此外,CPU 10上执行的图形渲染应用程序可包含一或多个图形渲染指令(也可以理解为待渲染的画面帧中包含一或多个所述图形),所述图形渲染指令可符合图形应用程序编程接口(ApplicationProgrammingInterface,API),例如,开放式图形库API(OpenGL API)、开放式图形库嵌入***(OpenGLES)API、Direct3D API、X3D API、RenderMan API、WebGL API、开放式计算语言(OpenCLTM)、RenderScript或任何其它异构计算API或任何其它公用或专有标准图形或计算API,本公开下面的描述中将以OpenGL API为例进行说明。
GPU 20可经配置以执行图形运算,从而将一或多个图形图元渲染。GPU 20的内部结构包括但不限于媒体处理单元21以实现VAAPI接口的功能。在一些示例中,GPU 20可不包含单独的存储器,而是经由总线利用外置的显存31。在一些情况下,GPU 20可内置有高度并行结构,其提供比CPU 10高效的对复杂图形相关运算的处理。举例来说,GPU 20可包含经配置以并行方式对多个顶点或像素进行运算的多个处理元件。在一些情况下,GPU20的高度并行性质允许GPU 20比使用CPU 10更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)进行绘制。在一些情况下,可将GPU 20集成到目标设备的母板中。在其它情况下,GPU20可存在于图形卡上,所述图形卡安装在目标设备的母板中的端口中,或可以其它方式并入在经配置以与目标设备互操作的***装置内。GPU 20可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 20还可包含一或多个处理器核心,使得GPU20可被称作多核处理器。
***内存30,经配置用于存储能够在CPU 10上运行的应用程序指令、GPU 20执行需要的图形数据以及其运行结果数据。例如,GPU 20可将完全形成的图像存储在***内存30中。在一些示例中,所述***内存30可以包括显存31,在具体实施过程中,显存31也可与***内存30分离,其中,所述显存31可存储经渲染图像数据,例如,像素数据以及任何其它数据,因此,显存31还可被称为帧缓冲器。显存31存储GPU20的目的地像素。每个目的地像素可与唯一屏幕像素位置相关联。在一些示例中,显存31可存储每个目的地像素的色彩分量和目的地α值。举例来说,显存31可存储每个像素的红色、绿色、蓝色、α(RGBA)分量,其中“RGB”分量对应于色彩值,并且“A”分量对应于目的地α值(例如,用于图像合成的不透明度值)。尽管将显存31和***内存30说明为单独的存储器单元,但在其它示例中,显存31可以是***内存30的一部分。此外,显存31还可能够存储除像素之外的任何合适的数据。
DMA控制器40,经配置用于在CPU 10发出数据拷贝指令时,根据所述数据拷贝指令中的数据读写请求进行数据读写或数据传输,基于所述数据读写请求的任务信息判断并分解所述数据读写请求的任务信息,根据分解后的数据读写请求的任务信息以及其中多个读写通道的读写频率、优先级以及所述读写通道的标记位的值,控制多个读写通道,例如,DMA通道0、DMA通道1……并向显存31发出多次数据读写请求,可以将数据从显存31拷贝至***内存30。各个组件通过总线***50耦合在一起,例如,DMA控制器40通过总线***50可与CPU10的一级缓存12进行通信,CPU 10可通过总线***50访问***内存30或显存31。可理解地,总线***50用于实现这些组件之间的连接通信。总线***50除包括数据总线之外,还包括电源总线、控制总线、状态信号总线和PCIE总线,但是为了清楚说明起见,在图1中将各种总线都标为总线***50。
结合图1所示的计算设备100,在录屏软件或者播放器软件中,可以使用VAAPI接口,即视频硬件加速接口进行编解码的硬件加速,并将经VAAPI接口编码之后的数据以数据块的形式存储至显存,如果需要将所述数据写文件或者推流,则需要将所述数据从显存拷贝至***内存,然后通过CPU写文件或者推流。本公开实施例以录屏软件获取的数据,即录屏数据为例。对于录屏数据的拷贝方式,通常是CPU控制PCIE总线从显存拷贝至***内存,CPU直接通过PCIE总线与其他部件连接并进行数据传输。CPU为适应外部设备的工作频率,需要花费大量的时钟周期等待数据与中断,导致CPU在传输数据过程中性能低并且对CPU占用率高。基于此,本公开实施例期望提供一种基于视频硬件加速接口的拷贝技术方案,通过调用视频硬件加速接口将已存储至显存的录屏数据从显存拷贝至***内存,具体来说,根据内核程序获取的DMA通道状态分别采用对应的拷贝方式,所述拷贝方式包括DMA拷贝方式、NEON指令拷贝方式以及PCIE总线拷贝方式,通过该技术方案可以提升数据传输的性能并减少CPU的占用率。参见图2,其示出了本公开实施例提供的基于视频硬件加速接口的拷贝方法,该方法应用于如图1所示的包括CPU和GPU的计算设备100中,该方法包括:
S201:将经视频硬件加速接口编码完成的录屏数据存储至显存;
S202:根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态;
S203:若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存;
S204:若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存。
根据上述方案的描述,本公开实施例通过调用视频硬件加速接口将所述录屏数据从显存拷贝至***内存。所述视频硬件加速接口的实现为根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态包括空闲状态、忙碌状态以及错误状态。若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存,通过多通道DMA和一级缓存最大程度减少了DMA读写的延迟时间并消除了拷贝过程中CPU的干预,可以提升数据传输的性能并减少CPU的占用率。若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存,由于NEON指令是专门针对大规模的并行运算而设计的,则NEON指令拷贝方式也可以提升数据传输的性能。
需要说明的是,所述录屏数据是经GPU渲染将应用程序生成的图像数据转换为屏幕上的像素数据,通过屏幕捕捉、处理以及存储获得的,其中,所述处理可以是对捕捉到的屏幕内容进行编码,通常使用视频编码器将屏幕内容压缩为视频文件并存储至存储器或磁盘中,本公开实施例以存储至显存为例。
针对图2所示的技术方案,在一些可能的实现方式中,所述根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,包括:
通过CPU发起数据拷贝指令,其中,所述数据拷贝指令用于指示将所述录屏数据从显存拷贝至***内存;
根据所述数据拷贝指令,通过内核程序读取文件***中DMA状态的文件以获取DMA通道状态;或者,
通过***调用相应的驱动程序以获取DMA通道状态。
对于上述实现方式,具体来说,所述内核程序运行于如图1所示的内核11中,通常是操作***内核中的一部分代码。所述内核程序是操作***的核心组件,负责管理***资源、调度任务、提供***调用接口等功能。所述内核程序在***启动时加载到内核中,并在整个***运行期间负责管理和控制***的各种操作。所述DMA通道状态包括空闲状态、忙碌状态、完成状态以及错误状态,其中,所述空闲状态是DMA通道当前没有进行数据传输操作,可以接受新的数据传输请求。所述忙碌状态是DMA通道当前正在进行数据传输操作,无法接受新的数据传输请求。所述完成状态是DMA通道已经完成了一次数据传输操作,可以获取传输结果并进行相应的处理。所述错误状态是DMA通道在进行数据传输时发生了错误,需要进行错误处理或者重新启动数据传输。上述各状态可以帮助***或者驱动程序来管理和监控DMA通道的工作状态,以便有效地进行数据传输操作。对于获取所述DMA通道状态,通常需要通过操作***提供的相关接口来实现,具体实现方式可能会因操作***的不同而有所差异。在一些示例中,在Linux***中可以通过访问/sys文件***中的相应文件或者使用ioctl***调用来获取DMA通道状态。例如,可以通过读取/sys/class/dma/dma0/channel0/state文件来获取DMA通道0的状态。另外,可以使用ioctl***调用来获取DMA通道状态,具体的ioctl命令和参数需要根据***和硬件的不同而有所调整。在嵌入式***中,通常需要编写相应的驱动程序来管理DMA通道,并在驱动程序中实现获取DMA通道状态的逻辑。
针对图2所示的技术方案,在一些可能的实现方式中,所述若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存,包括:
若DMA通道状态为空闲状态,则通过内核程序将***工作方式转变为DMA拷贝方式并向DMA控制器发送数据传输请求;
根据所述数据传输请求,所述DMA控制器将所述录屏数据从显存拷贝至***内存。
对于上述实现方式,在一些示例中,所述若DMA通道状态为空闲状态,则通过内核程序将***工作方式转变为DMA拷贝方式并向DMA控制器发送数据传输请求,包括:
根据获取的DMA通道的空闲状态,将总线控制权从CPU转交给DMA控制器并设置所述DMA通道状态为忙碌状态以进行DMA数据传输;
向所述DMA控制器发送数据传输请求,所述DMA控制器根据所述数据传输请求发送存储器地址并确定传输数据块的长度,其中,所述存储器地址包括显存的存储地址和***内存的存储地址。
对于上述示例,具体来说,内核程序获取DMA通道状态,如果为空闲状态,则可以进行DMA数据传输。内核程序将***的工作方式转变为DMA拷贝方式,将总线控制权从CPU转交给DMA控制器,并将执行此次数据传输任务的DMA通道状态设置为忙碌状态以准备进行DMA数据传输。内核程序向所述DMA控制器发送数据传输请求,所述DMA控制器接收到所述数据传输请求后,发送存储器地址并确定传输数据块的长度,其中,所述存储器地址包括显存的存储地址和***内存的存储地址,即进行数据传输的源地址和目的地址。
需要说明的是,DMA技术是现代计算机***的一个重要技术。在DMA技术出现之前,CPU与外设之间的数据传输方式有轮询传输方式、中断传输方式,CPU直接通过总线***与其他部件连接并进行数据传输。CPU为适应外部设备的工作频率,需要花费大量的时钟周期等待数据与中断,导致CPU在获取数据过程中的效率低。使用DMA技术可以有效避免CPU的工作周期被数据存取事务占据,CPU将数据传输的任务交给DMA去完成,间接提升CPU的工作处理能力。在高速总线接口***中,大批量数据的传输与处理是***设计的重要因素,所述DMA技术为数据的高速传输与高效处理提供了技术支持。
对于上述实现方式,在一些示例中,所述根据所述数据传输请求,所述DMA控制器将所述录屏数据从显存拷贝至***内存,包括:
根据所述数据传输请求,所述DMA控制器向显存发送读命令以获取所述录屏数据;
所述DMA控制器向***内存发送写命令,将获取的所述录屏数据拷贝至***内存。
对于上述示例,所述DMA控制器将所述录屏数据从显存拷贝至***内存,是通过调用VAAPI接口实现的,通常,VAAPI接口提供了相应的API来支持数据拷贝操作,通过所述API来指定源地址即显存的存储地址、目的地址即***内存的存储地址以及数据大小等参数。具体来说,根据内核程序获取的DMA通道状态分别采用对应的拷贝方式,例如,DMA拷贝方式。所述DMA控制器向显存发出读命令以从显存的存储地址中获取所述录屏数据,并向***内存发出写命令以将获取的所述录屏数据根据确定的传输数据块的长度拷贝至***内存中,即写入***内存中。一旦数据传输完成,所述DMA控制器会产生一个中断信号通知 CPU,CPU 可以继续执行其他任务或者进行后续的处理,所述后续的处理可以是将拷贝至***内存中的录屏数据进行写文件或者通过网络推流。上述DMA拷贝方式可以减轻 CPU 的负担,提高了数据传输的效率。
需要说明的是,VAAPI接口是用于对视频进行硬件加速解码和编码。通常是在支持硬件加速的GPU设备上执行的,以便利用硬件加速功能来提高视频解码和编码的性能,例如,在如图1所示的GPU 20内的媒体处理单元21上执行所述VAAPI接口的功能。通常,VAAPI接口分为前端接口和后端接口,其中,前端接口在应用层中进行调用,所述后端接口在GPU用户态驱动层实现。所述写文件指的是将编解码后的录屏数据保存为文件,通常是视频文件格式,例如,MP4、AVI等格式。写文件的操作涉及将录屏数据写入到存储设备,例如,***内存、硬盘或固态硬盘中,以便后续的播放或分享。所述推流是指将编解码后的录屏数据通过网络传输到远程服务器或者流媒体平台,以实现实时的视频直播或者点播服务。推流操作通常需要使用网络协议,将所述录屏数据发送到指定的服务器上。因此,所述写文件和推流都是将编解码后的录屏数据进行存储或者传输的过程,分别对应了保存为文件和通过网络推送视频流的功能。
针对图2所示的技术方案,在一些示例中,所述方法还包括:
若所述录屏数据拷贝成功,则所述DMA控制器向内核程序返回拷贝完成的通知消息;
根据所述拷贝完成的通知消息,将所述DMA通道状态设置为完成状态;
根据所述完成状态,将总线的控制权从DMA控制器转交给CPU。
对于上述示例,一旦数据传输完成,DMA控制器将拷贝完成的通知消息返回给内核程序,根据所述拷贝完成的通知消息,将所述DMA通道状态设置为完成状态,则DMA拷贝流程结束,总线控制权交还给CPU。
针对图2所示的技术方案,在一些可能的实现方式中,所述若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存,包括:
若DMA通道状态为忙碌状态或错误状态,则检查数据是否对齐;
若数据对齐,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存;
若数据未对齐,则通过PCIE总线拷贝方式将所述录屏数据从显存拷贝至***内存。
对于上述实现方式,在一些示例中,所述若数据对齐,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存,包括:
若数据对齐并且一级缓存中存有所述录屏数据,则从所述一级缓存中访问所述录屏数据;
若一级缓存中未存有所述录屏数据,将所述录屏数据从显存加载至相应的NEON寄存器并将所述NEON寄存器中的所述录屏数据存储至***内存。
对于上述示例,具体来说,操作***访问目的地址时,会先在一级缓存中进行寻址,如果在所述一级缓存中命中需要访问的录屏数据,则从所述一级缓存中进行访问,不会访问真正的显存的存储地址。由于所述一级缓存具有预加载数据的功能,可以提高数据的访问速度。所述将所述录屏数据从显存加载至相应的NEON寄存器,通常是在CPU内部执行的操作,对外通常是不可见的。在这种情况下,所述录屏数据会从显存中加载至CPU内部的相应寄存器中,以供后续的CPU指令进行操作。由于CPU上有多个寄存器,如图1所示的寄存器堆13,则向量指令的并行处理度更高。
需要说明的是,所述数据对齐是指数据在显存中存储时按照一定的字节边界对齐的情况。对齐就是数据的存储地址是某个特定值的整数倍。例如,如果要求数据按照64位对齐,那么数据的存储地址必须是64的整数倍,即地址的最低6位必须为0。所述数据对齐是由硬件和软件共同来定义和检查的。高性能RISC机器(Advanced RISC Machines,ARM)是一种低功耗的精简指令集计算机(Reduced Instruction Set Computer,RISC)微处理器。所述ARM的指令集至少包括NEON指令,其中,所述NEON指令是专门针对大规模并行运算而设计的,其是适用于ARM平台下的处理器中的一种高级的单指令多数据(Single InstructionMultiple Data,SIMD)扩展指令集,用于高效地进行并行数据处理。所述NEON指令可以同时对多个数据进行相同或不同的操作,从而加速图像处理、信号处理、多媒体处理等应用的运算速度,例如,视频编码或解码、2D/3D图形、游戏、音频和语音处理、图像处理技术、电话和声音合成等。所述NEON寄存器是ARM处理器架构中的一种特殊寄存器,用于存储向量数据和执行SIMD指令,是专门针对大规模并行运算设计的,通常存在于支持NEON技术的处理器中,这些处理器包括了许多嵌入式***和移动设备中所使用的处理器。
对于上述实现方式,在一些示例中,所述若数据未对齐,则通过PCIE总线拷贝方式将所述录屏数据从显存拷贝至***内存,包括:
若数据未对齐,则调用内存拷贝memcpy函数将所述录屏数据从显存拷贝至***内存。
对于上述示例,对于内存拷贝是一种在显存和***内存之间或者***内存不同位置之间传输数据的操作,其广泛存在于操作***和各类应用程序中。所述内存拷贝通过***内核定义的标准***函数memcpy、bcopy等实现。针对不同的计算机***,对所述memcpy或bcopy函数的具体实现会存在差异。
结合图1所示的计算设备100以具体的实施例阐述图2所示的技术方案,参见图3,其示出了本公开实施例提供的一种基于视频硬件加速接口的拷贝详细流程图,经视频硬件加速接口编码完成的录屏数据已存储至显存中,将所述录屏数据从显存拷贝至***内存的具体操作步骤如下:
S301:CPU发起数据拷贝指令;
所述数据拷贝指令用于指示将所述录屏数据从显存拷贝至***内存。
S302:获取DMA通道状态,若为空闲状态则跳转到步骤S303;否则,跳转到步骤S308;
内核程序获取DMA通道状态,如果为空闲状态,则可以进行DMA拷贝方式,跳转到步骤S303;若为忙碌状态或错误状态,则进行NEON指令拷贝方式,跳转到步骤S308。
S303:DMA控制器获得总线***的控制权;
内核程序将***的工作方式转变为DMA拷贝方式,将总线控制权从CPU转交给DMA控制器,例如,将如图1所示的总线***50的控制权从CPU 10转交给DMA控制器40,并将DMA通道状态设置为忙碌状态以准备进行DMA数据传输,例如,内核程序获取到如图1所示的DMA通道0的状态为空闲状态,则***的工作方式转换为DMA拷贝方式,需要将所述通道0的状态设置为忙碌状态以指示所述通道0当前正在进行数据传输操作,无法接受新的数据传输请求。此外,CPU通过应用程序分配***内存的存储地址并对DMA控制器进行配置,具体来说,应用程序首先需要在***内存中分配相应的存储地址,用于存储从显存中拷贝的录屏数据,分配的***内存的存储地址需要足够大,能够容纳整个录屏数据。CPU 还需要对 DMA控制器进行配置,包括设置传输的源地址,即显存的存储地址、目的地址,即***内存的存储地址、传输数据块的长度等参数。
S304:异步进行DMA拷贝操作;
由于数据拷贝操作通常是异步的,应用程序可以通过VAAPI接口来发起显存到***内存的数据拷贝操作。CPU中的内核向DMA控制器发送数据传输的请求,所述DMA控制器接收到数据传输请求后,发送存储器地址并确定传输数据块的长度。所述DMA 控制器会根据前述步骤配置的参数,例如,源地址、目的地址以及传输数据块的长度等参数,自动地在如图1所示的总线***50上进行数据传输,将已存储至显存中的录屏数据直接传输至***内存,整个数据传输过程不需要 CPU 的干预。
S305:DMA拷贝是否完成,若是,则跳转到步骤S306;否则,跳转到步骤S307;
S306:DMA控制器释放总线***的控制权;
若DMA拷贝已完成,将DMA通道状态设置为完成状态并释放总线***的控制权,将总线控制权转交给CPU,结束拷贝的流程。在一些示例中,可以通过轮询或者事件通知等方式来实现DMA拷贝是否完成的通知。
S307:等待DMA拷贝完成;
若DMA拷贝未完成,则等待DMA拷贝操作完成直至拷贝结束并结束拷贝的流程。
S308:若DMA通道的状态非空闲,即为忙碌状态或错误状态,则启动NEON指令拷贝方式;
S309:检查数据是否对齐,若是,则跳转到步骤S310,否则,跳转到步骤S313;
S310:将数据预取到一级缓存;
若在一级缓存中命中需要访问的录屏数据,则直接从所述一级缓存中进行访问,具体来说,操作***访问目的地址时,会先在所述一级缓存中进行寻址,如果在所述一级缓存中命中需要访问的录屏数据,则从所述一级缓存中进行访问,不会访问真正的显存的存储地址。
S311:从显存加载数据到NEON寄存器;
若在一级缓存中未命中需要访问的录屏数据,则加载源数据,将已存储至显存中的录屏数据加载至NEON寄存器,其中,所述NEON寄存器是专门用于存储向量数据的寄存器,可以同时存储多个数据元素。
S312:从NEON寄存器存储至***内存;
执行拷贝操作,使用NEON指令执行数据拷贝操作,NEON指令集提供了多种数据相关的指令,例如,加载数据vld1、存储数据vst1、数据移动vmov等指令,可以根据需要选择合适的指令来进行数据拷贝操作。在一些示例中,所述使用NEON指令执行数据拷贝操作,首先,确定存储的目的地址,通常由应用程序中的指令来完成。其次,CPU内部的存储器控制逻辑会将NEON寄存器中的录屏数据并行写入到***内存中的相应地址。该过程可能涉及***内存地址的解码、数据传输和存储器控制信号的生成等步骤。然后,在所述录屏数据写入***内存后,存储器控制逻辑会进行确认,确保所述录屏数据已经正确地存储至***内存。数据拷贝操作完成后,可以进行相应的后续处理,例如,处理拷贝结果或者进行其他数据处理操作。需要注意的是,使用所述NEON指令进行数据拷贝需要谨慎处理数据对齐和数据长度等问题以确保数据的正确性和性能的最大化。
S313:若数据未对齐,则通过PCIE总线拷贝所述录屏数据。
若数据未对齐,则调用内存拷贝memcpy函数将所述录屏数据从显存拷贝至***内存。
基于前述技术方案相同的发明构思,参见图4,其示出了本公开实施例提供的一种基于视频硬件加速接口的拷贝装置400,所述装置400包括:编码部分401、获取部分402、第一拷贝部分403以及第二拷贝部分404;其中,
所述编码部分401,经配置为将经视频硬件加速接口编码完成的录屏数据存储至显存;
所述获取部分402,经配置为根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态;
所述第一拷贝部分403,经配置为若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存;
所述第二拷贝部分404,经配置为若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存。
在一些示例中,所述获取部分402,经配置为:
通过CPU发起数据拷贝指令,其中,所述数据拷贝指令用于指示将所述录屏数据从显存拷贝至***内存;
根据所述数据拷贝指令,通过内核程序读取文件***中DMA状态的文件以获取DMA通道状态;或者,
通过***调用相应的驱动程序以获取DMA通道状态。
在一些示例中,所述第一拷贝部分403,经配置为:
若DMA通道状态为空闲状态,则通过内核程序将***工作方式转变为DMA拷贝方式并向DMA控制器发送数据传输请求;
根据所述数据传输请求,所述DMA控制器将所述录屏数据从显存拷贝至***内存。
在一些示例中,所述第一拷贝部分403,经配置为:
根据获取的DMA通道的空闲状态,将总线控制权从CPU转交给DMA控制器并设置所述DMA通道状态为忙碌状态以进行DMA数据传输;
向所述DMA控制器发送数据传输请求,所述DMA控制器根据所述数据传输请求发送存储器地址并确定传输数据块的长度,其中,所述存储器地址包括显存的存储地址和***内存的存储地址。
在一些示例中,所述第一拷贝部分403,经配置为:
根据所述数据传输请求,所述DMA控制器向显存发送读命令以获取所述录屏数据;
所述DMA控制器向***内存发送写命令,将获取的所述录屏数据拷贝至***内存。
在一些示例中,所述第二拷贝部分404,经配置为:
若DMA通道状态为忙碌状态或错误状态,则检查数据是否对齐;
若数据对齐,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存;
若数据未对齐,则通过PCIE总线拷贝方式将所述录屏数据从显存拷贝至***内存。
在一些示例中,所述第二拷贝部分404,经配置为:
若数据未对齐,则调用内存拷贝memcpy函数将所述录屏数据从显存拷贝至***内存。
可以理解地,上述基于视频硬件加速接口的拷贝装置400的示例性技术方案,与前述基于视频硬件加速接口的拷贝方法的技术方案属于同一构思,因此,上述基于视频硬件加速接口的拷贝装置400的技术方案未详细描述的细节内容,均可以参见前述基于视频硬件加速接口的拷贝方法的技术方案的描述。本公开实施例对此不做赘述。
除此之外,本领域技术人员可以理解,上述附图所示出的计算设备的结构并不构成对计算设备的限定,计算设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,计算设备中还包括显示屏、摄像组件、麦克风、扬声器、射频电路、输入单元、传感器(比如加速度传感器、角速度传感器、光纤传感器等等)、音频电路、WiFi模块、电源、蓝牙模块等部件,在此不再赘述。
本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如上各个实施例所述的基于视频硬件加速接口的拷贝方法。
本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行以实现上述各个实施例所述的基于视频硬件加速接口的拷贝方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本公开实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种基于视频硬件加速接口的拷贝方法,其特征在于,所述方法应用于包括CPU和GPU的计算设备,所述方法包括:
将经视频硬件加速接口编码完成的录屏数据存储至显存;
根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态;
若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存;
若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存。
2.根据权利要求1所述方法,其特征在于,所述根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,包括:
通过CPU发起数据拷贝指令,其中,所述数据拷贝指令用于指示将所述录屏数据从显存拷贝至***内存;
根据所述数据拷贝指令,通过内核程序读取文件***中DMA状态的文件以获取DMA通道状态;或者,
通过***调用相应的驱动程序以获取DMA通道状态。
3.根据权利要求1所述方法,其特征在于,所述若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存,包括:
若DMA通道状态为空闲状态,则通过内核程序将***工作方式转变为DMA拷贝方式并向DMA控制器发送数据传输请求;
根据所述数据传输请求,所述DMA控制器将所述录屏数据从显存拷贝至***内存。
4.根据权利要求3所述方法,其特征在于,所述若DMA通道状态为空闲状态,则通过内核程序将***工作方式转变为DMA拷贝方式并向DMA控制器发送数据传输请求,包括:
根据获取的DMA通道的空闲状态,将总线控制权从CPU转交给DMA控制器并设置所述DMA通道状态为忙碌状态以进行DMA数据传输;
向所述DMA控制器发送数据传输请求,所述DMA控制器根据所述数据传输请求发送存储器地址并确定传输数据块的长度,其中,所述存储器地址包括显存的存储地址和***内存的存储地址。
5.根据权利要求3所述方法,其特征在于,所述根据所述数据传输请求,所述DMA控制器将所述录屏数据从显存拷贝至***内存,包括:
根据所述数据传输请求,所述DMA控制器向显存发送读命令以获取所述录屏数据;
所述DMA控制器向***内存发送写命令,将获取的所述录屏数据拷贝至***内存。
6.根据权利要求1所述方法,其特征在于,所述若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存,包括:
若DMA通道状态为忙碌状态或错误状态,则检查数据是否对齐;
若数据对齐,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存;
若数据未对齐,则通过PCIE总线拷贝方式将所述录屏数据从显存拷贝至***内存。
7.根据权利要求6所述方法,其特征在于,所述若数据未对齐,则通过PCIE总线拷贝方式将所述录屏数据从显存拷贝至***内存,包括:
若数据未对齐,则调用内存拷贝memcpy函数将所述录屏数据从显存拷贝至***内存。
8.一种基于视频硬件加速接口的拷贝装置,其特征在于,所述装置包括:编码部分、获取部分、第一拷贝部分以及第二拷贝部分;其中,
所述编码部分,经配置为将经视频硬件加速接口编码完成的录屏数据存储至显存;
所述获取部分,经配置为根据CPU的数据拷贝指令,通过内核程序获取DMA通道状态,其中,所述DMA通道状态至少包括空闲状态、忙碌状态以及错误状态;
所述第一拷贝部分,经配置为若DMA通道状态为空闲状态,则通过DMA拷贝方式将所述录屏数据从显存拷贝至***内存;
所述第二拷贝部分,经配置为若DMA通道状态为忙碌状态或错误状态,则通过NEON指令拷贝方式将所述录屏数据从显存拷贝至***内存。
9.一种计算设备,其特征在于,所述计算设备包括:通信接口,处理器,存储器;各个组件通过总线***耦合在一起;其中,
所述通信接口,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行权利要求1至7任一项所述基于视频硬件加速接口的拷贝方法。
10.一种计算机存储介质,其特征在于,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如权利要求1至7任一所述基于视频硬件加速接口的拷贝方法。
CN202311777290.6A 2023-12-22 2023-12-22 基于视频硬件加速接口的拷贝方法、装置及存储介质 Active CN117435532B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311777290.6A CN117435532B (zh) 2023-12-22 2023-12-22 基于视频硬件加速接口的拷贝方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311777290.6A CN117435532B (zh) 2023-12-22 2023-12-22 基于视频硬件加速接口的拷贝方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN117435532A CN117435532A (zh) 2024-01-23
CN117435532B true CN117435532B (zh) 2024-03-22

Family

ID=89550256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311777290.6A Active CN117435532B (zh) 2023-12-22 2023-12-22 基于视频硬件加速接口的拷贝方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN117435532B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092426B1 (en) * 2011-01-03 2015-07-28 Applied Micro Circuts Corporation Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
CN108509272A (zh) * 2018-03-22 2018-09-07 武汉斗鱼网络科技有限公司 将gpu显存纹理拷贝到***内存的方法、装置及电子设备
CN111199569A (zh) * 2020-01-02 2020-05-26 北京字节跳动网络技术有限公司 数据处理的方法、装置、电子设备及计算机可读介质
CN111443949A (zh) * 2020-03-25 2020-07-24 北京计算机技术及应用研究所 一种飞腾服务器平台下的内核内存页拷贝加速方法
CN114461406A (zh) * 2022-04-13 2022-05-10 麒麟软件有限公司 DMA OpenGL优化方法
CN116909511A (zh) * 2023-09-12 2023-10-20 西安芯云半导体技术有限公司 提升gpu双缓冲显示效率的方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150278131A1 (en) * 2014-03-26 2015-10-01 Kay Hesse Direct memory access controller with general purpose inputs and outputs

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092426B1 (en) * 2011-01-03 2015-07-28 Applied Micro Circuts Corporation Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
CN108509272A (zh) * 2018-03-22 2018-09-07 武汉斗鱼网络科技有限公司 将gpu显存纹理拷贝到***内存的方法、装置及电子设备
CN111199569A (zh) * 2020-01-02 2020-05-26 北京字节跳动网络技术有限公司 数据处理的方法、装置、电子设备及计算机可读介质
CN111443949A (zh) * 2020-03-25 2020-07-24 北京计算机技术及应用研究所 一种飞腾服务器平台下的内核内存页拷贝加速方法
CN114461406A (zh) * 2022-04-13 2022-05-10 麒麟软件有限公司 DMA OpenGL优化方法
CN116909511A (zh) * 2023-09-12 2023-10-20 西安芯云半导体技术有限公司 提升gpu双缓冲显示效率的方法、装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于NEON优化技术的视频处理***设计;陈炎;袁国顺;刘小强;;微电子学与计算机;20180705(07);全文 *
基于Zynq的AXI总线数据传输软件优化;吴汶泰;詹璨铭;;通信技术;20170710(07);全文 *

Also Published As

Publication number Publication date
CN117435532A (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
CN111651384B (zh) 寄存器的读写方法、芯片、子***、寄存器组及终端
US8610732B2 (en) System and method for video memory usage for general system application
US20140026137A1 (en) Performing scheduling operations for graphics hardware
CN111737019B (zh) 一种显存资源的调度方法、装置及计算机存储介质
WO2022161227A1 (zh) 图像处理方法、装置、图像处理芯片和电子设备
US11853767B2 (en) Inter-core data processing method, system on chip and electronic device
KR20080070392A (ko) 복수의 프로세서 코어가 통합된 칩 및 데이터 처리 방법
EP2854030A1 (en) Sharing non-page aligned memory
CN114880259B (zh) 数据处理方法、装置、***、电子设备及存储介质
CN115039075A (zh) 促进基于瓦片的gpu机器学习加速的方法和装置
CN111311478B (zh) 一种gpu渲染核数据的预读取方法、装置及计算机存储介质
CN113226501A (zh) 应用程序的流媒体影像提供装置及方法
CN112835730A (zh) 图像存储、内存分配、图像合成方法、装置、设备及介质
CN113396389A (zh) 用于分离式渲染的标准化的api的方法和设备
KR100941029B1 (ko) 그래픽 가속기 및 그래픽 가속 방법
CN117435532B (zh) 基于视频硬件加速接口的拷贝方法、装置及存储介质
CN113994363A (zh) 用于波隙管理的方法和装置
US10448020B2 (en) Intelligent MSI-X interrupts for video analytics and encoding
CN116880937A (zh) 互动课堂的桌面截屏数据处理方法、装置、设备及介质
US7861007B2 (en) Method and apparatus for multimedia display in a mobile device
KR20020095126A (ko) 특수 메모리 장치
CN113961484A (zh) 数据的传输方法、装置、电子设备以及存储介质
CN113934677A (zh) 数据处理方法、装置、电子设备和存储介质
CN113421321B (zh) 用于动画的渲染方法、装置、电子设备及介质
US12027087B2 (en) Smart compositor module

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant