一种视频解码方法及装置与流程

文档序号:11710251阅读:153来源:国知局
一种视频解码方法及装置与流程

本发明涉及互联网技术领域,更具体而言,涉及一种视频解码方法及装置。



背景技术:

目前,由于移动终端的功能越来越完善,屏幕尺寸越来越大,因此,移动终端所能够运行的项目也越来越多,使得人们能够使用移动终端进行阅读、游戏和观看视频等多种项目。

以使用移动终端观看视频为例,其中,每段视频包括多帧图像,每帧图像均由多个宏块组成。其中,宏块由一个亮度像素块和两个附加的色度像素块组成,通常,亮度像素块为16*16大小的像素块,而两个色度像素块的大小根据图像的采样格式确定。为了便于存储和传输视频资源,视频资源通常以压缩文件的形式存储在服务器,在移动终端播放视频之前,首先需要将该视频资源的压缩文件从服务器端下载到本地,然后对该编码压缩后的视频资源进行解码。为了提高视频资源的压缩率,通常使用分像素插值法对视频资源进行编码压缩。其中,分像素插值是指在每帧原有的整宏块之间插入分宏块,并根据其邻近宏块的亮度值,按照预设算法计算该分宏块的亮度值。在分像素插值完成后,通过整宏块的亮度值减去分宏块的亮度值得到压缩文件中对应宏块的亮度残差值,从而通过减小每帧整宏块亮度值的比特数实现压缩。移动终端在接收到压缩文件后,根据压缩文件中的数据信息,再次按照编码时的预设算法计算得到分宏块的亮度值,然后,通过分宏块的亮度值与压缩文件中宏块的亮度残差值相加,还原每帧整宏块的原始亮度值,该还原的过程即为解码的过程。

然而,在移动终端播放分辨率较高的视频时,例如高清或者超清视频,由于高清和/或超清视频每帧的宏块数量较多,视频资源在编码压缩时插入的分宏块数量也较多,计算量相对较大,从而导致解码时的计算量也较大,然而,移动终端cpu(centralprocessingunit,中央处理器)的数据处理能力有限,造成解码速度较慢,从而导致视频播放时的帧率较低,导致视频播放过程卡顿,用户体验不好。



技术实现要素:

有鉴于此,本发明实施例提供了一种视频解码方法及装置,能够基于移动终端的数据处理能力,提高解码速度,从而能够解决视频播放时帧率低,播放过程卡顿的问题,进而能够提高用户体验。

第一方面,本发明实施例提供了一种视频解码方法,包括:确定待解码视频资源;按照原算法对所述待解码视频资源进行解码;计算按照所述原算法解码时视频播放的帧率;当所述帧率小于所述待解码视频资源的第一标准帧率时,将所述原算法切换为第一预设算法;按照所述第一预设算法对所述待解码视频资源解码。

在第一方面的第一种可能的实现方式中,所述按照所述第一预设算法对所述待解码视频资源解码,包括:确定所述待解码视频资源中1/2分宏块的位置信息,其中,1/2分宏块指位于两个整宏块之间1/2位置的分宏块;根据所述位置信息在已解码的宏块中采集第一组整宏块和第二组整宏块的参考亮度值,其中,所述第一组整宏块为与所述1/2分宏块相邻,且基于所述1/2分宏块对称的两个整宏块;所述第二组整宏块为所述第一组整宏块确定的行或者列中,与所述第一组整宏块相邻的整宏块;将所述第一组整宏块的参考亮度值和所述第二组整宏块的参考亮度值按照第一预设算法进行运算,得到所述1/2分宏块的亮度值;根据所述1/2分宏块的亮度值计算得到所述第一组整宏块、所述第二组整宏块与所述第三组整宏块的原始亮度值,其中,所述第三组整宏块为所述第一组整宏块确定的行或者列中,与所述第二组整宏块相邻的整宏块。

结合上述第一方面,在第二种可能的实现方式中,按照所述第一预设算法对所述待解码视频资源解码之后,还包括:计算按照所述第一预设算法解码时视频播放的帧率;判断所述帧率是否小于所述待解码视频资源对应的第二标准帧率,其中,所述第二标准帧率大于所述第一标准帧率;如果所述帧率大于或者等于所述第二标准帧率,执行按照所述第一预设算法对所述待解码视频资源解码的步骤;如果所述帧率小于所述第二标准帧率,将所述第一预设算法切换为第二预设算法;按照所述第二预设算法对所述待解码视频资源解码。

结合上述第一方面,在第三种可能的实现方式中,所述按照所述第二预设算法对所述待解码视频资源解码,包括:确定所述待解码视频资源中1/2分宏块的位置信息,其中,1/2分宏块指位于两个整宏块之间1/2位置的分宏块;根据所述位置信息 在已解码的宏块中采集第一组整宏块的参考亮度值,其中,所述第一组整宏块为与所述1/2分宏块相邻,且基于所述1/2分宏块对称的两个整宏块;将所述第一组整宏块的参考亮度值按照所述第二预设算法进行运算,得到所述1/2分宏块的亮度值;根据所述1/2分宏块的亮度值计算得到所述第一组整宏块、所述第二组整宏块与所述第三组整宏块的原始亮度值,其中,所述第三组整宏块为所述第一组整宏块确定的行或者列中,与所述第二组整宏块相邻的整宏块。

结合上述第一方面,在第四种可能的实现方式中,所述确定待解码视频资源包括:读取中央处理器cpu的计算速度;根据所述cpu的计算速度确定所述待解码视频资源;或者,接收用于确定所述待解码视频资源的选择命令;根据所述选择命令确定所述待解码视频资源。

第二方面,本发明实施例还提供了一种视频解码装置,包括:确定模块,用于确定待解码视频资源;解码模块,用于按照原算法对所述确定模块所确定的待解码视频资源进行解码;计算模块,用于计算所述解码模块按照所述原算法解码时视频播放的帧率;切换模块,用于当所述计算模块计算得到的帧率小于所述待解码视频资源的第一标准帧率时,将所述原算法切换为第一预设算法;所述解码模块,还用于按照所述切换模块切换后的第一预设算法对所述待解码视频资源解码。

在第二方面的第一种可能的实现方式中,所述解码模块包括:第一确定单元、采集单元、亮度值运算单元,其中,所述第一确定单元,用于确定所述待解码视频资源中1/2分宏块的位置信息,其中,1/2分宏块指位于两个整宏块之间1/2位置的分宏块;所述采集单元,用于根据所述位置信息在已解码的宏块中采集第一组整宏块和第二组整宏块的参考亮度值,其中,所述第一组整宏块为与所述1/2分宏块相邻,且基于所述1/2分宏块对称的两个整宏块;所述第二组整宏块为所述第一组整宏块确定的行或者列中,与所述第一组整宏块相邻的整宏块;所述亮度值运算单元,用于将所述第一组整宏块的参考亮度值和所述第二组整宏块的参考亮度值按照第一预设算法进行运算,得到所述1/2分宏块的亮度值;所述亮度值运算单元,还用于根据所述1/2分宏块的亮度值计算得到所述第一组整宏块、所述第二组整宏块与所述第三组整宏块的原始亮度值,其中,所述第三组整宏块为所述第一组整宏块确定的行或者列中,与所述第二组整宏块相邻的整宏块。

结合上述第二方面,在第二种可能的实现方式中,还包括:判断模块,其中, 所述计算模块,还用于计算按照所述第一预设算法解码时视频播放的帧率;所述判断模块,用于判断所述帧率是否小于所述待解码视频资源对应的第二标准帧率;所述解码模块,还用于在所述帧率大于或者等于所述第二标准帧率时,按照所述第一预设算法对所述待解码视频资源解码;所述切换模块,还用于在所述帧率小于所述第二标准帧率时,将所述第一预设算法切换为第二预设算法;所述解码模块,还用于按照所述第二预设算法对所述待解码视频资源解码。

结合上述第二方面,在第三种可能的实现方式中,所述采集单元,还用于根据所述位置信息在已解码的宏块中采集第一组整宏块参考亮度值;所述亮度值运算单元,还用于将所述第一组整宏块的参考亮度值按照所述第二预设算法进行运算,得到所述1/2分宏块的亮度值。

结合上述第二方面,在第四种可能的实现方式中,所述确定模块还包括:读取单元、接收单元和第二确定单元,其中,所述读取单元,用于读取中央处理器cpu的计算速度;所述第二确定单元,用于根据所述cpu的计算速度确定所述待解码视频资源;所述接收单元,用于接收用于确定所述待解码视频资源的选择命令;所述第二确定单元,还用于根据所述选择命令确定所述待解码视频资源。

由以上技术方案可知,本发明实施例所提供的视频解码方法及装置,在确定待解码视频资源后,按照原算法对待解码视频资源进行解码,并计算按照原算法解码时视频播放的帧率。如果帧率小于待解码视频资源的第一标准帧率时,说明帧率相对较小,不能够保证视频流畅播放,则将原算法切换为第一预设算法,按照第一预设算法对待解码视频资源进行解码。与现有技术相比,本发明实施例的技术方案,在移动终端设置至少两套解码算法,当按照原算法解码时的播放帧率无法达到流畅播放的值时,切换解码算法,从而在移动终端的数据处理能力不变的情况下,提高解码速度,进而提高视频播放帧率,保证视频能够流畅播放,提高用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等 比例缩放绘制附图,重点在于示出本发明的主旨。

图1为本发明实施例提供的视频解码方法的方法流程图;

图2为本发明实施例提供的视频解码方法的第二种实施方式的方法流程图;

图3为本发明提供的示例图样的宏块位置关系示意图;

图4为本发明实施例提供的视频解码装置的结构示意图;

图5为本发明实施例提供的视频解码装置第二种实施方式的结构示意图。

具体实施方式

在视频播放过程中,视频解码是极其重要的环节,也是对cpu开销最大的环节,而视频解码过程中,由于分像素插值的过程不仅计算量大,而且操作频繁,因此,分像素插值的过程为视频解码过程中,对cpu开销最大的环节。因此,可以通过减少分像素插值对cpu的开销,解放出更多的cpu资源,进一步的,才能够提高视频解码的速度,进而提高视频播放的帧率,因此,提出了本发明实施例的技术方案。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,图1为本发明实施例提供的视频解码方法的方法流程图,所述方法包括以下步骤:

步骤s101:确定待解码视频资源。

其中,当用户在移动终端点击播放某视频时,移动终端会从该视频对应的服务器下载该视频对应的视频资源,而现有技术中,为了向用户提供更多选择,通常根据画面的分辨率可以将视频资源分为标清、高清和超清三种分辨率配置,每种分辨率对应一个视频资源,因此,移动终端在下载视频资源时,会将该视频对应的所有视频资源全部下载。由于一段视频可能对应多个视频资源,因此,在播放前需要选择即将播放的视频资源,并对所选择的视频资源进行解码,选择即将播放的视频资源的过程即为确定待解码视频资源的过程。

需要说明的是,同一视频对应的视频资源通常使用相同的编码标准进行压缩,而通常同一种编码标准的压缩率基本相同,由于分辨率不同的视频资源本身的数据量也不同,因此,不同分辨率的视频资源可以根据数据量大小进行区分。例如,当视频对应标清、高清和超清三种分辨率的视频资源时,标清配置对应的数据量最小,高清配置对应的数据量居中,超清配置对应的数据量最大,从而便于移动终端选择待解码视频资源。

其中,移动终端可以根据cpu的处理能力自动选择待解码视频资源,也可以根据用户的选择确定待解码视频资源。具体的,移动终端下载视频资源后,如果只有一个视频资源,将该视频资源确定为待解码视频资源;如果有多个视频资源,则可以读取cpu的计算速度,根据cpu的计算速度匹配数据量大小合适的视频资源,例如,cpu的计算速度达到某一阈值时,可以匹配小于某一大小的视频资源,具体的可以根据不同配置的移动终端和视频资源的数据量大小来设定,本发明实施例对此不做限制。

需要说明的是,为了提高用户体验,当与cpu的计算速度相匹配的视频资源大于一个时,优选的,选择分辨率相对较高视频进行播放,即在本发明实施例中,将数据量相对较大的视频资源确定为待解码视频资源。

此外,待解码视频资源也可以根据用户的选择来确定,由于分辨率根据每帧画面的宏块数量进行区分,因此,在编码时,可以按照每帧画面的宏块数量为视频资源添加分辨率标识,当用户根据需求通过点击选择分辨率时,移动终端接收确定待解码视频资源的选择命令,其中,选择命令中可以包括分辨率标识,移动终端可以将分辨率标识对应的视频资源确定为待解码视频资源。

本步骤中,通过至少上述两种方式确定待解码视频资源,使得待解码视频资源的选择更加人性化,能够提高用户体验,同时为视频解码过程提供了技术基础。

步骤s102:按照原算法对所述待解码视频资源进行解码。

其中,由上述描述可知,编码过程和解码过程均需要进行分像素插值,为了能够提高画面的还原度,通常,解码时进行分像素插值默认使用的算法与编码时所使用的算法一致。本发明实施例中,将编码时所使用的算法称为原算法。

具体的,为了便于本领域技术人员对本方案进行更加清楚的理解,本实施例中,结合h.264标准对本方案中所述的原算法进行描述。请参见图3,图3为本发明提供 的示例图样的宏块位置关系示意图,本实施例中,每个方块表示一个宏块,其中,标注有大写英文字母a、b、c、d、e、f、o、p、q、r和s的宏块为整宏块,标注有小写字母a、b、dd、ss和nn的宏块为分宏块。由于宏块a和宏块b位于两个整宏块1/2的位置,称为1/2分宏块,而宏块dd、ss和nn位于两整宏块1/4的位置,称为1/4分宏块。

在插入分宏块时,根据插入的位置通过该分宏块邻近的宏块计算该分宏块的亮度值,其中,计算分宏块亮度值的算法根据标准的不同而不同。本实施例中以h.264标准为例,对分宏块亮度值的计算进行说明。需要说明的是,为便于描述,本实施例中通过宏块的字母标识表示该宏块的亮度值。其中,1/2分宏块亮度值的计算如公式一和公式二所示:

a1=(a-5*b+20*c+20*d-5*e+f),a=clip1y((a1+16)>>5);(公式一)

b1=(o-5*p+20*c+20*q-5*r+s),b=clip1y((b1+16)>>5);(公式二)

由此可见,在计算1/2分宏块亮度值时,需要以6个整宏块的亮度值为参数,该6个整宏块以该分宏块为中心对称取值。为便于描述,本实施例中,将该6个整宏块分为三组整宏块,以a宏块为例,其中,第一组整宏块为与1/2分宏块相邻的整宏块,即宏块c和宏块d;第二组整宏块为第一组整宏块确定的行或者列中,与第一组整宏块相邻的整宏块,即宏块b和宏块e;第三组整宏块为第一组整宏块确定的行或者列中,与第二组整宏块相邻的整宏块,即宏块a和宏块f。

1/4分宏块的亮度值计算如公式三、公式四和公式五所示:

dd=(c+a+1)>>1;(公式三)

ss=(d+a+1)>>1;(公式四)

nn=(c+b+1)>>1;(公式五)

由此可见,在计算分宏块的亮度值时,首先需要确定分宏块的位置,根据所确定的分宏块的位置获取其邻近宏块的亮度值,将其邻近宏块的亮度值按照预设算法计算得到分宏块的亮度值。

需要说明的是,以上仅以几个宏块为例对分宏块插值的过程进行说明,其他位置分宏块亮度值的计算与上述过程类似,且为本领域技术人员所熟知的技术,本发明实施例此处不再赘述。

此外,在编码时,由于整宏块的原始亮度值已知,因此,可以直接获取,而解码的过程是计算整宏块原始亮度值的过程,而且需要先计算得到分宏块的亮度值,所以通常鉴于帧与帧之间的画面相似度很高,在确定整宏块位置之后,从已经得到的上一帧中获取相应位置整宏块的亮度值作为参考值。

此外,在按照原算法解码时,计算每秒所处理的宏块总数,以便于计算当前视频播放的帧率,从而明确得到视频播放是否卡顿,为后续操作提供数据基础。

步骤s103:计算按照所述原算法解码时视频播放的帧率。

其中,在视频播放过程中,帧率达到一个阈值时才能保证流畅播放,而帧率为每秒视频播放的帧数,在本发明的一个优选实施例中,保证视频流畅播放的帧率阈值可以为25。

基于上述实施例的描述,每帧画面包括一定数量的宏块,当得到单位时间内解码的宏块总数量后,可以通过该宏块总数量除以每帧的宏块数量,得到当前的播放帧率。

步骤s104:当所述帧率小于所述待解码视频资源的第一标准帧率时,将所述原算法切换为第一预设算法。

其中,为了便于移动终端明确判断视频播放是否流畅,本实施例中,根据视频流畅播放的帧率,预先分别为每种分辨率的视频资源设置至少一个标准帧率,标准帧率作为判断视频播放是否流畅的数据依据。

具体的,在本步骤中,待解码视频资源对应的第一标准帧率,可以大于或者等于相应视频流畅播放的帧率阈值,在得到当前的视频播放帧率之后,可以判断当前的视频播放帧率是否小于该第一标准帧率,如果当前视频播放帧率大于或者等于第一标准帧率,则认为视频播放流畅,可以继续使用原算法对待解码视频资源进行解码;如果当前播放帧率小于第一标准帧率,说明按照原算法对待解码视频资源进行解码得到的帧率,不足以保证视频流畅播放,则将原算法切换为第一预设算法。

需要说明的是,第一预设算法为预先设置的分像素插值算法,所述第一预设算法相对于原算法所获取的参数数量较少,因此,能够降低cpu解码时的运算量,减少对cpu的开销,从而能够提高解码效率,提高帧率。具体的,详见下述描述。

步骤s105:按照所述第一预设算法对所述待解码视频资源解码。

其中,根据上述描述可知,在计算1/2分宏块的亮度值时,需要获取其邻近的三组整宏块的亮度值,而1/4分宏块的亮度值为1/2分宏块亮度值的基础上得到的平均值,因此,本发明实施例的技术方案,通过修改1/2分宏块亮度值的算法提高帧率。

由于每帧画面中,相邻宏块之间的亮度值相似度较高,本实施例中,基于计算1/2分宏块亮度值的原算法,将第三组整宏块的亮度值与第二组整宏块的亮度值视为相等,并适应性变换原算法中的各项参数,得到第一预设算法。

因此,本步骤中按照第一预设算法对待解码视频资源解码,具体包括:在确定待解码视频资源中1/2分宏块的位置信息后,根据该位置信息在已解码的宏块中采集第一组整宏块和第二组整宏块的参考亮度值,将所采集的第一组整宏块和第二组整宏块的参考亮度值按照第一预设算法进行运算,得到1/2分宏块的亮度值,根据所得到的1/2分宏块的亮度值计算得到第一组整宏块、第二组整宏块与第三组整宏块的原始亮度值,完成对第一组整宏块、第二组整宏块与第三组整宏块的解码。其中,第一组整宏块和第二组整宏块的参考亮度值的采集详见上述描述,本发明实施例此处不再赘述。

以h.264标准为例,请再次参见图3,当将第三组整宏块的亮度值与第二组整宏块的亮度值视为相等后,计算1/2分宏块a亮度值的公式变为公式六:

a1=(-b+5*c+5*d-e),a=clip1y((a1+4)>>3);(公式六)

在计算得到1/2分宏块a的亮度值后,计算1/4分宏块dd和ss的算法不变,当得到1/2分宏块a和1/4分宏块dd和ss的亮度值,可以根据分宏块的亮度值计算得到整宏块a、b、c、d、e和f的原始亮度值,完成对整宏块a、b、c、d、e和f的解码。而计算1/2分宏块b亮度值的算法与计算1/2分宏块a亮度值的算法相似,仅采集整宏块p、c、q和r参考亮度值进行运算,同样的,对整宏块o、p、q、r和s将其他整宏块进行解码的过程与上述过程相似,本发明实施例不再赘述。

由此可见,在解码过程中,对全部1/2分宏块的亮度值进行运算时,不但在采集整宏块亮度值时少采集一组整宏块的亮度值,而且在运算时,大大简化了运算步骤和运算量,从而能够大量减少对cpu的开销,提高解码速度,提高帧率。

上述实施例从一个方面对本发明技术方案进行了描述,为了使本领域技术人员更加清楚的了解本发明实施例的技术方案,下面基于上述实施例的描述,从另外一个 方面对本发明实施例的技术方案进行补充描述。

请参见图2,图2为本发明实施例提供的视频解码方法的第二种实施方式的方法流程图。由于本实施例是对上述实施例的补充,因此,本实施例中与上述实施例相同的步骤,详见上述实施例的描述,本实施例不再赘述。

本实施例所述方法包括下述步骤:

步骤s201:确定待解码视频资源。

其中,由于在本发明的技术方案中,分别为每个视频资源设置有标准帧率,因此,在本实施例中,当确定待解码视频资源之后,可以直接获取待解码视频资源对应的标准帧率。此外,获取待解码视频资源的方法详见上述实施例的描述,本发明实施例此处不再赘述。

步骤s202:按照原算法对所述待解码视频资源进行解码。

步骤s203:计算按照所述原算法解码时视频播放的帧率。

步骤s204:当所述帧率小于所述待解码视频资源的第一标准帧率时,将所述原算法切换为第一预设算法。

其中,由上述实施例的描述可知,为待解码视频资源设置第一标准帧率的目的在于,保证视频流畅播放,因此,第一标准帧率可以设置为视频流畅播放时的帧率阈值,例如,当帧率最低为25时,视频才能流畅播放,则可以将第一标准帧率设置为25。当然,也可以设置略大于流畅播放对应的帧率阈值的值,本发明实施例对此不做限制。

此外,不同分辨率的视频对应的视频资源可以设置相同的第一标准帧率,也可以根据分辨率的不同为不同的视频资源设置不同的第一标准帧率,例如,由于分辨率较低的视频的每帧画面宏块数量较少,可以将其对应的第一标准帧率设置的相对较大;而分辨率较高的视频的每帧画面宏块数量较多,可以将其对应的第一标准帧率设置的相对较小,本发明实施例对此不做限制。

步骤s205:按照所述第一预设算法对所述待解码视频资源解码。

步骤s206:计算按照所述第一预设算法解码时视频播放的帧率。

其中,在将原算法切换为第一预设算法后,为了明确使用第一预设算法进行解码时的帧率是否能够保证视频流畅播放,可以对切换算法后的帧率进行计算。具体的,在按照第一预设算法解码时,计算单位时间内解码的宏块总数量,根据单位时间内解码得到的宏块总数量除以每帧的宏块数量,得到按照第一预设算法解码时的帧率,从而能够判断出按照第一预设算法进行解码能否保证视频流畅播放。

步骤s207:判断所述帧率是否小于所述待解码视频资源对应的第二标准帧率,如果帧率大于或者等于所述第二标准帧率,执行步骤s205;如果帧率小于所述第二标准帧率,执行步骤s208。

其中,基于上述描述可知,分辨率较高的视频资源,每帧的宏块数量相对较大,计算量也较大,如果仅设置一个第一标准帧率,即使帧率达到第一标准帧率时,可能视频刚刚能够流畅播放,一旦移动终端的其他应用程序运行,将占用部分cpu的开销,则会导致帧率下降,再次导致视频播放卡顿,造成视频无法稳定的处于流畅播放的状态,因此,本发明实施例中还为待解码视频资源设置有第二标准帧率,其中第二标准帧率大于第一标准帧率。

需要说明的是,不同分辨率视频对应的视频资源可以设置相同的第二标准帧率,也可以设置根据各自的第一标准帧率设置不同的第二标准帧率,本发明实施例对此不做限制。

为了保证视频稳定的处于流畅播放的状态,本实施例中,在得到按照第一预设算法解码时的帧率后,判断该帧率是否小于待解码视频资源对应的第二标准帧率,如果该帧率小于待解码视频资源对应的第二标准帧率,则认为当前帧率稍有变动将无法保证视频流畅播放,视频无法稳定的保持流畅播放,将第一预设算法切换为第二预设算法;如果该帧率大于或者等于待解码视频资源对应的第二标准帧率,则认为即使当前帧率存在正常变动,视频能够稳定的流畅播放,因此,依然可以按照第一预设算法对待解码视频资源进行解码。

本实施例通过为待解码视频资源设置第二标准帧率,为视频能否稳定流畅的播放提供了数据依据,并在当前帧率小于第二标准帧率时切换算法,从而能够保证视频稳定流程的播放,提高用户体验。

步骤s208:将所述第一预设算法切换为第二预设算法。

其中,与第一预设算法相同的,第二预设算法也为预先设置的分像素插值算法,且第二预设算法与第一预设算法相比,在计算1/2分宏块亮度值时,计算量更小,因此,使用第二预设算法进行解码时,能够进一步降低cpu解码时的运算量,减少对cpu的开销,从而能够提高解码效率,提高帧率。

步骤s209:按照所述第二预设算法对所述待解码视频资源解码。

其中,根据上述实施例的描述可知,使用第一预设算法计算1/2分宏块亮度值时,需要获取其邻近的两组整宏块的亮度值作为参数,为了进一步降低运算量,鉴于相邻宏块的亮度值相似度较高的原因,将第一预设算法中,相邻的第一组整宏块和第二组整宏块的亮度值视为相同,并在第一预设算法的基础上简化公式六得到第二预设算法。

因此,使用第二预设算法对待解码视频资源进行解码,具体包括:在确定待解码视频资源中1/2分宏块的位置信息后,根据该位置信息在已解码的宏块中采集第一组整宏块的参考亮度值,将所采集的第一组整宏块的参考亮度值按照第二预设算法进行运算,得到1/2分宏块的亮度值,根据所得到的1/2分宏块的亮度值计算得到第一组整宏块、第二组整宏块与第三组整宏块的原始亮度值,完成对第一组整宏块、第二组整宏块与第三组整宏块的解码。其中,第一组整宏块的参考亮度值的采集详见上述描述,本发明实施例此处不再赘述。

例如,请再次参考图3,以h.264标准为例,在第一预设算法的基础上,将第一组整宏块和第二组整宏块的亮度值视为相等后,计算1/2分宏块a亮度值的公式变为公式七:

a1=(c+d),a=clip1y((a1+1)>>1);(公式七)

同样的,使用第二预设算法计算1/2分宏块b及其他1/2分宏块的公式与公式七的结构相同,本发明实施例不再一一详述。

由此可见,在使用第二预设算法进行解码时,所需要采集的整宏块亮度值的数量进一步缩减,从而进一步简化了运算步骤和运算量,进而能够减少对cpu的开销,提高解码速度,提高帧率。

综合上述,本发明实施例所提供的视频解码方法,在确定待解码视频资源后,按照原算法对待解码视频资源进行解码,并计算按照原算法解码时视频播放的帧率。如 果帧率小于待解码视频资源的第一标准帧率时,说明帧率相对较小,不能够保证视频流畅播放,则将原算法切换为第一预设算法,按照第一预设算法对待解码视频资源进行解码。与现有技术相比,本发明实施例的技术方案,在移动终端设置至少两套解码算法,当按照原算法解码时的播放帧率无法达到流畅播放的值时,切换解码算法,从而在移动终端的数据处理能力不变的情况下,提高解码速度,进而提高视频播放帧率,保证视频能够流畅播放,提高用户体验。

与上述实现方法相对应的,本发明实施例还提供了一种视频解码装置,请参见图4,图4为本发明实施例提供的视频解码装置的结构示意图,所述装置包括:确定模块11、解码模块12、计算模块13和切换模块14,其中,确定模块11,用于确定待解码视频资源;解码模块12,用于按照原算法对所述确定模块11所确定的待解码视频资源进行解码;计算模块13,用于计算所述解码模块12按照所述原算法解码时视频播放的帧率;切换模块14,用于当所述计算模块13计算得到的帧率小于所述待解码视频资源的第一标准帧率时,将所述原算法切换为第一预设算法;在本实施例中,解码模块12,还用于按照所述切换模块14切换后的第一预设算法对所述待解码视频资源解码。

其中,本实施例中,解码模块12包括第一确定单元、采集单元、亮度值运算单元,其中,第一确定单元,用于确定所述待解码视频资源中1/2分宏块的位置信息,其中,1/2分宏块指位于两个整宏块之间1/2位置的分宏块;所述采集单元,用于根据所述位置信息在已解码的宏块中采集第一组整宏块和第二组整宏块的参考亮度值,其中,所述第一组整宏块为与所述1/2分宏块相邻,且基于所述1/2分宏块对称的两个整宏块;所述第二组整宏块为所述第一组整宏块确定的行或者列中,与所述第一组整宏块相邻的整宏块;所述亮度值运算单元,用于将所述第一组整宏块的参考亮度值和所述第二组整宏块的参考亮度值按照第一预设算法进行运算,得到所述1/2分宏块的亮度值;所述亮度值运算单元,还用于根据所述1/2分宏块的亮度值计算得到所述第一组整宏块、所述第二组整宏块与所述第三组整宏块的原始亮度值,其中,所述第三组整宏块为所述第一组整宏块确定的行或者列中,与所述第二组整宏块相邻的整宏块。

所述装置中各个模块和单元的功能和作用的实现过程详见上述方法中对应的实现过程,在此不再赘述。

由本实施例的描述可知,在解码过程中,对全部1/2分宏块的亮度值进行运算时,不但在采集整宏块亮度值时少采集一组整宏块的亮度值,而且在运算时,大大简化了运算步骤和运算量,从而能够大量减少对cpu的开销,提高解码速度,提高帧率。

为了使本领域技术人员更加清楚的了解本发明实施例的技术方案,在上述实施例的基础上,本发明实施例还提供了另一种视频解码装置。

请参见图5,图5为本发明实施例提供的视频解码装置第二种实施方式的结构示意图,所述装置包括:确定模块21、解码模块22、计算模块23、切换模块24和判断模块25,其中,确定模块21、解码模块22、计算模块23和切换模块24的功能和作用与上述实施例的描述类似,本实施例不再赘述。

在上述实施例的基础上,本实施例中,计算模块23,还用于计算按照所述第一预设算法解码时视频播放的帧率;判断模块25,用于判断所述帧率是否小于所述待解码视频资源对应的第二标准帧率;当所述帧率大于或者等于所述第二标准帧率时,解码模块22,用于按照所述第一预设算法对所述待解码视频资源解码;当所述帧率小于所述第二标准帧率时,切换模块24,还用于将所述第一预设算法切换为第二预设算法;在本实施例中,解码模块22,还用于按照所述第二预设算法对所述待解码视频资源解码。

需要指出的,在本实施例中,所述采集单元,还用于根据所述位置信息在已解码的宏块中采集第一组整宏块参考亮度值;所述亮度值运算单元,还用于将所述第一组整宏块的参考亮度值按照所述第二预设算法进行运算,得到所述1/2分宏块的亮度值,并根据所述1/2分宏块的亮度值计算得到所述第一组整宏块、所述第二组整宏块与所述第三组整宏块的原始亮度值,其中,所述第三组整宏块为所述第一组整宏块确定的行或者列中,与所述第二组整宏块相邻的整宏块。

此外,在上述实施例的基础上,确定模块21还包括:读取单元、接收单元和第二确定单元,其中,所述读取单元,用于读取中央处理器cpu的计算速度;所述第二确定单元,用于根据所述cpu的计算速度确定所述待解码视频资源;所述接收单元,用于接收用于确定所述待解码视频资源的选择命令;所述第二确定单元,还用于根据所述选择命令确定所述待解码视频资源。

所述装置中各个模块和单元的功能和作用的实现过程详见上述方法中对应的实现过程,在此不再赘述。

综合上述,本发明实施例所提供的视频解码方法及装置,在确定待解码视频资源后,按照原算法对待解码视频资源进行解码,并计算按照原算法解码时视频播放的帧率。如果帧率小于待解码视频资源的第一标准帧率时,说明帧率相对较小,不能够保证视频流畅播放,则将原算法切换为第一预设算法,按照第一预设算法对待解码视频资源进行解码。与现有技术相比,本发明实施例的技术方案,在移动终端设置至少两套解码算法,当按照原算法解码时的播放帧率无法达到流畅播放的值时,切换解码算法,从而在移动终端的数据处理能力不变的情况下,提高解码速度,进而提高视频播放帧率,保证视频能够流畅播放,提高用户体验。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1