CN115914822A - 一种摄像头共享方法 - Google Patents
一种摄像头共享方法 Download PDFInfo
- Publication number
- CN115914822A CN115914822A CN202310017424.8A CN202310017424A CN115914822A CN 115914822 A CN115914822 A CN 115914822A CN 202310017424 A CN202310017424 A CN 202310017424A CN 115914822 A CN115914822 A CN 115914822A
- Authority
- CN
- China
- Prior art keywords
- camera
- equipment
- cache
- image data
- parameters
- 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
Landscapes
- Studio Devices (AREA)
Abstract
本发明公开了一种摄像头共享方法,通过建立摄像头对象列表并为摄像头对象建立主从关系,采用主对象的摄像头参数设置摄像头设备并直接使用图像数据,从设备根据自身的摄像头参数与摄像头设备参数的区别对图像数据进行处理,采用处理后的图像数据输出至应用,从而实现了多应用或同一应用不同进程对摄像头设备的共享。
Description
技术领域
本发明属于计算机系统应用开发技术领域,具体涉及一种摄像头共享方法。
背景技术
为了提供更丰富的用户体验,桌面系统普遍提供了摄像头的开发支持。例如,在Linux系统中关于使用摄像头的代码开发过程包括:打开摄像头设备、设置摄像头的图像格式等硬件参数、申请用于存放图像数据的缓存、将缓存映射到进程空间、将缓存添加到队列中、开启摄像头采集、从采集队列中取出图像数据后进行图像渲染。由此可见,桌面系统中每次使用摄像头的操作都会对摄像头的硬件参数进行配置,并且为摄像头创建的缓存不支持在多进程共享,这会导致仅允许单一应用在某一时刻使用同一摄像头。
目前很多应用都存在使用摄像头的需求,并且在用户实际过程中也存在同时打开多款应用或在同一应用中多次打开摄像头的使用方式,尤其是采用安卓兼容环境使用安卓应用的情况下安卓兼容环境也存在使用桌面系统摄像头的需要,然而采用现有的摄像头使用开发方式无法处理多应用同时并发使用摄像头时产生的冲突问题,影响用户体验。
发明内容
有鉴于此,本发明提供了一种摄像头共享方法,能够实现不同应用或同一应用的不同进程对摄像头设备的共享。
本发明提供的一种摄像头共享方法,具体包括以下步骤:
步骤1、桌面系统中创建设备对象列表和设备参数列表,其中,设备对象列表用于保存当前处于打开状态的摄像头设备对象,设备参数列表用于保存物理摄像头的实际参数;
步骤2、当应用打开摄像头时,桌面系统为该应用创建摄像头设备对象,若此时设备对象列表为空,则将当前摄像头设备对象加入设备对象列表,并设置为主对象,再执行标准摄像头设备对象的初始化流程;否则将当前摄像头设备对象加入设备对象列表,再按照设备分配方式启动主从对象计算,根据计算结果设置摄像头设备对象为主对象或从对象,再执行标准摄像头设备对象的初始化流程;其中,主从对象计算用于确定新的主对象及设备参数列表;
步骤3、当摄像头设备对象设置摄像头参数时,若该摄像头设备对象为主对象则将该摄像头设备对象的摄像头参数保存在设备参数列表中,并用设备参数列表设置摄像头;否则判断当前的设备参数列表中是否存在与该摄像头设备对象的摄像头参数类型相同的设备参数,如果存在则保持原设备参数,如果不存在则将对应的摄像头参数增加到设备参数列表中;
当摄像头设备对象为图像数据分配缓存时,若摄像头设备对象为首次执行分配缓存操作则按照设备分配方式启动主从对象计算得到新的主对象后执行标准的缓存分配流程,若不是首次执行则执行标准的缓存分配流程;
当摄像头设备对象读取图像数据时,判断此时是否处于主从对象计算过程中,如果是则等待主从对象重新计算完毕后再根据自身要求的摄像头参数与设备参数列表中参数的区别对图像数据进行处理,并将处理得到的图像数据作为读取到的图像数据;如果不是则根据自身要求的摄像头参数与设备参数列表中参数的区别对图像数据进行处理,并将处理得到的图像数据作为读取到的图像数据;
步骤4、当应用关闭摄像头时,若设备对象列表中仅存在当前应用的摄像头设备对象,则销毁与其相关的所有缓存,关闭摄像头及摄像头设备对象,清空设备对象列表;若当前应用的摄像头设备对象为从对象,则销毁与其相关的所有缓存,关闭摄像头设备对象,将摄像头设备对象从设备对象列表中删除;若当前应用的摄像头设备对象为主对象,则销毁与其相关的所有缓存,关闭摄像头设备对象,将摄像头设备对象从设备对象列表中删除,按照设备分配方式启动主从对象计算得到新的主对象。
进一步地,所述主从对象计算的过程中还包括,在确定新的主对象及设备参数列表的同时,根据摄像头参数与设备参数列表的区别为主对象或从对象建立对应的图像处理缓存,图像处理缓存包括转换缓存、缩放缓存、裁剪缓存及旋转缓存,其中,转换缓存用于存储经过格式转换的图像数据,缩放缓存用于存储经过缩放处理的图像数据,裁剪缓存用于存储经过裁剪处理的图像数据,旋转缓存用于存储经过旋转处理的图像数据。
进一步地,所述步骤3当摄像头设备对象设置摄像头参数时还包括,从对象设置摄像头参数时,若当前的设备参数列表中存在与从对象的摄像头参数类型相同的设备参数,则采用其中包含数据量最大的属性设置设备参数并为主对象分配对应的缓存。
进一步地,所述步骤3当摄像头设备对象读取图像数据时还包括,判断是否处于主从对象计算过程中,如果是则等待主从对象重新计算完毕后再执行步骤3.1,如果不是则执行步骤3.1;
步骤3.1、若该摄像头设备对象为主对象,则判断当前是否存在转换缓存,如果存在则在读取主对象的图像数据后,根据主对象相关摄像头参数与设备参数列表中的摄像头参数的差别对图像数据进行图像格式转换,并将转换后的图像保存在转换缓存中,再将转换缓存返回给应用;如果不存在则读取摄像头的图像数据并返回给应用;
若该摄像头设备对象为从对象,则读取主对象的图像数据,若存在与该对象相关的缩放缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行缩放处理,将缩放结果保存在缩放缓存中,再将缩放缓存返回给应用;若存在与该对象相关的裁剪缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行裁剪处理,将裁剪结果保存在裁剪缓存中,再将裁剪缓存返回给应用;若存在与该对象相关的旋转缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行旋转处理,将旋转结果保存在旋转缓存中,再将旋转缓存返回给应用;若存在与该对象相关的转换缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行格式转换处理,将转换结果保存在转换缓存中,再将转换缓存返回给应用。
进一步地,所述设备分配方式为选择设备对象列表中具有最大分辨率摄像头参数的摄像头对象作为主对象。
进一步地,所述主从对象计算的过程中还包括,在确定了新的主对象后,遍历设备对象列表中所有摄像头设备对象的摄像头参数,若其中存在取值为非压缩格式的图像格式参数,则将设备参数列表中图像格式参数设置为非压缩格式。
进一步地,所述步骤3当摄像头设备对象设置摄像头参数时还包括,当主对象设置摄像头参数时,遍历设备对象列表中所有摄像头设备对象的摄像头参数,若其中存在取值为非压缩格式的图像格式参数,则将设备参数列表中图像格式参数设置为非压缩格式后,将其自身的其他摄像头参数保存在设备参数列表中,并用设备参数列表设置摄像头。
有益效果:
1、本发明通过建立摄像头对象列表并为摄像头对象建立主从关系,采用主对象的摄像头参数设置摄像头设备并直接使用图像数据,从设备根据自身的摄像头参数与摄像头设备参数的区别对图像数据进行处理,采用处理后的图像数据输出至应用,从而实现了多应用或同一应用不同进程对摄像头设备的共享。
2、本发明通过根据摄像头对象自身摄像头参数的区别为摄像头对象构建对应的多级图像处理缓存,当摄像头获取图像数据后,各摄像头对象根据各自的图像处理缓存完成图像处理操作得到符合自身摄像头参数要求的图像数据,显著减低了共享数据的复制开销,进一步提高了执行效率。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供的一种摄像头共享方法,其核心思想是:当摄像头被第一次打开时,将创建的摄像头设备对象作为主对象;当摄像头被再次打开或主对象被关闭时,按照设备分配方式在当前所有摄像头设备对象中重新选定主对象,除主对象之外的其他摄像头设备对象均为从对象,若重新选定的主对象与当前的主对象不同则重新执行打开摄像头的操作,并以新选定的主对象的参数设置摄像头;当从对象获取摄像头的图像数据时,根据从对象的参数设置将图像数据格式转换后得到的符合自身参数要求的图像数据,再将其传递至从对象对应的应用;主对象获取摄像头的图像数据后直接将图像数据传递至主对象对应的应用。
本发明提供的一种摄像头共享方法,具体包括以下步骤:
步骤1、桌面系统中创建设备对象列表和设备参数列表,其中,设备对象列表用于保存当前处于打开状态的摄像头设备对象,设备参数列表用于保存物理摄像头的实际参数。
步骤2、当应用打开摄像头时,桌面系统为该应用创建摄像头设备对象,若此时设备对象列表为空,则将当前摄像头设备对象加入设备对象列表,并设置为主对象,再执行标准摄像头设备对象的初始化流程;否则将当前摄像头设备对象加入设备对象列表,再按照设备分配方式启动主从对象计算,根据计算结果设置摄像头设备对象为主对象或从对象,再执行标准摄像头设备对象的初始化流程。其中,主从对象计算用于确定新的主对象及设备参数列表。
为了进一步降低从设备复制图像数据的性能开销,主从对象计算过程中,在确定新的主对象及设备参数列表的同时,根据摄像头参数与设备参数列表的区别为主、从对象建立对应的图像处理缓存,图像处理缓存包括转换缓存、缩放缓存、裁剪缓存及旋转缓存,其中,转换缓存用于存储经过格式转换的图像数据,缩放缓存用于存储经过缩放处理的图像数据,裁剪缓存用于存储经过裁剪处理的图像数据,旋转缓存用于存储经过旋转处理的图像数据。
步骤3、当摄像头设备对象设置摄像头参数时,若该摄像头设备对象为主对象则将该摄像头设备对象的摄像头参数保存在设备参数列表中,并用设备参数列表设置摄像头;否则判断当前的设备参数列表中是否存在与该摄像头设备对象的摄像头参数类型相同的设备参数,如果存在则保持原设备参数,如果不存在则将对应的摄像头参数增加到设备参数列表中;
当摄像头设备对象为图像数据分配缓存时,若摄像头设备对象为首次执行分配缓存操作则按照设备分配方式启动主从对象计算得到新的主对象后执行标准的缓存分配流程,若不是首次执行分配缓存操作则执行标准的缓存分配流程;
当摄像头设备对象读取图像数据时,判断此时是否处于主从对象计算过程中,如果是则等待主从对象重新计算完毕后再根据自身要求的摄像头参数与设备参数列表中参数的区别对图像数据进行处理,并将处理得到的图像数据作为读取到的图像数据;如果不是则根据自身要求的摄像头参数与设备参数列表中参数的区别对图像数据进行处理,并将处理得到的图像数据作为读取到的图像数据。
进一步地,从对象设置摄像头参数时,若当前的设备参数列表中存在与从对象的摄像头参数类型相同的设备参数,则采用其中包含数据量最大的属性设置设备参数并为主对象分配对应的缓存。其中,包含数据量最大的属性,例如,图像格式属性为未压缩格式、分辨率属性的最大值,这些属性对应的图像的数据量均为当前的最大值。
进一步地,当采用图像处理缓存时,摄像头设备对象读取图像数据时,判断此时是否处于主从对象计算过程中,如果是则等待主从对象重新计算完毕后再执行步骤3.1,如果不是则执行步骤3.1。
步骤3.1、若该摄像头设备对象为主对象,则判断当前是否存在转换缓存,如果存在则在读取主对象的图像数据后,根据主对象相关摄像头参数与设备参数列表中的摄像头参数的差别对图像数据进行图像格式转换,并将转换后的图像保存在转换缓存中,再将转换缓存返回给应用;如果不存在则读取摄像头的图像数据并返回给应用;
若该摄像头设备对象为从对象,则读取主对象的图像数据,若存在与该对象相关的缩放缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行缩放处理,将缩放结果保存在缩放缓存中,再将缩放缓存返回给应用;若存在与该对象相关的裁剪缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行裁剪处理,将裁剪结果保存在裁剪缓存中,再将裁剪缓存返回给应用;若存在与该对象相关的旋转缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行旋转处理,将旋转结果保存在旋转缓存中,再将旋转缓存返回给应用;若存在与该对象相关的转换缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行格式转换处理,将转换结果保存在转换缓存中,再将转换缓存返回给应用。
步骤4、当应用关闭摄像头时,若此时设备对象列表中仅存在当前应用的摄像头设备对象,则销毁与其相关的所有缓存,关闭摄像头及摄像头设备对象,清空设备对象列表;若当前应用的摄像头设备对象为从对象,则销毁与其相关的所有缓存,关闭摄像头设备对象,将摄像头设备对象从设备对象列表中删除;若当前应用的摄像头设备对象为主对象,则销毁与其相关的所有缓存,关闭摄像头设备对象,将摄像头设备对象从设备对象列表中删除,按照设备分配方式启动主从对象计算得到新的主对象。
上述设备分配方式可为选择设备对象列表中具有最大分辨率摄像头参数的摄像头对象作为主对象。
为了进一步地提高图像数据读取效率,本发明的主从对象计算过程中在确定了新的主对象后,遍历设备对象列表中所有摄像头设备对象的摄像头参数,若其中存在取值为非压缩格式的图像格式参数,则将设备参数列表中图像格式参数设置为非压缩格式。
此外,当主对象设置摄像头参数时,遍历设备对象列表中所有摄像头设备对象的摄像头参数,若其中存在取值为非压缩格式的图像格式参数,则将设备参数列表中图像格式参数设置为非压缩格式后,将其自身的其他摄像头参数保存在设备参数列表中,并用设备参数列表设置摄像头。
实施例:
本实施例中采用本发明提供的一种摄像头共享方法通过修改V4L2驱动程序在Linux系统中实现了摄像头设备的共享,具体包括以下步骤:
S1、修改V4L2驱动,在其中新增以下成员变量:
1、设备对象列表成员变量video_device_list,用于保存当前打开的所有摄像头设备对象video_device;
2、设备参数列表成员变量device_param_list,设备参数列表中的成员为某个video_param,例如图像格式、分辨率、方向等,用于保存当前物理摄像头实际配置的参数;
3、主从对象计算过程标识成员变量is_reschedule_master_video_device,主从对象计算过程标识为布尔型变量,取值为TRUE表示正在计算主设备,取值为FALSE表示主设备计算完毕;
4、修改video_device数据结构,使其支持主从设备标识和多级动态帧缓存,具体包括以下过程:增加整型布尔型成员变量is_master,取值为零表示从设备,取值为非零表示主设备;增加链表成员变量video_buffer_list,每个变量为vb2_buf,vb2_buf是V4L2驱动中已有的管理video buffer的数据结构;增加摄像头参数列表param_list,每个成员是video_param,例如图像格式、分辨率、方向等。
S2、修改驱动的打开处理函数,即v4l2_open函数,以支持多个进程同时打开,用户态程序调用open函数打开设备文件“/dev/videoX”将触发该操作,具体包括以下步骤:
初始化过程创建一个新的video_device数据结构,将video_buffer_list和param_list初始化为空;再次执行操作时,如video_device_list不为空,则将is_master设置为0;执行V4L2的标准video_device标准初始化操作;返回video_device。
S3、修改驱动的ioctl处理函数,即v4l2_ctrl_handler函数,以处理应用通过ioctl设置摄像头参数,具体过程如下:
当ioctl命令为设置摄像头参数时,若当前操作的video_device对象是主对象,即is_master不为零时,则调用v4l2_ctrl_handler中的标准处理流程设置摄像头参数;若当前操作的是从对象,则判断该从对象的参数类型是否已存在于param_list中,如不存在则增加video_param并将ioctl设置的参数加入到param_list中,如存在则直接修改已存在的video_param,且不执行后续的标准操作,即不去真正设置摄像头参数;
当ioctl命令为应用提供Buffer准备从设备获取视频帧时,若为当前video_device第一次执行VIDOC_QBUF,则执行S5后,执行标准流程;否则直接执行标准流程;
当ioctl命令为从设备读取视频帧时,若is_reschedule_master_video_device为TRUE,则挂起请求直到is_reschedule_master_video_device变为FALSE;若当前操作的video_device对象是主对象(is_master不为零),且存在image_buffer,则获取摄像头的视频帧(记为master_video_buffer)后,执行相应的图像转换操作,将结果保存在image_buffer中,并将image_buffer返回给应用;若为主对象但不存在image_buffer,则执行标准的读取视频帧的操作,并将视频帧返回给应用;若当前操作的video_device对象是从对象,则获取主对象的视频帧(记为master_video_buffer),将类型为vb2_buf指针的变量current_video_buffer指向master_video_buffer,此时,如存在resize_buffer,则根据分辨率差异,对master_video_buffer执行缩放,将结果保存在resize_buffer,并将current_video_buffer指向resize_buffer;如存在crop_buffer,则执行相应裁剪操作,将结果保存在crop_buffer,并将current_video_buffer指向crop_buffer;如存在rotation_buffer,则执行相应旋转操作,将结果保存在rotation_buffer,并将current_video_buffer指向rotation_buffer;如存在image_buffer,则执行相应的图像转换操作,将结果保存在image_buffer,并将current_video_buffer指向image_buffer;最后将current_video_buffer指向的帧缓存的内容返回给应用。
S4、修改驱动的close处理函数,即v4l2_close函数,以处理应用通过close关闭摄像头的操作,具体包括以下步骤:
若video_device_list中仅包含当前拟关闭的video_device,则执行标准的关闭操作,关闭摄像头,并将当前video_device从video_device_list中移除;否则,将当前video_device从video_device_list中移除,若当前video_device为主对象则执行S5后,销毁当前video_device的video_buffer_list中的所有vb2_buf,并关闭当前video_device对象。
S5、主从对象计算,包括以下步骤:
S5.1、遍历当前video_device_list中的所有video_device,查找出分辨率参数最大的video_device,记为master_video_device,如master_video_device和当前的主设备(old_master_video_device)不同,则:
S5.1.1、将is_reschedule_master_video_device设置为TRUE;
S5.1.2、将device_param_list设置为master_video_device的param_list;
S5.1.3、遍历当前video_device_list中的所有video_device,如果存在图像格式参数为非压缩格式(如RGBA8888),则将device_param_list中的图像格式设置为此非压缩格式。
S5.2、将master_video_device的is_master设置为1,其余的video_device(包括old_master_video_device)的is_master均设置为0。
S5.3、关闭old_master_video_device的物理摄像头。
S5.4、打开物理摄像头并将句柄赋值给master_video_device。
S5.5、用device_param_list中的参数重新设置物理摄像头参数。
S5.6、对于每个video_device,执行:
如当前video_device是主设备(is_master为1),且其param_list中的图像格式和真实物理摄像头的参数(device_param_list)中的图像格式不同,则若已存在image_buffer,则销毁image_buffer,构建用于图像格式转换的vb2_buf(记为 image_buffer),并加入到video_buffer_list中;
否则若当前video_device是从设备(is_master为0),则根据当前video_device的参数(param_list)和真实物理摄像头的参数(device_param_list)的差异构建必须的vb2_buf,包括以下步骤:
S5.6.1、销毁video_buffer_list中的所有成员Buffer;
S5.6.2、如分辨率不同,且分辨率比例相同,则构建用于等比缩放的vb2_buf(记为resize_buffer),并加入到video_buffer_list;若分辨率比例不同则构建用于裁剪的vb2_buf(记为 crop_buffer),并加入到video_buffer_list;若裁剪后分辨率仍不同,则构建用于缩放的vb2_buf(记为 resize_buffer),并加入到video_buffer_list;
S5.6.3、如方向不同,则构建用于图像旋转的vb2_buf(记为 rotation_buffer),并加入到video_buffer_list;
S5.6.4、如图像格式不同,则构建用于图像格式转换的vb2_buf(记为 image_buffer),并加入到video_buffer_list。
S5.7、将is_reschedule_master_video_device设置为FALSE。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种摄像头共享方法,其特征在于,具体包括以下步骤:
步骤1、桌面系统中创建设备对象列表和设备参数列表,其中,设备对象列表用于保存当前处于打开状态的摄像头设备对象,设备参数列表用于保存物理摄像头的实际参数;
步骤2、当应用打开摄像头时,桌面系统为该应用创建摄像头设备对象,若此时设备对象列表为空,则将当前摄像头设备对象加入设备对象列表,并设置为主对象,再执行标准摄像头设备对象的初始化流程;否则将当前摄像头设备对象加入设备对象列表,再按照设备分配方式启动主从对象计算,根据计算结果设置摄像头设备对象为主对象或从对象,再执行标准摄像头设备对象的初始化流程;其中,主从对象计算用于确定新的主对象及设备参数列表;
步骤3、当摄像头设备对象设置摄像头参数时,若该摄像头设备对象为主对象则将该摄像头设备对象的摄像头参数保存在设备参数列表中,并用设备参数列表设置摄像头;否则判断当前的设备参数列表中是否存在与该摄像头设备对象的摄像头参数类型相同的设备参数,如果存在则保持原设备参数,如果不存在则将对应的摄像头参数增加到设备参数列表中;
当摄像头设备对象为图像数据分配缓存时,若摄像头设备对象为首次执行分配缓存操作则按照设备分配方式启动主从对象计算得到新的主对象后执行标准的缓存分配流程,若不是首次执行则执行标准的缓存分配流程;
当摄像头设备对象读取图像数据时,判断此时是否处于主从对象计算过程中,如果是则等待主从对象重新计算完毕后再根据自身要求的摄像头参数与设备参数列表中参数的区别对图像数据进行处理,并将处理得到的图像数据作为读取到的图像数据;如果不是则根据自身要求的摄像头参数与设备参数列表中参数的区别对图像数据进行处理,并将处理得到的图像数据作为读取到的图像数据;
步骤4、当应用关闭摄像头时,若设备对象列表中仅存在当前应用的摄像头设备对象,则销毁与其相关的所有缓存,关闭摄像头及摄像头设备对象,清空设备对象列表;若当前应用的摄像头设备对象为从对象,则销毁与其相关的所有缓存,关闭摄像头设备对象,将摄像头设备对象从设备对象列表中删除;若当前应用的摄像头设备对象为主对象,则销毁与其相关的所有缓存,关闭摄像头设备对象,将摄像头设备对象从设备对象列表中删除,按照设备分配方式启动主从对象计算得到新的主对象。
2.根据权利要求1所述的摄像头共享方法,其特征在于,所述主从对象计算的过程中还包括,在确定新的主对象及设备参数列表的同时,根据摄像头参数与设备参数列表的区别为主对象或从对象建立对应的图像处理缓存,图像处理缓存包括转换缓存、缩放缓存、裁剪缓存及旋转缓存,其中,转换缓存用于存储经过格式转换的图像数据,缩放缓存用于存储经过缩放处理的图像数据,裁剪缓存用于存储经过裁剪处理的图像数据,旋转缓存用于存储经过旋转处理的图像数据。
3.根据权利要求1所述的摄像头共享方法,其特征在于,所述步骤3当摄像头设备对象设置摄像头参数时还包括,从对象设置摄像头参数时,若当前的设备参数列表中存在与从对象的摄像头参数类型相同的设备参数,则采用其中包含数据量最大的属性设置设备参数并为主对象分配对应的缓存。
4.根据权利要求2所述的摄像头共享方法,其特征在于,所述步骤3当摄像头设备对象读取图像数据时还包括,判断是否处于主从对象计算过程中,如果是则等待主从对象重新计算完毕后再执行步骤3.1,如果不是则执行步骤3.1;
步骤3.1、若该摄像头设备对象为主对象,则判断当前是否存在转换缓存,如果存在则在读取主对象的图像数据后,根据主对象相关摄像头参数与设备参数列表中的摄像头参数的差别对图像数据进行图像格式转换,并将转换后的图像保存在转换缓存中,再将转换缓存返回给应用;如果不存在则读取摄像头的图像数据并返回给应用;
若该摄像头设备对象为从对象,则读取主对象的图像数据,若存在与该对象相关的缩放缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行缩放处理,将缩放结果保存在缩放缓存中,再将缩放缓存返回给应用;若存在与该对象相关的裁剪缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行裁剪处理,将裁剪结果保存在裁剪缓存中,再将裁剪缓存返回给应用;若存在与该对象相关的旋转缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行旋转处理,将旋转结果保存在旋转缓存中,再将旋转缓存返回给应用;若存在与该对象相关的转换缓存则根据从对象相关摄像头参数与设备参数列表中的摄像头参数差别对图像数据进行格式转换处理,将转换结果保存在转换缓存中,再将转换缓存返回给应用。
5.根据权利要求1所述的摄像头共享方法,其特征在于,所述设备分配方式为选择设备对象列表中具有最大分辨率摄像头参数的摄像头对象作为主对象。
6.根据权利要求1所述的摄像头共享方法,其特征在于,所述主从对象计算的过程中还包括,在确定了新的主对象后,遍历设备对象列表中所有摄像头设备对象的摄像头参数,若其中存在取值为非压缩格式的图像格式参数,则将设备参数列表中图像格式参数设置为非压缩格式。
7.根据权利要求1所述的摄像头共享方法,其特征在于,所述步骤3当摄像头设备对象设置摄像头参数时还包括,当主对象设置摄像头参数时,遍历设备对象列表中所有摄像头设备对象的摄像头参数,若其中存在取值为非压缩格式的图像格式参数,则将设备参数列表中图像格式参数设置为非压缩格式后,将其自身的其他摄像头参数保存在设备参数列表中,并用设备参数列表设置摄像头。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310017424.8A CN115914822B (zh) | 2023-01-06 | 2023-01-06 | 一种摄像头共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310017424.8A CN115914822B (zh) | 2023-01-06 | 2023-01-06 | 一种摄像头共享方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115914822A true CN115914822A (zh) | 2023-04-04 |
CN115914822B CN115914822B (zh) | 2023-04-25 |
Family
ID=85751743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310017424.8A Active CN115914822B (zh) | 2023-01-06 | 2023-01-06 | 一种摄像头共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115914822B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100231754A1 (en) * | 2009-03-11 | 2010-09-16 | Wang Shaolan | Virtual camera for sharing a physical camera |
US20150189171A1 (en) * | 2013-12-30 | 2015-07-02 | Samsung Electronics Co., Ltd. | Method and electronic apparatus for sharing photographing setting values, and sharing system |
CN106412483A (zh) * | 2016-10-28 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种摄像头共享方法及装置 |
CN108810408A (zh) * | 2018-06-04 | 2018-11-13 | 北京图森未来科技有限公司 | 一种摄像头控制方法及装置和系统 |
CN109462726A (zh) * | 2017-09-06 | 2019-03-12 | 比亚迪股份有限公司 | 摄像头的控制方法和装置 |
JP2019047453A (ja) * | 2017-09-07 | 2019-03-22 | ブラザー工業株式会社 | 画像処理プログラムおよび情報処理装置 |
CN112579322A (zh) * | 2020-12-25 | 2021-03-30 | 莜腾(上海)自动化设备科技有限公司 | 多应用共享摄像头的方法、装置及计算机可读存储介质 |
CN113347477A (zh) * | 2021-04-09 | 2021-09-03 | 北京润信恒达科技有限公司 | 一种多应用共享摄像头的方法、装置和系统 |
WO2021244018A1 (zh) * | 2020-06-05 | 2021-12-09 | 惠州视维新技术有限公司 | 一种摄像头共享方法、智能家居控制方法及系统 |
CN114025099A (zh) * | 2021-11-25 | 2022-02-08 | 努比亚技术有限公司 | 一种拍摄图像构图调控方法、设备及计算机可读存储介质 |
CN114302040A (zh) * | 2021-12-24 | 2022-04-08 | 展讯半导体(成都)有限公司 | 多应用共享单一摄像头的方法及相关产品 |
CN115209192A (zh) * | 2022-06-14 | 2022-10-18 | 海信视像科技股份有限公司 | 一种显示设备、智能设备和摄像头共享方法 |
-
2023
- 2023-01-06 CN CN202310017424.8A patent/CN115914822B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100231754A1 (en) * | 2009-03-11 | 2010-09-16 | Wang Shaolan | Virtual camera for sharing a physical camera |
US20150189171A1 (en) * | 2013-12-30 | 2015-07-02 | Samsung Electronics Co., Ltd. | Method and electronic apparatus for sharing photographing setting values, and sharing system |
CN106412483A (zh) * | 2016-10-28 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种摄像头共享方法及装置 |
CN109462726A (zh) * | 2017-09-06 | 2019-03-12 | 比亚迪股份有限公司 | 摄像头的控制方法和装置 |
JP2019047453A (ja) * | 2017-09-07 | 2019-03-22 | ブラザー工業株式会社 | 画像処理プログラムおよび情報処理装置 |
CN108810408A (zh) * | 2018-06-04 | 2018-11-13 | 北京图森未来科技有限公司 | 一种摄像头控制方法及装置和系统 |
WO2021244018A1 (zh) * | 2020-06-05 | 2021-12-09 | 惠州视维新技术有限公司 | 一种摄像头共享方法、智能家居控制方法及系统 |
CN112579322A (zh) * | 2020-12-25 | 2021-03-30 | 莜腾(上海)自动化设备科技有限公司 | 多应用共享摄像头的方法、装置及计算机可读存储介质 |
CN113347477A (zh) * | 2021-04-09 | 2021-09-03 | 北京润信恒达科技有限公司 | 一种多应用共享摄像头的方法、装置和系统 |
CN114025099A (zh) * | 2021-11-25 | 2022-02-08 | 努比亚技术有限公司 | 一种拍摄图像构图调控方法、设备及计算机可读存储介质 |
CN114302040A (zh) * | 2021-12-24 | 2022-04-08 | 展讯半导体(成都)有限公司 | 多应用共享单一摄像头的方法及相关产品 |
CN115209192A (zh) * | 2022-06-14 | 2022-10-18 | 海信视像科技股份有限公司 | 一种显示设备、智能设备和摄像头共享方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115914822B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5842015A (en) | System and method for real-time control of hardware in a multiprocessing environment | |
US5740464A (en) | Architecture for providing input/output operations in a computer system | |
US5263136A (en) | System for managing tiled images using multiple resolutions | |
US6014695A (en) | Computer network system for packet-transferring data between computers, network file server in computer network system and data transferring method thereof | |
US5313581A (en) | System and method for communication between windowing environments | |
US5758182A (en) | DMA controller translates virtual I/O device address received directly from application program command to physical i/o device address of I/O device on device bus | |
US5898441A (en) | Method and apparatus for integrating video capture and monitor | |
US7453473B2 (en) | Method and apparatus for high-performance rendering and hit testing of a window tree | |
US20070011687A1 (en) | Inter-process message passing | |
JP2002502515A (ja) | Guiウインドウに含まれるデータを捕捉し、処理し、ルーティングする装置および方法 | |
US20210049730A1 (en) | Systems and methods for using egl with an opengl api and a vulkan graphics driver | |
US6339427B1 (en) | Graphics display list handler and method | |
JP2002533837A (ja) | エミュレーションタイムとリアルタイム間の同期を維持するシステム及び方法 | |
JPH0954723A (ja) | グラフィックス・エンジンのオフ・スクリーン・メモリを仮想化するための方法及び装置 | |
CN114741081B (zh) | 一种基于异构缓存访问的跨运行环境显示输出共享方法 | |
CN114820272A (zh) | 数据交互的方法、装置、存储介质及电子设备 | |
US6275828B1 (en) | Method of providing persistence to object in C++ object oriented programming system | |
US6518973B1 (en) | Method, system, and computer program product for efficient buffer level management of memory-buffered graphics data | |
KR20080101636A (ko) | 모바일 폰의 두 개의 상이한 프로세서들 간의 파일시스템들을 브릿징하기 위한 시스템 및 방법 | |
CN115914822A (zh) | 一种摄像头共享方法 | |
US5685011A (en) | Apparatus for handling failures to provide a safe address translation in an improved input/output architecture for a computer system | |
CN103843036A (zh) | 描绘控制装置 | |
US20080304770A1 (en) | Method and apparatus for managing image-processing operations | |
EP1492028A1 (en) | Access to shared disk device on storage area network | |
EP0972242B1 (en) | Video device manager |
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 |