CN113347432B - 一种视频编解码方法、装置、计算机设备及存储介质 - Google Patents
一种视频编解码方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113347432B CN113347432B CN202110585935.0A CN202110585935A CN113347432B CN 113347432 B CN113347432 B CN 113347432B CN 202110585935 A CN202110585935 A CN 202110585935A CN 113347432 B CN113347432 B CN 113347432B
- Authority
- CN
- China
- Prior art keywords
- gpu
- frame
- target
- gpu frame
- queue
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明实施例公开了提供了一种视频编解码方法、装置、计算机设备及存储介质,该方法包括:创建用于存储多个GPU帧的GPU帧池;对压缩的视频数据进行解码操作,并从GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;从第一队列中获取第一目标GPU帧,并对第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;从第二队列中获取第二目标GPU帧,并对第二目标GPU帧进行编码操作,在完成编码操作后释放第二目标GPU帧。本发明实施例通过创建GPU帧池,可以在低显存的硬件环境下,降低视频编解码中的显存占用,还可以降低GPU占用率,从而提高视频编解码效率。
Description
技术领域
本发明实施例涉及视频编解码技术领域,特别涉及一种视频编解码方法、装置、计算机设备及存储介质。
背景技术
随着视频解码硬件的能力提升,各种视频编辑软件以及视频转换软件,在视频解码与视频编码中都越来越依赖硬件进行性能提升。目前GPU(graphics processing unit,图形处理器,又称显示核心、视觉处理器、显示芯片)视频解码已经成为主流,尽管更多的视频解码方法在视频转换过程中,特别是在GPU全流程中,引入GPU编码,但是这些视频解码方法都没有较好地解决GPU低占用帧缓存的问题。
当前视频转换中,通常都是通过在转换中间调度环节进行视频帧的缓存来提升转换速度,但是当遇到显存不足时,就会导致频繁的显存与内存交换,进而影响转换速度。
而现有技术中为了提高转换速度,一般会采用空间换时间的策略。即将部分待编码帧进行缓存,这虽然会在一定程度上提高转换速度,但是需要硬件拥有比较大的存储空间。并且现有的视频转换方法无法满足小显存空间的转换速度提升要求,特别是在4K/8K视频越来越普及的情况下,高分辨率的视频帧进行缓存时,需进行帧拷贝,该行为将会消耗运算资源,更加地增加时间成本。
发明内容
本发明实施例提供了一种视频编解码方法、装置、计算机设备及存储介质,旨在降低视频编解码中的显存占用以及提高视频编解码的效率。
第一方面,本发明实施例提供了一种视频编解码方法,包括:
创建用于存储多个GPU帧的GPU帧池;
对压缩的视频数据进行解码操作,并从所述GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;
从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;
从所述第二队列中获取所述第二目标GPU帧,并对所述第二目标GPU帧进行编码操作,在完成编码操作后释放所述第二目标GPU帧。
进一步的,还包括:
对每一GPU帧分别设置一计数器,当任一GPU帧被从所述GPU帧池调取时,将对应的计数器的数值加1;以及当被调取的GPU帧未被使用时,则将对应的计数器的数值减1。
进一步的,所述创建用于存储多个GPU帧的GPU帧池,包括:
当GPU硬件种类属于Windows***时,则创建D3D设备对象,并基于所述D3D设备对象创建不同种类的GPU资源;
当GPU硬件种类属于Mac***时,则通过Mac***的API接口创建PixelBuffer资源。
进一步的,所述将解码的视频数据保存至调取的GPU帧中,包括:
判断GPU硬件解码器是否支持外部分配GPU帧;
若所述GPU硬件解码器支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据直接保存至所述GPU帧中;
若所述GPU硬件解码器不支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据复制保存至所述GPU帧中。
进一步的,所述从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中,包括:
对所述第一目标GPU帧进行图像算法处理时,判断是否需要采用临时帧对图像算法处理结果进行存储;
若判定需要采用临时帧对图像算法处理结果进行存储,则从所述GPU帧池中调取另一GPU帧作为临时GPU帧,并将图像算法处理结果存储至所述临时GPU帧中,然后将所述临时GPU帧作为所述第二目标GPU帧推送至所述第二队列;
若判定不需要采用临时帧对图像算法处理结果进行存储,则将图像算法处理结果存储于所述第一目标GPU帧,得到所述第二目标GPU帧,并将所述第二目标GPU帧推送至所述第二队列。
进一步的,所述从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中,还包括:
当将所述临时GPU帧作为所述第二目标GPU帧时,则将所述第一目标GPU帧的计数器的数值减1,并判断所述第一目标GPU帧的计数器的数值是否为0;
若所述第一目标GPU帧的计数器的数值为0,则将所述第一目标GPU帧返回至所述GPU帧池中;若所述第一目标GPU帧的计数器的数值不为0,则将所述第一目标GPU帧推送至所述第一队列;
当将所述第一目标GPU帧作为所述第二目标GPU帧时,则不对所述第一目标GPU帧的计数器的数值进行加减处理。
进一步的,所述解码操作、图像算法处理和编码操作以多线程并行处理的方式运行。
第二方面,本发明实施例提供了一种视频编解码装置,包括:
帧池创建单元,用于创建用于存储多个GPU帧的GPU帧池;
解码单元,用于对压缩的视频数据进行解码操作,并从所述GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;
图像算法处理单元,用于从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;
编码单元,用于从所述第二队列中获取所述第二目标GPU帧,并对所述第二目标GPU帧进行编码操作,在完成编码操作后释放所述第二目标GPU帧。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的视频编解码方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的视频编解码方法。
本发明实施例提供了一种视频编解码方法、装置、计算机设备及存储介质,该方法包括:创建用于存储多个GPU帧的GPU帧池;对压缩的视频数据进行解码操作,并从所述GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;从所述第二队列中获取所述第二目标GPU帧,并对所述第二目标GPU帧进行编码操作,在完成编码操作后释放所述第二目标GPU帧。本发明实施例通过创建所述GPU帧池,可以在低显存的硬件环境下,可以降低视频编解码中的显存占用,还可以降低GPU占用率,从而提高GPU转换效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种视频编解码方法的流程示意图;
图2为本发明实施例提供的一种视频编解码方法的子流程示意图;
图3为本发明实施例提供的一种视频编解码装置的示意性框图;
图4为本发明实施例提供的一种视频编解码方法的子示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面请参见图1,图1为本发明实施例提供的一种视频编解码方法的流程示意图,具体包括:步骤S101~S104。
S101、创建用于存储多个GPU帧的GPU帧池;
S102、对压缩的视频数据进行解码操作,并从所述GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;
S103、从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;
S104、从所述第二队列中获取所述第二目标GPU帧,并对所述第二目标GPU帧进行编码操作,在完成编码操作后释放所述第二目标GPU帧。
本实施例中,首先创建用于保存管理已分配的GPU帧的GPU帧池,并使GPU帧池中的每一GPU帧可以拥有对GPU帧池对象的引用。在对压缩的视频进行编解码操作时,即进行GPU转换时,从GPU帧池中调取一GPU帧,用于存储解码操作后得到的视频数据,并将存储有解码的视频数据的GPU帧池作为第一目标GPU帧池推送至预先设置的第一队列中,以在进行图像算法处理过程中从第一队列中获取第一目标GPU。将存储有图像算法处理结果的第二目标GPU帧推送至预先设置的第二队列中,然后对第二目标GPU帧进行编码操作,以完成视频编解码操作。
本实施通过创建GPU帧池,可以在低显存的硬件环境下,降低视频帧的缓存数量,进而显著降低运算资源的消耗,以及减少不同存储设备间的数据切换,从而提升对于视频数据的编码转换速度。本实施例既可以降低GPU转换中的显存占用,也可以减少GPU帧的复制频率,如此可以降低GPU占用率,从而提高GPU转换的效率。可以理解的是,本实施例中的GPU转换即是指视频编解码。
在一实施例中,所述视频编解码方法还包括:
对每一GPU帧分别设置一计数器,当任一GPU帧被从所述GPU帧池调取时,将对应的计数器的数值加1;以及当被调取的GPU帧未被使用时,则将对应的计数器的数值减1。
本实施例中,对GPU帧池中的每一GPU帧设置对应的计数器,用于统计该GPU帧被外部持有的使用者数目,即在解码操作、图像算法处理和编码操作中的使用次数。举例来说,Kn为GPU帧An对应的计数器,如果An从GPU帧池中取出,则An的对应的Kn的数值就加1。进一步的,如果有多个外部使用者,则每个使用者都会将Kn的数值加1,例如图像算法处理和编码操作均在使用An,则Kn的数值一共会加2。当外部使用者不在使用时,则将An对应的Kn的数值减1。而当Kn的值为0时,则将对应的GPU帧An放回至GPU帧池中。
在一实施例中,所述步骤S101包括:
当GPU硬件种类属于Windows***时,则创建D3D设备对象,并基于所述D3D设备对象创建不同种类的GPU资源;
当GPU硬件种类属于Mac***时,则通过Mac***的API接口创建PixelBuffer资源。
本实施例中,考虑到不同***依赖的硬件不同,且同样的硬件,其驱动提供的能力也不同,因此根据GPU硬件种类创建相适应的GPU资源,从而可以依据当前硬件驱动提供的能力,为用户提供不同的GPU帧池,用户可以自行切换不同的GPU帧池,使视频编解码更加灵活。
具体的,在分配GPU帧前,需要检测GPU设备能力,并根据GPU设备能力初始化GPU帧分配对象。根据操作***的类型,分配GPU资源,如果是Windows***,则创建D3D设备对象(即本机显卡对应的抽象对象),并通过该D3D设备对象创建不同种类的GPU资源,包括surface资源和texture资源等;如果是Mac***,则直接通过Mac***的API接口创建PixelBuffer资源。在分配好GPU资源后,将其放置于GPU帧池中进行管理。
在一实施例中,所述步骤S102包括:
判断GPU硬件解码器是否支持外部分配GPU帧;
若所述GPU硬件解码器支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据直接保存至所述GPU帧中;
若所述GPU硬件解码器不支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据复制保存至所述GPU帧中。
本实施例中,在解码操作过程中,根据GPU硬件解码能力的特性,对解码的视频数据进行不同的处理,并将处理后的视频数据保存于GPU帧中,使GPU帧经过后续的图像算法处理和编码操作后,并在不使用该GPU帧时,可以将其释放回GPU帧池中,以供下一次使用,从而不需要频繁的分配帧,减少资源占用,提高GPU转换效率。
具体来说,如果GPU硬件解码器支持外部分配GPU帧,则可以从GPU帧池中提取GPU帧,并将解码后的视频数据直接存储于提取的GPU帧。同时,将提取的GPU帧的计数器的数值加1。如果GPU硬件解码器不支持外部分配GPU帧,则从GPU帧池中提取GPU帧,同时则将解码的视频数据复制到提取的GPU帧中,同样的,将提取的GPU帧的计数器的数值加1。
例如,对于Intel显卡和NVIDIA显卡,二者均支持外部分配GPU帧,因此在对压缩的视频数据解码后,可以将解码的视频数据直接存储于调取的GPU帧中。而对于AMD显卡,其不支持外部分配GPU帧,因此需要将解码后的视频数据复制存储于调取的GPU帧中。
在一实施例中,如图2所示,所述步骤S103包括:步骤S201~S203。
S201、对所述第一目标GPU帧进行图像算法处理时,判断是否需要采用临时帧对图像算法处理结果进行存储;
S202、若判定需要采用临时帧对图像算法处理结果进行存储,则从所述GPU帧池中调取另一GPU帧作为临时GPU帧,并将图像算法处理结果存储至所述临时GPU帧中,然后将所述临时GPU帧作为所述第二目标GPU帧推送至所述第二队列;
S203、若判定不需要采用临时帧对图像算法处理结果进行存储,则将图像算法处理结果存储于所述第一目标GPU帧,得到所述第二目标GPU帧,并将第二目标GPU帧推送至所述第二队列。
本实施例中,在进行图像算法处理过程中,由于第一目标GPU帧可能空间已满或者其他原因,需要另外一GPU帧对图像算法处理结果进行保存,所以此时可以从GPU帧池中临时调取一GPU帧来存储图像算法处理结果,并将存储有图像算法处理结果的临时GPU帧作为第二目标GPU帧。当然,在第一目标GPU帧可以存储图像算法处理结果时,则不需要从GPU帧池中调取临时GPU帧,而是直接将图像算法处理结果存储在第一目标GPU帧中,并作为第二目标GPU帧。
同时,不论是将临时GPU帧作为第二目标GPU帧,还是将第一目标GPU帧作为第二目标GPU帧,最后都是将第二目标GPU帧推送至所述第二队列中,从而对第二队列中的第二目标GPU帧进行编码操作。
另外,本实施例所述的图像算法处理可以指视频缩放、帧率变换等算法。其中,视频缩放算法便需要从GPU帧池中另取一临时GPU帧,用于存储视频缩放后的结果;而对于帧率变换算法,则不需要采用临时GPU帧,而是直接将帧率变换结果存储至第一目标GPU帧中即可。
在一实施例中,所述步骤S103还包括:
当将所述临时GPU帧作为所述第二目标GPU帧时,则将所述第一目标GPU帧的计数器的数值减1,并判断所述第一目标GPU帧的计数器的数值是否为0;
若所述第一目标GPU帧的计数器的数值为0,则将所述第一目标GPU帧返回至所述GPU帧池中;若所述第一目标GPU帧的计数器的数值不为0,则将所述第一目标GPU帧推送至所述第一队列;
当将所述第一目标GPU帧作为所述第二目标GPU帧时,则不对所述第一目标GPU帧的计数器的数值进行加减处理。
本实施例中,如果利用临时GPU帧存储图像算法处理结果,则无需将第一目标GPU帧推送至第二队列中。此时,将第一目标GPU帧的计数器的数值减1,表明第一目标GPU帧没有在使用。进一步的,如果减1后的第一目标GPU帧的计数器的数值为0,则可以将第一目标GPU帧释放回GPU帧池中;如果减1后的第一目标GPU帧的计数器的数值不为0,则无需将第一目标GPU帧释放回GPU帧池中,也就是说,在后续对其他GPU帧进行处理的过程中,可能会使用到第一目标GPU帧中存储的解码的视频数据。
如果没有利用临时GPU帧存储图像算法处理结果,则不需要将第一目标GPU帧的计数器的数值减1,同时将存储有图像算法处理结果的第一目标GPU帧作为第二目标GPU帧,并推送至第二队列中。
在一实施例中,所述解码操作、图像算法处理和编码操作以多线程并行处理的方式运行。
本实施例中,通过多线程并行处理的方式运行解码操作、图像算法处理以及编码操作,也就是说,将解码操作、图像算法处理以及编码操作分别看做是解码线程、图像算法处理线程和编码线程,并且,解码线程、图像算法处理线程和编码线程可以并行处理。例如,在利用解码线程进行视频解码时,从GPU帧池中调取GPU帧A1,在将解码的视频数据保存至A1后,将A1推送至第一队列中,然后由图像算法处理线程从第一队列中调取A1进行图像算法处理,而解码线程则可以在将A1推送至第一队列后,转而去对下一GPU帧(例如A2)进行处理。另外,在其他实施例中,还可以采用多条解码线程、多条图像算法处理线程和多条编码线程的方式进行多线程并行化运行。
本发明实施例还提供了一种视频编解码装置300。图3为本发明实施例提供的一种视频编解码装置300的示意性框图,该装置300包括:
帧池创建单元301,用于创建用于存储多个GPU帧的GPU帧池;
解码单元302,用于对压缩的视频数据进行解码操作,并从所述GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;
图像算法处理单元303,用于从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;
编码单元304,用于从所述第二队列中获取所述第二目标GPU帧,并对所述第二目标GPU帧进行编码操作,在完成编码操作后释放所述第二目标GPU帧。
在一实施例中,所述视频编解码装置300还包括:
计数器设置单元,用于对每一GPU帧分别设置一计数器,当任一GPU帧被从所述GPU帧池调取时,将对应的计数器的数值加1;以及当被调取的GPU帧未被使用时,则将对应的计数器的数值减1。
在一实施例中,所述帧池创建单元301包括:
第一资源创建单元,用于当GPU硬件种类属于Windows***时,则创建D3D设备对象,并基于所述D3D设备对象创建不同种类的GPU资源;
第二资源创建单元,用于当GPU硬件种类属于Mac***时,则通过Mac***的API接口创建PixelBuffer资源。
在一实施例中,所述解码单元302包括:
第一判断单元,用于判断GPU硬件解码器是否支持外部分配GPU帧;
直接保存单元,用于若所述GPU硬件解码器支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据直接保存至所述GPU帧中;
复制保存单元,用于若所述GPU硬件解码器不支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据复制保存至所述GPU帧中。
在一实施例中,如图4所示,所述图像算法处理单元303包括:
第二判断单元401,用于对所述第一目标GPU帧进行图像算法处理时,判断是否需要采用临时帧对图像算法处理结果进行存储;
第一结果存储单元402,用于若判定需要采用临时帧对图像算法处理结果进行存储,则从所述GPU帧池中调取另一GPU帧作为临时GPU帧,并将图像算法处理结果存储至所述临时GPU帧中,然后将所述临时GPU帧作为所述第二目标GPU帧推送至所述第二队列;
第二结果存储单元403,用于若判定不需要采用临时帧对图像算法处理结果进行存储,则将图像算法处理结果存储于所述第一目标GPU帧,得到所述第二目标GPU帧,并将所述第二目标GPU帧推送至所述第二队列。
在一实施例中,所述图像算法处理单元303还包括:
减1单元,用于当将所述临时GPU帧作为所述第二目标GPU帧时,则将所述第一目标GPU帧的计数器的数值减1,并判断所述第一目标GPU帧的计数器的数值是否为0;
返回或推送单元,用于若所述第一目标GPU帧的计数器的数值为0,则将所述第一目标GPU帧返回至所述GPU帧池中;若所述第一目标GPU帧的计数器的数值不为0,则将所述第一目标GPU帧推送至所述第一队列;
加减处理单元,用于当将所述第一目标GPU帧作为所述第二目标GPU帧时,则不对所述第一目标GPU帧的计数器的数值进行加减处理。
在一实施例中,所述解码操作、图像算法处理和编码操作以多线程并行处理的方式运行。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机设备,可以包括存储器和处理器,存储器中存有计算机程序,处理器调用存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然计算机设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的***而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (9)
1.一种视频编解码方法,其特征在于,包括:
创建用于存储多个GPU帧的GPU帧池;
对压缩的视频数据进行解码操作,并从所述GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;
从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;
从所述第二队列中获取所述第二目标GPU帧,并对所述第二目标GPU帧进行编码操作,在完成编码操作后释放所述第二目标GPU帧;
所述将解码的视频数据保存至调取的GPU帧中,包括:
判断GPU硬件解码器是否支持外部分配GPU帧;
若所述GPU硬件解码器支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据直接保存至所述GPU帧中;
若所述GPU硬件解码器不支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据复制保存至所述GPU帧中。
2.根据权利要求1所述的视频编解码方法,其特征在于,还包括:
对每一GPU帧分别设置一计数器,当任一GPU帧被从所述GPU帧池调取时,将对应的计数器的数值加1;以及当被调取的GPU帧未被使用时,则将对应的计数器的数值减1。
3.根据权利要求1所述的视频编解码方法,其特征在于,所述创建用于存储多个GPU帧的GPU帧池,包括:
当GPU硬件种类属于Windows***时,则创建D3D设备对象,并基于所述D3D设备对象创建不同种类的GPU资源;
当GPU硬件种类属于Mac***时,则通过Mac***的API接口创建PixelBuffer资源。
4.根据权利要求2所述的视频编解码方法,其特征在于,所述从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中,包括:
对所述第一目标GPU帧进行图像算法处理时,判断是否需要采用临时帧对图像算法处理结果进行存储;
若判定需要采用临时帧对图像算法处理结果进行存储,则从所述GPU帧池中调取另一GPU帧作为临时GPU帧,并将图像算法处理结果存储至所述临时GPU帧中,然后将所述临时GPU帧作为所述第二目标GPU帧推送至所述第二队列;
若判定不需要采用临时帧对图像算法处理结果进行存储,则将图像算法处理结果存储于所述第一目标GPU帧,得到所述第二目标GPU帧,并将所述第二目标GPU帧推送至所述第二队列。
5.根据权利要求4所述的视频编解码方法,其特征在于,所述从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中,还包括:
当将所述临时GPU帧作为所述第二目标GPU帧时,则将所述第一目标GPU帧的计数器的数值减1,并判断所述第一目标GPU帧的计数器的数值是否为0;
若所述第一目标GPU帧的计数器的数值为0,则将所述第一目标GPU帧返回至所述GPU帧池中;若所述第一目标GPU帧的计数器的数值不为0,则将所述第一目标GPU帧推送至所述第一队列;
当将所述第一目标GPU帧作为所述第二目标GPU帧时,则不对所述第一目标GPU帧的计数器的数值进行加减处理。
6.根据权利要求1所述的视频编解码方法,其特征在于,所述解码操作、图像算法处理和编码操作以多线程并行处理的方式运行。
7.一种视频编解码装置,其特征在于,包括:
帧池创建单元,用于创建用于存储多个GPU帧的GPU帧池;
解码单元,用于对压缩的视频数据进行解码操作,并从所述GPU帧池调取GPU帧,将解码的视频数据保存至调取的GPU帧中,得到第一目标GPU帧,然后推送至预设的第一队列中;
图像算法处理单元,用于从所述第一队列中获取所述第一目标GPU帧,并对所述第一目标GPU帧进行图像算法处理,得到第二目标GPU帧,然后推送至预设的第二队列中;
编码单元,用于从所述第二队列中获取所述第二目标GPU帧,并对所述第二目标GPU帧进行编码操作,在完成编码操作后释放所述第二目标GPU帧;
所述解码单元包括:
第一判断单元,用于判断GPU硬件解码器是否支持外部分配GPU帧;
直接保存单元,用于若所述GPU硬件解码器支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据直接保存至所述GPU帧中;
复制保存单元,用于若所述GPU硬件解码器不支持外部分配GPU帧,则从所述GPU帧池调取GPU帧,并将解码的视频数据复制保存至所述GPU帧中。
8.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的视频编解码方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的视频编解码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110585935.0A CN113347432B (zh) | 2021-05-27 | 2021-05-27 | 一种视频编解码方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110585935.0A CN113347432B (zh) | 2021-05-27 | 2021-05-27 | 一种视频编解码方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113347432A CN113347432A (zh) | 2021-09-03 |
CN113347432B true CN113347432B (zh) | 2023-03-28 |
Family
ID=77471792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110585935.0A Active CN113347432B (zh) | 2021-05-27 | 2021-05-27 | 一种视频编解码方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113347432B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107613407A (zh) * | 2017-08-18 | 2018-01-19 | 珠海市君天电子科技有限公司 | 一种视频显示控制方法、装置、电子设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7817900B2 (en) * | 2005-06-30 | 2010-10-19 | Microsoft Corporation | GPU timeline with render-ahead queue |
US8233527B2 (en) * | 2007-05-11 | 2012-07-31 | Advanced Micro Devices, Inc. | Software video transcoder with GPU acceleration |
CN103716535B (zh) * | 2013-12-12 | 2018-04-27 | 乐视致新电子科技(天津)有限公司 | 一种切换拍摄模式方法和电子设备 |
CN105163127B (zh) * | 2015-09-07 | 2018-06-05 | 浙江宇视科技有限公司 | 视频分析方法及装置 |
CN105740061B (zh) * | 2016-01-29 | 2019-05-31 | 腾讯科技(深圳)有限公司 | 一种gpu资源重建的方法、用户设备及*** |
CN106878736A (zh) * | 2017-03-17 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种视频编解码的方法与装置 |
CN110149552A (zh) * | 2019-05-08 | 2019-08-20 | 百度在线网络技术(北京)有限公司 | 一种视频流帧数据的处理方法及终端 |
-
2021
- 2021-05-27 CN CN202110585935.0A patent/CN113347432B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107613407A (zh) * | 2017-08-18 | 2018-01-19 | 珠海市君天电子科技有限公司 | 一种视频显示控制方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113347432A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8031766B2 (en) | Performance adaptive video encoding with concurrent decoding | |
CN106980579B (zh) | 一种图片加载方法及装置 | |
JP5545288B2 (ja) | タスク割当装置、タスク割当方法、及び、タスク割当プログラム | |
US8660191B2 (en) | Software video decoder display buffer underflow prediction and recovery | |
US9395796B2 (en) | Dynamic graphics geometry preprocessing frequency scaling and prediction of performance gain | |
CN101908035A (zh) | 视频编解码方法、gpu及其与cpu的交互方法及*** | |
CN110737606B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN111683189B (zh) | 图片压缩方法、***、终端、及存储介质 | |
US7408989B2 (en) | Method of video encoding using windows and system thereof | |
US9514715B2 (en) | Graphics voltage reduction for load line optimization | |
KR101656881B1 (ko) | 데이터 처리 장치 및 방법 | |
CN109886861B (zh) | 一种高效率图档格式heif图像加载方法及装置 | |
CN114866563A (zh) | 扩容方法、装置、***和存储介质 | |
CN113347432B (zh) | 一种视频编解码方法、装置、计算机设备及存储介质 | |
CN109640094B (zh) | 视频解码方法、装置以及电子设备 | |
CN115587049A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN110851433A (zh) | 键值存储***键优化方法、存储介质、电子设备及*** | |
CN112492379B (zh) | 音视频多路并发解码方法、装置和计算机设备 | |
CN114610578A (zh) | 一种资源状态管理方法、装置、电子设备及存储介质 | |
CN113852816A (zh) | 视频帧处理方法、装置、计算机设备和可读存储介质 | |
CN113014921A (zh) | 调度编码器的方法、装置及设备 | |
CN116132719A (zh) | 视频处理方法、装置、电子设备及可读存储介质 | |
CN113794887A (zh) | 一种游戏引擎中视频编码的方法及相关设备 | |
CN109996075B (zh) | 一种图像解码方法及解码器 | |
CN113032062A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211122 Address after: 518000 1001, block D, building 5, software industry base, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Applicant after: Shenzhen Wanxing Software Co.,Ltd. Address before: 518000 1002, block D, building 5, software industry base, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN SIBO TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |