一种视频解码方法及数字电视的制作方法

文档序号:10597586阅读:388来源:国知局
一种视频解码方法及数字电视的制作方法
【专利摘要】本发明实施例公开了一种视频解码方法及数字电视,涉及电子技术领域,可以通过数字电视中集成的VPU实现不同格式数据流的解码。具体方案为:SoC芯片上集成有VPU的数字电视在接收到VPU调用指令后,对VPU进行初始化,以获得VPU的解码固件,解码固件中包含用于解码的至少一个解码算法,至少一个解码算法中的每一个解码算法对应一种编码格式,VPU调用指令中携带有待解码数据流;根据解码固件,创建编码格式与待解码数据流的编码格式相同的VPU解码器实例;采用VPU解码器实例对待解码数据流进行解码,并获得解码输出信息。本发明用于数字电视的视频解码过程中。
【专利说明】
一种视频解码方法及数字电视
技术领域
[0001 ]本发明涉及电子技术领域,尤其涉及一种视频解码方法及数字电视。
【背景技术】
[0002]随着信息技术迅速发展,越来越多的电子终端开始进入人们的生活,如智能手机、高清数字电视等。其中,数字电视可以接收经过编码的数据流,然后对接收到的数据流进行解码,从而实现数据流对应电视节目的播放。
[0003]现有的视频解码技术中,考虑到高清视频的分辨率和高码较高,如果采用高清电视的中央处理器(英文:Central Processing Unit,简称:CPU)进行解码会消耗CPU运算能力,一般将解码任务交给单独设置的硬件电路模块,即由单独设置的硬件电路模块对数字电视接收的数据流进行解码。
[0004]但是,虽然将解码任务交给单独设置的硬件电路模块,可以缓解解码任务对CPU的占用;但是,上述单独设置的硬件电路模块能够支持的解码视频格式单一,即一个硬件电路模块可能只能对采用一种编码格式进行编码的视频进行解码。如此,数字电视如果要播放不同编码格式的数据流对应的视频,则需要设置多个支持该不同解码格式的硬件电路模块。

【发明内容】

[0005]本发明的实施例提供一种视频解码方法及数字电视,可以通过数字电视中集成的VPU实现不同格式数据流的解码。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]本发明实施例的第一方面,提供一种视频解码方法,应用于数字电视,所述数字电视的片上系统SoC芯片上集成有视频处理单元VPU,所述方法包括:
[0008]在接收到VPU调用指令后,对所述VPU进行初始化,以获得所述VPU的解码固件,所述解码固件中包含用于解码的至少一个解码算法,所述至少一个解码算法中的每一个解码算法对应一种编码格式,所述VPU调用指令中携带有待解码数据流;
[0009]根据所述解码固件,创建编码格式与所述待解码数据流的编码格式相同的VPU解码器实例;
[0010]采用所述VPU解码器实例对所述待解码数据流进行解码,并获得解码输出信息,所述解码输出信息中包含解码得到的至少一帧数据中每帧数据的帧信息,所述帧信息至少包括该帧数据的帧显示索引、帧解码索引和帧类型。
[0011]本发明实施例的第二方面,提供一种数字电视,所述数字电视的片上系统SoC芯片上集成有视频处理单元VPU,所述数字电视包括:
[0012]接收模块,用于接收VPU调用指令,所述VPU调用指令中携带有待解码数据流;
[0013]初始化模块,用于在所述接收模块接收到VHJ调用指令后,对所述VPU进行初始化,以获得所述VHJ的解码固件,所述解码固件中包含用于解码的至少一个解码算法,所述至少一个解码算法中的每一个解码算法对应一种编码格式;
[0014]创建模块,用于根据所述解码固件,创建编码格式与所述待解码数据流的编码格式相同的VHJ解码器实例;
[0015]解码模块,用于采用所述创建模块创建的所述VPU解码器实例对所述待解码数据流进行解码,并获得解码输出信息,所述解码输出信息中包含解码得到的至少一帧数据中每帧数据的帧信息,所述帧信息至少包括该帧数据的帧显示索引、帧解码索引和帧类型。
[0016]本发明实施例提供的视频解码方法及数字电视,在数字电视的SoC芯片上集成了支持多格式视频解码的VPU,如此,在接收到有待解码数据流的VHJ调用指令后,则可以对VPU进行初始化获得VPU的解码固件,并根据解码固件,创建编码格式与待解码数据流的编码格式相同的VPU解码器实例,采用VPU解码器实例对待解码数据流进行解码获得解码输出?目息O
[0017]与现有技术在数字电视中设置多个支持该不同解码格式的硬件电路模块相比,本方案中仅需要在数字电视的SoC芯片上集成了支持多格式视频解码的VPU,便可以使得数字电视支持多格式视频解码,实现多种不同格式数据流的视频播放,提高了数字电视的解码效率。
【附图说明】
[0018]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0019]图1为本发明实施例提供的一种数字电视的结构组成示意图;
[0020]图2为本发明实施例提供的一种用于实现视频解码的驱动框架示意图;
[0021 ]图3为本发明实施例提供的一种视频解码方法流程图;
[0022]图4为本发明实施例提供的另一种视频解码方法流程图;
[0023]图5为本发明实施例提供的另一种视频解码方法流程图;
[0024]图6为本发明实施例提供的另一种视频解码方法流程图;
[0025]图7为本发明实施例提供的一种数字电视的结构组成示意图;
[0026]图8为本发明实施例提供的另一种数字电视的结构组成示意图;
[0027]图9为本发明实施例提供的另一种数字电视的结构组成示意图;
[0028]图10为本发明实施例提供的另一种数字电视的结构组成示意图。
【具体实施方式】
[0029]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]本发明实施例应用于数字电视的视频解码过程中,在本发明实施例中,数字电视(英文:Digital Televis1n,简称:DTV)的片上系统(英文:System on Chip,简称:SoC)芯片上集成有视频处理单元(英文:Video Processing Unit,简称:VPU)。
[0031]请参考图1,其示出了本发明实施例提供的一种数字电视的结构组成示意图。如图1所示,该数字电视包括:硬盘或者存储接口 11、开发板12、计算机13和显示器14。
[0032]其中,开发板12与计算机13之间通过串口和网线连接。上述开发板12包括:GStreamer多媒体架构121、视频解码模块122和视频后处理模块123。上述开发板12即为本发明实施例中数字电视的SoC芯片,上述视频解码模块122中集成有本发明实施例中的VPU。
[0033]示例性的,上述存储接口可以为通用串行总线(英文-Universal Serial Bus,简称:USB)接口,或者用于连接外部存储设备的接口。
[0034]请参考图2,其示出了本发明实施例提供的一种用于实现视频解码的驱动框架示意图。如图2所示,该驱动框架可以分为用户空间层、驱动(内核空间)层以及硬件层。
[0035]其中,用户空间层包括:数字电视应用(英文:DTV Applicat1n,简称:DTV APP)21、数字电视中间件(英文:DTV Middle Ware简称:DMW)22、播放器APP(英文:Player APP)23、媒体播放器(即英文:Media Player)24、GStreamer架构25和视频插件(英文:VideoPlugin)260
[0036]驱动(内核空间)层包括:数字电视分解器(英文:DTV DemuX)31、视频解码器驱动(英文= Video Decoder Driver,简称:VDD)32、视频后处理单元(VPR0C)33和视频输出(英文:Avout)模块 34。
[0037]硬件层包括:视频输入缓存器(英文:Video Input Buffer)41、VPU42、视频输出缓存器(英文:Video Output Buffer)43、后处理单元44和低压差分信号(英文:Low VoltageDifferential Signaling,简称:LVDS)接口45。
[0038]以下以图2所示的驱动框架为例,对本发明实施例提供的视频解码方法中的数据流处理流程进行说明:
[0039]其中,进入VPU的数据流有两条:一条来自数字电视APP 21,经过DMW 22后,进入数字电视分解器31,由数字电视分解器31分解得到的ES视频流,另一条为本地文件码流,该本地文件码流为来自播放器APP 23,经过媒体播放器24后,进入GStreamer架构25,由GStreamer架构25中的Demux分解得到的ES视频流。
[0040]VDD 32可以将上述两种ES视频流存入视频输入缓存器41,然后数字电视便可以采用VPU 42对视频输入缓存器41中存储的数据流进行解码处理,然后将该解码后的数据流写入视频输出缓存器43。该视频输出缓存器43中存储的解码后的数据流经过后处理单元44处理后,便可以输出至数字电视的显示器的LVDS接口 45。上述数字电视的显示器可以为液晶显示器。
[0041]可以想到的,本发明实施例中用于实现视频解码的功能模块的代码架构可以分为两大部分:测试代码和驱动代码。
[0042]其中,测试代码相当于上述用户空间层,该用户空间层可以调用驱动(内核空间)层的1ctr I接口,而驱动(内核空间)层是通过分层调用各层的应用程序编程接口(Applicat1n Programming Interface,API)函数来实现视频解码的。具体分为Hs_vdec.c层、vdec_ap1.c层和vpuap1.c层。
[0043]其中,Hs_vdec.c层中定义了响应用户空间层应用程序的调用的1ctrl接口,用户空间层通过1ctrl接口来调用下层驱动。具体的cmd命令可以包括:HS_VDEC_10CRESET,用于解码器重置;HS_VDEC_1CPLAY,用于解码器解码;HS_VDEC_1CPAUSE,用于暂停解码器;HS_VDEC_1CSTOP,用于停止解码器;HS_VDEC_1CGETVER,用于获取VPU的解码固件的版本;HS_VDEC_1CSETMEDIATYPE,用于设置媒体格式。
[0044]Vdec_ap1.c层针对Hs_vdec.c层不同的cmd命令执行不同的操作,具体用于根据Hs_vdec.c层不同的cmd命令驱动底层执行不同的操作,如可以实现对图像帧的各种处理。
[0045]Vpuap 1.c层将对VI3U中的API接口做进一步的细化,在各个功能函数中调用的是VPU中的接口代码,并在这一层中将其封装为需要的形式,以便于对图像格式及YCbCr进行处理。其中,YCbCr是颜色编码的一种方式,YCbCr处理包括获取帧显示索引和解码的帧索弓I,操作寄存器接口等。
[0046]下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供的一种视频解码方法及数字电视进行详细地说明。
[0047]本发明实施例提供一种视频解码方法,其特征在于,应用于数字电视,该数字电视的SoC芯片上集成有VPU,如图3所示,该视频解码方法包括:
[0048]S301、数字电视在接收到VPU调用指令后,对VPU进行初始化,以获得VPU的解码固件。
[0049]其中,上述解码固件中包含用于解码的至少一个解码算法,该至少一个解码算法中的每一个解码算法对应一种编码格式,VPU调用指令中携带有待解码数据流。
[0050]可以想到的是,数字电视在接收到VPU调用指令后,便可以对VPU进行初始化,为后续创建VPU解码器实例,采用VPU解码器实例对VPU调用指令中携带的待解码数据流进行解码做好准备。
[0051 ]当然,数字电视对VPU进行初始化还可以开始Bit Processor,设置指针分别指向VPU的工作缓冲区、参数缓冲区和代码缓冲区,运行上述Bit Processor以及设置中断寄存益寺O
[0052]S302、数字电视根据解码固件,创建编码格式与待解码数据流的编码格式相同的VPU解码器实例。
[0053]其中,解码固件中包含用于解码的至少一个解码算法,该至少一个解码算法中的每一个解码算法对应一种编码格式,而待解码数据流的编码格式一定;因此,数字电视可以从上述解码固件中的至少一个解码算法中,选择与待解码数据流的编码格式相同的解码算法,然后根据选择的解码算法创建对应的VPU解码器实例。
[0054]S303、数字电视采用VPU解码器实例对待解码数据流进行解码,并获得解码输出信息,解码输出信息中包含解码得到的至少一帧数据中每帧数据的帧信息,帧信息至少包括该帧数据的帧显示索引、帧解码索引和帧类型。
[0055]可以想到的是,数字电视在对待解码数据流进行解码得到的至少一帧数据中每帧数据的帧信息用于该数字电视的播放器播放解码后的数据流,即数字电视的播放器可以根据数字电视解码得到的至少一帧数据中每帧数据的帧信息,播放该帧数据。
[0056]本发明实施例提供的视频解码方法,在数字电视的SoC芯片上集成了支持多格式视频解码的VPU,如此,在接收到有待解码数据流的VPU调用指令后,则可以对VPU进行初始化获得VPU的解码固件,并根据解码固件,创建编码格式与待解码数据流的编码格式相同的VPU解码器实例,采用VPU解码器实例对待解码数据流进行解码获得解码输出信息。
[0057]与现有技术在数字电视中设置多个支持该不同解码格式的硬件电路模块相比,本方案中仅需要在数字电视的SoC芯片上集成了支持多格式视频解码的VPU,便可以使得数字电视支持多格式视频解码,实现多种不同格式数据流的视频播放,提高了数字电视的解码效率。
[0058]进一步的,数字电视在采用VPU解码器实例对所述待解码数据流进行解码,即执行S303之前,需要获取该VPU解码器实例的数据流缓冲区的起始地址,如此,才能够向该VPU解码器实例的数据流缓冲区存入待解码数据流中的数据,并采用该VHJ解码器实例对待解码数据流进行解码。
[0059]具体的,如图4所示,在S303之前,本发明实施例的方法还可以包括S303,和S303":
[0060]S3037、数字电视获取VPU解码器实例的数据流缓冲区的起始地址。
[0061]具体的,数字电视在创建上述VPU解码器实例后,通过调用VPU_DeC0pen()函数获取指向该VPU解码器实例的句柄(handl e ),然后根据该handl e获得对应DecOpenParam类型的变量,并通过DecOpenParam类型的变量获得该VPU解码器实例的内部特点信息。该内部特点信息包括:该VPU解码器实例的数据流缓冲区的起始地址、该数据流缓冲区的大小和该VPU解码器实例的编码格式。其中,DecOpenParam类型的变量中包括:上述VPU解码器实例的数据流缓冲区的起始地址、该数据流缓冲区的大小和该VPU解码器实例的编码格式。
[0062]S303"、数字电视根据数据流缓冲区的起始地址开始向数据流缓冲区存入待解码数据流中的数据。
[0063]具体的,数字电视可以通过调用VPU_DecGetBitstreamBuffer()函数来获取读、写指针以及可用空间,在成功获取读、写指针以及可用空间后,数字电视便可以通过调用VPU_DecGetBi tstreamBuf f er ()函数获得当前写指针的位置,然后向对应位置写入待解码数据流中的数据。
[0064]可以想到的是,只有在向数据流缓冲区存入一定量的数据后,才能够采用上述VPU解码器实例正常的对待解码数据流进行解码,因此,数字电视需要判断存入数据流缓冲区的数据流的长度是否大于或等于预设阈值,并在数据流缓冲区存入的待解码数据流长度大于或等于预设阈值,才对待解码数据流进行解码。
[0065]具体的,如图4所示,S303可以替换为S303a:
[0066]S303a、若数据流缓冲区存入的待解码数据流长度大于或等于预设阈值,数字电视则采用VPU解码器实例对待解码数据流进行解码,并获得解码输出信息。
[0067]优选的,若数据流缓冲区存入的待解码数据流长度小于预设阈值,数字电视则可以继续向数据流缓冲区存入待解码数据流中的数据。具体的,如图4所示,本发明实施例的方法还可以包括S304:
[0068]S304、若数据流缓冲区存入的待解码数据流长度小于预设阈值,数字电视则继续向数据流缓冲区存入待解码数据流中的数据。
[0069]通过本方案,在数据流缓冲区存入的待解码数据流长度大于或等于预设阈值时,才开始采用VHJ解码器实例对待解码数据流进行解码,如此可以保证VPU解码器实例解码工作的正常进行。
[0070]进一步的,数字电视在创建VPU解码器实例后,还需要对该VPU解码器实例的相关参数进行配置。具体的,如图5所示,在S302之后,S303之前,本发明实施例的方法还可以包括S305:
[0071]S305、数字电视分析待解码数据流的头序列信息,获得解码器配置信息,并采用解码器配置信息配置VPU解码器实例,解码器配置信息包括帧缓冲区(Frame buffer)的数量和每个帧缓冲区的大小。其中,Frame buffer是用于暂存已经解码过的数据的。一般而言,一帧图像的大小可能不是16*16的倍数,但是为了更加规范的进行解码,Frame buffer的大小一般设置为16*16的倍数;Frame buff er的数量的大小一般根据处理待解码数据流的过程中,I秒时间内传输的图片的数量(即图片的帧数)确定,如针对活动图像专家组(英文:Moving Picture Experts Group,简称:MPEG)_2格式的待解码数据流,可以为其分配8个Frame buffer0
[0072]具体的,数字电视可以通过调用VPU—DecGetInitiaIInfoO函数,向VPU发出序列初始化命令,控制VHJ分析待解码数据流的头序列信息,以获得解码器配置信息。
[0073]其中,如图5所示,本发明实施例中S303具体可以包括S303b和S303c:
[0074]S303b、若数据流缓冲区存入的待解码数据流长度大于或等于预设阈值,数字电视则对所述数据流缓冲区存入的第一帧数据进行解码,并获得第一帧数据的帧信息。
[0075]S303c、数字电视对数据流缓冲区存入的第二帧数据进行解码,并获得第二帧数据的帧信息,直至获得数据流缓冲区存入的所有帧数据的帧信息。
[0076]可以想到的是,数字电视可以依次对存入数据流缓冲区的每一帧数据进行解码,获得该帧数据的帧信息,直至获得数据流缓冲区存入的所有帧数据的帧信息。
[0077]进一步的,为了减少VPU解码器实例对数字电视内存空间的占用,本发明实施例中,数字电视可以在获得数据流缓冲区存入的所有帧数据的帧信息后,及时终止VHJ解码器实例,并释放VHJ解码器实例所占用的缓存资源。
[0078]示例性的,如图6所示,本发明实施例的方法还可以包括S306:
[0079]S306、数字电视在获得数据流缓冲区存入的所有帧数据的帧信息后,终止VPU解码器实例,并释放VHJ解码器实例所占用的缓存资源。
[0080]本发明实施例提供的视频解码方法,在数字电视的SoC芯片上集成了支持多格式视频解码的VPU,如此,在接收到有待解码数据流的VPU调用指令后,则可以对VPU进行初始化获得VPU的解码固件,并根据解码固件,创建编码格式与待解码数据流的编码格式相同的VPU解码器实例,采用VPU解码器实例对待解码数据流进行解码获得解码输出信息。
[0081]与现有技术在数字电视中设置多个支持该不同解码格式的硬件电路模块相比,本方案中仅需要在数字电视的SoC芯片上集成了支持多格式视频解码的VPU,便可以使得数字电视支持多格式视频解码,实现多种不同格式数据流的视频播放,提高了数字电视的解码效率。
[0082]并且,通过本方案可以在一个VPU解码器实例完成解码工作后,及时终止该VPU解码器实例,并释放该VHJ解码器实例所占用的缓存资源。如此,便可以避免该VPU解码器实例对数字电视缓存资源的冗余占用。
[0083]本发明实施例提供一种数字电视,该数字电视的SoC芯片上集成有VPU,如图7所示,该数字电视包括:接收模块71、初始化模块72、创建模块73和解码模块74。
[0084]接收模块71,用于接收VPU调用指令,所述VPU调用指令中携带有待解码数据流。
[0085]初始化模块72,用于在所述接收模块71接收到VPU调用指令后,对所述VPU进行初始化,以获得所述VPU的解码固件,所述解码固件中包含用于解码的至少一个解码算法,所述至少一个解码算法中的每一个解码算法对应一种编码格式。
[0086]创建模块73,用于根据所述初始化模块72初始化后获取的所述解码固件,创建编码格式与所述待解码数据流的编码格式相同的VHJ解码器实例。
[0087]解码模块74,用于采用所述创建模块73创建的所述VPU解码器实例对所述待解码数据流进行解码,并获得解码输出信息,所述解码输出信息中包含解码得到的至少一帧数据中每帧数据的帧信息,所述帧信息至少包括该帧数据的帧显示索引、帧解码索引和帧类型。
[0088]进一步的,如图8所示,上述数字电视还可以包括:获取模块75和缓存模块76。
[0089]获取模块75,用于在所述解码模块74采用所述VPU解码器实例对所述待解码数据流进行解码之前,获取所述VHJ解码器实例的数据流缓冲区的起始地址。
[0090]缓存模块76,用于根据所述获取模块74获取的所述数据流缓冲区的起始地址开始向所述数据流缓冲区存入所述待解码数据流中的数据。
[0091]所述解码模块74,具体用于若所述缓存模块76存入所述数据流缓冲区的数据流长度大于或等于预设阈值,则采用所述VHJ解码器实例对所述待解码数据流进行解码。
[0092]进一步的,所述缓存模块76,还用于若所述缓存模块76存入所述数据流缓冲区的数据流长度小于所述预设阈值,则继续向所述数据流缓冲区存入所述待解码数据流中的数据。
[0093]进一步的,如图9所示,上述数字电视还可以包括:配置模块77。
[0094]配置模块77,用于在所述解码模块74采用所述VPU解码器实例对所述待解码数据流进行解码,并获得解码后的数据流之前,分析所述待解码数据流的头序列信息,获得解码器配置信息,并采用所述解码器配置信息配置所述VPU解码器实例,所述解码器配置信息包括帧缓冲区的数量和每个帧缓冲区的大小。
[0095]所述解码模块74,具体用于:
[0096]若所述缓存模块76存入所述数据流缓冲区的数据流长度大于或等于预设阈值,则对所述数据流缓冲区存入的第一帧数据进行解码,并获得所述第一帧数据的帧信息;
[0097]对所述数据流缓冲区存入的第二帧数据进行解码,并获得所述第二帧数据的帧信息,直至获得所述数据流缓冲区存入的所有帧数据的帧信息。
[0098]进一步的,如图1O所示,上述数字电视还可以包括:控制模块78。
[0099]控制模块78,用于在所述解码模块74获得所述数据流缓冲区存入的所有帧数据的帧信息之后,终止所述VPU解码器实例,并释放所述VPU解码器实例所占用的缓存资源。
[0100]其中上述的,初始化模块72、创建模块73、解码模块74、获取模块75、缓存模块76、配置模块77和控制模块78可以为单独设立的处理器,也可以集成在管理系统的某一个处理器中实现,此外,也可以以程序代码的形式存储于管理系统的存储器中,由管理系统的某一个处理器调用并执行以上单元的功能。接收模块71用作信号接收功能时,可以为无线或有线方式实现的具有接收功能的接口电路。此外这里所述的处理器可以是一个中央处理器(英文全称:central processing unit,英文简称:CPU),或者是特定集成电路(英文全称:applicat1n specific integrated circuit,英文简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0101]需要说明的是,本发明实施例提供的数字电视中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
[0102]本发明实施例提供的数字电视,该数字电视的SoC芯片上集成了支持多格式视频解码的VPU,如此,在接收到有待解码数据流的VPU调用指令后,则可以对VPU进行初始化获得VPU的解码固件,并根据解码固件,创建编码格式与待解码数据流的编码格式相同的VPU解码器实例,采用VHJ解码器实例对待解码数据流进行解码获得解码输出信息。
[0103]与现有技术在数字电视中设置多个支持该不同解码格式的硬件电路模块相比,本方案中仅需要在数字电视的SoC芯片上集成了支持多格式视频解码的VPU,便可以使得数字电视支持多格式视频解码,实现多种不同格式数据流的视频播放,提高了数字电视的解码效率。
[0104]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0105]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0106]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0107]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0108]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-0nly Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0109]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1.一种视频解码方法,其特征在于,应用于数字电视,所述数字电视的片上系统SoC芯片上集成有视频处理单元VPU,所述方法包括: 在接收到VPU调用指令后,对所述VPU进行初始化,以获得所述VPU的解码固件,所述解码固件中包含用于解码的至少一个解码算法,所述至少一个解码算法中的每一个解码算法对应一种编码格式,所述VPU调用指令中携带有待解码数据流; 根据所述解码固件,创建编码格式与所述待解码数据流的编码格式相同的VPU解码器实例; 采用所述VHJ解码器实例对所述待解码数据流进行解码,并获得解码输出信息,所述解码输出信息中包含解码得到的至少一帧数据中每帧数据的帧信息,所述帧信息至少包括该帧数据的帧显示索引、帧解码索引和帧类型。2.根据权利要求1所述的方法,其特征在于,在所述采用所述VPU解码器实例对所述待解码数据流进行解码之前,所述方法还包括: 获取所述VHJ解码器实例的数据流缓冲区的起始地址; 根据所述数据流缓冲区的起始地址开始向所述数据流缓冲区存入所述待解码数据流中的数据; 所述采用所述VPU解码器实例对所述待解码数据流进行解码,包括: 若所述数据流缓冲区存入的待解码数据流长度大于或等于预设阈值,则采用所述VPU解码器实例对所述待解码数据流进行解码。3.根据权利要求2所述的方法,其特征在于,还包括: 若所述数据流缓冲区存入的待解码数据流长度小于所述预设阈值,则继续向所述数据流缓冲区存入所述待解码数据流中的数据。4.根据权利要求2所述的方法,其特征在于,在所述采用所述VPU解码器实例对所述待解码数据流进行解码,并获得解码后的数据流之前,所述方法还包括: 分析所述待解码数据流的头序列信息,获得解码器配置信息,并采用所述解码器配置信息配置所述VPU解码器实例,所述解码器配置信息包括帧缓冲区的数量和每个帧缓冲区的大小; 所述采用所述VPU解码器实例对所述待解码数据流进行解码,并获得解码后的数据流,包括: 若所述数据流缓冲区存入的待解码数据流长度大于或等于预设阈值,则对所述数据流缓冲区存入的第一帧数据进行解码,并获得所述第一帧数据的帧信息; 对所述数据流缓冲区存入的第二帧数据进行解码,并获得所述第二帧数据的帧信息,直至获得所述数据流缓冲区存入的所有帧数据的帧信息。5.根据权利要求4所述的方法,其特征在于,在获得所述数据流缓冲区存入的所有帧数据的帧信息之后,所述方法还包括: 终止所述VRJ解码器实例,并释放所述VRJ解码器实例所占用的缓存资源。6.—种数字电视,其特征在于,所述数字电视的片上系统SoC芯片上集成有视频处理单元VPU,所述数字电视包括: 接收模块,用于接收VHJ调用指令,所述VRJ调用指令中携带有待解码数据流; 初始化模块,用于在所述接收模块接收到VPU调用指令后,对所述VPU进行初始化,以获得所述VHJ的解码固件,所述解码固件中包含用于解码的至少一个解码算法,所述至少一个解码算法中的每一个解码算法对应一种编码格式; 创建模块,用于根据所述初始化模块获得的解码固件,创建编码格式与所述待解码数据流的编码格式相同的VHJ解码器实例; 解码模块,用于采用所述创建模块创建的所述VPU解码器实例对所述待解码数据流进行解码,并获得解码输出信息,所述解码输出信息中包含解码得到的至少一帧数据中每帧数据的帧信息,所述帧信息至少包括该帧数据的帧显示索引、帧解码索引和帧类型。7.根据权利要求6所述的数字电视,其特征在于,还包括: 获取模块,用于在所述解码模块采用所述VPU解码器实例对所述待解码数据流进行解码之前,获取所述VPU解码器实例的数据流缓冲区的起始地址; 缓存模块,用于根据所述获取模块获取的所述数据流缓冲区的起始地址开始向所述数据流缓冲区存入所述待解码数据流中的数据; 所述解码模块,具体用于若所述缓存模块存入所述数据流缓冲区的数据流长度大于或等于预设阈值,则采用所述VHJ解码器实例对所述待解码数据流进行解码。8.根据权利要求7所述的数字电视,其特征在于,所述缓存模块,还用于若所述缓存模块存入所述数据流缓冲区的数据流长度小于所述预设阈值,则继续向所述数据流缓冲区存入所述待解码数据流中的数据。9.根据权利要求7所述的数字电视,其特征在于,还包括: 配置模块,用于在所述解码模块采用所述VPU解码器实例对所述待解码数据流进行解码,并获得解码后的数据流之前,分析所述待解码数据流的头序列信息,获得解码器配置信息,并采用所述解码器配置信息配置所述VPU解码器实例,所述解码器配置信息包括帧缓冲区的数量和每个帧缓冲区的大小; 所述解码模块,具体用于: 若所述缓存模块存入所述数据流缓冲区的数据流长度大于或等于预设阈值,则对所述数据流缓冲区存入的第一帧数据进行解码,并获得所述第一帧数据的帧信息; 对所述数据流缓冲区存入的第二帧数据进行解码,并获得所述第二帧数据的帧信息,直至获得所述数据流缓冲区存入的所有帧数据的帧信息。10.根据权利要求9所述的数字电视,其特征在于,还包括: 控制模块,用于在所述解码模块获得所述数据流缓冲区存入的所有帧数据的帧信息之后,终止所述VPU解码器实例,并释放所述VPU解码器实例所占用的缓存资源。
【文档编号】H04N21/426GK105959797SQ201610353246
【公开日】2016年9月21日
【申请日】2016年5月25日
【发明人】矫风, 曾小光, 王金童, 张金平
【申请人】青岛海信电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1