一种编码方法及相关设备的制造方法
【技术领域】
[0001]本发明涉及机顶盒技术领域,更具体地说,涉及一种编码方法及相关设备。
【背景技术】
[0002]随着各类电视机顶盒的大量应用其对应的各类机顶盒技术也随之快速发展,针对机顶盒的管理,当前利用虚拟机顶盒的技术,将家庭使用的机顶盒中的核心组件转移到运营商的机房服务器上来,以提高对机顶盒管理维护能力的同时降低对机顶盒硬件的要求。
[0003]在现有技术中,从逻辑上来讲将机顶盒主体业务移到了服务器端进行执行,当大量用户并发访问服务器时多路用户同时在服务器端进行264编码时,每路用户都需要一个编码器模块,且每个编码器模块对应的各个编码器实例之间是互相独立的,也就是说各自编码自己的每帧数据。同时,在虚拟机顶盒(VSTB,Virtual Set Top Box,虚拟机顶盒)的场景下,单个用户或多个用户之间Π页面场景复杂,不同级别的页面也会同时存在多个,因为每个不同页面都需要至少一个I帧,I帧的编码时间是P帧编码时间的2-3倍,且用户在不同页面之间进行切换时,前后都需要一个I帧编码。
[0004]在现有的用户操作的过程中,如:N路用户并发访问服务器,针对一个编码器的编码帧序列格式为:11,P1,”.Ρη,12,P1,”.Ρη,…In,…。就同一个编码器而言,在大量的II,12,…In之间都可能会存在重复的Ρ1,…Pn数据,但仍然需要重复进行编码。对于N个不同的编码器而言,编码器I的I帧序列中和编码器N中的I帧序列中存在大量重复I帧,且该大量重复I帧数据不可重复利用和共享,就编码器而言会耗费大量的编码时间,降低编码的效率,同时这样的编码器对服务器硬件资源尤其是CPU资源的消耗也会比较高。
【发明内容】
[0005]本申请实施例提供一种编码方法及相关设备,以解决现有技术中因大量重复I帧数据不可重复利用和共享,耗费大量的编码时间和降低编码效率,同时对服务器硬件资源造成比较大的消耗的问题。
[0006]为实现上述目的,本申请实施例提供了如下技术方案:
[0007]本申请实施例第一方面提供了一种编码方法,应用于编码设备,包括:
[0008]获取需要编码为I帧数据的待编码图像数据;
[0009]对所述待编码图像数据进行索引计算,获得索引值;
[0010]根据所述索引值在I帧缓存队列中进行查找,当在所述I帧缓存队列中查找到所述索引值时,获取所述索引值对应的I帧缓存对象,所述I帧缓存对象中包括所述待编码图像数据对应的I帧数据。
[0011]在本申请实施例第一方面中的第一实现方式中,所述根据所述索引值在I帧缓存队列中进行查找,还包括:
[0012]当在所述I帧缓存队列中未查找到所述索引值时,对所述待编码图像数据进行I帧编码,获取对应的I帧数据;
[0013]利用所述对应的I帧数据构建对应的I帧缓存对象,并将所述对应的I帧缓存对象和所述索引值加载至I帧缓存队列中。
[0014]在本申请实施例第一方面中的第二实现方式中,在所述获取需要编码为I帧数据的待编码图像数据之前,还包括:
[0015]获取当前输入的图像数据,并基于对比函数将所述当前输入的图像数据与前一图像数据中的最后一帧数据进行对比;
[0016]若对比结果大于预设的阈值,则确定所述当前输入的图像数据为需要编码为I帧数据的待编码图像数据;
[0017]若对比结果小于预设的阈值,则对所述当前输入的图像数据进行B帧或P帧编码,并输出对应的编码结果。
[0018]本申请实施例第二方面提供了一种编码设备,包括:
[0019]处理模块用于,获取需要编码为I帧数据的待编码图像数据,对所述待编码图像数据进行索引计算,获得索引值;
[0020]查找模块用于,根据所述索引值在I帧缓存队列中进行索引值查找,当在所述I帧缓存队列中查找到所述索引值时,获取所述索引值对应的I帧缓存对象,所述I帧缓存对象中包括所述待编码图像数据对应的I帧数据。
[0021]在本申请实施例第二方面的第一实现方式中,所述根据所述索引值在I帧缓存队列中进行查找的查找模块,当在所述I帧缓存队列中未查找到所述索引值时,还包括:
[0022]所述处理模块用于,对所述所述待编码图像数据进行I帧编码,获取对应的I帧数据,并利用所述对应的I帧数据构建对应的I帧缓存对象,将所述对应的I帧缓存对象和所述索引值加载至I帧缓存队列中。
[0023]在申请实施例第二方面的第二实现方式中,所述获取需要编码为I帧数据的待编码图像数据的处理模块,还包括:
[0024]所述处理模块用于,获取当前输入的图像数据,并基于对比函数将所述当前输入的图像数据与前一图像数据中的最后一帧数据进行对比;若比对结果大于预设的阈值,则确定所述当前输入的图像数据为需要编码为I帧数据的待编码图像数据;若比对结果小于预设的阈值时,则对所述当前输入的图像数据进行B帧或P帧编码,并输出对应的编码结果O
[0025]本申请实施例第三方面提供了一种编码方法,包括:
[0026]编码设备获取需要编码为I帧数据的待编码图像数据,并对所述待编码图像数据进行索引计算,获得索引值;
[0027]所述编码设备根据所述索引值在I帧缓存器中的I帧缓存队列中进行查找,当在所述I帧缓存队列中查找到所述索引值时,获取所述索引值对应的I帧缓存对象,所述I帧缓存对象中包括所述待编码图像数据对应的I帧数据;当在所述I帧缓存队列中未查找到所述索引值时,对所述待编码图像数据进行I帧编码,获取对应的I帧数据,并依据所述对应的I帧数据构建对应的I帧缓存对象,将所述对应的I帧缓存对象和所述索引值加载至所述I帧缓存器中;
[0028]所述I帧缓存器获取加载的所述对应的I帧缓存对象和所述索引值,存储于所述I帧缓存队列中;
[0029]所述I帧缓存器依据所述索引值对所述I帧缓存队列进行更新。
[0030]在本申请实施例第三方面的第一实现方式中,所述编码设备获取需要编码为I帧数据的待编码图像数据之前,还包括:
[0031]所述编码设备获取当前输入的图像数据,并基于对比函数将所述当前输入的图像数据与前一图像数据中的最后一帧数据进行对比;若对比结果大于预设的阈值,则确定所述当前输入的图像数据为需要编码为I帧数据的待编码图像数据;若对比结果小于预设的阈值,则对所述当前输入的图像数据进行B帧或P帧编码,并输出对应的编码结果。
[0032]在本申请实施例的第三方面的第二种实现方式中,在所述编码设备获取需要编码为I帧数据的待编码图像数据之前,还包括:
[0033]对比设备对当前输入的图像数据,并基于对比函数将所述当前输入的图像数据与前一图像数据中的最后一帧数据进行对比;若比对结果大于预设阈值,则确定所述当前输入的图像数据为需要编码为I帧数据的待编码图像数据;若比对结果小于预设的阈值时,则触发所述编码设备;
[0034]所述编码设备对所述当前输入的图像数据进行B帧或P帧编码,并输出对应的编码结果。
[0035]在本申请实施例的第三方面的第三种实现方式中,所述I帧缓存器获取加载的所述对应的I帧缓存对象和所述索引值,存储于所述I帧缓存队列中,包括:
[0036]所述I帧缓存器获取由所述编码设备构建并加载的所述对应的I帧缓存对象和所述索引值,所述对应的I帧缓存对象中包含进行I帧编码的待编码图像数据对应的I帧数据;
[0037]所述I帧缓存器建立所述索引值和所述对应的I帧缓存对象之间的关联,并将所述对应的I帧缓存对象和所述索引值存储于所述I帧缓存队列中。
[0038]本申请实施例的第四方面提供了一种编码系统,包括:
[0039]编码设备用于,获取需要编码为I帧数据的待编码图像数据,对所述待编码图像数据进行索引计算,获得索引值,根据所述索引值在I帧缓存器的I帧缓存队列中进行查找,当在所述I帧缓存队列中查找到所述索引值时,获取所述索引值对应的I帧缓存对象;当在所述I帧缓存队列中未查找到所述索引值时,对所述待编码图像数据进行I帧编码,获取对应的I帧数据,并依据所述对应的I帧数据构建对应的I帧缓存对象,将所述对应的I帧缓存对象和所述索引值加载至所述I帧缓存器中;
[0040]与所述编码设备相连的I帧缓存器用于,获取加载的所述对应的I帧缓存对象和所述索引值,存储于所述I帧缓存队列中,并依据所述索引值对所述I帧缓存队列进行更新。
[0041]在本申请实施例的第四方面的第一实现方式中,所述编码设备包括:
[0042]获取单元用于,获取需要编码为I帧数据的待编码图像数据,并对所述待编码图像数据进行索引计算,得到索引值;
[0043]所述查找单元用于,根据索引值在I帧缓存器中的I帧缓存队列中进行查找,当在所述I帧缓存队列中查找到所述索引值时,触发上下文加载单元;当在所述I帧缓存队列中未查找到所述索引值时,触发编码单元;
[0044]所述编码单元用于,对所述待编码图像数据进行I帧编码,得到所述待编码图像数据对应的I帧数据,并触发所述上下文加载单元;
[0045]所述上下文加载单元用于,当在所述I帧缓存队列中查找到所述索引值时,根据所述索引值从所述I帧缓存队列中获取所述索引值对应的I帧缓存对象,并获取所述I帧缓存对象中的