CN114327900A - 一种管理双缓冲技术中线程调用防止内存泄漏的方法 - Google Patents
一种管理双缓冲技术中线程调用防止内存泄漏的方法 Download PDFInfo
- Publication number
- CN114327900A CN114327900A CN202111655133.9A CN202111655133A CN114327900A CN 114327900 A CN114327900 A CN 114327900A CN 202111655133 A CN202111655133 A CN 202111655133A CN 114327900 A CN114327900 A CN 114327900A
- Authority
- CN
- China
- Prior art keywords
- frame
- thread
- memory
- surfaceview
- double
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000005516 engineering process Methods 0.000 title claims abstract description 10
- 238000009877 rendering Methods 0.000 claims abstract description 26
- 230000008569 process Effects 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 14
- 230000007246 mechanism Effects 0.000 claims abstract description 6
- 238000004458 analytical method Methods 0.000 claims description 8
- 230000000694 effects Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 4
- 238000004806 packaging method and process Methods 0.000 abstract description 3
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000004064 recycling Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000003973 paint Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241000251468 Actinopterygii Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种管理双缓冲技术中线程调用防止内存泄漏的方法,本方案基于SurfaceView对预加载媒体流文件通过双缓冲的机制来显示帧图像,当包含SurfaceView子集下的活动页产生渲染事件时,使用HandlerThread对线程资源挂载请求进行performTraversals封装处理。在执行的过程中,请求WindowManagerService服务切换不同线程关联,同时通过一系列的回调函数来让嵌入在窗口里面的SurfaceView对资源管理达到最大限度释放,同时自动回收暴露出来的线程任务。达到解析大型MKV等格式的视频文件或者3D资源时流畅不卡屏以及音画同步的目的。
Description
技术领域
本发明涉及计算机图形图像及基于Android操作系统下图形渲染领域,具体涉及一种管理双缓冲技术中线程调用防止内存泄漏的方法。
背景技术
当今互联网浪潮下,带动了无数PC端与移动端智能应用的产业突飞猛进,其中游戏产业及视频编解码技术的迅速崛起,更是对硬件及软件的渲染算法产生巨大的考验。在影视产业的飞速发展下,基于多音轨多画面混合MKV格式文件的诞生,及3D编码处理技术的成熟,早期MP4等基础流已经无法满足人们的基本视觉需求,如何保证更高效率的完成解码任务成了一个重要课题。而在游戏产业,现如今随着游戏引擎的日新月异与不断升级,开发者利用引擎开发商提供给游戏开发商的SDK开发套件结合自己建立的模型、动画以及画面效果进行呈现时,逐渐暴露出某些系统层管理底层的桥接组件出现严重性能问题,尤其是在手持设备端,基于Android层的音视频解码或者Unity3D游戏产品一方面解决广大视频游戏爱好者的巨大需求,一方面也在应用系统层资源时存在严重渲染机制下的延迟卡顿甚至黑屏、内存不足产生的ANR一系列的优化问题。
发明内容
为了解决上述技术问题,本发明提供了一种管理双缓冲技术中线程调用防止内存泄漏的方法,采用本方法后用户在使用基础配置下运行与设备CPU/GPU性能耗费相当的内存、运存对等的视频解码(比如主流上下左右3D光栅、蓝绿模式MKV视频文件)及基于Unity3D大中型手游作品过程中,不会产生音画不同步及OOM黑屏卡顿解码错误等故障。
为了达到上述技术效果,本发明提供了如下技术方案:
一种管理双缓冲技术中线程调用防止内存泄漏的方法,包括避免双缓冲服务里逐帧分析OOM及基础视频解码内存泄漏两大核心应用场景;
(1)双缓冲机制下逐帧OOM现象管理原生加载区处理过程包括:
①计算和渲染两个过程,CPU先计算出这一帧的图像数据并写入内存,然后调用OpenGL命令将内存中数据渲染成图像存放在GPU Buffer中,显示设备每隔一定时间从Buffer中获取图像并显示;
②自定义View通过重载onMeasure()、onLayout()、onDraw()来定义帧内容及帧刷新频率,将计算帧数据放到独立的线程中进行,并使用自定义SurfaceView的模版关联onCanvas MotionEvent进行重刷;
③使用HandlerThread作为独立帧绘制线程,通过与其绑定的Handler方便地实现“每隔一段时间刷新”,监听SurfaceView被销毁时调用HandlerThread.quit()来结束线程执行的逻辑,并释放宿主Activity位于栈顶TaskList下内存资源占用;
(2)帧索引解析回收帧动画渲染处理过程包括:
①运用DrawRunnable.run()模版方法模式自定义绘制核心算法驱动,并定义成两个抽象方法析构其中帧绘制逻辑的具体实现,供子类super回传当前帧顺序及上下文;
②自定义特定FrameSurfaceView组件对象,并继承自BaseSurfaceView,复用基类的绘制框架算法,将绘制内容逐帧写入CanvasTaskList,并最终生成一张Bitmap,该Bitmap对象资源id通过setBitmaps()传递进来,绘制一帧解析一张,并将结果保存于中间栈列表内,与不同索引下Temp对象形成地址对应;
③保证所有绘制任务内的子任务在每一帧绘制完毕后,调用Bitmap.recycle()释放图片Temp产生的native内存并去除java堆中图片像素数据的引用,保证当GC发生时,图片像素数据可以及时被回收;
④将Bitmap的解析参数inBitmap设置为已经成功解析的Bitmap对象以实现复用,以自定义的时间跨度下重新播放多次帧动画,内存中Bitmap数量逐次增加,从首部索引下Canvas任务栈中分配的内存地址中清除首帧,释放其内存占用,在FrameSurfaceView生命周期结束时手动调用recycle()回收。
本发明针对游戏及音视频编解码过程中SurfaceView重绘布局下主线程中刷新View的线程流调管理,可划分为避免双缓冲服务里逐帧分析OOM及基础视频解码内存泄漏两大核心应用场景。中心驱动力可针对surfaceCreated的生命周期内做run回调,对CanvasEventCode做分拣判断,对Canvas临时对象做lockCanvas校验并将结果及时回传holder进行二次onDraw处理。同步线程内可sendMessage内使用unlockCanvasAndPost内置Api对canvas对象进行释放,并将surfaceDestroyed生命周期的销毁状态标记为活跃态,避免视图RootView产生死循环挂载。而在帧动画产生大量的中间文件处理不及时导致音画不同步时,设备CPU采用逐帧写入内存的过程中,算法模块使用HandlerThread代替传统Thread,然后后续调用OpenGL命令将内存中数据渲染成图像存放在GPU Buffer中,显示设备每隔一定时间从Buffer中获取图像并显示。
本方案基于SurfaceView对预加载媒体流文件通过双缓冲的机制来显示帧图像,当包含SurfaceView子集下的活动页产生渲染事件时,使用HandlerThread对线程资源挂载请求进行performTraversals封装处理。在执行的过程中,请求WindowManagerService服务切换不同线程关联,同时通过一系列的回调函数来让嵌入在窗口里面的SurfaceView对资源管理达到最大限度释放,同时自动回收暴露出来的线程任务。达到解析大型MKV等格式的视频文件或者3D资源时流畅不卡屏以及音画同步的目的。
与现有技术相比,本发明具有如下有益效果:1、解决移动设备等终端解码大型3D资源、MKV及AVI、高帧率制式视频时不会产生音画不同步的明显跳帧问题;2、解码当前视频进入其他应用,重新唤起surfaceview活动视窗进程不会被系统因为内存不足而杀死服务;3、使用Thread管理应用线程可实现统一回收及全局释放,不会产生漏网之鱼而导致内存堆积产生应用崩溃等现象。
附图说明
图1为SurfaceView宿主窗口产生渲染事件时线程流调图;
图2为原生逐帧解码Canvas事件ViewTree资源使用过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行进一步的解释和说明。
实施例1
本实施例提供一种管理双缓冲技术中线程调用防止内存泄漏的方法,包括避免双缓冲服务里逐帧分析OOM及基础视频解码内存泄漏两大核心应用场景;具体包括以下步骤:
(1)双缓冲机制下逐帧OOM现象管理原生加载区:
①自定义SurfaceView模板,创建DEFAULT_FRAME_DURATION_MILLISECOND属性参数,记录计算帧数据的线程行为,将此参数的value设定为负值,避免在后续帧推进演算过程中产生越界异常,将此属性保存于frameDuration中,控制帧刷新频率,同时将此频率同步于canvas及isAlive中。记录画布行为及激活状态,如果是非活跃态,要将画布内容回收。此时创建BaseSurfaceView模板父类,接收传递来自视频第三方url页面下的上下文Context对象,并将该对象通过super耦合至下级所有关联子类,但是要注意,这里我们要自定义此模板的init事件,否则无法做到控制帧渲染线程流调,在此init动作区块中我们获取SurfaceView当前的getHolder对象捕获成功即可addCallback,使用this指针传递并保存此上下文记录,使用setBackgroundTransparent()设置透明背景,避免帧动画内存溢出时黑屏背景而阻塞帧绘制递归执行。在设置监听完毕之后,使用PixelFormat.TRANSLUCENT常量控制将当前holder setFormat动作指定为setZOrderOnTop时间去执行。此事件接收一个真值,保证逐帧渲染过程中背景图层对算法中间参数产生的抢占资源及bundle传递的混淆干扰;
②针对①里面对holder索引的一系列设置,此时的帧渲染器基本处于就绪态,如果直接执行原生绘制,在父级Framework层将无法及时获悉当前资源内存耗费情况,我们使用自定义View的策略建立DrawThread,首先使用基础SurfaceViewThread声明一段线程管理堆栈,将此栈handlerThread.start()任务启动至上层,调用其getLooper方法进入任务循环态,每次循环将执行handler.post最新的DrawRunnable时钟任务,此任务需要自己创建,使用implements父级Runable任务接口类,封装拦截其run回调函数,根据①中得到的isAlive状态值判断是抛出当前帧绘制线程还是接受下一帧执行:
1)isAlive为真值:我们使用getHolder捕获并锁定getHolder().lockCanvas(),并声明中间temp线程的canvas对象,捕获成功便赋值给当前canvas对象,结束之后使用此对象初始化onFrameDraw先执行绘制一帧,之后释放此对象占用资源,进入下一个线程池;
2)isAlive为假值:如果判定了当前holder对象处于睡眠状态,则判定当前帧渲染内存耗费过大,此时在步骤1)中生成的canvas对象要注意重新初始化,同时调用getHolder().unlockCanvasAndPost方法解除当前canvas指向的下一帧在内存管理器中的索引位置,避免引起抢占资源而绘制黑屏;
③如果②中完成的首帧绘制任务能顺利进入下一个时钟循环,则进行onFrameDrawFinish()进行手动终结,并再次唤醒自定义的drawRunable接口任务进入postDelayed进行延迟发送,此次延迟使用的是当前this指针,不会产生上下文为null的情况,将①中提到的刷新帧频率与this指针一起绑定到handlerThread对象中,不停的将自己推送到绘制线程的消息队列以实现帧刷新,这也是依附于HandlerThread父类而作为子对象进行独立帧绘制线程时方便与其绑定的Handler实现间隔刷新的目的。而在同步刷新的过程中,此对象也要super一个自身的onDestroy方法,保证在用户发起主任务切换及后台挂起等行为时Surface被销毁的时候可以方便的调用HandlerThread.quit()来结束线程执行的逻辑。上述单帧时钟任务循环的过程中,通过时钟内联DrawRunnable.run()运用模版方法模式定义绘制算法框架,其中帧绘制逻辑的具体实现,我们要定义两个抽象方法,推迟到子类中实现,因为绘制的东西是多样的,不乏包括游戏、三维模型、视频解码等图形图像canvas事件,使用BaseSurfaceView的子类FrameSurfaceView保证了不同刷新率及holder类型下的图像得以成功初始化帧渲染任务及后期渲染结算。
(2)帧索引解析回收帧动画渲染处理过程:
①上面阐述了使用DrawRunnable父类模版自定义我们自己的逐帧解码渲染算法,此核心内容是要求定义抽象方法析构其中帧绘制逻辑供子类super回传当前帧顺序及上下文,具体实现如下:
1)定义抽象事件函数getBitmapOption,使用INVALID_BITMAP_INDEX属性常量,记录帧图片对应下的索引位置,但是在循环位图生成任务前要使用Integer.MAX_VALUE最大值初始化此常量,避免帧序列产生错位解码,建立frameBitmap帧对象及其对应索引bitmapIndex,使用INVALID_BITMAP_INDEX初始化其配置。建立Paint对象发起BitmapFactory.Options配置任务,此任务完成帧图片原始大小srcRect及帧图片目标大小dstRect的渲染控制,防止在下一个线程Looper的时候获取到null配置而默认使用父级窗口渲染帧画面而抛出扰乱性Exception,注意此目标大小携带封装defaultWidth及defaultHeight尺寸配置属性;
2)配置完成之后,根据1)步骤下建立的Options参数携带情况,我们自定义setCustomDuration间隔方法,用来接收观察者Observer线程池流调中post的间隔时间,但是此时间只记录系统间隔,而无法关联帧解析,我们建立frameDuration整型参数,使用处理器传递的duration与当前bitmaps的帧序列空间尺寸做除法运算,便可得出每次循环间隔时钟对应的帧序列绘制差值frameDuration,最后执行setFrameDuration将得到的差值传入,用资源管理对象进行任务校验,判断当前帧绘制解析进度,完成监督资源溢出或者停滞阻塞等异常状况。
②等待①中的配置定义及参数定义准备就绪,我们将canvas循环过程中系统内存资源中间数据temp通过getBitmapsList转化为序列对象,用bitmaps表示,此对象支持类型强转,可匹配为List的泛型T对象,并将T值设定为整型Integer即可,保证为一个帧序列输入流对象,将此泛型对象bitmaps通过setBitmaps设置为监听耦合工具对象,此时要注意校验此对象的合法性及存在性,如果检测bitmaps为null空数据流,或者其上下文索引关联错误,则及时发起主动阻塞命令,防止将重复或者错误位图渲染数据存储于缓存记录中。同时,即使校验判定当前bitmaps边界存在,也要使用基于当前上下文context内部的this指针指向的bitmaps的地址单元,进行二次赋值,才能将循环解析时钟任务里的bitmaps转化为我们前端需要自行控制的序列流,另外要注意默认情况下,计算第一帧图片的原始大小即可,即使用get方法将bistmaps的首对象序列流值域取出并通过getBitmapDimension方法进行赋值,此方法同样接收一个Integer类型的序列索引,此时我们再次声明创建BitmapFactory.Options配置对象,将其承载的inJustDecodeBounds属性设定为真,方便下一步调用decodeResource方法指定this指针指向的getResourece资源地址进行二次配置重定向而发生的阻塞式越界。最后将临时配置对象options的输出宽高outWidth、outHeight赋值于默认配置的defaultWidth与defaultHeight,使用默认帧控件大小,新建矩形视窗任务得到srcRect,并重新执行requestLayout进行视图的重定向渲染;
③在保证①及②里面的帧序列子循环任务顺利进行而不会抛出异常的情况下,要及时对缓存中间数据进行接收,接收方式即为默认配置下的目标帧对象dstRect,使用默认尺寸对其调用set写入尺寸变化过程,这样每循环一帧,相邻两帧序列的线程池完成无缝交互,不再是断层式的线程重复调用,而是使用前者的数据进行后者的索引,进行有基础的super.onLayout回调管理,会大大缩减对内存资源的重复占用与不合理的浪费。在相邻帧图层完成线程交互传递之后,系统是无法回收自定义的管理策略的,我们要使用onFrameDrawFinish生命回调方法进行主动回收。保证所有绘制任务内的子任务在每一帧绘制完毕后释放图片Temp产生的脏数据,主要回收对象为最终帧图片frameBitmap,我们将其置为null对象同时执行此对象内置recycle方法进行循环回收。此循环使用整倍数于系统渲染时钟的间隔策略,做到了梯度级别的同步,保证前面帧序列结束的子线程任务能释放一部分资源给自己的SurfaceView自身优化消耗,另一部分给下一个帧序列内存占用优化。最大限度的避免内存浪费甚至OOM的情况;
④在③中释放掉frameBitmap之后,Bitmap的解析参数设置为已经成功解析的历史对象以实现复用。在进行下一帧序列任务时要注意,绘制一帧前需要先清画布,否则所有帧都叠在一起同时显示,使用clearCanvas将历史canvas进行清除,当然,如果此渲染任务已经发起并没有即使阻塞,则拉取isStart状态记录做主动校验,如果为非真状态,则直接返回上一个线程池末尾,此时我们还留有默认配置对象optios记录下的所有参数设置,所以无需重新拉取bitmaps序列流的索引来创建对象重复挤占内存资源。而如果任务处于刚刚结束状态,我们也要主动使用isFinish方法将当前渲染状态进行更换锁死,然后才能执行drawOneFrame及onFrameAnimationEnd驱动循环往下进行。判定是否结束的方法依赖于当前bitmaps的索引bitmapIndex,与序列数组的长度做判断,如果索引位置不小于序列单元长度,则意味着此任务已经刚好执行完毕。可以直接做decodeOriginBitmap处理,处理方式同样为getResource或许上下文闲置内存资源进行BitmapUtil处理,此处处理的结果为最大化利用线程池空闲资源的frameBitmap对象,最后drawBitmap将上述frameBitmap/srcRect/dstRect/paint配置给SurfaceView层级的canvas画布进行显示,此时bitmapIndex会自生长进入下一个循环而无需手动增长定位,这样即可保证相邻帧序列的优化与渲染同步执行。而不会出现抢占内存而黑屏卡顿的问题,但是要注意结尾清除this指针记录的当前canvas绑定的paint,此对象很容易疏忽而忘记释放,使用PorterDuff.Mode.CLEAR及Mode.SRC的模式执行setXfermode回调方法,保证下一个循环开始前Paint对象还能继续被Canvas跟踪而避免绘制对象的引用为空而阻塞。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (1)
1.一种管理双缓冲技术中线程调用防止内存泄漏的方法,其特征在于,包括避免双缓冲服务里逐帧分析OOM及基础视频解码内存泄漏两大核心应用场景;
(1)双缓冲机制下逐帧OOM现象管理原生加载区处理过程包括:
①计算和渲染两个过程,CPU先计算出这一帧的图像数据并写入内存,然后调用OpenGL命令将内存中数据渲染成图像存放在GPU Buffer中,显示设备每隔一定时间从Buffer中获取图像并显示;
②自定义View通过重载onMeasure()、onLayout()、onDraw()来定义帧内容及帧刷新频率,将计算帧数据放到独立的线程中进行,并使用自定义SurfaceView的模版关联onCanvas MotionEvent进行重刷;
③使用HandlerThread作为独立帧绘制线程,通过与其绑定的Handler方便地实现“每隔一段时间刷新”,监听SurfaceView被销毁时调用HandlerThread.quit()来结束线程执行的逻辑,并释放宿主Activity位于栈顶TaskList下内存资源占用;
(2)帧索引解析回收帧动画渲染处理过程包括:
①运用DrawRunnable.run()模版方法模式自定义绘制核心算法驱动,并定义成两个抽象方法析构其中帧绘制逻辑的具体实现,供子类super回传当前帧顺序及上下文;
②自定义特定FrameSurfaceView组件对象,并继承自BaseSurfaceView,复用基类的绘制框架算法,将绘制内容逐帧写入CanvasTaskList,并最终生成一张Bitmap,该Bitmap对象资源id通过setBitmaps()传递进来,绘制一帧解析一张,并将结果保存于中间栈列表内,与不同索引下Temp对象形成地址对应;
③保证所有绘制任务内的子任务在每一帧绘制完毕后,调用Bitmap.recycle()释放图片Temp产生的native内存并去除java堆中图片像素数据的引用,保证当GC发生时,图片像素数据可以及时被回收;
④将Bitmap的解析参数inBitmap设置为已经成功解析的Bitmap对象以实现复用,以自定义的时间跨度下重新播放多次帧动画,内存中Bitmap数量逐次增加,从首部索引下Canvas任务栈中分配的内存地址中清除首帧,释放其内存占用,在FrameSurfaceView生命周期结束时手动调用recycle()回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111655133.9A CN114327900B (zh) | 2021-12-30 | 2021-12-30 | 一种管理双缓冲技术中线程调用防止内存泄漏的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111655133.9A CN114327900B (zh) | 2021-12-30 | 2021-12-30 | 一种管理双缓冲技术中线程调用防止内存泄漏的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327900A true CN114327900A (zh) | 2022-04-12 |
CN114327900B CN114327900B (zh) | 2024-07-23 |
Family
ID=81019314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111655133.9A Active CN114327900B (zh) | 2021-12-30 | 2021-12-30 | 一种管理双缓冲技术中线程调用防止内存泄漏的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327900B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277924A (zh) * | 2022-07-26 | 2022-11-01 | 努比亚技术有限公司 | 一种动态锁屏显示控制方法、设备及计算机可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106340055A (zh) * | 2016-08-19 | 2017-01-18 | 江苏电力信息技术有限公司 | 一种基于多线程的OpenGL快速绘制方法 |
CN106934757A (zh) * | 2017-01-26 | 2017-07-07 | 北京中科神探科技有限公司 | 基于cuda的监控视频前景提取加速方法 |
CN109697101A (zh) * | 2019-01-16 | 2019-04-30 | 广州虎牙信息科技有限公司 | 图片显示方法、装置、计算机设备及存储介质 |
CN109947569A (zh) * | 2019-03-15 | 2019-06-28 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN110727520A (zh) * | 2019-10-23 | 2020-01-24 | 四川长虹电器股份有限公司 | 一种优化Android帧动画的实现方法 |
CN111125248A (zh) * | 2019-12-18 | 2020-05-08 | 写逸网络科技(上海)有限公司 | 一种大数据存储解析查询系统 |
CN111427779A (zh) * | 2020-03-18 | 2020-07-17 | 深圳市乐宜科技有限公司 | 应用程序的卡顿信息采集方法和装置 |
CN112241932A (zh) * | 2019-07-19 | 2021-01-19 | 华为技术有限公司 | 一种图片处理方法及装置 |
CN112631801A (zh) * | 2020-12-22 | 2021-04-09 | 无锡江南计算技术研究所 | 一种遥感影像智能模型分布式并行方法 |
US20210326175A1 (en) * | 2020-04-16 | 2021-10-21 | Tom Herbert | Parallelism in serial pipeline processing |
-
2021
- 2021-12-30 CN CN202111655133.9A patent/CN114327900B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106340055A (zh) * | 2016-08-19 | 2017-01-18 | 江苏电力信息技术有限公司 | 一种基于多线程的OpenGL快速绘制方法 |
CN106934757A (zh) * | 2017-01-26 | 2017-07-07 | 北京中科神探科技有限公司 | 基于cuda的监控视频前景提取加速方法 |
CN109697101A (zh) * | 2019-01-16 | 2019-04-30 | 广州虎牙信息科技有限公司 | 图片显示方法、装置、计算机设备及存储介质 |
CN109947569A (zh) * | 2019-03-15 | 2019-06-28 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN112241932A (zh) * | 2019-07-19 | 2021-01-19 | 华为技术有限公司 | 一种图片处理方法及装置 |
CN110727520A (zh) * | 2019-10-23 | 2020-01-24 | 四川长虹电器股份有限公司 | 一种优化Android帧动画的实现方法 |
CN111125248A (zh) * | 2019-12-18 | 2020-05-08 | 写逸网络科技(上海)有限公司 | 一种大数据存储解析查询系统 |
CN111427779A (zh) * | 2020-03-18 | 2020-07-17 | 深圳市乐宜科技有限公司 | 应用程序的卡顿信息采集方法和装置 |
US20210326175A1 (en) * | 2020-04-16 | 2021-10-21 | Tom Herbert | Parallelism in serial pipeline processing |
CN112631801A (zh) * | 2020-12-22 | 2021-04-09 | 无锡江南计算技术研究所 | 一种遥感影像智能模型分布式并行方法 |
Non-Patent Citations (3)
Title |
---|
UY NGUYEN: ""Analyzing Bug Reports by Topic Mining in Software Evolution"", 《2021 IEEE 45TH ANNUAL COMPUTERS, SOFTWARE, AND APPLICATIONS CONFERENCE(COMPSAC)》, 9 September 2021 (2021-09-09), pages 1645 - 1652 * |
刘佳林: ""基于RTSP协议的iOS视频播放器的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2019, 15 May 2019 (2019-05-15), pages 138 - 1115 * |
码客说: ""WPF内存优化,防止内存泄漏"", Retrieved from the Internet <URL:《https://www.psvmc.cn/article/2020-08-17-wpf-memory.html》> * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277924A (zh) * | 2022-07-26 | 2022-11-01 | 努比亚技术有限公司 | 一种动态锁屏显示控制方法、设备及计算机可读存储介质 |
CN115277924B (zh) * | 2022-07-26 | 2024-05-17 | 努比亚技术有限公司 | 一种动态锁屏显示控制方法、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114327900B (zh) | 2024-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11363091B2 (en) | System and method for capturing interaction data relating to a host application | |
CN103562862B (zh) | 全局合成系统 | |
RU2420806C2 (ru) | Плавные переходы между анимациями | |
US5646866A (en) | Preloading files for subsequent processing | |
EP1708079A1 (en) | System for efficient remote projection of rich interactive user interfaces | |
KR20140075786A (ko) | 이동 단말에서 애플리케이션 스크린의 스크린샷을 취하는 방법 및 장치 | |
WO2022048098A1 (zh) | 一种基于多显卡的游戏画面渲染方法和系统 | |
US11443408B2 (en) | Systems and methods to process electronic images to provide improved visualization and rendering of histopathology slides | |
US6392665B1 (en) | Capture mechanism for computer generated motion video images | |
CN107122176B (zh) | 一种图形绘制方法及装置 | |
US20130063445A1 (en) | Composition System Thread | |
CN114968152B (zh) | 减少virtio-gpu额外性能损耗的方法 | |
CN114327900A (zh) | 一种管理双缓冲技术中线程调用防止内存泄漏的方法 | |
CN112929740A (zh) | 一种渲染视频流的方法、装置、存储介质及设备 | |
CN113473226B (zh) | 提高视频渲染效率的方法、装置、计算机设备及存储介质 | |
CN116546228B (zh) | 用于虚拟场景的推流方法、装置、设备及存储介质 | |
CN110572715B (zh) | 一种解决Android TV播放webp卡顿的方法 | |
US11543945B1 (en) | Accurate local depiction of preview of a program window included in a remote graphical desktop | |
CN115981822A (zh) | 任务处理方法、介质、装置和计算设备 | |
US20050021552A1 (en) | Video playback image processing | |
CN112749033B (zh) | 一种显示设备及系统通知调用方法 | |
CN114359020A (zh) | 图像处理方法、装置、存储介质及电子设备 | |
CN106648634A (zh) | 一种屏幕截屏的方法及装置 | |
CN112667410A (zh) | 跨进程通讯方法、终端及计算机可读存储介质 | |
CN114025218B (zh) | 一种卡片式视频交互方法、装置、设备及存储介质 |
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 |