CN116418995A - 编解码资源的调度方法及电子设备 - Google Patents
编解码资源的调度方法及电子设备 Download PDFInfo
- Publication number
- CN116418995A CN116418995A CN202111653692.6A CN202111653692A CN116418995A CN 116418995 A CN116418995 A CN 116418995A CN 202111653692 A CN202111653692 A CN 202111653692A CN 116418995 A CN116418995 A CN 116418995A
- Authority
- CN
- China
- Prior art keywords
- decoding
- codec
- coding
- hardware
- service
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 141
- 238000012545 processing Methods 0.000 claims abstract description 76
- 238000004590 computer program Methods 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 16
- 238000007726 management method Methods 0.000 description 94
- 230000008569 process Effects 0.000 description 29
- 230000000875 corresponding effect Effects 0.000 description 28
- 238000004891 communication Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 18
- 238000010295 mobile communication Methods 0.000 description 12
- 230000002159 abnormal effect Effects 0.000 description 10
- 230000005236 sound signal Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003416 augmentation Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005266 casting Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- 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/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供了一种编解码资源的调度方法及电子设备,涉及编解码技术领域。通过本申请方案,当应用视频业务请求编解码处理时,基于本申请提供的宏块能力查询接口,通过本申请提供的编解码管理服务模块查询硬件编解码器的剩余可用资源量,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。根据判断结果调整编解码策略:降低分辨率或码率,降低申请的编解码能力,确保视频业务可以继续执行;或者改变编解码方式,继而申请软件编解码,确保视频业务可以继续执行:或者,若业务方无法降低分辨率或码率,也无法使用软件编解码,则正常终止视频业务,并提示用户,确保应用不崩溃。
Description
技术领域
本申请涉及编解码技术领域,尤其涉及一种编解码资源的调度方法及电子设备。
背景技术
随着电子设备的硬件性能的提升,电子设备可以支持进行视频录制、视频播放、视频编辑、视频内容解析、视频内容提取以及视频投屏等视频业务。
为了能够降低对存储空间的占用以及便于在网络上传输,通常会对视频进行压缩,即视频编码。当电子设备播放视频时,电子设备获取到的视频通常是编码后的视频文件,因此电子设备会对已经编码的视频文件进行解码;然后,视频经过解码后才能被正常播放。目前,可以通过电子设备中的硬编解码器进行视频编码或解码。
然而,当电子设备同时处理多个视频业务时,该多个视频业务均需要占用硬编解码资源进行编码或解码,可能会出现硬编解码资源不足,导致无法进行硬编解码,从而导致视频业务失败,影响用户使用体验。
发明内容
鉴于此,本申请提供一种编解码资源的调度方法及电子设备,能够解决当电子设备同时处理多个业务时由于硬编解码资源不足而导致业务失败或程序异常退出的问题。
第一方面,本申请提供一种编解码资源的调度方法,应用于电子设备,所述电子设备中设置有硬件编解码器,该调度方法可以包括:接收第一业务的编解码请求;获取硬件编解码器的剩余可用资源量;若当第一业务请求的编解码资源量大于所述硬件编解码器的剩余可用资源量时,获取目标编解码策略,该目标编解码策略用于指示降低第一业务的编解码需求或者对所述第一业务进行软件编解码;然后按照该目标编码策略对第一业务进行编解码处理。
通过本申请方案,当应用第一业务请求编解码处理时,基于本申请提供的宏块能力查询接口,通过本申请提供的编解码管理服务模块查询硬件编解码器的剩余可用资源量,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。根据判断结果调整编解码策略:降低分辨率或码率,降低申请的编解码能力,确保第一业务可以继续执行;或者改变编解码方式,继而申请软件编解码,确保第一业务可以继续执行:或者,若业务方无法降低分辨率或码率,也无法使用软件编解码,则正常终止第一业务,并提示用户,确保应用不崩溃。
在一些可能的实现方式中,该目标编解码策略可以包括:调整第一业务的编解码参数,使得第一业务请求的编解码资源量小于或等于硬件编解码器的剩余可用资源量;并按照第一业务的调整后的编解码参数,通过硬件编解码器对第一业务进行编解码处理。其中,第一业务请求的编解码资源量根据第一业务的编解码参数确定。
其中,所述第一业务的编解码参数包括视频分辨率、码率和/或帧率。示例性地,上述调整所述第一业务的编解码参数,包括:降低所述视频分辨率、码率和帧率中的至少一项。
在实际实现时,第一业务的调整后的编解码参数对应的视频显示性能(例如清晰度或流畅度)低于第一业务请求的编解码参数对应的视频显示性能。可以理解,本申请方案可以通过降低编解码需求或质量,保证业务能够正常进行编解码处理,从而保证业务可以正常运行。
在一些可能的实现方式中,该目标编解码策略可以包括:按照第一业务请求的编解码参数,通过软件编解码器对第一业务进行编解码处理。可以理解,本申请方案可以通过CPU进行软编解码,保证业务能够正常进行编解码处理,从而保证业务可以正常运行。
在一些可能的实现方式中,硬件编解码器的编解码资源为宏块资源,所述硬件编解码器的剩余可用资源量为剩余宏块数目。
在一些可能的实现方式中,所述调整所述第一业务的编解码参数,包括:根据所述硬件编解码器的剩余可用资源量,调整所述第一业务的编解码参数,使得所述第一业务请求的编解码资源量小于或等于所述硬件编解码器的剩余可用资源量。其中,所述第一业务请求的编解码资源量是根据所述第一业务的编解码参数确定的。
在一些可能的实现方式中,上述方法还可以包括:存储硬件编解码资源可用信息,所述硬件编解码资源可用信息用于指示所述硬件编解码器的剩余可用资源量,所述硬件编解码资源可用信息在有编解码资源被占用时会更新以及在被占用的编解码资源被释放时会更新。
其中,所述获取硬件编解码器的剩余可用资源量,包括:根据所述硬件编解码资源可用信息,获取硬件编解码器的剩余可用资源量。
在一些可能的实现方式中,上述方法还可以包括:存储硬件编解码资源占用信息,所述硬件编解码资源占用信息用于指示所述硬件编解码器已被占用的资源量,所述硬件编解码资源占用信息在有编解码资源被占用时会更新以及在被占用的编解码资源被释放时会更新。
其中,所述获取硬件编解码器的剩余可用资源量,包括:根据硬件编解码资源占用信息和硬件编解码总资源信息,确定硬件编解码器的剩余可用资源量。其中,该硬件编解码总资源信息用于指示硬件编解码器支持的最大资源量。
在一些可能的实现方式中,电子设备中还设置有编解码管理服务模块。该编解码管理服务模块可以用于存储硬件编解码资源可用信息和/或硬件编解码资源占用信息。
在一些可能的实现方式中,上述确定硬件编解码器的剩余可用资源量,包括:所述编解码管理服务模块根据已存储的所述硬件编解码资源可用信息,获取硬件编解码器的剩余可用资源量;或者,编解码管理服务模块根据硬件编解码总资源信息和已存储的所述硬件编解码资源占用信息,确定硬件编解码器的剩余可用资源量。
在一些可能的实现方式中,上述方法还可以包括:所述编解码管理服务模块获取所述硬件编解码器对应的硬件编解码总资源信息。
在一些可能的实现方式中,电子设备安装有目标应用,上述第一业务为目标应用发起的业务。在此情况下,上述调整所述第一业务的编解码参数,包括:通过目标应用调整所述第一业务的编解码参数;或者,通过编解码管理服务模块调整所述第一业务的编解码参数。
在一些可能的实现方式中,在通过目标应用调整所述第一业务的编解码参数之前,上述方法还包括:编解码管理服务模块向目标应用发送第一消息,所述第一消息用于指示所述硬件编解码器的剩余可用资源量,以及所述第一业务请求的编解码资源量大于所述硬件编解码器的剩余可用资源量;
其中,上述通过目标应用调整所述第一业务的编解码参数,包括:目标应用在接收到上述第一消息之后,调整所述第一业务的编解码参数。
在一些可能的实现方式中,上述方法还可以包括:目标应用接收到用户对第一业务的开启操作;响应于该开启操作,目标应用向编解码管理服务模块发送第一业务的编解码请求;其中,该编解码请求中包括所述第一业务请求的编解码参数。
在一些可能的实现方式中,在目标应用向所述编解码管理服务模块发送所述第一业务的编解码请求之后,上述方法还可以包括:编解码管理服务模块接收所述第一业务的编解码请求;并根据所述第一业务请求的编解码参数,计算所述第一业务请求的编解码资源量。
在一些可能的实现方式中,上述方法还可以包括:当所述第一业务完成编解码之后,硬件编解码器释放所述第一业务占用的硬件编解码资源;然后,硬件编解码器向编解码管理服务模块发送第二消息,该第二消息用于指示所述第一业务占用的硬件编解码资源已被释放;然后,编解码管理服务模块根据所述第二消息,更新已存储的硬件编解码资源可用信息或者硬件编解码资源占用信息。
在一些可能的实现方式中,在上述确定硬件编解码器的剩余可用资源量之后,上述方法还可以包括:
若所述第一业务请求的编解码资源量小于或等于所述硬件编解码器的可用资源量,则按照所述第一业务请求的编解码参数,通过硬件编解码器对所述第一业务进行编解码处理。
在一些可能的实现方式中,在上述对所述第一业务进行编解码处理之后,上述方法还可以包括:目标应用获得对所述第一业务进行编解码处理得到的解码数据或者编码数据;目标应用显示该解码数据或者存储该编码数据。
在一些可能的实现方式中,上述方法还可以包括:若编解码硬件和编解码软件均不支持对第一业务执行编解码处理,则正常终止所述第一业务;并通过目标应用的界面上显示提示信息,该提示信息用于提示所述第一业务由于编解码资源不足而终止。
在一些可能的实现方式中,上述第一业务可以为视频播放、视频录制或者投屏业务。
第二方面,本申请提供一种编解码资源的调度装置,该装置包括用于执行上述第一方面中的方法的单元。该装置可对应于执行上述第一方面中描述的方法,该装置中的单元的相关描述请参照上述第一方面的描述,为了简洁,在此不再赘述。
其中,上述第一方面描述的方法可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,处理模块或单元、显示模块或单元等。
第三方面,本申请提供一种电子设备,所述电子设备包括处理器,处理器与存储器耦合,存储器用于存储计算机程序或指令,处理器用于执行存储器存储的计算机程序或指令,使得第一方面中的方法被执行。
例如,处理器用于执行存储器存储的计算机程序或指令,使得该装置执行第一方面中的方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有用于实现第一方面中的方法的计算机程序(也可称为指令或代码)。
例如,该计算机程序被计算机执行时,使得该计算机可以执行第一方面中的方法。
第五方面,本申请提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。
可选地,所述芯片还包括存储器,存储器与处理器通过电路或电线连接。
第六方面,本申请提供一种芯片系统,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。
可选地,所述芯片系统还包括存储器,存储器与处理器通过电路或电线连接。
第七方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序(也可称为指令或代码),所述计算机程序被计算机执行时使得所述计算机实现第一方面中的方法。
可以理解的是,上述第二方面至第七方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为本申请实施例提供的视频播放过程的示意图;
图2为本申请实施例提供的编解码资源的调度方法应用的系统架构的示意图;
图3为本申请实施例提供的编解码资源的调度方法应用的系统架构中各模块交互的示意图;
图4为本申请实施例提供的编解码资源的调度方法应用于视频播放场景时的界面示意图;
图5为本申请实施例提供的编解码资源的调度方法应用于视频播放场景时的界面示意图;
图6为本申请实施例提供的编解码资源的调度方法应用于视频播放场景时的界面示意图;
图7为本申请实施例提供的编解码资源的调度方法的流程示意图;
图8为本申请实施例提供的编解码资源的调度方法应用的场景示意图之一;
图9为本申请实施例提供的编解码资源的调度方法应用的场景示意图之二;
图10为本申请实施例提供的编解码资源的调度方法应用的场景示意图之三;
图11为本申请实施例提供的编解码资源的调度方法应用的场景示意图之四;
图12为本申请实施例提供的编解码资源的调度方法应用的场景示意图之五;
图13为本申请实施例提供的一种编解码资源的调度装置的结构示意图;
图14为本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中符号“/”表示关联对象是或者的关系,例如A/B表示A或者B。
本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一消息和第二消息等是用于区别不同的消息,而不是用于描述消息的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
为便于理解本申请实施例,以下对本申请实施例的部分用语进行解释说明,以便于本领域技术人员理解。
软件编解码:也称为软编解码,指通过软件(或称为程序)使用中央处理器(central processing unit,CPU)等器件对媒体数据进行编码或解码。其中,软件编解码所采用的程序可以称为软件编解码器。例如可以使用常规的x264、x265等软件编解码器对媒体数据进行编解码处理,优点是灵活,缺点是速度比较慢。
硬件编解码:也称为硬编解码,指使用诸如图形处理器(graphics processingunit,GPU)、专用的数字信号处理器(digital signal processor,DSP)、现成可编程门阵列(field programmable gate array,FPGA)、专用集成电路(application specificintegrated circuit,ASIC)芯片等对媒体数据进行编码或解码。
其中,硬件编解码所采用的硬件(例如编解码芯片)及驱动程序可以统称为硬件编解码器。例如硬件编解码器可以使用硬件厂商提供的应用程序接口(application programinterface,API)对媒体数据进行编解码,优点是速度快,缺点是不够灵活。
可以理解的是,本申请实施例将CPU负责的软件编码和软件解码统称为软件编解码,以及将非CPU负责的硬件编码和硬件解码统称为硬件编解码。
硬件编解码资源:也称为硬编解码资源,可以指硬件编解码器可支持使用的最多宏块数(或称为宏块资源或宏块能力)。通常,编解码芯片在出厂时会标识所支持的最大宏块能力。可选地,硬编解码资源可以是宏块资源,还可以是其他可能的用于硬编解码的计算单元,具体可以根据实际使用需求确定,本申请实施例不作限定。为了便于说明,下文中以硬编解码资源为宏块资源为例进行示例性说明。
需要说明的是,在编解码过程中,剩余宏块数目的多少可以反映出硬件编解码器当前具备的编解码能力。剩余宏块数目越多,硬件编解码器的编解码能力越好,对应地,通过编解码得到的视频数据的显示性能(例如清晰度或流畅度)越好。
需要说明的是,上述需要编解码处理的媒体数据可以是视频数据,或者音频数据,还可以是其他可能的媒体数据,具体可以根据实际使用需求确定,本申请实施例不作限定。为了便于说明,下文中以对视频数据进行编解码处理为例进行示例性说明。
还需要说明的是,本申请方案适用于对媒体数据进行编码,也适用于对媒体数据进行解码。为了便于说明,下文中以对视频数据进行解码处理为例进行示例性说明。
下面以电子设备播放视频为例进行说明本申请方案涉及的解码场景。如图1所示,当用户触发电子设备播放视频后,电子设备首先获取到视频文件并将视频文件放入内存缓冲区中。这些视频文件为封装格式数据,包括音频码流和视频码流。封装格式可以为AVI、MOV或者MP4等格式,视频文件可以形象地理解为容纳各种不同编码数据的容器。在获取到视频文件后,电子设备对视频文件进行解封装格式处理,将视频码流和音频码流进行分离,得到音频压缩数据和视频压缩数据。进一步地,电子设备对音频压缩数据进行解码得到音频采样数据,以及对视频压缩数据进行解码得到视频像素数据。然后电子设备将音频采样数据和视频像素数据进行同步处理,得到待播放的视频数据。最后,基于待播放的视频数据,在显示器上显示视频画面并通过扬声器输出视频声音。
本申请方案涉及的解码场景可以是图1中虚线框所示的音频解码和视频解码等解码阶段,下面以视频解码为例进行说明。在视频解码阶段,视频应用通常会直接请求硬件编解码器(例如编解码芯片)对视频压缩数据进行解码处理。如果硬件编解码资源不足,那么将无法完成视频解码,这会导致视频播放失败或者程序异常退出。
在一些常见场景中,当电子设备同时处理多个编解码任务时,可能会存在硬件编解码资源被占用,导致硬件编解码资源不足,从而会出现某些编解码任务失败的问题。也就是说,当硬件编解码宏块资源不足时,会导致各种视频业务场景失败的严重性问题。下面示例性地以五种示例性场景为例进行说明。
场景1:在用户触发电子设备上的视频应用播放视频的情况下,首先视频应用进行编解码配置,在配置成功过后可以优先进行硬件编解码。如果此时有其他应用占用了硬件编解码宏块资源,那么可能会出现视频播放时不能获取到足量的硬编解码宏块资源进行解码,导致该视频播放失败,甚至是视频应用程序异常退出。
场景2:当电子设备正在播放视频时,如果用户触发电子设备进行投屏,此时由于播放视频播放业务已占用硬编解码宏块资源,那么可能会出现投屏时出现硬编解码宏块资源不足,导致投屏失败,甚至是投屏应用程序异常退出。
场景3:当电子设备正在进行投屏时,如果用户触发电子设备进行视频播放,此时由于投屏业务已占用硬编解码宏块资源,那么可能会导致视频播放时不能获取到足量的硬编解码宏块资源进行解码,导致视频播放失败,甚至是视频应用程序异常退出。
场景4:当电子设备正在通过视频应用播放视频时,播放视频时会进行解码,如果此时后台需要解析视频缩略图(例如封面),占用了硬编解码宏块资源,那么可能会导致视频播放时出现硬编解码宏块资源不足,导致此视频播放失败,甚至是视频应用程序异常退出。
场景5:当用户通过电子设备进行视频编辑时,如果同时申请多路视频编辑,实例化了多路硬件编解码器,此时多路硬件编解码器会同时占用硬编解码宏块资源(出现超宏块),那么可能会导致视频编辑时出现硬件编解码宏块资源不足,导致此视频编辑失败,甚至是程序异常退出。
由于宏块资源或能力由硬件编解码器(例如编解码芯片)直接管理,而当前Android系统框架对硬件编解码器的宏块资源或能力无统一管理,因此,当应用启动多路硬件编解码器时,会并发多路申请硬件编解码资源,很容易出现应用请求的宏块资源大于硬件编解码宏块资源的现象(即超宏块现象),从而导致硬件编解码失败,从而导致各种问题产生。
鉴于此,本申请实施例提供了一种编解码资源的调度方法,通过本申请方案,当应用视频业务请求编解码处理时,基于本申请提供的宏块能力查询接口,通过本申请提供的编解码管理服务模块查询硬件编解码器的剩余可用资源量,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。根据判断结果调整编解码策略:降低分辨率或码率,降低申请的编解码能力,确保视频业务可以继续执行;或者改变编解码方式,继而申请软件编解码,确保视频业务可以继续执行:或者,若业务方无法降低分辨率或码率,也无法使用软件编解码,则正常终止视频业务,并提示用户,确保应用不崩溃。
本申请实施例中的电子设备可以为具有操作系统的电子设备。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。下面以安卓操作系统为例,介绍一下本申请实施例提供的编解码资源的调度方法所应用的软件环境。
图2为本申请实施例提供的一种可能的安卓操作系统的架构示意图。如图2所示,安卓操作系统的架构包括五层,分别为:应用程序(application,APP)层、APP框架层、系统运行库层、硬件抽象层(hardware abstract layer,HAL)和内核层(具体可以为Linux内核层)。
其中,APP层包括安卓操作系统中的各个应用程序(包括系统应用程序和第三方应用程序)。例如,具体到本申请方案,应用程序层可以包括相机应用、视频应用、投屏应用和视频编辑应用等;当然,还可以包括其他可能需要调度编解码资源进行编解码的应用,具体可以根据实际使用需求确定,本申请实施例不作限定。
在一些实施例中,当电子设备通过相机应用录制视频时,为了能够降低视频对存储空间的占用,电子设备会对生成的视频数据进行压缩,即进行视频编码。
在一些实施例中,当电子设备通过投屏应用进行视频投屏时,为了能够将待投屏的视频数据通过网络传输到支持投屏的电子设备,电子设备会对待投屏的视频数据进行视频编码。
在一些实施例中,当电子设备通过视频应用播放视频时,电子设备首先获取视频数据,由于获取到的该视频数据是压缩编码后的视频数据,因此电子设备会对已经压缩编码的视频数据进行视频解码;然后,视频数据经过解码后才能被正常播放。
在一些实施例中,当电子设备通过视频编辑应用编辑视频时,电子设备会对视频数据进行解码以及编码。
在一些实施例中,对于视频内容解析以及视频内容提取等业务,电子设备会对视频数据进行解码。例如,当获取视频的I帧或者某帧作为封面时,或者当解析视频数据中的关键内容时,均需要对视频数据进行解码。
APP框架层是应用程序的框架,开发人员可以在遵守应用程序的框架的开发原则的情况下,基于APP框架层开发一些应用程序。
例如,具体到本申请方案,APP框架层可以包括录像模块MediaRecorder、媒体播放器MediaPlayer、媒体编解码器MediaCodec以及媒体编解码管理器HnMediaCodecManager;当然,还可以包括其他可能与编解码相关的应用程序框架,具体可以根据实际使用需求确定,本申请实施例不作限定。
系统运行库层包括库(也称为系统库)和安卓操作系统运行环境。
安卓操作系统运行环境用于为安卓操作系统提供软件环境,负责安卓系统的调度和管理。安卓操作系统运行环境包括核心库和虚拟机。其中,核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。其中,应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块,为安卓操作系统提供其所需的各类资源。示例性地,系统库可以包括媒体库(media libraries)。媒体库支持多种常用的音频、视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
具体到本申请方案,系统库可以包括媒体编解码管理服务MediaCodecService和媒体编解码器MediaCodec;当然,还可以包括其他可能与编解码相关的功能模块,具体可以根据实际使用需求确定,本申请实施例不作限定。
其中,系统库中的媒体编解码器MediaCodec负责编解码工作,该媒体编解码器MediaCodec是由编码器coder(用于视频编码)和解码器decoder(用于视频解码)组合而成。需要说明的是,系统库中的媒体编解码器MediaCodec是通过C++编程实现的,APP框架层中的媒体编解码器MediaCodec是通过Java编程实现的。这两个媒体编解码器MediaCodec在编解码过程中发挥不同的作用,并且可以交互协同完成编解码任务。
其中,媒体编解码管理服务MediaCodecService可以提供信息查询、信息存储、策略选择、特性查询、信息管理、策略管理以及能力计算等服务。
硬件抽象层是位于系统库与硬件电路之间的接口层,用于将硬件抽象化,为操作系统提供虚拟硬件使用平台。具体本申请方案,硬件抽象层可以包括编解码驱动接口。
内核层是安卓操作系统的操作系统层,属于安卓操作系统软件层次的最底层。内核层基于Linux内核为安卓操作系统提供核心系统服务以及与硬件相关的驱动程序,该驱动程序用于触发硬件执行相应的动作。具体到本申请方案,内核层可以包括编解码驱动。
如图2所示,在安卓操作系统的系统架构之下是硬件层,硬件层中的硬件(例如芯片、摄像头、显示屏等)可以根据内核层提供的驱动程序执行相应的动作。具体本申请方案,硬件层可以包括编解码芯片,该编解码芯片可以根据内核层提供的驱动程序,对媒体数据进行编解码处理。
以安卓操作系统为例,本申请实施例中,开发人员可以基于上述如图2所示的安卓操作系统的系统架构,开发实现本申请实施例提供的编解码资源的调度方法的软件程序,从而使得该编解码资源的调度方法可以基于如图2所示的安卓操作系统运行。即处理器或者电子设备可以通过在安卓操作系统中运行该软件程序实现本申请实施例提供的编解码资源的调度方法。
本申请方案旨在增加对宏块资源或能力的管理能力,为应用或者业务方提供接口,并判断电子设备当前可用的宏块资源或能力是否满足应用业务需求,根据判断结果为应用业务提供合理的策略,以保障程序正常运行或者不崩溃。下面结合图3对本申请实施例提供的编解码资源的调度方法进行详细说明。
图3是本申请实施例提供的基于图2的系统架构实现的交互示意图。
如图3所示,示例性地,APP层中的相机应用可以依次通过APP框架层中的录像模块MediaRecorder、系统运行库层中的录像模块向媒体编解码器MediaCodec请求进行编解码处理。APP层中的视频应用可以依次通过APP框架层中的媒体播放器MediaPlayer、系统运行库层中的录像模块向播放器向媒体编解码器MediaCodec请求进行编解码处理。APP层中的投屏应用可以依次通过APP框架层中的媒体编解码器MediaCodec向系统运行库层中的媒体编解码器MediaCodec请求进行编解码处理。
本申请方案在安卓APP框架层中增加了媒体编解码管理器HnMeidaCodecManager类,用于封装接口,该接口可以用于查询剩余宏块资源或能力。该接口可以支持被APP层中的应用或业务调用。
如图3所示,本申请方案还针对系统运行库层的媒体编解码器MediaCodec增加了编解码管理服务模块。该编解码管理服务模块中可以包括媒体编解码管理器MediaCodecManager类和媒体编解码服务MediaCodecService类。
其中,媒体编解码管理器MediaCodecManager类用于管理宏块信息的存储、查询以及策略选择等。媒体编解码服务MediaCodecService类,用于宏块信息管理、策略管理以及宏块能力计算等。
编解码管理服务模块可以与媒体编解码器进行信息交互,例如编解码管理服务模块为媒体编解码器提供编解码策略的信息,媒体编解码器向编解码管理服务模块发送已占用编解码资源的信息并由编解码管理服务模块保存该信息等。
编解码管理服务模块可以与硬件编解码模块进行信息交互,例如从硬件编解码模块获知硬件编解码器支持的最多宏块数,进而可以根据硬件编解码器支持的最多宏块数和目前已占用的宏块数的差值,确定当前剩余的硬件编解码资源,即当前剩余的硬件编解码宏块数。
可选地,媒体编解码管理器MediaCodecManager类和媒体编解码服务MediaCodecService类可以是独立的;也可以是集成一体的,称为媒体编解码管理服务模块,具体可以根据实际使用需求确定,本申请实施例不做限定。为了便于说明,下文中以媒体编解码管理服务模块为例进行示例性说明。
需要说明的是,本申请实施例在系统框架中增加媒体编解码服务,可以维护编解码宏块信息,并管理当前正在运行的编解码能力(码率、帧率、分辨率等信息),并可以根据硬件编解码能力计算可用编解码能力。
媒体编解码服务可以提供接口,用于查询动态编解码能力,应用根据当前剩余宏块数来申请对应的编解码能力,避免直接报错。
媒体编解码服务可以查询剩余硬件编解码能力,以及判断动态编解码能力是否满足应用编解码需求。
下面继续结合图3对本申请实施例提供的编解码资源的调度方法如何通过媒体编解码服务进行调度的过程进行示例性说明。
示例性地,如图3所示,APP层中的目标应用(例如视频编辑应用)可以调用APP框架层中的媒体编解码管理器HnMeidaCodecManager类,向媒体编解码管理服务模块发送编解码处理的请求。编解码管理服务模块在接收到请求后,可以先查询已存储的硬件编解码资源占用信息,并根据硬件编解码资源占用信息可以计算当前剩余的硬件编解码资源,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。
在一些可选实施例中,在当前剩余的硬件编解码资源满足应用编解码需求时,编解码管理服务模块直接通过编解码驱动接口调用编解码驱动程序,按照应用编解码需求进行编解码处理。
在一些可选实施例中,在当前剩余的硬件编解码资源不满足应用编解码需求时,本申请实施例体提供了以下几种可能的实现方式来保障应用业务正常运行或者不出现异常退出现象。
第一实现方式:
在当前剩余的硬件编解码资源不满足应用编解码需求时,编解码管理服务模块可以根据预设策略,确定是否在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理。
示例性地,编解码管理服务模块可以直接决策在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理,然后将硬件编解码处理的结果反馈给目标应用。
第二实现方式:
在当前剩余的硬件编解码资源不满足应用编解码需求时,编解码管理服务模块还可以选择不采用硬件编解码,而是采用软件编解码对目标应用的业务数据进行编解码,然后将软件编解码处理的结果反馈给目标应用。
通过上述方案,根据当前的硬件能力和限制,当硬件编解码资源不足时,可以提供软件编解码作为替代方案,从而可以保障应用业务正常运行。
第三实现方式:
在当前剩余的硬件编解码资源不满足应用编解码需求时,编解码管理服务模块可以向目标应用反馈当前剩余的硬件编解码资源不足,并提示目标应用是否需要在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理。
可选地,目标应用可以根据预设策略,直接确定是否在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理。
图4示出了本申请实施例中电子设备播放视频场景时自动决策的界面示意图。如图4中(a)所示,用户可以通过点击视频播放界面11中的播放控件,触发视频开始播放。假设当前视频播放模式设置为高清模式12,对应需要较多的编解码资源,也就是说视频播放需要占用较多的宏块数。在视频播放过程中,如果视频应用请求的编解码资源不足,即剩余宏块数不能满足视频以高清模式播放的需求,那么视频应用可以直接决策在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理。如图4中(b)所示,电子设备在视频播放过程中显示提示信息13:已自动从高清切换到流畅,继续播放视频。在此情况下,视频播放模式切换为流畅模式14。该提示信息13可以在预设时长后取消显示。
可选地,目标应用还可以提示用户,由用户进行确认是否在降低视频分辨率或帧率的前提下继续采用当前硬件剩余编解码资源进行编解码处理。
图5示出了本申请实施例中电子设备播放视频场景时由用户决策的界面示意图。如图5中(a)所示,仍然假设当前视频播放模式设置为高清模式12,对应需要较多的编解码资源,也就是说视频播放需要较多的宏块数。在视频播放过程中,如果视频应用请求的编解码资源不足,即剩余宏块数不能满足视频以高清模式播放的需求,那么视频应用可以显示提示信息15:目前不支持高清,点击切换以继续播放视频;高清(分辨率高),流畅(分辨率低)。由用户决策是否在降低视频分辨率或帧率的前提下继续播放视频。当用户选择流畅(分辨率低)选项后,视频应用可以指示硬件编解码器采用当前剩余的硬件编解码资源进行编解码处理。如图5中(b)所示,电子设备可以继续播放视频,且此时视频播放模式切换为流畅模式14。
具体地,当接收到用户的确认操作后,目标应用向编解码管理服务模块发送信息,以指示在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理。进一步地,编解码管理服务模块可以通过编解码驱动接口调用编解码驱动程序进行编解码处理,然后将硬件编解码处理的结果反馈给目标应用。
第四实现方式:
在当前剩余的硬件编解码资源不满足应用编解码需求时,编解码管理服务模块可以向目标应用反馈当前剩余的硬件编解码资源不足,并提示目标应用是否需要通过软件编解码进行编解码处理。
可选地,目标应用可以根据预设策略直接确定是否在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理。
可选地,目标应用还可以提示用户,由用户进行确认。当接收到用户的确认操作后,目标应用向编解码管理服务模块发送信息,以指示通过软件编解码进行编解码处理。进一步地,编解码管理服务模块指示软件编解码器进行编解码处理,然后将软件编解码处理的结果反馈给目标应用。
第五实现方式:
在当前剩余的硬件编解码资源不满足应用编解码需求时,编解码管理服务模块可以向目标应用反馈错误信息,该错误信息用于指示当前剩余的硬件编解码资源不足,无法满足应用编解码需求,此时目标应用可以根据错误信息,在显示屏上显示信息以提示用户当前应用业务终止。
图6示出了本申请实施例中电子设备播放视频场景时提示播放失败的界面示意图。仍然假设当前视频播放模式设置为高清模式,对应需要较多的编解码资源,也就是说视频播放需要较多的宏块数。在视频播放过程中,如果视频应用请求的编解码资源不足,即剩余宏块数不能满足视频以高清模式播放的需求,那么如图6所示,视频应用可以显示提示信息16:目前不支持高清,视频播放失败。
这样通过及时上报错误信息,调用方增加适配逻辑,可以避免出现播放异常。
本申请实施例提供的编解码资源的调度方法的执行主体可以为电子设备,也可以为该电子设备中能够实现该编解码资源的调度方法的功能模块和/或功能实体,并且本申请方案能够通过硬件和/或软件的方式实现,具体的可以根据实际使用需求确定,本申请实施例不作限定。
下面以电子设备为例,再结合附图对本申请实施例提供的编解码资源的调度方法进行示例性的说明。
图7是本申请第一实施例提供的编解码资源的调度方法的流程示意图。参照图7所示,该方法包括下述的步骤S101-S111。
S101,响应于用户对第一应用的操作,电子设备运行第一视频业务。
可选地,第一视频业务可以是视频播放、视频录制、投屏业务或者视频编辑等业务。可以理解,这里第一视频业务为示例性地说明,还可能是其他任意可能的需要编解码的业务,本申请实施例对此不作限定。
示例性地,第一视频业务为视频播放业务。例如,电子设备可以运行视频播放客户端,然后通过该视频播放客户端来对从网络请求的视频进行播放,或者可以通过运行网页浏览器,然后通过在网页浏览器中进行视频播放,再或者电子设备可以通过视频播放软件对本地存储的视频文件进行播放。
S102,电子设备通过硬件编解码器对第一视频业务进行编解码处理。
可选地,电子设备可以先通过编解码管理服务模块查询硬件编解码资源占用信息,此时由于硬件编解码器未被占用,硬件编解码器的剩余可用编解码资源即为硬件编解码器可支持使用的最多宏块数,满足第一视频业务的编解码需求;在此情况下,可以通过硬件编解码器对第一视频业务进行编解码处理。
S103,电子设备通过编解码管理服务模块存储硬件编解码资源占用信息和/或硬件编解码资源可用信息。
其中,该硬件编解码资源占用信息用于指示硬件编解码器已被占用的宏块数。可以理解,上述硬件编解码器已被占用的宏块数中包括第一视频业务已占用的宏块数。
其中,硬件编解码资源可用信息用于指示所述硬件编解码器的剩余宏块数。
在实际实现时,硬件编解码资源可用信息在有编解码资源被占用时会更新以及在被占用的编解码资源被释放时会更新。同样,或硬件编解码资源可用信息在有编解码资源被占用时会更新以及在被占用的编解码资源被释放时会更新。
S104,电子设备运行第二应用的第二视频业务。
可选地,第一应用和第二应用可以为同一应用,也可以为不同应用。
可选地,第二视频业务可以是视频播放、视频录制、投屏业务或者视频编辑等业务。
可选地,电子设备可以响应于用户对第二应用的操作,运行第二应用的第二视频业务。或者,电子设备可以在第一视频业务运行过程中,自动触发运行第二视频业务。
S105,电子设备通过编解码管理服务模块根据硬件编解码资源占用信息或硬件编解码资源可用信息,确定硬件编解码器的剩余可用编解码资源。
在实际实现时,编解码管理服务模块可以预先获知硬件编解码器可支持使用的最多宏块数。这样,编解码管理服务模块可以将硬件编解码器可支持使用的最多宏块数与硬件编解码器已被占用的宏块数求差值,计算得到硬件编解码器的剩余可用编解码资源,即硬件编解码器的剩余可用宏块数。
可选地,编解码管理服务模块可以根据硬件编解码资源可用信息,确定硬件编解码器的剩余可用资源量。
可选地,编解码管理服务模块可以获取硬件编解码器对应的硬件编解码总资源信息。然后根据硬件编解码资源占用信息和硬件编解码总资源信息,确定硬件编解码器的剩余可用资源量。其中,该硬件编解码总资源信息用于指示硬件编解码器支持的最大资源量。
可以理解,将硬件编解码器支持的最大资源量减去硬件编解码资源的已占用资源,即可计算出硬件编解码器的剩余可用资源,即剩余宏块数目。
S106,电子设备判断硬件编解码器的剩余可用编解码资源是否满足第二视频业务的编解码需求。
其中,第二视频业务的编解码需求可以根据第二视频业务请求的编解码参数确定。可选地,编解码参数可以包括码率、帧率和分辨率中的至少一项。
示例性地,可以采用下述等式计算视频文件所需的编解码宏块数:
N=(W×H)×F/S
其中,N表示视频文件所需的宏块数,W表示视频文件的宽度像素数,H表示视频文件的高度像素数,(W×H)表示视频文件的分辨率值,F表示视频文件的帧率值,S表示像素块尺寸。
示例性地,视频文件的分辨率值(W×H)可以为1080×720,视频文件的帧率值F可以为60fps(frames per second,每秒传输帧数)或120fps,像素块尺寸S可以为16×16。
在S106中,若满足,则继续执行下述的S107;若不满足,则继续执行下述的S108或者S109或S110。
可以理解的是,硬件编解码器的剩余可用编解码资源大于或等于第二视频业务所需的编解码资源,即满足第二视频业务的编解码需求。硬件编解码器的剩余可用编解码资源小于第二视频业务所需的编解码资源,即不满足第二视频业务的编解码需求。
S107,电子设备按照第二视频业务请求的编解码参数,通过硬件编解码器对第二视频业务进行编解码处理。
可选地,可以通过目标应用调整第二视频业务的编解码参数;或者,通过编解码管理服务模块调整第二视频业务的编解码参数。
示例性地,在判断出硬件编解码器的剩余可用编解码资源不满足第二视频业务的编解码需求的情况下,编解码管理服务模块向目标应用发送第一消息,该第一消息用于指示硬件编解码器的剩余可用资源量,以及第二视频业务请求的编解码资源量大于硬件编解码器的剩余可用资源量。目标应用在接收到第一消息之后,调整视频业务的编解码参数,使得第二视频业务请求的编解码资源量小于或等于硬件编解码器的剩余可用资源量。
如上所述,第二视频业务请求的编解码资源量可以根据第二视频业务的编解码参数确定。
示例性地,调整第二视频业务的编解码参数可以包括:降低视频分辨率、码率和帧率中的至少一项。第二视频业务请求的原编解码参数对应的视频显示性能优于第二视频业务的调整后的编解码参数对应的视频显示性能。
其中,视频显示性能可以通过视频播放的清晰度和流畅度来衡量,清晰度对应于视频分辨率,流畅度对应于码率和帧率。其中,视频分辨率越高,则清晰度越高。码率或帧率值越大,则视频流畅度越好。
其中,当硬件编解码器的剩余可用编解码资源满足第二视频业务的编解码需求时,可以按照视频业务正常请求的编解码参数,通过硬件编解码器对视频业务进行编解码处理。
S108,电子设备按照调整后的编解码参数,通过硬件编解码器对第二视频业务进行编解码处理。
可以理解的是,在编解码参数调整后,所需占用的硬件编解码资源相应降低,其小于或等于硬件编解码器的剩余可用编解码资源。
可选地,可以将第二视频业务请求的编解码参数中的码率值、帧率值和/或分辨率值调低,使得编解码参数调整后所需占用的硬件编解码资源小于或等于硬件编解码器的剩余可用编解码资源。
可以理解的是,在通过硬件编解码器对第二视频业务进行编解码处理后,可以将编解码处理的结果(即视频数据)发送给第二应用,进而可以在显示屏上显示视频数据。
S109,电子设备按照第二视频业务请求的编解码参数,通过软件编解码器对第二视频业务进行编解码处理。
在软解码的过程中,由操作系统控制CPU进行数据处理,通常进行软解码的请求会先发送给操作系统(也可以理解为电子设备),可以由操作系统来进行响应。
S110,电子设备通过编解码管理服务模块向第二应用反馈错误信息,该错误信息用于指示硬件编解码资源不满足第二视频业务的编解码需求。
S111,电子设备根据错误信息显示提示信息,以提示用户第二视频业务终止。
在本申请实施例中,当应用视频业务请求编解码处理时,可以基于本申请实施例提供的宏块能力查询接口,通过编解码管理服务模块查询已存储的硬件编解码资源占用信息,并根据硬件编解码资源占用信息计算当前剩余的硬件编解码资源,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。然后编解码管理服务模块将判断结果反馈给应用,由此应用可以实时获取当前终端的宏块能力,用来调整接下来申请解码能力:
策略1:降低分辨率或码率,降低申请的编解码能力,确保业务可以继续执行。
策略2:改变编解码方式,继而申请软件编解码,确保业务可以继续执行。
策略3:业务方若无法降低分辨率或码率,也无法使用软件编解码,则正常终止业务,并提示用户,确保应用不崩溃。
下面示例性给出了本申请实施例提供的编解码资源的调度方法中涉及的软件代码。
下面结合图8至图10,示例性地说明本申请实施例提供的编解码资源的调度方法。
图8中(a)示出了上述场景1对应的请求编解码资源的流程示意图。当电子设备上的视频应用在播放视频时,首先视频应用从媒体编解码列表中获取编解码信息,进行编解码配置,配置成功过后会优先进行硬编解码,此时如果正好有其他需要进行硬编解码的应用先进行了编解码,占有了硬编解码宏块资源,则会导致此视频播放失败,甚至是程序异常退出。
图8中(b)示出了本申请方案应用于场景1时对应的请求编解码资源的流程示意图。与图8中(a)不同的是,图8中(b)增加了编解码管理服务模块,当应用的视频业务请求进行编解码处理时,编解码管理服务模块会先接收到该请求,然后先查询已存储的硬件编解码资源占用信息,并根据硬件编解码资源占用信息可以计算当前剩余的硬件编解码资源,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。在此基础上,编解码管理服务模块可以根据实际使用需求选择策略1:在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理;或者策略2:改为通过软件编解码模块进行编解码处理,由此可以保证视频正常播放。在一些情况下还可以采用策略3:向应用反馈编解码资源不足,触发业务终止,由此可以避免程序异常退出。
从图8中(b)可知,通过本申请方案,可以在配置(configure)时判断编解码资源是否满足需求,若发现当前剩余的硬件编解码资源不足,则可以及时向应用反馈错误信息,这样应用可以尝试使用较低分辨率进行参数配置。
图9中(a)示出了上述场景2对应的请求编解码资源的流程示意图。当电子设备正在播放视频时,如果用户触发电子设备进行投屏,此时由于播放视频播放业务已占用硬编解码宏块资源,那么可能会出现投屏时出现硬编解码宏块资源不足,导致投屏失败,甚至是投屏应用程序异常退出。
图9中(b)示出了本申请方案应用于场景2时对应的请求编解码资源的流程示意图。与图9中(a)不同的是,图9中(b)增加了编解码管理服务模块,当应用的投屏业务请求进行编解码处理时,编解码管理服务模块会先接收到该请求,然后先查询已存储的硬件编解码资源占用信息或硬件编解码资源可用信息,并根据硬件编解码资源占用信息或可用信息确定当前剩余的硬件编解码资源,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。在此基础上,编解码管理服务模块可以根据实际使用需求选择策略1:在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理;或者策略2:改为通过软件编解码模块进行编解码处理,由此可以保证投屏成功。在一些情况下还可以采用策略3:向应用反馈编解码资源不足,触发业务终止,由此可以避免程序异常退出。
从图9中(b)可知,通过本申请方案,投屏应用能够及时获取可用的编解码能力,以进行投屏分辨率的调整,或者编解码管理服务模块可以及时给投屏应用提示编解码资源不足。
图10中(a)示出了上述场景3对应的请求编解码资源的流程示意图。当电子设备正在进行投屏时,如果用户触发电子设备进行视频播放,此时由于投屏业务已占用硬编解码宏块资源,那么可能会导致视频播放时不能获取到足量的硬编解码宏块资源进行解码,导致视频播放失败,甚至是视频应用程序异常退出。
图10中(b)示出了本申请方案应用于场景3时对应的请求编解码资源的流程示意图。与图10中(a)不同的是,图10中(b)增加了编解码管理服务模块,当应用的视频播放业务请求进行编解码处理时,编解码管理服务模块会先接收到该请求,然后先查询已存储的硬件编解码资源占用信息或硬件编解码资源可用信息,并根据硬件编解码资源占用信息或可用信息确定当前剩余的硬件编解码资源,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。在此基础上,编解码管理服务模块可以根据实际使用需求选择策略1:在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理;或者策略2:改为通过软件编解码模块进行编解码处理,由此可以保证视频正常播放。在一些情况下还可以采用策略3:向应用反馈编解码资源不足,触发业务终止,由此可以避免程序异常退出。
从图10中(b)可知,通过本申请方案,在投屏过程中,三方应用在播放视频,系统能够根据编解码资源情况,自适应选择编解码器。如果硬件编解码能力不足,可以选择软件解码器进行播放。
图11中(a)示出了上述场景4对应的请求编解码资源的流程示意图。当电子设备正在通过视频应用播放视频时,播放视频时会进行解码,如果此时后台因解析视频缩略图(例如获取视频的I帧或者某帧作为封面),占用了硬编解码宏块资源,那么可能会导致视频播放时出现硬编解码宏块资源不足,导致此视频播放失败,甚至是视频应用程序异常退出。
图11中(b)示出了本申请方案应用于场景4时对应的请求编解码资源的流程示意图。与图11中(a)不同的是,图11中(b)增加了编解码管理服务模块,当应用的视频播放业务请求进行编解码处理时,编解码管理服务模块会先接收到该请求,然后先查询已存储的硬件编解码资源占用信息或硬件编解码资源可用信息,并根据硬件编解码资源占用信息或可用信息确定当前剩余的硬件编解码资源,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。在此基础上,编解码管理服务模块可以根据实际使用需求选择策略1:在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理;或者策略2:改为通过软件编解码模块进行编解码处理,由此可以保证视频正常播放。在一些情况下还可以采用策略3:向应用反馈编解码资源不足,触发业务终止,由此可以避免程序异常退出。
从图11中(b)可知,通过本申请方案,三方应用可以通过扩展接口查询动态编解码能力,在缩略图场景下能够和其他编解码并行,确保程序正常运行。
图12中(a)示出了上述场景5对应的请求编解码资源的流程示意图。当用户通过电子设备进行视频编辑时,如果同时申请多路视频编辑,实例化了多路硬件编解码器,此时多路硬件编解码器会同时占用硬编解码宏块资源(出现超宏块),那么可能会导致视频编辑时出现硬件编解码宏块资源不足,导致此视频编辑失败,甚至是程序异常退出。
图12中(b)示出了本申请方案应用于场景5时对应的请求编解码资源的流程示意图。与图12中(a)不同的是,图12中(b)增加了编解码管理服务模块,当应用的视频编辑业务请求进行编解码处理时,编解码管理服务模块会先接收到该请求,然后先查询已存储的硬件编解码资源占用信息或硬件编解码资源可用信息,并根据硬件编解码资源占用信息或可用信息确定当前剩余的硬件编解码资源,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。在此基础上,编解码管理服务模块可以根据实际使用需求选择策略1:在降低视频分辨率或帧率的前提下继续采用当前剩余的硬件编解码资源进行编解码处理;或者策略2:改为通过软件编解码模块进行编解码处理,由此可以保证正常进行视频编辑。在一些情况下还可以采用策略3:向应用反馈编解码资源不足,触发业务终止,由此可以避免程序异常退出。
从图12中(b)可知,通过本申请方案,视频编辑同时使用编解码并发能力,此时能够获取可用的编解码能力,以方便使用应用自身策略,例如使用软件编解码器实现编辑功能。
需要说明的是,本申请方案具备普适性,在涉及类似超宏块的多场景下均可适用。其中,超宏块指的是应用请求的宏块资源超过硬件编解码宏块资源的场景或现象。
需要说明的是,本申请方案不但适用于视频播放、视频投屏、视频编辑等场景中的解码过程,并且适用于视频编辑、视频投屏等场景中的编码过程。
还需要说明的是,在本申请实施例中,“大于”可以替换为“大于或等于”,“小于或等于”可以替换为“小于”,或者,“大于或等于”可以替换为“大于”,“小于”可以替换为“小于或等于”。
本文中描述的各个实施例可以为独立的方案,也可以根据内在逻辑进行组合,这些方案都落入本申请的保护范围中。
可以理解的是,上述各个方法实施例中由电子设备实现的方法和操作,也可以由可用于电子设备的部件(例如芯片或者电路)实现。
上文描述了本申请提供的方法实施例,下文将描述本申请提供的装置实施例。应理解,装置实施例的描述与方法实施例的描述相互对应,因此,未详细描述的内容可以参见上文方法实施例,为了简洁,这里不再赘述。
上文主要从方法步骤的角度对本申请实施例提供的方案进行了描述。可以理解的是,为了实现上述功能,实施该方法的电子设备包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的保护范围。
本申请实施例可以根据上述方法示例,对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有其它可行的划分方式。下面以采用对应各个功能划分各个功能模块为例进行说明。
图13为本申请实施例提供的编解码资源的调度装置800的示意性框图。该装置800可以用于执行上文方法实施例中电子设备所执行的动作。该装置800包括编解码处理单元810、硬件编解码器以及软件编解码器。
编解码处理单元810,用于在接收到目标应用的视频业务的编解码请求时,确定硬件编解码器的剩余可用资源量;若视频业务请求的编解码资源量大于所述硬件编解码器的剩余可用资源量,则调整所述视频业务的编解码参数,并按照所述视频业务的调整后的编解码参数,通过所述硬件编解码器对所述视频业务进行编解码处理;或者,按照所述视频业务请求的原编解码参数,通过软件编解码器对所述视频业务进行编解码处理。其中,所述视频业务请求的原编解码参数对应的视频显示性能优于所述视频业务的调整后的编解码参数对应的视频显示性能。
通过本申请方案,当应用视频业务请求编解码处理时,基于本申请提供的宏块能力查询接口,通过本申请提供的编解码管理服务模块查询硬件编解码器的剩余可用资源量,然后判断当前剩余的硬件编解码资源是否满足应用编解码需求。根据判断结果调整编解码策略:降低分辨率或码率,降低申请的编解码能力,确保视频业务可以继续执行;或者改变编解码方式,继而申请软件编解码,确保视频业务可以继续执行:或者,若业务方无法降低分辨率或码率,也无法使用软件编解码,则正常终止视频业务,并提示用户,确保应用不崩溃。
根据本申请实施例的装置800可对应于执行本申请实施例中描述的方法,并且装置800中的单元的上述和其它操作和/或功能分别为了实现方法的相应流程,为了简洁,在此不再赘述。
图14是本申请实施例提供的电子设备900的结构性示意性图。该电子设备900可以包括处理器910,外部存储器接口920,内部存储器921,通用串行总线(universal serialbus,USB)接口930,充电管理模块940,电源管理单元941,电池942,天线1,天线2,移动通信模块950,无线通信模块960,音频模块970,扬声器970A,受话器970B,麦克风970C,耳机接口970D,传感器模块980,按键990,马达991,指示器992,摄像头993,显示屏994,以及用户标识模块(subscriber identification module,SIM)卡接口995等。
其中,传感器模块980可以包括压力传感器980A,陀螺仪传感器980B,气压传感器980C,磁传感器980D,加速度传感器980E,距离传感器980F,接近光传感器980G,指纹传感器980H,温度传感器980I,触摸传感器980J,环境光传感器980K以及骨传导传感器980L等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备900的具体限定。在本申请另一些实施例中,电子设备900可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器910可以包括一个或多个处理单元,例如:处理器910可以包括应用处理器(application processor,AP),调制解调处理器,GPU,图像信号处理器(image signalprocessor,ISP),控制器,存储器,视频编解码器,DSP,基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是电子设备900的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器910中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器910中的存储器为高速缓冲存储器。该存储器可以保存处理器910刚用过或循环使用的指令或数据。如果处理器910需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器910的等待时间,因而提高了系统的效率。
在一些实施例中,处理器910可以包括一个或多个接口。该接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备900的结构限定。在本申请另一些实施例中,电子设备900也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块940用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块940可以通过USB接口930接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块940可以通过电子设备900的无线充电线圈接收无线充电输入。充电管理模块940为电池942充电的同时,还可以通过电源管理单元941为电子设备供电。
电源管理单元941用于连接电池942,充电管理模块940与处理器910。电源管理单元941接收电池942和/或充电管理模块940的输入,为处理器910,内部存储器921,外部存储器,显示屏994,摄像头993和无线通信模块960等供电。电源管理单元941还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理单元941也可以设置于处理器910中。在另一些实施例中,电源管理单元941和充电管理模块940也可以设置于同一个器件中。
电子设备900的无线通信功能可以通过天线1、天线2、移动通信模块950、无线通信模块960、调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备900中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块950可以提供应用在电子设备900上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块950可以包括至少一个滤波器、开关、功率放大器、低噪声放大器(low noise amplifier,LNA)等。移动通信模块950可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块950还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块950的至少部分功能模块可以被设置于处理器910中。在一些实施例中,移动通信模块950的至少部分功能模块可以与处理器910的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器970A、受话器970B等)输出声音信号,或通过显示屏994显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器910,与移动通信模块950或其他功能模块设置在同一个器件中。
无线通信模块960可以提供应用在电子设备900上的包括WLAN(如Wi-Fi)、BT、全球导航卫星系统(global navigation satellite system,GNSS)、FM、NFC、IR或通用2.4G/5G无线通信技术等无线通信的解决方案。无线通信模块960可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块960经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器910。无线通信模块960还可以从处理器910接收待发送的信号,对其进行调频、放大,经天线2转为电磁波辐射出去。
在一些实施例中,该无线通信模块960可以为Wi-Fi和/或蓝牙芯片。电子设备900可以通过该芯片,与无线耳机等电子设备的芯片之间建立连接,以通过该连接实现电子设备900和其他电子设备之间的无线通信和业务处理。其中,蓝牙芯片通常可以支持BR/EDR蓝牙和BLE。
在一些实施例中,电子设备900的天线1和移动通信模块950耦合,天线2和无线通信模块960耦合,使得电子设备900可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TDSCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备900通过GPU,显示屏994,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏994和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器910可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏994用于显示图像,视频等。显示屏994包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备900可以包括1个或N个显示屏994,N为大于1的正整数。
电子设备900可以通过ISP、摄像头993、视频编解码器、GPU、显示屏994以及应用处理器等实现拍摄功能。
ISP用于处理摄像头993反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点、亮度、肤色进行算法优化。ISP还可以对拍摄场景的曝光、色温等参数优化。在一些实施例中,ISP可以设置在摄像头993中。
摄像头993用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备900可以包括1个或N个摄像头993,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备900在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备900可以支持一种或多种视频编解码器。这样,电子设备900可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备900的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口920可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备900的存储能力。外部存储卡通过外部存储器接口920与处理器910通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器921可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器910通过运行存储在内部存储器921的指令,从而执行电子设备900的各种功能应用以及数据处理。内部存储器921可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备900使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器921可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
处理器910可以用于执行上述程序代码,调用相关模块以实现本申请实施例中电子设备的功能。例如,与另一电子设备建立多个通信链路;在有预设业务(例如文件传输业务等)时,通过多个通信链路与另一电子设备传输预设业务的数据。
电子设备900可以通过音频模块970中的扬声器970A、受话器970B、麦克风970C、耳机接口970D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块970用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块970还可以用于对音频信号编码和解码。在一些实施例中,音频模块970可以设置于处理器910中,或将音频模块970的部分功能模块设置于处理器910中。
扬声器970A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备900可以通过扬声器970A收听音乐,或收听免提通话。
受话器970B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备900接听电话或语音信息时,可以通过将受话器970B靠近人耳接听语音。
麦克风970C,也称“话筒”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风970C发声,将声音信号输入到麦克风970C。电子设备900可以设置至少一个麦克风970C。在另一些实施例中,电子设备900可以设置两个麦克风970C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备900还可以设置三个,四个或更多麦克风970C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口970D用于连接有线耳机。耳机接口970D可以是USB接口930,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
示例性的,电子设备900还可以包括按键990、马达991、指示器992、SIM卡接口995(或eSIM卡)等一项或多项。
电子设备900可以为移动终端,也可以为非移动终端。示例性的,电子设备900可以为手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digitalassistant,PDA)、无线耳机、无线手环、无线智能眼镜、无线手表、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备、台式计算机、智能家电(例如电视、音箱、冰箱、空气净化器、空调、电饭煲)等。其中,电子设备900也可以被统称为物联网(Internet of Things,IoT)设备。本申请实施例对电子设备900的设备类型不予具体限定。
应理解,图14所示的电子设备900可对应于图13所示的装置800。其中,图14所示的电子设备900中的处理器910,可以对应于图13中的装置800中的编解码处理单元810。
在实际实现时,在电子设备900运行时,处理器910执行存储器921中的计算机执行指令以通过电子设备900执行上述方法的操作步骤。
可选地,在一些实施例中,本申请提供一种芯片,该芯片与存储器耦合,该芯片用于读取并执行存储器中存储的计算机程序或指令,以执行上述各实施例中的方法。
可选地,在一些实施例中,本申请提供一种电子设备,该电子设备包括芯片,该芯片用于读取并执行存储器存储的计算机程序或指令,使得各实施例中的方法被执行。
可选地,在一些实施例中,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述各实施例中的方法。
可选地,在一些实施例中,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述各实施例中的方法。
在本申请实施例中,电子设备包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。其中,硬件层可以包括CPU、内存管理单元(memorymanagement unit,MMU)和内存(也称为主存)等硬件。操作系统层的操作系统可以是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。应用层可以包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
本申请实施例并未对本申请实施例提供的方法的执行主体的具体结构进行特别限定,只要能够通过运行记录有本申请实施例提供的方法的代码的程序,以根据本申请实施例提供的方法进行通信即可。例如,本申请实施例提供的方法的执行主体可以是电子设备,或者,是电子设备中能够调用程序并执行程序的功能模块。
本申请的各个方面或特征可以实现成方法、装置或使用标准编程和/或工程技术的制品。本文中使用的术语“制品”可以涵盖可从任何计算机可读器件、载体或介质访问的计算机程序。例如,计算机可读介质可以包括但不限于:磁存储器件(例如,硬盘、软盘或磁带等),光盘(例如,压缩盘(compact disc,CD)、数字通用盘(digital versatile disc,DVD)等),智能卡和闪存器件(例如,可擦写可编程只读存储器(erasable programmableread-only memory,EPROM)、卡、棒或钥匙驱动器等)。
本文描述的各种存储介质可代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于:无线信道和能够存储、包含和/或承载指令和/或数据的各种其它介质。
应理解,本申请实施例中提及的处理器可以是CPU,还可以是其他通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM)。例如,RAM可以用作外部高速缓存。作为示例而非限定,RAM可以包括如下多种形式:静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(doubledata rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)可以集成在处理器中。
还需要说明的是,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的保护范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。此外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上,或者说对现有技术做出贡献的部分,或者该技术方案的部分,可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,该计算机软件产品包括若干指令,该指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。前述的存储介质可以包括但不限于:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种编解码资源的调度方法,应用于电子设备,所述电子设备中设置有硬件编解码器,其特征在于,所述方法包括:
接收第一业务的编解码请求;
获取所述硬件编解码器的剩余可用资源量;
当所述第一业务请求的编解码资源量大于所述硬件编解码器的剩余可用资源量时,获取目标编解码策略,所述目标编解码策略用于指示降低所述第一业务的编解码需求或者对所述第一业务进行软件编解码;
按照所述目标编码策略对所述第一业务进行编解码处理。
2.根据权利要求1所述的方法,其特征在于,所述目标编解码策略包括:
调整所述第一业务的编解码参数,使得所述第一业务请求的编解码资源量小于或等于所述硬件编解码器的剩余可用资源量,所述第一业务请求的编解码资源量根据所述第一业务的编解码参数确定;
按照所述第一业务的调整后的编解码参数,通过所述硬件编解码器对所述第一业务进行编解码处理;
其中,所述第一业务的编解码参数包括视频分辨率、码率和/或帧率。
3.根据权利要求1或2所述的方法,其特征在于,所述目标编解码策略包括:
按照所述第一业务请求的原编解码参数,通过软件编解码器对所述第一业务进行编解码处理。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
存储硬件编解码资源可用信息,所述硬件编解码资源可用信息用于指示所述硬件编解码器的剩余可用资源量,所述硬件编解码资源可用信息在有编解码资源被占用时会更新以及在被占用的编解码资源被释放时会更新;
其中,所述获取所述硬件编解码器的剩余可用资源量,包括:
根据所述硬件编解码资源可用信息,获取所述硬件编解码器的剩余可用资源量。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
存储硬件编解码资源占用信息,所述硬件编解码资源占用信息用于指示所述硬件编解码器已被占用的资源量,所述硬件编解码资源占用信息在有编解码资源被占用时会更新以及在被占用的编解码资源被释放时会更新;
其中,所述获取所述硬件编解码器的剩余可用资源量,包括:
根据所述硬件编解码资源占用信息和所述硬件编解码总资源信息,获取所述硬件编解码器的剩余可用资源量;
其中,所述硬件编解码总资源信息用于指示所述硬件编解码器支持的最大资源量。
6.根据权利要求4或5所述的方法,其特征在于,所述电子设备中还设置有编解码管理服务模块;
其中,所述编解码管理服务模块用于存储硬件编解码资源可用信息和/或硬件编解码资源占用信息。
7.根据权利要求6所述的方法,其特征在于,所述获取所述硬件编解码器的剩余可用资源量,包括:
所述编解码管理服务模块根据已存储的所述硬件编解码资源可用信息,获取所述硬件编解码器的剩余可用资源量;或者,
所述编解码管理服务模块根据硬件编解码总资源信息和已存储的所述硬件编解码资源占用信息,获取所述硬件编解码器的剩余可用资源量。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述编解码管理服务模块获取所述硬件编解码器对应的硬件编解码总资源信息。
9.根据权利要求2所述的方法,其特征在于,所述电子设备安装有目标应用,所述第一业务为目标应用发起的业务;
所述调整所述第一业务的编解码参数,包括:
通过所述目标应用调整所述第一业务的编解码参数;或者,
通过编解码管理服务模块调整所述第一业务的编解码参数。
10.根据权利要求9所述的方法,其特征在于,在上述通过所述目标应用调整所述第一业务的编解码参数之前,所述方法还包括:
所述编解码管理服务模块向所述目标应用发送第一消息,所述第一消息用于指示所述硬件编解码器的剩余可用资源量,以及指示所述第一业务请求的编解码资源量大于所述硬件编解码器的剩余可用资源量;
其中,所述通过所述目标应用调整所述第一业务的编解码参数,包括:
所述目标应用在接收到所述第一消息之后,调整所述第一业务的编解码参数。
11.根据权利要求6至10中任一项所述的方法,其特征在于,所述方法还包括:
所述目标应用接收到用户对所述第一业务的开启操作;
响应于所述开启操作,所述目标应用向所述编解码管理服务模块发送所述第一业务的编解码请求;
其中,所述编解码请求中包括所述第一业务请求的编解码参数。
12.根据权利要求11所述的方法,其特征在于,在所述目标应用向所述编解码管理服务模块发送所述第一业务的编解码请求之后,所述方法还包括:
所述编解码管理服务模块接收所述第一业务的编解码请求;
根据所述第一业务请求的编解码参数,计算所述第一业务请求的编解码资源量。
13.根据权利要求6至12中任一项所述的方法,其特征在于,所述方法还包括:
当所述第一业务完成编解码之后,所述硬件编解码器释放所述第一业务占用的硬件编解码资源;
所述硬件编解码器向所述编解码管理服务模块发送第二消息,所述第二消息用于指示所述第一业务占用的硬件编解码资源已被释放;
所述编解码管理服务模块根据所述第二消息,更新已存储的所述硬件编解码资源可用信息或者所述硬件编解码资源占用信息。
14.根据权利要求1所述的方法,其特征在于,在所述获取所述硬件编解码器的剩余可用资源量之后,所述方法还包括:
若所述第一业务请求的编解码资源量小于或等于所述硬件编解码器的可用资源量,则按照所述第一业务请求的编解码参数,通过所述硬件编解码器对所述第一业务进行编解码处理。
15.根据权利要求1至14中任一项所述的方法,其特征在于,在所述对所述第一业务进行编解码处理之后,所述方法还包括:
所述目标应用获得对所述第一业务进行编解码处理得到的解码数据或者编码数据;
所述目标应用显示所述解码数据或者存储所述编码数据。
16.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述编解码硬件和编解码软件均不支持对所述第一业务执行编解码处理,则正常终止所述第一业务;
在所述目标应用的界面上显示提示信息,所述提示信息用于提示所述第一业务由于编解码资源不足而终止。
17.根据权利要求16所述的方法,其特征在于,所述第一业务为视频播放、视频录制或者投屏业务。
18.根据权利要求1至17中任一项所述的方法,其特征在于,所述硬件编解码器的编解码资源为宏块资源,所述硬件编解码器的剩余可用资源量为剩余宏块数目。
19.一种电子设备,其特征在于,包括处理器,所述处理器与存储器耦合,所述处理器用于执行所述存储器中存储的计算机程序或指令,以使得所述电子设备实现如权利要求1至18中任一项所述的方法。
20.一种芯片系统,其特征在于,所述芯片系统与存储器耦合,所述芯片系统用于读取并执行所述存储器中存储的计算机程序,以实现如权利要求1至18中任一项所述的方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至18中任一项所述的方法。
22.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1至18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111653692.6A CN116418995A (zh) | 2021-12-30 | 2021-12-30 | 编解码资源的调度方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111653692.6A CN116418995A (zh) | 2021-12-30 | 2021-12-30 | 编解码资源的调度方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116418995A true CN116418995A (zh) | 2023-07-11 |
Family
ID=87053292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111653692.6A Pending CN116418995A (zh) | 2021-12-30 | 2021-12-30 | 编解码资源的调度方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116418995A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886935A (zh) * | 2023-09-08 | 2023-10-13 | 中移(杭州)信息技术有限公司 | 编码算力共享方法、装置及设备 |
-
2021
- 2021-12-30 CN CN202111653692.6A patent/CN116418995A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886935A (zh) * | 2023-09-08 | 2023-10-13 | 中移(杭州)信息技术有限公司 | 编码算力共享方法、装置及设备 |
CN116886935B (zh) * | 2023-09-08 | 2023-12-26 | 中移(杭州)信息技术有限公司 | 编码算力共享方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020253719A1 (zh) | 一种录屏方法及电子设备 | |
US20240192912A1 (en) | Screen projection method for electronic device and electronic device | |
CN115473957B (zh) | 一种图像处理方法和电子设备 | |
JP7533854B2 (ja) | 投影データ処理方法および装置 | |
CN113556598A (zh) | 多窗口投屏方法及电子设备 | |
EP3890332B1 (en) | Video splitting method and electronic device | |
CN114040242B (zh) | 投屏方法、电子设备和存储介质 | |
WO2021023035A1 (zh) | 一种镜头切换方法及装置 | |
US20230335081A1 (en) | Display Synchronization Method, Electronic Device, and Readable Storage Medium | |
CN116052701A (zh) | 一种音频处理方法及电子设备 | |
CN117133306A (zh) | 立体声降噪方法、设备及存储介质 | |
CN114827098B (zh) | 合拍的方法、装置、电子设备和可读存储介质 | |
CN116418995A (zh) | 编解码资源的调度方法及电子设备 | |
US20220311700A1 (en) | Method for multiplexing http channels and terminal | |
CN117631950A (zh) | 一种分屏显示方法及相关装置 | |
CN116055613B (zh) | 一种投屏方法和设备 | |
CN113613230B (zh) | 一种扫描参数的确定方法及电子设备 | |
CN116095512B (zh) | 终端设备的拍照方法及相关装置 | |
WO2024159925A1 (zh) | 一种投屏方法、投屏系统和电子设备 | |
CN118555434A (zh) | 一种视频图像的显示方法及相关装置 | |
CN118264854A (zh) | 视频处理方法及相关设备 | |
CN115250492A (zh) | 通信资源调度方法和电子设备 | |
CN118695012A (zh) | 一种应用切换方法及相关装置 | |
CN117724860A (zh) | 一种数据处理方法和电子设备 | |
CN118368461A (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 |