CN112001837A - Cdvs多进程驱动方法、装置、电子设备及存储介质 - Google Patents
Cdvs多进程驱动方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112001837A CN112001837A CN202010650144.7A CN202010650144A CN112001837A CN 112001837 A CN112001837 A CN 112001837A CN 202010650144 A CN202010650144 A CN 202010650144A CN 112001837 A CN112001837 A CN 112001837A
- Authority
- CN
- China
- Prior art keywords
- data structure
- cdvs
- idle
- queue
- file data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Abstract
本申请提出一种CDVS多进程驱动方法、装置、电子设备及存储介质,该方法包括:接收应用程序的调用请求信息;为应用程序分配文件数据结构和空闲的功能数据结构;根据调用请求信息、空闲的功能数据结构和文件数据结构,通过空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理;根据文件数据结构,读取处理结果。本申请为每个进程分配了文件数据结构和功能数据结构,通过空闲进程队列实现多个进程的调度,实现CDVS驱动程序的多进程调用。当进程请求不到CDVS芯片的服务时,就会休眠等待,有空闲资源时会被自动唤醒进行工作,从而避免人工干预,能够充分提高CDVS芯片的硬件资源使用率。
Description
技术领域
本申请属于图像处理技术领域,具体涉及一种CDVS多进程驱动方法、装置、电子设备及存储介质。
背景技术
CDVS(Compact Descriptor for Visual Search,紧凑视觉描述子)芯片是用于处理图片或视频的芯片。应用程序可以利用CDVS芯片来处理图片或视频。这些应用程序需要通过调用CDVS驱动程序,驱动CDVS芯片来处理图片或视频。
目前,相关技术中应用程序调用CDVS驱动程序,CDVS驱动程序驱动CDVS芯片处理该应用程序的图片或视频帧,处理结束后该应用程序读取处理结果,CDVS驱动程序释放该应用程序所占用的资源,之后其他的应用程序可以再按照相同的方式调用CDVS驱动程序。
但上述相关技术中CDVS芯片完成一个应用程序的数据处理任务之后,才能进行下一个应用程序的数据处理任务,多个应用程序只能串行的调用CDVS芯片,导致数据处理的效率很低。
发明内容
本申请提出一种CDVS多进程驱动方法、装置、电子设备及存储介质,为每个进程分配了文件数据结构和功能数据结构,实现多个进程的调度,实现CDVS驱动程序的多进程调用,避免人工干预,能够充分提高CDVS芯片的硬件资源使用率。
本申请第一方面实施例提出了一种紧凑视觉描述子CDVS多进程驱动方法,所述方法包括;
接收应用程序的调用请求信息;
为所述应用程序分配文件数据结构和空闲的功能数据结构;
根据所述调用请求信息、所述空闲的功能数据结构和所述文件数据结构,通过所述空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理;
根据所述文件数据结构,读取处理结果。
在本申请的一些实施例中,为所述应用程序分配空闲的功能数据结构,包括:查询空闲进程队列中是否存在索引标识;
若所述空闲进程队列中存在索引标识,则从所述空闲进程队列中选择一个索引标识,将选择的所述索引标识对应的功能数据结构分配给所述应用程序;
若所述空闲进程队列中不存在索引标识,则将所述调用请求信息插入写等待队列中进行等待,直至所述空闲进程队列中存在索引标识且所述调用请求信息排在所述写等待队列中,将所述空闲进程队列中队首处的索引标识对应的功能数据结构分配给所述应用程序。
在本申请的一些实施例中,所述根据所述调用请求信息、所述空闲的功能数据结构和所述文件数据结构,通过所述空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理,包括:
将所述调用请求信息对应的程序指针及灰度图片信息填充到所述空闲的功能数据结构中;
将所述文件数据结构和填充后的所述功能数据结构插入写工作队列的队尾;
通过所述功能数据结构包括的索引标识对应的进程调用CDVS驱动程序,驱动CDVS芯片处理所述写工作队列中的所述功能数据结构;
将所述功能数据结构对应的处理结果插入读等待队列中,并将所述功能数据结构包括的索引标识填充到所述文件数据结构的进程完成标志中。
在本申请的一些实施例中,将所述调用请求信息对应的灰度图片信息填充到所述空闲的功能数据结构中,包括:
通过所述功能数据结构包括的索引标识对应的进程调用CDVS驱动程序的输入输出控制函数,设置所述调用请求信息对应的待处理图片的灰度图片信息;
将所述灰度图片信息置入所述空闲的功能数据结构包括的灰度图结构体中。
在本申请的一些实施例中,所述根据所述文件数据结构,读取处理结果,包括:
监测到所述文件数据结构中填充所述索引标识,唤醒所述读等待队列;
根据所述文件数据结构的进程完成标志中的所述索引标识,从所述读等待队列中读取所述索引标识对应的处理结果;
将所述处理结果拷贝至所述应用程序对应的用户空间。
在本申请的一些实施例中,所述读取处理结果之后,还包括:
将所述功能数据结构包括的程序指针置位为空;
从所述文件数据结构的进程完成标志中读取索引标识;
将截取的所述索引标识插入空闲进程队列的队尾处;
将所述进程完成标志重置为空,释放所述文件数据结构。
在本申请的一些实施例中,所述方法还包括:
为所述应用程序分配文件数据结构和空闲的功能数据结构时,将进程计数器的计数值加一;
释放所述文件数据结构时,将所述进程计数器的计数值减一;
若所述进程计数器的计数值等于零,则通过CDVS驱动程序重置CDVS芯片的芯片寄存器。
本申请第二方面的实施例提供了一种CDVS多进程驱动装置,所述装置包括;
接收模块,用于接收应用程序的调用请求信息;
分配模块,用于为所述应用程序分配文件数据结构和空闲的功能数据结构;
驱动模块,用于根据所述调用请求信息、所述空闲的功能数据结构和所述文件数据结构,通过所述空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理;
读取结果模块,用于根据处理后的所述文件数据结构,读取处理结果。
本申请第三方面的实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现上述第一方面所述的方法。
本申请第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行实现上述第一方面所述的方法。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例为每个进程分配了文件数据结构和功能数据结构,通过空闲进程队列实现多个进程的调度,实现CDVS驱动程序的多进程调用,对于进程数量无要求,可以有任意多个进程也可以只有一个进程。当进程请求不到CDVS芯片的服务时,就会休眠等待,有空闲资源时会被自动唤醒进行工作,从而避免人工干预,能够充分提高CDVS芯片的硬件资源使用率。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变的明显,或通过本申请的实践了解到。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
在附图中:
图1示出了本申请一实施例所提供的空闲进程队列的示意图;
图2示出了本申请一实施例所提供的一种CDVS多进程驱动方法的流程图;
图3示出了本申请一实施例所提供的进程写数据的流程图;
图4示出了本申请一实施例所提供的进程读数据的流程图;
图5示出了本申请一实施例所提供的中断控制的流程图;
图6示出了本申请一实施例所提供的一种CDVS多进程驱动装置的结构示意图;
图7示出了本申请一实施例所提供的一种电子设备的结构示意图;
图8示出了本申请一实施例所提供的一种存储介质的示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
下面结合附图来描述根据本申请实施例提出的一种CDVS多进程驱动方法、装置、电子设备及存储介质。
本申请实施例提供了一种CDVS多进程驱动方法,该方法中为每个进程分配了文件数据结构和功能数据结构,通过空闲进程队列实现多个进程的调度,实现CDVS驱动程序的多进程调用,对于进程数量无要求,可以有任意多个进程也可以只有一个进程。当进程请求不到CDVS芯片的服务时,就会休眠等待,有空闲资源时会被自动唤醒进行工作,从而避免人工干预,能够充分提高CDVS芯片的硬件资源使用率。
本申请实施例的执行主体为用于驱动CDVS芯片的终端,该终端上配置有CDVS芯片,且该终端上运行有用于驱动CDVS芯片的CDVS驱动程序。CDVS芯片的板载内存中包含用于存储功能数据结构cdvs_fb_data的存储区域,功能数据结构cdvs_fb_data是进程调用CDVS驱动程序时分配的。该存储区域可以从0xb0000000开始到0x4000000共计64MB的区域,该存储区域的大小也可以为其他任意数值。功能数据结构cdvs_fb_data的大小可以为8MB或16MB等,若功能数据结构cdvs_fb_data的大小为8MB,上述存储区域的大小为64MB,则该存储区域中一共可以存储8个功能数据结构cdvs_fb_data。
CDVS驱动程序初始化的过程中,创建了一个空闲进程队列free fifo,并将所有功能数据结构cdvs_fb_data的索引标识填入该空闲进程队列free fifo中,如图1所示。CDVS驱动程序还通过调用open_count函数维护一个进程计数器,一个应用程序调用一次CDVS驱动程序,open_count函数就会将进程计数器的计数值加1,应用程序退出时open_count函数就会将进程计数器的计数值减1。本申请实施例在进程打开CDVS驱动程序的时候,使用了cdvs_global_mutex互斥锁,以保证在同一时刻只有一个进程可以对open_count函数进行加1操作。在调用cdvs_release释放函数时,也通过互斥锁保证同一时刻只有一个进程对open_count函数进行减1操作。
CDVS驱动程序初始化之后,即可通过图2所示的步骤实现CDVS多进程驱动,如图2所示,该方法具体包括;
步骤101:接收应用程序的调用请求信息。
上述应用程序可以为需要使用CDVS芯片来处理图片或视频帧的任意应用程序。本申请实施例将需要处理的图片或视频帧统称为待处理图片。上述调用请求信息包括待处理图片的宽、高、处理模式及存储地址等。
步骤102:为应用程序分配文件数据结构和空闲的功能数据结构。
接收到应用程序的调用请求信息之后,为该应用程序分配一个文件数据结构cdvs_file_data,并查询空闲进程队列free fifo中是否存在索引标识。若空闲进程队列free fifo中存在索引标识,则从空闲进程队列free fifo中选择一个索引标识,从CDVS芯片的板载内存中获取选择的索引标识对应的功能数据结构cdvs_fb_data,将获取的功能数据结构cdvs_fb_data分配给该应用程序。若空闲进程队列free fifo中不存在索引标识,则表明当前所有的功能数据结构cdvs_fb_data全部被其他的进程占用,因此将该应用程序的调用请求信息插入写等待队列中进行等待,直至空闲进程队列free fifo中存在索引标识且该调用请求信息排在写等待队列中,将空闲进程队列free fifo中队首处的索引标识对应的功能数据结构cdvs_fb_data分配给该应用程序。
上述文件数据结构cdvs_file_data的具体结构如下所示:
其中,finish_fifo表示文件数据结构cdvs_file_data中包括的进程完成标志。在应用程序对应的进程未结束之前进程完成标志finish_fifo的值为空,在应用程序对应的进程结束之后,进程完成标志finish_fifo的值会被重置为功能数据结构cdvs_fb_data包括的索引标识。
上述功能数据结构cdvs_fb_data的具体结构如下所示:
其中,id表示按照进程调用CDVS驱动程序的索引标识。private_data用于保存进程指向自己的程序指针。pic_info为灰度图结构体。result_size用于返回提取CDVS特征的字节数。fb_pointer为功能数据结构cdvs_fb_data的虚拟地址,fb_pointer_phy为功能数据结构cdvs_fb_data的物理地址。fb_result_pointer表示返回提取CDVS特征的虚拟地址指针,fb_result_pointer_phy表示返回提取CDVS特征的物理地址指针。
上述灰度图结构体pic_info的具体结构如下所示:
其中,modeid表示处理模式,其取值范围可以为0~13。Orimaxres表示最大原始分辨率。Imageheight表示待处理图片的高。Imagewidth表示待处理图片的宽。
通过本步骤的操作为该应用程序分配文件数据结构cdvs_file_data和空闲的功能数据结构cdvs_fb_data之后,通过调用open_count函数将进程计数器的计数值加一,并通过如下步骤103的操作驱动CDVS芯片为该应用程序提供图片处理服务。
步骤103:根据调用请求信息、空闲的功能数据结构和文件数据结构,通过空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理。
将调用请求信息对应的程序指针及灰度图片信息填充到空闲的功能数据结构cdvs_fb_data中。具体通过功能数据结构cdvs_fb_data包括的索引标识对应的进程调用CDVS驱动程序的输入输出控制函数ioctl,设置调用请求信息对应的待处理图片的灰度图片信息。将灰度图片信息包括的待处理图片的高、宽和处理模式置入灰度图结构体pic_info中,然后将灰度图结构体pic_info置入空闲的功能数据结构cdvs_fb_data中。以及将该应用程序自己的程序指针privat_data置入空闲的功能数据结构cdvs_fb_data中。
将文件数据结构cdvs_file_data和填充后的功能数据结构cdvs_fb_data插入写工作队列in fifo的队尾。其中,写工作队列可以为空水线寄存器INT_IN_FIFO_E_TIDE:infifo。写工作队列in fifo中可以同时存在一个或多个进程对应的文件数据结构cdvs_file_data和功能数据结构cdvs_fb_data。将文件数据结构cdvs_file_data和功能数据结构cdvs_fb_data插入写工作队列in fifo中之后,还向写工作队列in fifo中写入命令字,即向INT_FIFO寄存器写入命令字。写入的命令字包括streamID=cdvs_fb_data[id].id、originalMaxResolution、modeID、imageBaseAddr、imageHeight、imageWidth和cdvsBsBaseAddr。其中,streamID=cdvs_fb_data[id].id为功能数据结构cdvs_fb_data包括的索引标识,originalMaxResolution表示最大原始分辨率,modeID表示处理模式,imageBaseAddr表示待处理图片的存储地址,imageHeight表示待处理图片的高,imageWidth表示待处理图片的宽,cdvsBsBaseAddr表示处理结果的存储地址。
通过功能数据结构cdvs_fb_data包括的索引标识对应的进程调用CDVS驱动程序,驱动CDVS芯片处理写工作队列in fifo中的功能数据结构cdvs_fb_data。CDVS芯片每次从写工作队列in fifo出队一个进程对应的文件数据结构cdvs_file_data和功能数据结构cdvs_fb_data,并进行数据处理操作。处理完成之后将功能数据结构cdvs_fb_data对应的处理结果插入读等待队列out fifo中。读等待队列out fifo可以为满水线及存储器INT_OUT_FIFO_F_TIDE:out fifo。
通过上述方式完成数据处理操作,并将处理结果插入读等待队列out fifo中之后,将功能数据结构cdvs_fb_data包括的索引标识填充到文件数据结构cdvs_file_data的进程完成标志finish_fifo中。
步骤104:根据文件数据结构,读取处理结果。
当该应用程序对应的进程监测到文件数据结构cdvs_file_data中填充了索引标识后,唤醒读等待队列out fifo。根据文件数据结构cdvs_file_data的进程完成标志finish_fifo中的索引标识,从读等待队列out fifo中读取索引标识对应的处理结果。将处理结果拷贝至该应用程序对应的用户空间。所有文件数据结构cdvs_file_data的进程完成标志finish_fifo中填充了索引标识的进程,都会在唤醒的读等待队列out fifo中读取各自对应的处理结果。
读取处理结果之后,还将功能数据结构cdvs_fb_data包括的程序指针private_data置位为空;从文件数据结构cdvs_file_data的进程完成标志finish_fifo中读取索引标识;将截取的索引标识插入空闲进程队列free fifo的队尾处;将进程完成标志finish_fifo重置为空,释放文件数据结构cdvs_file_data,通过调用open_count函数将进程计数器的计数值减一。
将进程计数器的计数值减一之后,判断进程计数器的计数值是否等于零,若进程计数器的计数值等于零,则通过CDVS驱动程序重置CDVS芯片的芯片寄存器,即清除CDVS芯片中写工作队列in fifo和读等待队列out fifo,并重置空闲进程队列free fifo,即将所有索引标识均插入空闲进程队列free fifo中。
为了便于进一步理解本申请实施例的方法,下面结合附图进行具体说明。如图3所示的进程写数据的流程图,应用程序请求CDVS驱动服务,CDVS IP驱动,判断空闲进程队列free fifo中是否有索引标识。如果是,则填充功能数据结构cdvs_fb_data,以及向CDVS芯片写入命令字。如果否,则进入休眠,加入写等待队列,直至空闲进程队列free fifo中有索引标识时,再执行填充功能数据结构cdvs_fb_data的操作。
如图4所示的进程读数据的流程图,应用程序请求CDVS驱动服务,进入读数据流程,判断文件数据结构cdvs_file_data中的进程完成标志finish_fifo是否为0。如果是,加入读等待队列,CDVS芯片中断,判断out fifo寄存器中的结果数是否大于0,如果是,从outfifo寄存器中弹出索引标识和用于返回提取CDVS特征的字节数result_size,唤醒读等待队列读取处理结果。如果上述判断出finish_fifo不为0,则直接执行从out fifo寄存器中弹出索引标识和用于返回提取CDVS特征的字节数result_size的操作。如果判断出outfifo寄存器中的结果数等于0,则将索引标识压入应用程序对应的文件数据结构cdvs_file_data中的进程完成标志finish_fifo中,之后唤醒写等待队列。上述读取处理结果之后,从进程完成标志finish_fifo中弹出索引标识,将该索引标识对应的功能数据结构cdvs_fb_data中的处理结果拷贝至用户空间,并将该索引标识归还给空闲进程队列freefifo,之后唤醒写等待队列。
如图5所示的中断控制流程,CDVS芯片发起中断请求,屏蔽中断寄存器,判断写工作队列in fifo中是否有正在等待的进程,如果是,唤醒写工作队列in fifo。判断out fifo寄存器中的结果数是否大于0,如果是,则唤醒读等待队列out fifo读取处理结果,之后清除中断标志寄存器,使能中断。如果判断出写工作队列in fifo中没有正在等待的进程,则执行判断out fifo寄存器中的结果数是否大于0的操作。如果判断出out fifo寄存器中的结果数等于0,则执行清除中断标志寄存器的操作。
本申请实施例中不仅能够实现CDVS驱动程序的多进程调用,而且并行执行的多个进程中,每个进程都可以同时运行多个线程,多个线程的并行执行能够加快进程的处理速度,缩短每个进程占用资源的时间,进一步提高CDVS芯片的硬件资源使用率。
本申请实施为每个进程分配了文件数据结构和功能数据结构,通过空闲进程队列实现多个进程的调度,实现CDVS驱动程序的多进程调用。当进程请求不到CDVS芯片的服务时,就会休眠等待,有空闲资源时会被自动唤醒进行工作,从而避免人工干预,能够充分提高CDVS芯片的硬件资源使用率。
本申请实施例提供了一种CDVS多进程驱动装置,该装置用于执行上述实施例所述的CDVS多进程驱动方法,如图6所示,该装置包括;
接收模块601,用于接收应用程序的调用请求信息;
分配模块602,用于为应用程序分配文件数据结构和空闲的功能数据结构;
驱动模块603,用于根据调用请求信息、空闲的功能数据结构和文件数据结构,通过空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理;
读取结果模块604,用于根据文件数据结构,读取处理结果。
上述分配模块602,用于查询空闲进程队列中是否存在索引标识;若空闲进程队列中存在索引标识,则从空闲进程队列中选择一个索引标识,将选择的索引标识对应的功能数据结构分配给应用程序;若空闲进程队列中不存在索引标识,则将调用请求信息插入写等待队列中进行等待,直至空闲进程队列中存在索引标识且调用请求信息排在写等待队列中,将空闲进程队列中队首处的索引标识对应的功能数据结构分配给应用程序。
上述驱动模块603包括:
填充单元,用于将调用请求信息对应的程序指针及灰度图片信息填充到空闲的功能数据结构中;
插入单元,用于将文件数据结构和填充后的功能数据结构插入写工作队列的队尾;
驱动单元,用于通过功能数据结构包括的索引标识对应的进程调用CDVS驱动程序,驱动CDVS芯片处理写工作队列中的功能数据结构;将功能数据结构对应的处理结果插入读等待队列中,并将功能数据结构包括的索引标识填充到文件数据结构的进程完成标志中。
上述填充单元,用于通过功能数据结构包括的索引标识对应的进程调用CDVS驱动程序的输入输出控制函数,设置调用请求信息对应的待处理图片的灰度图片信息;将灰度图片信息置入空闲的功能数据结构包括的灰度图结构体中。
读取结果模块604,用于监测到文件数据结构中填充索引标识,唤醒读等待队列;根据文件数据结构的进程完成标志中的索引标识,从读等待队列中读取索引标识对应的处理结果;将处理结果拷贝至应用程序对应的用户空间。
该装置还包括:释放模块,用于将功能数据结构包括的程序指针置位为空;从文件数据结构的进程完成标志中读取索引标识;将截取的索引标识插入空闲进程队列的队尾处;将进程完成标志重置为空,释放文件数据结构。
计数模块,用于为应用程序分配文件数据结构和空闲的功能数据结构时,将进程计数器的计数值加一;释放文件数据结构时,将进程计数器的计数值减一;若进程计数器的计数值等于零,则通过CDVS驱动程序重置CDVS芯片的芯片寄存器。
本申请的上述实施例提供的CDVS多进程驱动装置与本申请实施例提供的CDVS多进程驱动方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的CDVS多进程驱动方法对应的电子设备,以执行上CDVS多进程驱动方法。本申请实施例不做限定。
请参考图7,其示出了本申请的一些实施方式所提供的一种电子设备的示意图。如图7所示,所述电子设备2包括:处理器200,存储器201,总线202和通信接口203,所述处理器200、通信接口203和存储器201通过总线202连接;所述存储器201中存储有可在所述处理器200上运行的计算机程序,所述处理器200运行所述计算机程序时执行本申请前述任一实施方式所提供的CDVS多进程驱动方法。
其中,存储器201可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口203(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线202可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器201用于存储程序,所述处理器200在接收到执行指令后,执行所述程序,前述本申请实施例任一实施方式揭示的所述CDVS多进程驱动方法可以应用于处理器200中,或者由处理器200实现。
处理器200可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器200中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器200可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器201,处理器200读取存储器201中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的电子设备与本申请实施例提供的CDVS多进程驱动方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的CDVS多进程驱动方法对应的计算机可读存储介质,请参考图8,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的CDVS多进程驱动方法。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的CDVS多进程驱动方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备有固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种紧凑视觉描述子CDVS多进程驱动方法,其特征在于,所述方法包括;
接收应用程序的调用请求信息;
为所述应用程序分配文件数据结构和空闲的功能数据结构;
根据所述调用请求信息、所述空闲的功能数据结构和所述文件数据结构,通过所述空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理;
根据所述文件数据结构,读取处理结果。
2.根据权利要求1所述的方法,其特征在于,为所述应用程序分配空闲的功能数据结构,包括:
查询空闲进程队列中是否存在索引标识;
若所述空闲进程队列中存在索引标识,则从所述空闲进程队列中选择一个索引标识,将选择的所述索引标识对应的功能数据结构分配给所述应用程序;
若所述空闲进程队列中不存在索引标识,则将所述调用请求信息插入写等待队列中进行等待,直至所述空闲进程队列中存在索引标识且所述调用请求信息排在所述写等待队列中,将所述空闲进程队列中队首处的索引标识对应的功能数据结构分配给所述应用程序。
3.根据权利要求1所述的方法,其特征在于,所述根据所述调用请求信息、所述空闲的功能数据结构和所述文件数据结构,通过所述空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理,包括:
将所述调用请求信息对应的程序指针及灰度图片信息填充到所述空闲的功能数据结构中;
将所述文件数据结构和填充后的所述功能数据结构插入写工作队列的队尾;
通过所述功能数据结构包括的索引标识对应的进程调用CDVS驱动程序,驱动CDVS芯片处理所述写工作队列中的所述功能数据结构;
将所述功能数据结构对应的处理结果插入读等待队列中,并将所述功能数据结构包括的索引标识填充到所述文件数据结构的进程完成标志中。
4.根据权利要求3所述的方法,其特征在于,将所述调用请求信息对应的灰度图片信息填充到所述空闲的功能数据结构中,包括:
通过所述功能数据结构包括的索引标识对应的进程调用CDVS驱动程序的输入输出控制函数,设置所述调用请求信息对应的待处理图片的灰度图片信息;
将所述灰度图片信息置入所述空闲的功能数据结构包括的灰度图结构体中。
5.根据权利要求3所述的方法,其特征在于,所述根据处理后的所述文件数据结构,读取处理结果,包括:
监测到所述文件数据结构中填充所述索引标识,唤醒所述读等待队列;
根据所述文件数据结构的进程完成标志中的所述索引标识,从所述读等待队列中读取所述索引标识对应的处理结果;
将所述处理结果拷贝至所述应用程序对应的用户空间。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述读取处理结果之后,还包括:
将所述功能数据结构包括的程序指针置位为空;
从所述文件数据结构的进程完成标志中读取索引标识;
将截取的所述索引标识插入空闲进程队列的队尾处;
将所述进程完成标志重置为空,释放所述文件数据结构。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
为所述应用程序分配文件数据结构和空闲的功能数据结构时,将进程计数器的计数值加一;
释放所述文件数据结构时,将所述进程计数器的计数值减一;
若所述进程计数器的计数值等于零,则通过CDVS驱动程序重置CDVS芯片的芯片寄存器。
8.一种CDVS多进程驱动装置,其特征在于,所述装置包括;
接收模块,用于接收应用程序的调用请求信息;
分配模块,用于为所述应用程序分配文件数据结构和空闲的功能数据结构;
驱动模块,用于根据所述调用请求信息、所述空闲的功能数据结构和所述文件数据结构,通过所述空闲的功能数据结构对应的进程调用CDVS驱动程序,驱动CDVS芯片进行数据处理;
读取结果模块,用于根据处理后的所述文件数据结构,读取处理结果。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010650144.7A CN112001837B (zh) | 2020-07-08 | 2020-07-08 | Cdvs多进程驱动方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010650144.7A CN112001837B (zh) | 2020-07-08 | 2020-07-08 | Cdvs多进程驱动方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112001837A true CN112001837A (zh) | 2020-11-27 |
CN112001837B CN112001837B (zh) | 2021-11-02 |
Family
ID=73467165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010650144.7A Active CN112001837B (zh) | 2020-07-08 | 2020-07-08 | Cdvs多进程驱动方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112001837B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905783A (zh) * | 2012-12-25 | 2014-07-02 | 杭州海康威视数字技术股份有限公司 | 对视频流进行解码显示的方法及设备 |
CN106095588A (zh) * | 2016-06-28 | 2016-11-09 | 北京大学深圳研究生院 | 基于gpgpu平台的cdvs提取过程加速方法 |
CN109814998A (zh) * | 2019-01-22 | 2019-05-28 | 中国联合网络通信集团有限公司 | 一种多进程任务调度的方法及装置 |
-
2020
- 2020-07-08 CN CN202010650144.7A patent/CN112001837B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905783A (zh) * | 2012-12-25 | 2014-07-02 | 杭州海康威视数字技术股份有限公司 | 对视频流进行解码显示的方法及设备 |
CN106095588A (zh) * | 2016-06-28 | 2016-11-09 | 北京大学深圳研究生院 | 基于gpgpu平台的cdvs提取过程加速方法 |
CN109814998A (zh) * | 2019-01-22 | 2019-05-28 | 中国联合网络通信集团有限公司 | 一种多进程任务调度的方法及装置 |
Non-Patent Citations (2)
Title |
---|
DUAN LING-YU等: "Fast MPEG-CDVS Encoder With GPU-CPU Hybrid Computing", 《IEEE TRANSACTIONS ON IMAGE PROCESSING : A PUBLICATION OF THE IEEE SIGNAL PROCESSING SOCIETY》 * |
LING-YU DUAN等: "verview of the MPEG-CDVS Standard", 《IEEE TRANSACTIONS ON IMAGE PROCESSING : A PUBLICATION OF THE IEEE SIGNAL PROCESSING SOCIETY》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112001837B (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11550627B2 (en) | Hardware accelerated dynamic work creation on a graphics processing unit | |
US7650601B2 (en) | Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment | |
US8963933B2 (en) | Method for urgency-based preemption of a process | |
CN109144710B (zh) | 资源调度方法、装置及计算机可读存储介质 | |
CN105579961A (zh) | 数据处理系统 | |
US10242420B2 (en) | Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta | |
US10402223B1 (en) | Scheduling hardware resources for offloading functions in a heterogeneous computing system | |
JP6336399B2 (ja) | マルチスレッドコンピューティング | |
CN108984317B (zh) | 进程间通信ipc的实现方法和装置 | |
US9703603B1 (en) | System and method for executing accelerator call | |
US10248456B2 (en) | Method and system for providing stack memory management in real-time operating systems | |
US9286114B2 (en) | System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same | |
CN114168301A (zh) | 线程调度方法、处理器以及电子装置 | |
US20240045718A1 (en) | Fine-grained conditional dispatching | |
CN112001837B (zh) | Cdvs多进程驱动方法、装置、电子设备及存储介质 | |
CN113656188A (zh) | 用于使用虚拟分区分配存储单元的部分的方法和分配器 | |
CN113051049A (zh) | 任务调度系统、方法、电子设备及可读存储介质 | |
US9268601B2 (en) | API for launching work on a processor | |
WO2023044877A1 (zh) | 一种渲染任务处理方法、装置、电子设备及存储介质 | |
CN115509704A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
CN109408407B (zh) | 显示内存的分配方法和装置 | |
US6920513B2 (en) | Bus management techniques | |
CN114035847A (zh) | 用于并行执行核心程序的方法和装置 | |
CN115004154A (zh) | Simd处理器中的指令级上下文切换 |
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 |