发明内容
本发明实施例提供了基于国产CPU和操作系统的流数据的处理引擎及方法,能够更加灵活地实现流数据处理。
第一方面,本发明实施例提供了一种基于国产CPU和操作系统的流数据的处理引擎,包括:
组装器接口、组装器、至少一个可用的流组件和组图接口;
每个所述可用的流组件具有至少一种处理流数据的功能;
所述组装器接口,用于当接收到组装指令时,运行所述组装器;
所述组装器,用于从所述至少一个可用的流组件中,确定至少一个待组装的流组件,根据所述至少一个待组装的流组件,生成组图实例,其中,在所述组图实例中,每个所述待组装的流组件设置有至少一个输入队列;
所述组图接口,用于当接收到运行指令时,控制所述组图实例进行流数据处理;
所述组图实例中的每个所述待组装的流组件,用于判断对应的至少一个所述输入队列中是否存在待处理的流数据,如果是,则根据对应的所述至少一种处理流数据的功能,处理所述待处理的流数据。
进一步地,该引擎进一步包括:描述文件加载接口;
所述描述文件加载接口,用于加载预设的数据流XML(Extensible MarkupLanguage,可扩展标记语言)描述文件;
所述组装器,用于解析所述描述文件加载接口加载的所述数据流XML描述文件,根据所述数据流XML描述文件,确定所述至少一个待组装的流组件。
进一步地,所述组装器接口,进一步用于接收外部发来的至少一个选择指令,其中,每个所述选择指令对应所述待组装的流组件,每个所述选择指令中携带对应的所述待组装的流组件的组件信息;
所述组装器,用于根据每个所述选择指令中携带的所述组件信息,确定每个所述选择指令对应的所述待组装的流组件。
进一步地,该引擎进一步包括:流组件注册器;
所述流组件注册器,用于扫描预先设置的目录中是否存在未注册的流组件,如果是,则实现所述未注册的流组件的注册,将注册后的流组件作为所述可用的流组件。
进一步地,所述组图接口,进一步用于当接收到暂停指令时,控制所述组图实例暂停流数据处理,当接收到销毁指令时,销毁所述组图实例。
进一步地,所述组装器,进一步用于为所述组图实例创建至少一个调度器,从所述至少一个待组装的流组件中,为每个所述调度器分配至少一个待调度的流组件;
每个所述调度器,用于周期性地唤起所述组装器分配的所述至少一个待调度的流组件。
进一步地,该引擎进一步包括:生成器;
所述组装器,在所述根据所述至少一个待组装的流组件,生成组图实例之前,进一步用于调用所述生成器;
所述生成器,用于初始化所述至少一个待组装的流组件。
进一步地,所述生成器,用于为每个所述待组装的流组件设置至少一个输入队列;
所述组装器,用于针对所述组图实例中任一所述待组装的流组件,将当前待组装的流组件的输入队列作为相邻的前端的所述待组装的流组件的输出队列,链接所述至少一个待组装的流组件,生成所述组图实例。
进一步地,该引擎进一步包括:初始化接口和核心模块;
所述初始化接口,用于当接收到启动引擎指令时,启动所述核心模块;
所述核心模块,用于启动所述流组件注册器。
第二方面,本发明实施例提供了一种利用第一方面中任一所述的基于国产CPU和操作系统的流数据的处理引擎的流数据的处理方法,包括:
组装器接口在接收到组装指令时,运行组装器;
所述组装器从至少一个可用的流组件中,确定至少一个待组装的流组件,根据所述至少一个待组装的流组件,生成组图实例,其中,在所述组图实例中,每个所述待组装的流组件设置有至少一个输入队列;
组图接口在接收到运行指令时,控制所述组图实例进行流数据处理;
所述组图实例中的每个所述待组装的流组件判断对应的至少一个所述输入队列中是否存在待处理的流数据,如果是,则根据对应的所述至少一种处理流数据的功能,处理所述待处理的流数据。
在本发明实施例中,在引擎中设置有至少一个可用的流组件,当组装器接口接到的组装指令时,组装器可以从至少一个可用的流组件中选择出需要的至少一个待组装的流组件,生成组图实例,通过组图实例中的各个流组件实现流数据的处理,通过上述描述可见,用于进行流数据的处理的各个流组件可以从预先设置至少一个可用的流组件中灵活选择,进而能够更加灵活地实现流数据处理。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种基于国产CPU和操作系统的流数据的处理引擎,包括:
组装器接口、组装器、至少一个可用的流组件和组图接口;
每个所述可用的流组件具有至少一种处理流数据的功能;
所述组装器接口,用于当接收到组装指令时,运行所述组装器;
所述组装器,用于从所述至少一个可用的流组件中,确定至少一个待组装的流组件,根据所述至少一个待组装的流组件,生成组图实例,其中,在所述组图实例中,每个所述待组装的流组件设置有至少一个输入队列;
所述组图接口,用于当接收到运行指令时,控制所述组图实例进行流数据处理;
所述组图实例中的每个所述待组装的流组件,用于判断对应的至少一个所述输入队列中是否存在待处理的流数据,如果是,则根据对应的所述至少一种处理流数据的功能,处理所述待处理的流数据。
在本发明实施例中,在引擎中设置有至少一个可用的流组件,当组装器接口接到的组装指令时,组装器可以从至少一个可用的流组件中选择出需要的至少一个待组装的流组件,生成组图实例,通过组图实例中的各个流组件实现流数据的处理,通过上述描述可见,用于进行流数据的处理的各个流组件可以从预先设置至少一个可用的流组件中灵活选择,进而能够更加灵活地实现流数据处理。
如图1所示,本发明实施例提供了一种基于国产CPU和操作系统的流数据的处理引擎,包括:
组装器接口101、组装器102、三个可用的流组件103和组图接口104;
每个可用的流组件103具有至少一种处理流数据的功能;
组装器接口104,用于当接收到组装指令时,运行组装器102;
组装器102,用于从至少一个可用的流组件中,确定至少一个待组装的流组件,根据至少一个待组装的流组件,生成组图实例,其中,在组图实例中,每个待组装的流组件设置有至少一个输入队列;
组图接口104,用于当接收到运行指令时,控制组图实例进行流数据处理;
组图实例中的每个待组装的流组件103,用于判断对应的至少一个输入队列中是否存在待处理的流数据,如果是,则根据对应的至少一种处理流数据的功能,处理待处理的流数据。
在本发明实施例中,处理流数据的功能包括:采集功能、编码功能、传输功能、解码功能、显示功能等。例如:流组件A具有采集功能、流组件B具有编码功能、流组件C具有传输功能、流组件D具有解码功能和显示功能。另外,在至少一个可用的流组件中可以有多个功能相同的流组件,具有功能相同的流组件可以具有不同的处理方式,举例来说,流组件B和流组件E都具有编码功能,但是,流组件B采用DivX进行编码,流组件E采用Xvid进行编码。
基于图1所示的引擎,如图2所示,为了能够快速的生成组图实例,在本发明一实施例中,该引擎进一步包括:描述文件加载接口201;
所述描述文件加载接口201,用于加载预设的数据流XML描述文件;
所述组装器,用于解析所述描述文件加载接口加载的所述数据流XML描述文件,根据所述数据流XML描述文件,确定所述至少一个待组装的流组件。
在本发明实施例中,数据流XML描述文件中可以携带组图实例中需要的各个流组件的相关信息。组装器可以通过解析数据流XML描述文件,从至少一个可用的流组件中,确定出该至少一个待组装的流组件。组装器通过解析数据流XML描述文件,可以确定组图实例中各个流组件的组成。这里的数据流XML描述文件可以是外部根据需要配置的,例如:外部需要具有DivX解码功能的流组件,则可以在数据流XML描述文件描述该需求,或者,直接在数据流XML描述文件中携带具有DivX解码功能的流组件的信息。
另外,数据流XML描述文件中还可以包括组图实例中各个流组件之间的顺序,组装器可以通过该顺序来组装该至少一个待组装的流组件,进而生成组图实例。
在本发明一实施例中,所述组装器接口,进一步用于接收外部发来的至少一个选择指令,其中,每个所述选择指令对应所述待组装的流组件,每个所述选择指令中携带对应的所述待组装的流组件的组件信息;
所述组装器,用于根据每个所述选择指令中携带的所述组件信息,确定每个所述选择指令对应的所述待组装的流组件。
在本发明实施例中,外部可以通过调用组装器接口来确定组图实例中的各个流组件,组件信息中可以包括需要的流组件的标识信息。组件信息中也可以包括需要的功能,使得组装器可以根据需要的功能找到对应的流组件。
另外,外部还可以通过选择指令来确定组图实例中各个流组件的顺序,例如:组装器可以通过接收到的选择指令的顺序,来确定组图实例中各个流组件的顺序,也可以通过选择指令中携带的关于顺序的信息,来确定组图实例中各个流组件的顺序。
基于图1所示的引擎,如图3所示,在本发明一实施例中,该引擎进一步包括:流组件注册器301;
所述流组件注册器301,用于扫描预先设置的目录中是否存在未注册的流组件,如果是,则实现所述未注册的流组件的注册,将注册后的流组件作为所述可用的流组件。
在本发明实施例中,外部开发的流组件可以保存到该预先设置的目录中,通过流组件注册器可以将该目录中的注册,以使得这些流组件可以被组装到组图实例中。通过该流组件注册器使得外部可以根据需求开发流组件,进而使得流数据处理更加灵活。
基于图3所示的引擎,如图4所示,在本发明一实施例中,该引擎进一步包括:初始化接口401和核心模块402;
所述初始化接口401,用于当接收到启动引擎指令时,启动所述核心模块;
所述核心模块402,用于启动所述流组件注册器301。
在本发明实施例中,当需要进行流数据处理时,可以通过初始化接口启动核心模块,进而通过核心模块启动流组件注册器,使得各个流组件被注册,成为可用的流组件。
在本发明实施例中,核心模块还可以用于初始化该引擎,可以用于该引擎中各个模块的启动及初始化,可以用于该引擎中各个模块的调度。通过核心模块可以实现该引擎的核心调用。
为了更方便控制流数据的处理过程,在本发明一实施例中,所述组图接口,进一步用于当接收到暂停指令时,控制所述组图实例暂停流数据处理,当接收到销毁指令时,销毁所述组图实例。
在本发明实施例中,组图实例可以包括:就绪、运行、暂停、销毁这4中状态。当组装器生成组图实例时,组图实例的初始状态为就绪状态,当组图接口接收到运行指令时,组图实例处于运行状态,组图实例可以进行流数据处理,当组图接口接收到暂停指令时,组图实例处于暂停状态,组图实例暂停流数据处理,当组图接口接收到销毁指令时,组图实例处于销毁状态,组图实例被销毁。其中,暂停状态和运行状态可以相互转换。
在本发明一实施例中,为了同步整个流数据处理流程中不同的元素,组图实例在就绪状态时,为所有的元素选择并指定一个全局的时钟,当组图实例的状态转化为运行状态时,该时钟会被重置。这里的元素指的是组图实例中的各个流组件,通过该全局的时钟,可以使得组图实例中的各个流组件的时钟同步。
在本发明一实施例中,所述组装器,进一步用于为所述组图实例创建至少一个调度器,从所述至少一个待组装的流组件中,为每个所述调度器分配至少一个待调度的流组件;
每个所述调度器,用于周期性地唤起所述组装器分配的所述至少一个待调度的流组件。
在本发明实施例中,调度器是组图实例的动力核心,调度器可以运行在独立的线程中,调度器用于定时唤起组图实例中的各个流组件,流组件被唤起后,进行流数据处理。该至少一个调度器可以同时运行,例如:一个调度器负责音频、一个调度器负责视频。
基于图1所示的引擎,如图5所示,在本发明一实施例中,该引擎进一步包括:生成器501;
所述组装器,在所述根据所述至少一个待组装的流组件,生成组图实例之前,进一步用于调用所述生成器;
所述生成器501,用于初始化所述至少一个待组装的流组件。
在本发明实施例中,通过生成器可以对流组件的一些参数进行初始化,这些参数根据流组件的功能不同而不同,例如:针对具有采集功能的流组件,该参数可以包括采集的频率、采集的波特率等。
在本发明一实施例中,所述生成器,用于为每个所述待组装的流组件设置至少一个输入队列;
所述组装器,用于针对所述组图实例中任一所述待组装的流组件,将当前待组装的流组件的输入队列作为相邻的前端的所述待组装的流组件的输出队列,链接所述至少一个待组装的流组件,生成所述组图实例。
在本发明实施例中,在组图实例中,任意两个相邻的流组件之间通过队列相连。组装器通过各个待组装的流组件的输入队列将各个待组装的流组件链接到组图实例中。在组图实例中,前一个处理节点的输出作为后一个处理节点的输入,其中,处理节点指的是组图实例中的各个流组件。
在本发明实施例中,在组图实例中,每个流组件都有对应的输入队列和输出队列,组装器通过这些输入队列和输出队列将流组件连接成一个组图实例中。在组图实例中,有一个起始节点,一个结束节点,数据在组图实例中单向流动,前一个节点的输出作为后一个节点的输入,每个节点可以支持多个输入、输出,这里的节点是指组图实例中的各个流组件。流组件会顺序读取输入队列中的待处理的流数据,对读取的待处理的流数据做处理后写入输出队列。每个流组件会启动处理线程,来处理输入队列的数据,并将处理完成的数据写入输出队列。
举例来说,在一个组图实例中,包括:流组件1、流组件2、流组件3、流组件4、流组件5,其中,流组件1具有采集功能、流组件2具有编码功能、流组件3具有传输功能、流组件4具有解码功能、流组件5具有显示功能。在组图实例中,起始的流组件为流组件1,结束的流组件为流组件5。其中,流组件1的输入队列为队列1,流组件2的输入队列为队列2,流组件3的输入队列为队列3,流组件4的输入队列为队列4,流组件5的输入队列为队列5。根据各个流组件的功能,流组件在组图实例中的顺序为:流组件1、流组件2、流组件3、流组件4、流组件5。其中,队列2即是流组件2的输入队列,又是流组件1的输出队列;队列3即是流组件3的输入队列,又是流组件2的输出队列;队列4即是流组件4的输入队列,又是流组件3的输出队列;队列5即是流组件5的输入队列,又是流组件4的输出队列。这样,流组件1通过采集功能处理后的流数据输出到队列2中,流组件2从队列2中获取流数据,通过编码功能处理后输出到队列3中,流组件3从队列3中获取流数据,通过传输功能处理后输出到队列4中,流组件4从队列4中获取流数据,通过解码功能处理后输出到队列5中,流组件5从队列5中获取流数据,通过显示功能处理后输出。
在本发明实施例中,流组件,进一步用于提供数据结构,所述数据结构包括:流组件的唯一ID、名称、功能描述、输入队列个数、输出队列个数、初始化函数、预处理函数、处理函数、后处理函数、释放函数、参数设置调用函数列表结构和流组件类别中的任意一个或多个。
流组件对外提供统一的数据结构。流组件注册器可以通过该数据结构对流组件进行注册,生成器可以通过该数据结构对流组件进行初始化。具体地,流组件注册器可以通过数据结构中的唯一ID、名称、功能描述、类别等信息进行注册。生成器可以通过数据结构中的输入队列个数、输出队列个数、初始化函数、预处理函数、处理函数、后处理函数、释放函数、参数设置调用函数列表结构等信息进行初始化。这里的类别包括:采集类别、编码类别、传输类别、解码类别、显示类别等。
在本发明实施例中,开发人员可以利用本发明实施例提供的引擎开发所需要的流数据处理装置,例如:播放器等。
如图6所示,本发明实施例提供的一种基于国产CPU和操作系统的流数据的处理引擎,包括:
组装器接口601、组装器602、三个可用的流组件603、组图接口604、描述文件加载接口605、流组件注册器606、生成器607、初始化接口608和核心模块609。
每个可用的流组件603具有至少一种处理流数据的功能;
初始化接口608,用于当接收到启动引擎指令时,启动核心模块609;
核心模块609,用于启动流组件注册器606;
流组件注册器606,用于扫描预先设置的目录中是否存在未注册的流组件,如果是,则实现未注册的流组件的注册,将注册后的流组件作为可用的流组件603;
组装器接口601,用于当接收到组装指令时,运行组装器602;
描述文件加载接口605,用于加载预设的数据流XML描述文件;
组装器602,用于解析所述描述文件加载接口加载的所述数据流XML描述文件,根据所述数据流XML描述文件,从至少一个可用的流组件中,确定至少一个待组装的流组件,调用生成器607,针对组图实例中任一待组装的流组件,将当前待组装的流组件的输入队列作为相邻的前端的待组装的流组件的输出队列,链接至少一个待组装的流组件,生成所述组图实例,其中,在组图实例中,每个待组装的流组件设置有至少一个输入队列;
生成器607,用于初始化至少一个待组装的流组件,为每个所述待组装的流组件设置至少一个输入队列;
组图接口604,用于当接收到运行指令时,控制组图实例进行流数据处理,当接收到暂停指令时,控制组图实例暂停流数据处理,当接收到销毁指令时,销毁组图实例;
组图实例中的每个待组装的流组件603,用于判断对应的至少一个输入队列中是否存在待处理的流数据,如果是,则根据对应的至少一种处理流数据的功能,处理待处理的流数据。
本发明实施例提供的引擎支持视频流数据的处理和音频流数据的处理,但不限于这类数据。
本发明实施例提供的引擎采用开放式的架构,是一种轻量级的流数据处理引擎。该引擎定义了基本的功能模块类型及标准的接口和参数,允许开发者按统一的开发规范和接口,根据自己的需求开发自己的功能模块,注册后可以和已有功能模块无缝融合。该引擎的功能模块包括:核心模块、流组件注册器、组装器、生成器、组图、流组件。
流组件的加载可以通过下述方式来实现:
按照流组件开发规范及对外接口,完成实现特定功能的流组件研发,编译成二进制文件,放置到预先设置的目录中。
该引擎在启动时,启动流组件注册器,流组件注册器定时扫描预先设置的目录,对未注册的流组件进行动态注册,归类,统一管理。
当组装器调用该流组件,构建组图实例时,生成器会动态加载该流组件,并对流组件进行初始化。
组装器将初始化好的流组件链接到组图实例中,完成流组件的动态加载。
流组件的数据结构如表1所示。
表1
如图7所示,本发明实施例提供的一种基于国产CPU和操作系统的流数据的处理引擎的类结构图。
如图8所示,本发明实施例提供了一种利用本发明实施例中任一所述的基于国产CPU和操作系统的流数据的处理引擎的流数据的处理方法,包括:
步骤801:组装器接口在接收到组装指令时,运行组装器;
步骤802:所述组装器从至少一个可用的流组件中,确定至少一个待组装的流组件,根据所述至少一个待组装的流组件,生成组图实例,其中,在所述组图实例中,每个所述待组装的流组件设置有至少一个输入队列;
步骤803:组图接口在接收到运行指令时,控制所述组图实例进行流数据处理;
步骤804:所述组图实例中的每个所述待组装的流组件判断对应的至少一个所述输入队列中是否存在待处理的流数据,如果是,则根据对应的所述至少一种处理流数据的功能,处理所述待处理的流数据。
在本发明一实施例中,在步骤802之前,进一步包括:
描述文件加载接口加载预设的数据流XML描述文件;
所述组装器从所述至少一个可用的流组件中,确定至少一个待组装的流组件,包括:
所述组装器解析所述描述文件加载接口加载的所述数据流XML描述文件,根据所述数据流XML描述文件,确定所述至少一个待组装的流组件。
在本发明一实施例中,在步骤802之前,进一步包括:
所述组装器接口接收外部发来的至少一个选择指令,其中,每个所述选择指令对应所述待组装的流组件,每个所述选择指令中携带对应的所述待组装的流组件的组件信息;
所述组装器从所述至少一个可用的流组件中,确定至少一个待组装的流组件,包括:
所述组装器根据每个所述选择指令中携带的所述组件信息,确定每个所述选择指令对应的所述待组装的流组件。
在本发明一实施例中,在所述组装器从所述至少一个可用的流组件中,确定至少一个待组装的流组件之前,进一步包括:
流组件注册器扫描预先设置的目录中是否存在未注册的流组件,如果是,则实现所述未注册的流组件的注册,将注册后的流组件作为所述可用的流组件。
在本发明一实施例中,在所述流组件注册器扫描预先设置的目录中是否存在未注册的流组件之前,进一步包括:
初始化接口在接收到启动引擎指令时,启动核心模块;
核心模块启动流组件注册器。
在本发明一实施例中,在生成组图实例之后,进一步包括:
组图接口在接收到暂停指令时,控制所述组图实例暂停流数据处理,在接收到销毁指令时,销毁所述组图实例。
在本发明一实施例中,在生成组图实例之后,进一步包括:组装器为所述组图实例创建至少一个调度器,从所述至少一个待组装的流组件中,为每个所述调度器分配至少一个待调度的流组件;
每个所述调度器周期性地唤起所述组装器分配的所述至少一个待调度的流组件。
在本发明一实施例中,在所述根据所述至少一个待组装的流组件,生成组图实例之前,进一步包括:组装器调用生成器;
生成器初始化所述至少一个待组装的流组件。
在本发明一实施例中,在所述根据所述至少一个待组装的流组件,生成组图实例之前,进一步包括:
生成器为每个所述待组装的流组件设置至少一个输入队列;
所述根据所述至少一个待组装的流组件,生成组图实例,包括:
组装器针对所述组图实例中任一所述待组装的流组件,将当前待组装的流组件的输入队列作为相邻的前端的所述待组装的流组件的输出队列,链接所述至少一个待组装的流组件,生成所述组图实例。
本发明各个实施例至少具有如下有益效果:
1、在本发明实施例中,在引擎中设置有至少一个可用的流组件,当组装器接口接到的组装指令时,组装器可以从至少一个可用的流组件中选择出需要的至少一个待组装的流组件,生成组图实例,通过组图实例中的各个流组件实现流数据的处理,通过上述描述可见,用于进行流数据的处理的各个流组件可以从预先设置至少一个可用的流组件中灵活选择,进而能够更加灵活地实现流数据处理。
2、在本发明实施例中,该引擎具有很好的扩展性,允许动态注册、加载新的流组件,而不影响其他既有的流组件。可以针对各国产CPU平台,研制针对平台优化的音视频编解码等流组件,通过动态注册及加载,实现在基于国产CPU和操作系统的平台下的高效音视频处理。
3、本发明实施例基于开放式的核心架构,允许流组件的动态加载,实现轻量级的流数据处理引擎,提供简洁的开发调用接口,易于二次开发和调用。
4、在本发明实施例中,可以根据需要实现的功能将处理节点组合成为一种链式结构,数据在链式结构内由起始节点到结束节点流转,前一个节点的输出作为后一个处理节点的输入,极大的增强了处理的灵活性。
5、在本发明实施例中,使用类似链式结构将处理节点连接起来,前一个处理节点输出作为后一个处理节点的输入,使用这种方式,前一个处理节点在处理数据的同时,后一个处理节点会接收前一个节点的输出数据并行处理,提高了数据处理的效率。
6、本发明实施例支持组成器通过解析处理流程xml描述文件的方式,实现流数据处理流程的动态生成,简化音视频处理的开发过程,并且易于维护。
7、本发明实施例不但可以处理视频、音频流数据,还可以处理其他任何需要高效率处理的流数据。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。