解码器确定方法、装置、芯片、电子设备及介质转让专利

申请号 : CN202210989531.2

文献号 : CN115065824B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵宇龙

申请人 : 荣耀终端有限公司

摘要 :

本申请实施例提供了一种解码器确定方法、装置、芯片、电子设备及介质,该方法包括:确定第一操作是否执行失败,第一操作用于创建对应第一应用程序的第一解码器;在第一操作执行失败的情况下,确定第一解码器是否具有目标特征,目标特征包括软件解码器不支持的特征;在第一解码器不具有目标特征的情况下,将对应第一应用程序的解码器设置为软件解码器。本申请实施例能够解决硬件资源不足时无法继续解码视频的问题。

权利要求 :

1.一种解码器确定方法,其特征在于,包括:

确定第一操作是否执行失败,所述第一操作用于创建对应第一应用程序的第一解码器;

在所述第一操作执行失败的情况下,确定所述第一操作执行失败的原因是否为硬件资源不足;

在所述第一操作执行失败的原因为硬件资源不足的情况下,执行用于回收已创建的其他应用程序所占用的硬件解码器的回收操作,在所述第一操作执行失败的原因不为硬件资源不足的情况下结束;

若所述回收操作执行失败,根据第一配置信息,确定是否允许切换为创建软件解码器,第一配置信息包括:用于指示在硬件资源不足使得硬件解码器创建失败时,是否允许切换为创建软件解码器的配置信息;

在确定出允许切换为创建软件解码器的情况下,确定所述第一解码器是否具有目标特征,所述目标特征包括硬件解码器支持且软件解码器不支持的特征;

在所述第一解码器不具有所述目标特征的情况下,将对应所述第一应用程序的解码器设置为软件解码器,在所述第一解码器具有所述目标特征的情况下结束。

2.根据权利要求1所述的方法,其特征在于,所述目标特征包括:对应于安全解码器的第一特征、对应于低时延解码器的第二特征中的至少一个。

3.根据权利要求2所述的方法,其特征在于,所述第一解码器不具有所述目标特征的情况包括:所述第一解码器不具有所述第一特征和所述第二特征的情况。

4.根据权利要求1所述的方法,其特征在于,所述目标特征包括:对应于分辨率大于第一阈值的实时解码器的第三特征。

5.根据权利要求1所述的方法,其特征在于,在所述第一解码器不具有所述目标特征的情况下,所述方法还包括:确定第一存储模块中是否有软件解码器;

在所述第一存储模块中有软件解码器的情况下,确定目标软件解码器所支持的规格,所述目标软件解码器为所述第一存储模块中的任一软件解码器;

根据所述目标软件解码器所支持的规格,确定所述目标软件解码器是否支持对应所述第一解码器的目标规格;

所述将对应所述第一应用程序的解码器设置为软件解码器,包括:

在所述目标软件解码器所支持的规格支持所述目标规格的情况下,将对应所述第一应用程序的解码器设置为所述目标软件解码器。

6.根据权利要求5所述的方法,其特征在于,所述规格包括分辨率、帧率中的至少一个。

7.一种解码器确定装置,其特征在于,包括:

第一确定模块,用于确定第一操作是否执行失败,所述第一操作用于创建对应第一应用程序的第一解码器;

第二确定模块,用于在所述第一操作执行失败的情况下,确定所述第一操作执行失败的原因是否为硬件资源不足;在所述第一操作执行失败的原因为硬件资源不足的情况下,执行用于回收已创建的其他应用程序所占用的硬件解码器的回收操作,在所述第一操作执行失败的原因不为硬件资源不足的情况下结束;若所述回收操作执行失败,根据第一配置信息,确定是否允许切换为创建软件解码器,第一配置信息包括:用于指示在硬件资源不足使得硬件解码器创建失败时,是否允许切换为创建软件解码器的配置信息;在确定出允许切换为创建软件解码器的情况下,确定所述第一解码器是否具有目标特征,所述目标特征包括硬件解码器支持且软件解码器不支持的特征;

处理模块,用于在所述第一解码器不具有所述目标特征的情况下,将对应所述第一应用程序的解码器设置为软件解码器,在所述第一解码器具有所述目标特征的情况下结束。

8.一种电子芯片,其特征在于,包括:

处理器,其用于执行存储在存储器上的计算机程序指令,其中,当所述计算机程序指令被所述处理器执行时,触发所述电子芯片执行权利要求1‑6中任一项所述的方法。

9.一种电子设备,其特征在于,所述电子设备包括用于存储计算机程序指令的存储器、用于执行计算机程序指令的处理器和通信装置,其中,当所述计算机程序指令被该处理器执行时,触发所述电子设备执行如权利要求1‑6中任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1‑6中任一项所述的方法。

说明书 :

解码器确定方法、装置、芯片、电子设备及介质

技术领域

[0001] 本申请涉及视频解码技术领域,特别涉及一种解码器确定方法、装置、芯片、电子设备及介质。

背景技术

[0002] 电子设备(如智能手机等)上的硬件资源有限。当前已经被创建出来的硬件解码器已经将硬件资源消耗殆尽时(电子设备的使用者对此无感知),如果有新的硬件解码器需要被创建使用,则上报错误,无法继续解码视频。

发明内容

[0003] 本申请实施例提供了一种解码器确定方法、装置、芯片、电子设备及介质,能够解决硬件资源不足时无法继续解码视频的问题。
[0004] 第一方面,本申请实施例提供一种解码器确定方法,包括:确定第一操作是否执行失败,所述第一操作用于创建对应第一应用程序的第一解码器;在所述第一操作执行失败的情况下,确定所述第一解码器是否具有目标特征,所述目标特征包括软件解码器不支持的特征;在所述第一解码器不具有所述目标特征的情况下,将对应所述第一应用程序的解码器设置为软件解码器。
[0005] 可选地,所述目标特征包括:对应于安全解码器的第一特征、对应于低时延解码器的第二特征中的至少一个。
[0006] 可选地,所述第一解码器不具有所述目标特征的情况包括:所述第一解码器不具有所述第一特征和所述第二特征的情况。
[0007] 可选地,所述目标特征包括:对应于分辨率大于第一阈值的实时解码器的第三特征。
[0008] 可选地,在所述第一操作执行失败的情况下,所述方法还包括:确定所述第一操作执行失败的原因是否为硬件资源不足;在所述第一操作执行失败的原因为硬件资源不足的情况下,执行所述将对应所述第一应用程序的解码器设置为软件解码器的步骤。
[0009] 可选地,在所述第一操作执行失败的情况下,所述方法还包括:确定所述第一操作是否用于创建预先指定的硬件解码器;在所述第一操作不用于创建预先指定的硬件解码器的情况下,执行所述将对应所述第一应用程序的解码器设置为软件解码器的步骤。
[0010] 可选地,在所述第一解码器不具有所述目标特征的情况下,所述方法还包括:确定第一存储模块中是否有软件解码器;在所述第一存储模块中有软件解码器的情况下,确定目标软件解码器所支持的规格,所述目标软件解码器为所述第一存储模块中的任一软件解码器;根据所述目标软件解码器所支持的规格,确定所述目标软件解码器是否支持对应所述第一解码器的目标规格;
[0011] 所述将对应所述第一应用程序的解码器设置为软件解码器,包括:在所述目标软件解码器所支持的规格支持所述目标规格的情况下,将对应所述第一应用程序的解码器设置为所述目标软件解码器。
[0012] 可选地,所述规格包括分辨率、帧率中的至少一个。
[0013] 第二方面,本申请实施例提供一种解码器确定装置,包括:第一确定模块,用于确定第一操作是否执行失败,所述第一操作用于创建对应第一应用程序的第一解码器;第二确定模块,用于在所述第一操作执行失败的情况下,确定所述第一解码器是否具有目标特征,所述目标特征包括软件解码器不支持的特征;处理模块,用于在所述第一解码器不具有所述目标特征的情况下,将对应所述第一应用程序的解码器设置为软件解码器。
[0014] 第三方面,本申请实施例提供一种电子芯片,包括:处理器,其用于执行存储在存储器上的计算机程序指令,其中,当所述计算机程序指令被所述处理器执行时,触发所述电子芯片执行如第一方面中任一项所述的方法。
[0015] 第四方面,本申请实施例提供一种电子设备,所述电子设备包括用于存储计算机程序指令的存储器、用于执行计算机程序指令的处理器和通信装置,其中,当所述计算机程序指令被该处理器执行时,触发所述电子设备执行如第一方面中任一项所述的方法。
[0016] 第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面中任一项所述的方法。
[0017] 第六方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如第一方面中任一项所述的方法。
[0018] 本申请实施例能够解决硬件资源不足时无法继续解码视频的问题。

附图说明

[0019] 为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0020] 图1为本申请一实施例提供的一种电子设备的结构示意图;
[0021] 图2为本申请一实施例提供的一种解码器确定方法的流程示意图;
[0022] 图3为本申请一实施例提供的另一种解码器确定方法的流程示意图;
[0023] 图4为本申请一实施例提供的又一种解码器确定方法的流程示意图。

具体实施方式

[0024] 为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。
[0025] 应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0026] 在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
[0027] 应当理解,本文中使用的术语“至少一个”是指一个或者多个,“多个”是指两个或两个以上。本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a‑b,a‑c,b‑c,或a‑b‑c,其中a,b,c可以是单个,也可以是多个。
[0028] 应当理解,尽管在本申请实施例中可能采用术语第一、第二等来描述设定阈值,但这些设定阈值不应限于这些术语。这些术语仅用来将设定阈值彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一设定阈值也可以被称为第二设定阈值,类似地,第二设定阈值也可以被称为第一设定阈值。
[0029] 本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
[0030] 本申请任一实施例提供的解码器确定方法可以应用于图1所示的电子设备100中。图1示出了电子设备100的结构示意图。
[0031] 电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器
170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头
193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
[0032] 可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0033] 处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural‑network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0034] 控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0035] 处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0036] 在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter‑integrated circuit,I2C)接口,集成电路内置音频(inter‑integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general‑purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
[0037] USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0038] 充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0039] 天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0040] 移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
[0041] 调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
[0042] 无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi‑Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0043] 在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time‑division code division multiple access,TD‑SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidou navigation satellite system,BDS),准天顶卫星系统(quasi‑zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
[0044] 电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
[0045] 显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light‑emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active‑matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light‑emitting diode,FLED),Miniled,MicroLed,Micro‑oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
[0046] 电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
[0047] ISP用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。
[0048] 数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0049] 视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
[0050] NPU为神经网络(neural‑network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。
[0051] 外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0052] 内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
[0053] 电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0054] 压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
[0055] 陀螺仪传感器180B可以用于确定电子设备100的运动姿态。气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。磁传感器180D包括霍尔传感器。加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。电子设备
100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。温度传感器180J用于检测温度。
[0056] 触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
[0057] SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。
[0058] 在介绍本申请实施例之前,首先对关键术语进行说明。
[0059] 解码器(decoder),可以是一种能将数字视音频数据流解码还原成模拟视音频信号的硬件/软件设备。
[0060] 电子设备(如智能手机等)上的硬件资源有限。当前已经被创建出来的硬件解码器已经将硬件资源消耗殆尽时(电子设备的使用者对此无感知),如果有新的硬件解码器需要被创建使用,则上报错误。因所需的硬件解码器创建失败,故无法继续解码视频。
[0061] 在一个实施例中,当前已经被创建出来的硬件解码器已经将硬件资源消耗殆尽时,如果有新的硬件解码器需要被创建使用,则会有NO MEMORY(无内存)的错误上报。NO MEMORY,可以表示硬件资源不足。
[0062] 举例来说,高通6375 、高通4350 芯片平台只支持最多4个720p@30(分辨率为720,p指逐行扫描,帧率为每秒30帧)同时编解码,如果以1080P@60 投屏,并且打开图库播放1080P@60视频,就会出现播放画面静止不动的情况。如下示出了相应LOG (假设记作日志
1)的一部分,通过该部分内容可看到“H/W is overloaded”,即NO MEMORY。
[0063] 如下所示,日志1可以包括以下内容:
[0064]
[0065] 请参考图2,图2示出了本申请一实施例提供的一种解码器确定方法的流程示意图,该方法可以包括以下步骤201 步骤207。~
[0066] 步骤201,执行用于创建硬件解码器的创建操作。
[0067] 在当前应用程序需要使用新的硬件解码器时,可以执行用于创建硬件解码器的创建操作,以尝试创建当前应用程序所需的硬件解码器。
[0068] 其中,在硬件资源充足的情况下,该创建操作通常可以执行成功(即新的硬件解码器创建成功)。但在硬件资源不足的情况下,该创建操作通常会执行失败(即新的硬件解码器创建失败)。执行失败时,可以有表示无内存的错误(比如NO MEMORY)上报。
[0069] 步骤202,判断是否有表示无内存的错误上报,若是执行步骤203,否则结束。
[0070] 在一个实施例中,设置的视频解码处理流程可以涉及到按需创建硬件解码器的操作,并在硬件解码器创建失败时,有表示无内存的错误上报。此外,该视频解码处理流程还可以涉及到其他类型错误(比如设备故障、因除硬件资源不足之外的其他原因导致的硬件解码器创建失败等)的上报。
[0071] 图2所示实施例可以在该视频解码处理流程的运行过程中,实时监测是否有表示无内存的错误上报,而不监测其他类型错误的上报。
[0072] 示例性的,可以通过查看日志,来判断是否有表示无内存的错误上报。
[0073] 步骤203,执行用于回收已创建的硬件解码器的回收操作。
[0074] 已创建的硬件解码器可以有一个,也可以有多个。
[0075] 在一个实施例中,可以先确定占用有硬件解码器的其他应用程序(该其他应用程序与当前应用程序为不同的应用程序),再判断是否可以回收该其他应用程序所占用的硬件解码器。若可以回收,即可尝试关闭该其他应用程序,以回收其占用的硬件解码器。
[0076] 其中,决定是否能够关闭该其他应用程序的影响因素可以有:该其他应用程序的当前使用状态、用户针对该其他应用程序的个性化设置信息等。
[0077] 比如,若该其他应用程序当前在使用中,则不回收该其他应用程序的所占用的硬件解码器,反之则可以回收。
[0078] 比如,可以结合用户预设的或实时确认的、是否允许回收该其他应用程序的信息,来确定是否回收该其他应用程序的所占用的硬件解码器。
[0079] 在另一个实施例中,还可进一步限定该其他应用程序的优先级低于当前应用程序的优先级。基于限定的优先级,可以相应回收优先级较低的应用程序(即该应用程序的优先级低于当前应用程序的优先级)所占用的硬件解码器,而不回收优先级较高的应用程序(即该应用程序的优先级高于当前应用程序的优先级)所占用的硬件解码器。
[0080] 步骤204,判断回收操作是否执行成功,若是执行步骤205,否则结束。
[0081] 示例性地,在执行回收操作之后,若占用待回收硬件解码器的应用程序被关闭,则可以表示回收操作执行成功。反之,若占用待回收硬件解码器的应用程序没有被关闭,则可以表示回收操作执行失败。
[0082] 在一个实施例中,若回收操作执行失败,可以返回表示错误的提示信息,之后结束。
[0083] 步骤205,释放所回收的硬件解码器占用的硬件资源。
[0084] 示例性地,在占用待回收硬件解码器的应用程序被关闭后,该应用程序占用的硬件解码器被回收,从而可以释放所回收的硬件解码器占用的硬件资源。
[0085] 步骤206,执行初始化操作。
[0086] 由于之前为当前应用程序创建硬件解码器时创建失败,故而在经释放硬件资源使得硬件资源可能充足的情况下,可以执行初始化操作,以重新启动来再次尝试为当前应用程序创建硬件解码器。
[0087] 步骤207,执行对应于创建硬件解码器的配置操作。
[0088] 在完成初始化后可以执行相应的配置操作,在配置完成后即可再次尝试为当前应用程序创建硬件解码器。
[0089] Android(安卓)系统可以提供一套硬件解码器和一套软件解码器,用以对视频进行解码。为解决硬件资源不足时无法继续解码视频的问题,可以在硬件资源不足时切换为创建软件解码器,利用软件解码器达到可以继续解码的目的。
[0090] 请参考图3,图3示出了本申请一实施例提供的一种解码器确定方法的流程示意图,该方法可以包括以下步骤301 步骤311。~
[0091] 步骤301,确定第一操作是否执行失败,若是执行步骤302,否则结束,第一操作用于创建对应第一应用程序的第一解码器。
[0092] 第一应用程序可以为当前在运行的应用程序。第一应用程序的运行需要用到解码器时,可以执行第一操作。
[0093] 步骤302,确定第一操作执行失败的原因是否为硬件资源不足,若是执行步骤303,否则结束。
[0094] 若第一操作因硬件资源不足而执行失败,可以认为第一操作为用于创建硬件解码器(而非软件解码器)的操作,即第一解码器为硬件解码器。
[0095] 在软件解码器创建失败的情况下,可以无需再次尝试创建软件解码器。
[0096] 如此,在一种实现方式中,步骤302可以通过确定第一解码器是否为软件解码器来实现。若第一解码器为软件解码器,可以认为第一操作执行失败的原因不是硬件资源不足,若第一解码器不为软件解码器,可以认为第一操作执行失败的原因为硬件资源不足。
[0097] 由于图3所示实施例可以在硬件资源不足而导致硬件解码器创建失败时,切换为创建软件解码器,故而在步骤302判断为否时结束。
[0098] 步骤303,确定第一操作是否用于创建预先指定的硬件解码器,若否执行步骤304,否则结束。
[0099] 示例性地,对于指定硬件解码器的情况,可以指定解码器的唯一标识(比如解码器的名称)。可行地,可以基于不同的接口(或称不同的创建方式等)来创建硬件解码器。
[0100] 比如,接口1指示需创建预先指定的硬件解码器,接口2指示在硬件资源不足使得硬件解码器创建失败时,允许切换为创建软件解码器。
[0101] 对于接口1,因其指定了要创建的硬件解码器,故若创建失败则结束,不切换为创建软件解码器。
[0102] 在一种实现方式中,步骤303可以通过确定是否基于接口2执行第一操作来实现。若确定出基于接口2执行第一操作,则执行步骤304,否则结束。
[0103] 在一个实施例中,接口2可以记作“MediaCodec.createByType(按照视频类型创建媒体解码器)”。该情况下,步骤303具体可以为确定第一解码器是否为基于“MediaCodec.createByType”创建的解码器,即确定第一操作的解码器创建方式是否为针对该接口2的解码器创建方式。
[0104] MediaCodec是安卓操作系统中的编解码器组件。“createByType”中的“Type”可以为待解码视频的格式类型,视频的格式类型比如可以有AVC (高级视频编码)、HEVC(高效率视频编码)等。按照视频类型创建解码器时,可以得到相应解码器的规格,比如分辨率、帧率等参数。
[0105] 步骤304,根据第一配置信息,确定是否允许切换为创建软件解码器,若是执行步骤305,否则结束,第一配置信息包括:用于指示在硬件资源不足使得硬件解码器创建失败时,是否允许切换为创建软件解码器的配置信息。
[0106] 示例性的,用户可以按需为不同的应用程序配置相应的第一配置信息。
[0107] 可以针对不同的应用程序,预设相应的第一配置信息。
[0108] 步骤305,确定第一解码器是否为具有第一特征和第二特征中的至少一个特征的解码器,若否执行步骤306,否则结束,第一特征为对应于安全解码器的特征,第二特征为对应于低时延解码器的特征。
[0109] 第一特征和第二特征均为硬件解码器支持但软件解码器不支持的特征。
[0110] 特征,或称要求、标准、属性等。第一特征和第二特征均可用于区分硬件解码器和软件解码器。
[0111] 对应于第一特征和第二特征,所能创建的硬件解码器可以有:属于安全解码器类型的硬件解码器、属于低时延解码器类型的硬件解码器、属于安全解码器类型和低时延解码器类型的硬件解码器等。而所能创建的软件解码器通常不会属于安全解码器类型,也不会属于低时延解码器类型。
[0112] 需要说明的是,无论第一解码器是否被创建成功,第一解码器的相关信息(比如第一解码器是否为安全解码器的信息、是否为低时延解码器的信息等)已存在。
[0113] 若第一解码器具有第一特征和第二特征中的至少一个,即需要创建具有第一特征和第二特征中的至少一个的解码器(即软件解码器不符合创建需求),则在步骤305判断为是时可结束,而无需切换为创建软件解码器。
[0114] 在一种实现方式中,步骤305具体可以为确定第一解码器是否为安全解码器,以及是否为低时延解码器。在第一解码器既不为安全解码器也不为低时延解码器时,执行步骤306,否则结束。
[0115] 在另一种实现方式中,步骤305具体可以为确定第一解码器是否为安全解码器。若第一解码器不为安全解码器,可执行步骤306,否则结束。
[0116] 在又一种实现方式中,步骤305具体可以为确定第一解码器是否为低时延解码器。若第一解码器不为低时延解码器,可执行步骤306,否则结束。
[0117] 步骤306,确定第一解码器是否为具有第三特征的解码器,若否执行步骤307,否则结束,第三特征为对应于分辨率大于第一阈值的实时解码器的特征。
[0118] 第三特征为硬件解码器支持但软件解码器支持的特征。
[0119] 在应用程序的解码器创建要求较高(比如具有第三特征)时,使得软件解码器不支持该要求而硬件解码器能够支持该要求时,需要创建硬件解码器。若硬件解码器创建失败则结束。
[0120] 该情况下,若第一解码器为具有第三特征的解码器,则步骤306判断为是。
[0121] 在应用程序的解码器创建要求较低(比如无需具有第三特征,具有对应于非实时解码器的第四特征,或者具有对应于分辨率不大于第一阈值的实时解码器的第五特征即可)时,使得软件解码器和硬件解码器均能够支持该要求时,既可以创建硬件解码器,也可以创建软件解码器。若硬件解码器创建失败则可以继续,以切换为创建软件解码器。
[0122] 第一阈值的取值可以按需设定,比如可以设置为1080P,也可以设置为其他适宜的取值。
[0123] 该情况下,若第一解码器为具有第四特征或者第五特征的解码器,则步骤306判断为否。
[0124] 在一个实施例中,步骤306具体可以为确定第一解码器是否为非实时解码器,以及是否为分辨率不大于第一阈值的实时解码器。在第一解码器为非实时解码器时,执行步骤307,在第一解码器为分辨率不大于第一阈值的实时解码器时,同样执行步骤307。
[0125] 在另一个实施例中,步骤306具体可以为确定第一解码器是否为分辨率大于第一阈值的实时解码器。在第一解码器为分辨率大于第一阈值的实时解码器时结束,否则执行步骤307。
[0126] 步骤307,在第一存储模块中查找软件解码器。
[0127] 一个实施例中,第一存储模块可以存储软件解码器。
[0128] 另一个实施例中,第一存储模块可以仅记录软件解码器,比如记录软件解码器的名称,而不存储软件解码器。
[0129] 在一个实施例中,该第一存储模块可以为电子设备(如智能手机)中的MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展),其根据电子设备的操作系统、硬件等因素决定。在解码器列表中以MIME为关键字查找软件解码器,可以使得第一应用程序解码视频使用的软件解码器与电子设备相匹配。
[0130] 在其他实施例中,该第一存储模块还可以为存储有与电子设备相匹配的解码器的其他实体或虚拟存储模块。
[0131] 在一个实施例中,可以获取第一存储模块中的部分或全部解码器,获取的这些解码器中既可以包括硬件解码器,也可以包括软件解码器。
[0132] 步骤308,确定在第一存储模块中是否查找到软件解码器,若是执行步骤309,否则结束。
[0133] 步骤309,确定查找到的软件解码器所支持的规格。
[0134] 在一个实施例中,可以查询用于记录软件解码器所支持规格的工具(如文件、存储模块等),来确定查找到的软件解码器所支持的规格。
[0135] 该用于记录软件解码器所支持规格的工具可以记作“IMediaCodecList(媒体解码器列表)”,其中可以记录有软件解码器支持的最大规格。
[0136] 规格可以包括分辨率、帧率等。
[0137] 步骤310,根据查找到的软件解码器所支持的规格,确定查找到的软件解码器是否支持对应第一解码器的目标规格,若是执行步骤311,否则结束。
[0138] 示例性的,通过对比查找到的软件解码器的最大规则和第一解码器的目标规格,可以确定查找到的软件解码器是否被第一应用程序用来解码视频。
[0139] 一个实施例中,可以依次对比查找到的每一个软件解码器,直至得到支持目标规格的软件解码器。在另一个实施例中,也可以分别对比查找到的每一个软件解码器,得到不止一个支持目标规格的软件解码器,再取这些软件解码器中的任意一个或最优者供第一应用程序使用。
[0140] 步骤311,将对应第一应用程序的解码器设置为查找到的支持目标规格的软件解码器中的一个。
[0141] 如此,第一应用程序可以使用该软件解码器来解码视频。
[0142] 在一个实施例中,可以将用于配置第一应用程序所用解码器的信息(比如记作mlnitName,“mlnitName为代码中的变量名”)赋值为该软件解码器的唯一标识(比如该软件解码器的名字),使得第一应用程序使用该软件解码器来解码视频。
[0143] 在一个实施例中,请参考图3,可以先返回表示错误的提示信息,之后再结束。
[0144] 图3所示实施例提供的解码器确定方式可以动态自动切换软件解码器,提高解码成功率。
[0145] 本申请实施例在硬件资源充足时创建硬件解码器,在硬件资源不足时尝试切换为软件解码器,如此不仅可以实现继续解码的目的,还可以保证解码效果。
[0146] 本申请实施例通过在视频框架中增加动态切换软件解码器的过程,可以满足在硬件资源不足而无法创建新的硬件解码器时,利用软件解码器达到能够继续解码的目的。
[0147] 需要说明的是,本申请实施例的解码器确定方法并不局限于图3所示内容,比如在其他可行地实现方式中,上述的一些判断步骤的先后执行顺序可以不固定,也可以并行执行这些步骤。本申请对此均不作限定。
[0148] 比如,在另一个实施例中,也可以先执行步骤303,再执行步骤302,步骤303判断为否时执行步骤302,步骤302判断为是时执行步骤304。
[0149] 再比如,在再一个实施例中,也可以先执行步骤306,再执行步骤305,步骤306判断为否时执行步骤305,步骤305判断为否时执行步骤307。
[0150] 另外,上述的一些判断步骤可以全部执行,也可以部分执行。本申请对此均不作限定。
[0151] 比如,在另一实施例中,可以不执行上述步骤302。
[0152] 再比如,在再一个实施例中,可以不执行上述步骤304。
[0153] 又比如,在又一个实施例中,可以不执行上述步骤304和步骤302。
[0154] 又比如,在又一个实施例中,可以不执行上述步骤309和步骤310。
[0155] 图3所示实施例中,基于步骤301 步骤303,可以先确定创建解码器的操作是否执~行失败,若执行失败则进一步确定是否因硬件资源不足而导致解码器创建失败(如此可以排除掉软件解码器创建失败的情况),若为因硬件资源不足导致解码器创建失败,则进一步确定是否需要创建预先指定的硬件解码器(如此可以排除掉基于接口1创建硬件解码器失败的情况)。若步骤303判断为第一操作不用于创建预先指定的硬件解码器,即表示基于接口2执行的创建硬件解码器的操作因硬件资源不足而执行失败。
[0156] 在区别于图3所示实施例的另一个实施例中,也可以不执行以上步骤301 步骤~303,而是直接执行“确定基于接口2执行的创建解码器的操作是否执行失败”的步骤(假设记作步骤一),若确定为执行失败可执行上述步骤304,而不监测基于接口1执行的创建解码器的操作是否执行失败。
[0157] 比如步骤一具体可以为仅监测通过上述“MediaCodec.createByType”接口创建解码器的过程中是否出现“NO MEMORY”的错误上报。
[0158] 此外,考虑到接口2指示在硬件解码器因硬件不足而创建失败时切换为创建软解码器,则基于接口2执行的创建解码器的操作可以是创建硬件解码器的操作,也可以是创建软件解码器的操作。如此,在确定出基于接口2执行的创建解码器的操作执行失败的情况下,以及在执行上述步骤311之前,还可以执行判断第一解码器是否为软件解码器的步骤。若不为软件解码器可以执行步骤311,否则不执行步骤311。
[0159] 在一个实施例中,可以在步骤一判断为第一操作执行失败后执行上述步骤203和步骤204,若回收操作执行失败,可以执行步骤304。
[0160] 基于上述内容,在一种可行的实现方式中,若在通过“MediaCodec.createByType”创建硬件解码器的过程中出现了“NO MEMORY”的错误上报,并且同时满足下列条件1)3),~即可将解码器的名称重新赋值为确定出的新的软件解码器的名称(将新找到的软件解码器的名称记录下来)。
[0161] 1)创建失败的硬件解码器不是安全解码器,也不是低延时解码器;
[0162] 2)创建失败的硬件解码器是非实时解码器,或者是实时解码器但分辨率小于等于1080P;
[0163] 3)对于创建失败的硬件解码器的规格,当前的mime中有能支持该规格的软件解码器。
[0164] 在将解码器的名称重新赋值之后,可以重新执行解码器创建流程(比如可以在步骤311之后执行以下步骤1 步骤3)。~
[0165] 步骤1,释放之前旧的解码器。之前为当前应用程序创建硬件解码器时创建失败,故在此先释放之前旧的解码器,以便后续通过初始化操作和配置操作,可以配置新的解码器。
[0166] 步骤2,执行初始化操作。
[0167] 通过执行初始化操作,以重新启动来开始为当前应用程序创建相应软件解码器。
[0168] 步骤3,执行对应于创建软件解码器的配置操作。
[0169] 在完成初始化后,可以根据所赋值的软件解码器的名称,执行相应的配置操作,以为当前应用程序创建相应软件解码器。
[0170] 基于本申请实施例的实现可以动态切换软解码,使得播放画面可以正常播放,不会静止不动。在一个实施例中,如下示出了相应LOG (假设记作日志2)的一部分,通过该部分内容可看到切换成软解码成功。
[0171] 一个实施例中,如下所示,日志2可以包括以下内容:
[0172]
[0173] 通过该部分日志内容可看到“NO MEMORY”,即硬件解码器创建失败,并切换为创建软件解码器。其中,“c2.qti .avc .decoder”为相应硬件解码器的名称,“c2.android.avc.decoder” 为相应软件解码器的名称。通过日志内容可以看出,硬件解码器因内存不足而创建失败时,切换为创建软件解码器且切换成功。
[0174] 另一个实施例中,如下所示,日志2可以包括以下内容:
[0175]
[0176] 通过该部分日志内容可看到由创建硬件解码器切换为创建软件解码器。其中,“c2.qti.avc.decoder”为相应硬件解码器的名称,“c2.android.avc.decoder” 为相应软件解码器的名称。
[0177] 在一个实施例中,关于是否切换了软件解码器并切换成功,可以通过“dump media.resourcemanager”或“media.hncodec”或者“过滤logcat 打出的LOG”查看确认。
[0178] 示例性地,“dump media.resourcemanager”可以理解为“查看媒体资源管理器”,“media.hncodec” 可以理解为“查看媒体编解码器”,“过滤logcat 打出的LOG”可以理解为“查看logcat输出的日志”,本申请实施例对此不作限定。
[0179] logcat是Android中一个命令行工具,可以用于得到程序的log信息。
[0180] 以通过“过滤logcat 打出的LOG”查看确认是否切换了软件解码器并切换成功为例,在一种实现方式中,如下示出了相应LOG (假设记作日志3)的一部分。请参考该部分内容,通过adb logcat ‑s MediaCodec可以看到创建硬件解码器c2.qti.avc.decoder时出现0xfffffff4,即NO MEMORY后切换到了软件解码器c2.android.avc.decoder。
[0181] adb,全拼为Android Debug Bridge,中文释义为安卓调试桥。
[0182] 该实现方式中,“c2.qti.avc.decoder”为相应硬件解码器的名称,“c2.android.avc.decoder” 为相应软件解码器的名称。
[0183] “adb logcat ‑s MediaCodec”可以理解为 “查看logcat输出的log中MediaCodec部分”。
[0184] 如下所示,日志3可以包括以下内容:
[0185]
[0186] 通过该部分日志内容可看到,在硬件解码器创建失败时切换为创建软件解码器。其中,“c2.qti.avc.decoder”为相应硬件解码器的名称,“c2.android.avc.decoder” 为相应软件解码器的名称。
[0187] 以通过“过滤logcat 打出的LOG”查看确认是否切换了软件解码器并切换成功为例,在另一种实现方式中,如下示出了相应LOG (假设记作日志4)的一部分。请参考该部分内容,通过adb shell dumpsys media.hncodec(其作用等同于上述“adb logcat ‑s MediaCodec”)可看出先是硬件解码器c2.qti.avc.decoder,后是软件解码器c2.android.avc.decoder,即切换了软件解码器并切换成功。
[0188] 该实现方式中,“c2.qti.avc.decoder”为相应硬件解码器的名称,“c2.android.avc.decoder” 为相应软件解码器的名称。
[0189] 如下所示,日志4可以包括以下内容:
[0190]
[0191] 请参考图4,图4示出了另一种解码器确定方法的流程示意图,该方法可以包括以下步骤401 步骤403。对图4所示方法的理解可参考上述对图3所示方法的技术说明,本实施~例在此不做赘述。
[0192] 步骤401,确定第一操作是否执行失败,第一操作用于创建对应第一应用程序的第一解码器,若是执行步骤402,否则结束。
[0193] 步骤402,确定第一解码器是否具有目标特征,目标特征包括软件解码器不支持的特征,若否执行步骤403,否则结束。
[0194] 目标特征为硬件解码器支持但软件解码器不支持的特征,比如对应于安全解码器的特征、对应于低时延解码器的特征、对应于分辨率大于第一阈值的实时解码器的特征等。
[0195] 若需要创建的解码器具有目标特征,即只能创建硬件解码器,则硬件解码器创建失败时无法切换为创建软件解码器。
[0196] 在一个实施例中,目标特征包括:对应于安全解码器的第一特征、对应于低时延解码器的第二特征中的至少一个。
[0197] 基于此,在一个实施例中,第一解码器不具有目标特征的情况包括:第一解码器不具有第一特征的情况。
[0198] 在另一个实施例中,第一解码器不具有目标特征的情况包括:第一解码器不具有第二特征的情况。
[0199] 在又一个实施例中,第一解码器不具有目标特征的情况包括:第一解码器不具有第一特征和第二特征的情况。即创建失败的第一解码器既不为安全解码器,也不为低时延解码器。
[0200] 在一个实施例中,目标特征包括:对应于分辨率大于第一阈值的实时解码器的第三特征。
[0201] 若创建失败的第一解码器为非实时解码器,则其不具有第三特征。若创建失败的第一解码器为分辨率不大于第一阈值的实时解码器,则其不具有第三特征。
[0202] 步骤403,将对应第一应用程序的解码器设置为软件解码器。
[0203] 在第一解码器具有目标特征的情况下结束,即硬件解码器创建失败时无法切换为创建软件解码器。若目标特征有不止一个,只要第一解码器具有任一目标特征(即具有至少一个目标特征),即结束,而无需具有全部目标特征。
[0204] 在一个实施例中,在第一解码器不具有目标特征的情况下,该方法还包括:确定第一存储模块中是否有软件解码器;在第一存储模块中有软件解码器的情况下,确定目标软件解码器所支持的规格,目标软件解码器为第一存储模块中的任一软件解码器;根据目标软件解码器所支持的规格,确定目标软件解码器是否支持对应第一解码器的目标规格;步骤403包括:在目标软件解码器所支持的规格支持目标规格的情况下,将对应第一应用程序的解码器设置为目标软件解码器。
[0205] 该规格包括分辨率、帧率中的至少一个。
[0206] 该实施例具体可以通过以上步骤307 步骤311来实现。目标软件解码器可以为图3~所示实施例中查找到的支持目标规格的软件解码器中的任意一个,也可以为其中特定的一个(比如其中的第一个)。
[0207] 可行地,可以将对应第一应用程序的解码器的名称设置为目标软件解码器的名称。
[0208] 在一个实施例中,在第一操作执行失败的情况下,该方法还可以包括:确定第一操作执行失败的原因是否为硬件资源不足,若是执行步骤403,否则结束。
[0209] 在一个实施例中,在第一操作执行失败的情况下,该方法还可以包括:确定第一操作是否用于创建预先指定的硬件解码器,若否执行步骤403,否则结束。
[0210] 本申请一个实施例还提供了一种解码器确定装置,包括:第一确定模块,用于确定第一操作是否执行失败,第一操作用于创建对应第一应用程序的第一解码器;第二确定模块,用于在第一操作执行失败的情况下,确定第一解码器是否具有目标特征,目标特征包括软件解码器不支持的特征;处理模块,用于在第一解码器不具有目标特征的情况下,将对应第一应用程序的解码器设置为软件解码器。
[0211] 本申请一个实施例还提供一种电子芯片,该任务处理芯片安装在电子设备(UE)中,电子芯片包括:处理器,其用于执行存储在存储器上的计算机程序指令,其中,当计算机程序指令被处理器执行时,触发电子芯片执行本申请任意方法实施例提供的方法步骤。
[0212] 本申请一实施例还提出了一种终端设备,终端设备包括通信模块、用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发终端设备执行本申请任意方法实施例提供的方法步骤。
[0213] 本申请一实施例还提出了一种服务器设备,服务器设备包括通信模块、用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发服务器设备执行本申请任意方法实施例提供的方法步骤。
[0214] 本申请一个实施例还提供一种电子设备,电子设备包括多根天线、用于存储计算机程序指令的存储器、用于执行计算机程序指令的处理器和通信装置(比如可以基于NR协议实现5G通信的通信模块),其中,当计算机程序指令被该处理器执行时,触发电子设备执行本申请任意方法实施例提供的方法步骤。
[0215] 具体的,在本申请一实施例中,一个或多个计算机程序被存储在上述存储器中,该一个或多个计算机程序包括指令,当该指令被上述设备执行时,使得上述设备执行本申请实施例所述的方法步骤。
[0216] 具体的,在本申请一实施例中,电子设备的处理器可以是片上装置SOC(System on Chip,系统级芯片),该处理器中可以包括中央处理器(Central Processing Unit,CPU),还可以进一步包括其他类型的处理器。具体的,在本申请一实施例中,电子设备的处理器可以是PWM控制芯片。
[0217] 具体的,在本申请一实施例中,涉及的处理器可以例如包括CPU、DSP(digital signal processor,数字信号处理器)或微控制器,还可包括GPU(graphics processing unit,图形处理器)、嵌入式神经网络处理器(Neural‑network Process Units,NPU)和图像信号处理器(Image Signal Processing,ISP),该处理器还可包括必要的硬件加速器或逻辑处理硬件电路,如ASIC,或一个或多个用于控制本申请技术方案程序执行的集成电路等。此外,处理器可以具有操作一个或多个软件程序的功能,软件程序可以存储在存储介质中。
[0218] 具体的,在本申请一实施例中,电子设备的存储器可以是只读存储器(read‑only memory,ROM)、可存储静态信息和指令的其它类型的静态存储设备、随机存取存储器(random access memory,RAM)或可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read‑only memory,EEPROM)、只读光盘(compact disc read‑only memory,CD‑ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何计算机可读介质。
[0219] 具体的,在本申请一实施例中,处理器可以和存储器可以合成一个处理装置,更常见的是彼此独立的部件,处理器用于执行存储器中存储的程序代码来实现本申请实施例所述方法。具体实现时,该存储器也可以集成在处理器中,或者,独立于处理器。
[0220] 进一步的,本申请实施例阐明的设备、装置、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
[0221] 本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
[0222] 在本申请所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
[0223] 具体的,本申请一实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本申请实施例提供的方法步骤。
[0224] 本申请一实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行本申请实施例提供的方法步骤。
[0225] 本申请中的实施例描述是参照根据本申请实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0226] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0227] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0228] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
[0229] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0230] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0231] 以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0232] 本申请实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0233] 本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0234] 本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0235] 本领域普通技术人员可以意识到,本申请实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0236] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0237] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。