发明内容
为解决上述技术问题,本发明实施例提供一种H.264的基于上下文自适应变长解码方法及装置,以提高H.264视频解码过程中CAVLD的解码效率,并且降低内存资源占用,本发明技术方案如下:
一种H.264的基于上下文自适应变长解码方法,包括:
预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。
优选地,所述预先根据H.264标准码表构造快速解析查找表,包括:
在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
针对所述H.264标准码表的所***字列,分别得到二级解析查找表,对所有的二级解析查找表进行合并,得到快速解析查找表。
优选地,所述根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引,包括:
根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
优选地,所述根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值,包括:
根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
对所述表项进行读取获得相应的语法元素值。
一种H.264的基于上下文自适应变长解码装置,包括:
快速解析查找表构造单元,用于预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
查找索引获得单元,用于根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
解析单元,用于根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。
优选地,,所述快速解析查找表构造单元,包括:
三级码表构造子单元,用于在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
三级码表扩充子单元,用于统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
二级解析查找表构造子单元,用于以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
一级解析查找表构造子单元,用于对所述H.264标准码表的所***字列分别得到的二级解析查找表进行合并,得到快速解析查找表。
优选地,所述查找索引获得单元,包括:
第一索引获得子单元,用于根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
第二索引获得子单元,用于获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
第三索引获得子单元,用于将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
第四索引获得子单元,用于将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
优选地,所述解析单元,包括:
确定子单元,用于根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
语法元素值获得子单元,用于对所述表项进行读取获得相应的语法元素值。
本发明实施例所提供的技术方案,在H.264标准给出的CAVLD标准码表的基础上,重新构造快速解析查找表,在对快速解析查找表进行查询时,以解码过程中的需要的语法元素、码字,以及通过简单计算得到的码字索引作为输入,通过一次查表就可以得到对应码字的解析值,与现有的查询标准H.264码表的方法相比,CAVLD的效率得到有效提升。此外,由于快速解析查找表所包含的数据量小于H.264标准参考代码表的数据量,因此,应用本发明所提供的方案,也能够有效节省CAVLD过程中内存资源的占用。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
首先对本发明提供的一种H.264的CAVLD方法进行说明:
预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
参见图2所示,根据上述构造的快速解析查找表,本发明所提供的CAVLD方法包括以下步骤:
S101,根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
S102,根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;
其中,如图1所示,所得到的语法元素值用于在后续的H.264解码过程中进行反量化、反变换及预测相加处理,得到解码视频输出图像。
下面将对本发明的快速解析查找表构造方法以及相应的解码方法做进一步的详细说明:
图3所示为本发明的快速解析查找表构造方法流程图,包括以下步骤:
S100a,在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
其中,码字的前置零数目是指一个码字从左到右的第一个为1的bit的左边的0bit位的数目,例如:码字111前置零数目为0;码字00011的前置零数目为3。
S100b,统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
S100c,以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
S100d,针对H.264标准码表的所***字列,分别执行上述S100a-S100c得到二级解析查找表,对所有的二级解析查找表进行合并,构成一个一级解析查找表,即本发明的快速解析查找表。
图4所示为本发明的待解析码字查找索引获得方法流程图,包括以下步骤:
S101a,根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
以解析时的某个输入值,作为该待解析码字第一个索引idx1,通过该值在一级解析查找表中找到码字所在的二级解析查找表;
S101b,获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
其中,所计算的idx2也就是该码字所在的三级解析查找表的首地址。
S101c,将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
S101d,将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
图5所示为本发明的查找语法元素值方法流程图,包括以下步骤:
S102a,根据查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
S102b,对所述表项进行读取获得相应的语法元素值。
在H.264解码过程当中,很重要也很耗时的一个模块就是熵解码模块(CAVLD),对于用CAVLC编码出来的码流而言,在H.264的标准组织给出的参考代码中,熵解码模块所占用的时间大约占总体解码时间的48%左右,而变换系数幅值列表的解析又占用了解析过程的绝大部分时间,因此对变换系数幅值列表解析部分的优化将大大提高解码速度。
本发明实施例所提供的技术方案,在H.264标准给出的CAVLD标准码表的基础上,重新构造快速解析查找表,在对快速解析查找表进行查询时,以解码过程中的需要的语法元素、码字,以及通过简单计算得到的码字索引作为输入,通过一次查表就可以得到对应码字的解析值,与现有的查询标准H.264码表的方法相比,CAVLD的效率得到有效提升。此外,由于快速解析查找表所包含的数据量小于H.264标准参考代码表的数据量,因此,应用本发明所提供的方案,也能够有效节省CAVLD过程中内存资源的占用。
下面将结合一个具体的实例,对本发明的H.264的CAVLD方法进行说明,以解析coeff_token(系数表征值)的码字的语法元素为例,表1所示为H.264标准中给出的解析coeff_token的元素Totalcoeff(非零变换系数总数)和TrailingOnes(拖尾变换系数数量)的初始标准码表mapping toTotalCoeff(coeff_token)and TrailingOnes(coeff_token):
表1
为便于描述,以下选取nC==-1这一列来对本发明方案进行描述:
首先构造快速解析查找表,方法如下:
1)在原始码表中,以nC==-1这个码字列为单位,将一列中将前置零相等的码字分为一组,称为三级码表。在nC==-1这一列中,通过分组,得到8个三级码表,组号为0到7,如表2所示:
组号 |
前置零个数 |
码字 |
0 |
0 |
1 |
1 |
1 |
01 |
2 |
2 |
001 |
3 |
3 |
0001 110001 000001 100001 01 |
4 |
4 |
0000 110000 10 |
5 |
5 |
0000 0110000 010 |
6 |
6 |
0000 00110000 0010 |
7 |
7 |
0000 000 |
表2
2)在一个三级码表内,将码字按照从小到大的顺序从前往后排列,得到表3:
组号 |
前置零个数 |
码字 |
0 |
0 |
1 |
1 |
1 |
01 |
2 |
2 |
001 |
3 |
3 |
0001 000001 010001 100001 11 |
4 |
4 |
0000 100000 11 |
5 |
5 |
0000 0100000 011 |
6 |
6 |
0000 00100000 0011 |
7 |
7 |
0000 000 |
表3
3)统计每个三级码表中码字的数量,找出码字最多的三级码表包含的码字数目,记为max_code_num。由表4可以得出max_code_num=4;
三级码表序号 |
前置零个数 |
码字 |
三级码表内码字数目 |
0 |
0 |
1 |
1 |
1 |
1 |
01 |
1 |
2 |
2 |
001 |
1 |
3 |
3 |
0001 000001 010001 100001 11 |
4 |
4 |
4 |
0000 100000 11 |
2 |
5 |
5 |
0000 0100000 011 |
2 |
6 |
6 |
0000 00100000 0011 |
2 |
7 |
7 |
0000 000 |
1 |
表4
4)如果该列中其他三级码表中的码字数目小于max_code_num,将其他三级码表进行扩充,使其等于max_code_num。由于在表4中除了序号为3的三级码表外,其他三级码表中所含的码字数目都小于4,所以要对其他组的码表进行扩充;扩充的原则是,将每组的码字数目扩充到max_code_num个码字。具体方法如下:
a.首先把max_code_num这个三级码表中的每个码字的所有前置零去掉,得到基本剩余码表。
b.把当前待扩充码表码字的前置零去掉,得到当前码表的剩余码表,然后在当前码表的剩余码表的码字后添加适当位数的0和1,使得添加位数后的剩余码字和基础剩余码表中的码字相同;
c.为扩充后的剩余码字添加在b步骤中去掉的前置零,这样就得到了最终的扩展码字。
下面以对表4中序号为2、5的的三级码表进行扩充为例:
a.首先对序号为3的三级码表中的码字进行去前置0处理:
序号为3的码表 |
去掉前置0后的剩余码表 |
0001 000001 010001 100001 11 |
1 001 011 101 11 |
b.对于3级码表2来说,包含一个表项001,去掉前置零00,剩余码字为1;
对于3级码表5来说,包含两个表项0000 010、0000 011,去掉前置零00000,剩余码字为10、11
为了使剩余码字和剩余码表中的某些项相同,
对3级码表2的剩余码字1后面分别添加00、01、10、11,也就是该表由一个码字扩充为4个码字,最后得到与三级码表3的剩余码表相同的100、101、110、111。
对3级码表5的剩余码字10后添加0和1,剩余码字11后添加0和1,也就是说该表中的每一个码字扩充为两个码字,最后得到与三级码表3的剩余码表相同的100、101、110、111。
c.添加去掉的前置零:
3级码表2最后得到的扩充结果为:00100、00101、00110、00111;
3级码表5最后得到的扩充结果为:0000 0100、0000 0101、0000 0110、0000 0111。
5)将所有扩充后的三级码表,以每个三级码表中的前置零的数目为依据,按照小到大的顺序从前往后排列进行排序,构成一个二级码表,如表5所示:
三级码表序号 |
前置零个数 |
扩充后码字 |
三级码表内码字数目 |
0 |
0 |
100101110111 |
4 |
1 |
1 |
0100010101100111 |
4 |
2 |
2 |
00100001010011000111 |
4 |
3 |
3 |
0001 000001 010001 100001 11 |
4 |
4 |
4 |
00001 0000001 0100001 1000001 11 |
4 |
5 |
5 |
000001 00000001 01000001 10000001 11 |
4 |
6 |
6 |
0000001 000000001 010000001 100000001 11 |
4 |
7 |
7 |
00000001 0000000001 0100000001 1000000001 11 |
4 |
表5
6)按照二级码表内的码字顺序构造二级解析查找表,为每一个码字构造一个表项,表项中包含需要解析的语法元素。对于当前查找表来说,每一个码字需要解析出TrailingOnes和TotalCoeff这两个语法元素,因此根据标准表,获得二级码表各码字对应的TrailingOnes和TotalCoeff语法元素值,得到如表6所示的二级解析查找表:
三级码表序号 |
前置零个数 |
扩充后码字 |
TrailingOnes |
TotalCoeff |
0 |
0 |
100101110111 |
1111 |
1111 |
1 |
1 |
0100010101100111 |
0000 |
0000 |
2 |
2 |
00100001010011000111 |
2222 |
2222 |
3 |
3 |
0001 000001 010001 100001 11 |
0310 |
2321 |
4 |
4 |
00001 0000001 0100001 1000001 11 |
0000 |
4433 |
5 |
5 |
000001 00000001 01000001 10000001 11 |
2211 |
3333 |
6 |
6 |
0000001 000000001 010000001 100000001 11 |
2211 |
4444 |
7 |
7 |
00000001 0000000001 0100000001 1000000001 11 |
3333 |
4444 |
表6
表6所示的二级解析查找表,可以表示成如下的一个二维数组:
BYTE H.264DEC_coeff_token_chormaDC[][4]=
{
{1,1}, //1,1,码字1|XX
{1,1},
{1,1},
{1,1},
{0,0}, //0,0,码字01|XX
{0,0},
{0,0},
{0,0},
{2,2}, //2,2,码字001|XX
{2,2},
{2,2},
{2,2},
{0,2}, //0,2,码字0001 00
{3,3}, //3,3,码字0001 01
{1,2}, //1,2,码字0001 10
{0,1}, //0,1,码字0001 11
{0,4}, //0,4,码字0000 10
{0,4},
{0,3}, //0,3,码字0000 11
{0,3},
{2,3}, //2,3,码字0000 010
{2,3},
{1,3}, //1,3,码字0000 011
{1,3},
{2,4}, //2,4,码字0000 0010
{2,4},
{1,4}, //1,4,码字0000 0011
{1,4},
{3,4}, //3,4,码字0000 000
{3,4},
{3,4},
{3,4},
};
7)上述步骤1)-6)构造出了解析coeff_token的元素Totalcoeff和TrailingOnes的初始标准码表的nC==-1这一列的二级解析查找表。重复上述步骤,为表1的其他码字列分别构造二级解析查找表。然后将所有的二级解析查找表合并,就可以得到最终的一级解析查找表。
在上述构造的快速解析查找表的基础上,以nc==-1为例,以待解析码字为001xx和码字为0001 11为例来对相应的解码方法进行说明:
第一步:获取码字在解析查找表中的查找索引
在TrailingOnes和TotalCoeff的解析过程中,将待解析的码字码流和相对应的nC值作为输入,通过计算确定其在查找表中idx的步骤如下:
1)由于输入为nc==-1,通过该值在一级解析查找表中找到码字所在的二级解析查找表为H.264DEC_coeff_token_chormaDC[][4];相当于找到nc==-1在初始标准码表中所对应的列。
2)计算每个码字的前置零个数。
001xx 的前置零prefix_zero_num=2;
0001 11 的前置零prefix_zero_num=3。
3)计算中间偏移索引。
001xx 的中间偏移idx2=prefix_zero_num*max_code_num=2*4=8;
0001 11 的中间偏移idx2=prefix_zero_num*max_code_num=3*4=12。
4)该处由于每个三级解析查找表内有4个表项,所以将每个码字左移prefix_zero_num+1位后,取剩下码字的前两个bit,将这两个bit通过二进制转换成10进制数值,作为该码字在三级解析查找表中的偏移idx3。
001xx通过以上操作后,idx3为二进制数XX,在十进制的取值范围是0,1,2,3;
0001 11通过以上操作后,idx3为二进制数11即十进制数3。
5)将idx2与idx3相加,得到该码字在二级码表内的最终偏移值idx4;
001xx 的idx4=8+idx3,idx3的其取值范围是8,9,10,11
0001 11 的idx4=12+3=15
第三步:码字对应语法元素值的获取:
1)在H.264DEC_coeff_token_chormaDC[][2]表中,通过
H.264DEC_coeff_token_chormaDC[idx4]得到码字所对应的表项。
2)H.264DEC_coeff_token_chormaDC[idx4][0]获取到TrailingOnes、H.264DEC_coeff_token_chormaDC[idx4][1]获取到TotalCoeff。
例如:
对于001xx:
通过查表
H.264DEC_coeff_token_chormaDC[8][0] 或者
H.264DEC_coeff_token_chormaDC[9][0] 或者
H.264DEC_coeff_token_chormaDC[10][0] 或者
H.264DEC_coeff_token_chormaDC[11][0] 或者
得到TrailingOnes=2
通过查表
H.264DEC_coeff_token_chormaDC[8][1] 或者
H.264DEC_coeff_token_chormaDC[9][1] 或者
H.264DEC_coeff_token_chormaDC[10][1] 或者
H.264DEC_coeff_token_chormaDC[11][1] 或者
TotalCoeff=2
对于0001 11:
通过查表H.264DEC_coeff_token_chormaDC[15][0]
得到TrailingOnes=2
查表H.264DEC_coeff_token_chormaDC[15][1]
得到TotalCoeff=2
可以看到,只要通过简单的计算,得到每个语法元素在解析查找表中的idx以后,就可以通过一次查找,得到所需要的语法元素值,这种方法和标准组织给出的解析算法相比,大大减少了判断次数和查找次数,极大的提高了解码速度,从上述例子中还可以看到,新构造的快速解析查找我们的查找表仅有64byte大小,有效地节省了内存资源占用。本领域技术人员可以理解的是,上述方法同样适用于在CAVLD中对level_prefix(幅值前缀)、total_zero(总零数目)、run_before(非零系数前连续零幅值个数)等语法元素的解析,这些也应该在本发明的保护范围之内。
相应于上面的方法实施例,本发明还提供一种H.264的基于上下文自适应变长解码装置,参见图6所示,该装置包括:
快速解析查找表构造单元600,用于预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
查找索引获得单元610,用于根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
解析单元620,用于根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。
参见图7所示,所述快速解析查找表构造单元600,可以包括:
601三级码表构造子单元,用于在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
602三级码表扩充子单元,用于统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
603二级解析查找表构造子单元,用于以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
604一级解析查找表构造子单元,用于对所述H.264标准码表的所***字列分别得到的二级解析查找表进行合并,得到快速解析查找表。
参见图8所示,所述查找索引获得单元610,可以包括:
第一索引获得子单元611,用于根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
第二索引获得子单元612,用于获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
第三索引获得子单元613,用于将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
第四索引获得子单元614,用于将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
参见图9所示,所述解析单元620,可以包括:
确定子单元621,用于根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
语法元素值获得子单元622,用于对所述表项进行读取获得相应的语法元素值。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。