发明内容
本发明实施例提供一种多媒体数据处理方法、电路及装置,用以解决现有技术中采用哈夫曼码编码技术对多媒体数据处理过程中,存在哈夫曼码对应的地址占用存储空间大,以及寻址时间长,影响多媒体数据处理效率的问题。
本发明实施例提供的具体技术方案如下:
一种多媒体数据处理方法,包括:
建立哈夫曼码表对应的坐标系,其中,选取哈夫曼码表中码长最小且码值最大的哈夫曼码,以该哈夫曼码对应的码长和码值作为坐标原点,以所述哈夫曼码表中各个哈夫曼码的码长由小到大依次作为横坐标,相同码长的哈夫曼码对应的码值由大到小依次作为纵坐标;
根据所述坐标系,获取所述哈夫曼码表对应的编码参数集合;
接收输入的多媒体数据,并从所述编码参数集合中获取所述多媒体数据对应的编码参数;
根据所述编码参数获取所述多媒体数据对应的哈夫曼码,并根据所述对应的哈夫曼码输出所述多媒体数据对应的压缩文件。
一种实现上述多媒体数据处理方法的电路,包括:
地址存储器,与预设编码存储器连接,用于存储地址信息,并根据接收到的多媒体数据,输出所述多媒体数据对应的地址至所述预设编码存储器;
预设编码存储器,与横坐标偏移量存储器连接,用于存储预设编码,并根据所述多媒体数据,输出所述多媒体数据对应的预设编码至所述横坐标偏移量存储器;
横坐标偏移量存储器,与右移位数存储器连接,用于存储横坐标偏移量信息,并根据所述多媒体数据,输出所述多媒体数据对应的横坐标偏移量,以及获取所述预设编码与所述横坐标偏移量的和值,并将所述和值输出至所述右移位数存储器;
右移位数存储器,与纵坐标偏移量存储器连接,用于存储右移位数信息,并根据所述多媒体数据,输出所述多媒体数据对应的右移位数,以及接收所述横坐标偏移量存储器输出的和值,将所述和值右移所述右移位数,并将所述右移后的值输出至所述纵坐标偏移量存储器;
纵坐标偏移量存储器,与码长存储器连接,用于存储纵坐标偏移量信息,并根据所述多媒体数据,输出所述多媒体数据对应的纵坐标偏移量,以及获取所述右移位数存储器输出的所述右移后的值与所述纵坐标偏移量和值作为预编码哈夫曼码,并将所述预编码哈夫曼码输出至所述码长存储器;
码长存储器,用于存储码长信息,并根据所述多媒体数据,输出所述多媒体数据对应的码长,以及根据所述码长,对所述纵坐标偏移量存储器输出的预编码哈夫曼码进行修正,获取所述多媒体数据对应的哈夫曼码,并根据所述对应的哈夫曼码输出所述多媒体数据对应的压缩文件。
一种多媒体数据处理装置,包括:
坐标系建立单元,用于建立哈夫曼码表对应的坐标系,其中,选取哈夫曼码表中码长最小且码值最大的哈夫曼码,以该哈夫曼码对应的码长和码值作为坐标原点,以所述哈夫曼码表中各个哈夫曼码的码长由小到大依次作为横坐标,相同码长的哈夫曼码对应的码值由大到小依次作为纵坐标;
编码参数集合获取单元,用于根据所述坐标系,获取所述哈夫曼码表对应的编码参数集合;
编码参数获取单元,用于接收输入的多媒体数据,并从所述编码参数集合中获取所述多媒体数据对应的编码参数;
编码单元,用于根据所述编码参数获取所述多媒体数据对应的哈夫曼码,并根据所述对应的哈夫曼码输出所述多媒体数据对应的压缩文件。
本发明实施例中,建立哈夫曼码表对应的坐标系,其中,选取哈夫曼码表中码长最小且码值最大的哈夫曼码,以该哈夫曼码对应的码长和码值作为坐标原点,以该哈夫曼码表中各个哈夫曼码的码长由小到大依次作为横坐标,相同码长的哈夫曼码对应的码值由大到小依次作为纵坐标;根据上述坐标系,获取上述哈夫曼码表对应的编码参数集合;接收输入的多媒体数据,并从上述编码参数集合中获取上述多媒体数据对应的编码参数;根据上述编码参数获取上述多媒体数据对应的哈夫曼码,并根据该对应的哈夫曼码输出上述多媒体数据对应的压缩文件。采用本发明技术方案,通过重新建立哈夫曼码表对应的坐标系,将哈夫曼码表中的哈夫曼码进行分组,并为每一组哈夫曼码对应的编码参数分配相应的数据,当获取多媒体数据时,仅通过查询多媒体数据对应的编码参数即可获取编码后的哈夫曼码,并根据该哈夫曼码输出上述多媒体数据对应的压缩文件,无须为每一个哈夫曼码分配地址,从而有效节约了存储空间,缩短了寻址时间,提高了对多媒体数据的处理效率。
具体实施方式
为了解决现有技术中采用哈夫曼码编码技术对多媒体数据处理过程中,存在哈夫曼码对应的地址占用存储空间大,以及寻址时间长,影响多媒体数据处理效率的问题。本发明实施例中,建立哈夫曼码表对应的坐标系,其中,选取哈夫曼码表中码长最小且码值最大的哈夫曼码,以该哈夫曼码对应的码长和码值作为坐标原点,以该哈夫曼码表中各个哈夫曼码的码长由小到大依次作为横坐标,相同码长的哈夫曼码对应的码值由大到小依次作为纵坐标;根据上述坐标系,获取上述哈夫曼码表对应的编码参数集合;接收输入的多媒体数据,并从上述编码参数集合中获取上述多媒体数据对应的编码参数;根据上述编码参数获取上述多媒体数据对应的哈夫曼码,并根据所述对应的哈夫曼码输出所述多媒体数据对应的压缩文件。采用本发明技术方案,通过重新建立哈夫曼码表对应的坐标系,将哈夫曼码表中的哈夫曼码进行分组,并为每一组哈夫曼码对应的编码参数分配相应的数据,当获取多媒体数据时,仅通过查询多媒体数据对应的编码参数即可获取编码后的哈夫曼码,并根据该哈夫曼码输出上述多媒体数据对应的压缩文件,无须为每一个哈夫曼码分配地址,从而有效节约了存储空间,缩短了寻址时间,提高了多媒体数据处理效率。
本发明实施例中,上述多媒体数据为音频数据或者视频数据。下面结合附图对本发明优选的实施方式进行详细说明。
参阅图3所示,本发明实施例中,对多媒体数据处理的详细流程如下:
步骤300:建立哈夫曼码表对应的坐标系。
本发明实施例中,重新建立哈夫曼码表对应的坐标系时,选取哈夫曼码表中码长最小且码值最大的哈夫曼码,以该哈夫曼码对应的码长和码值作为坐标原点,以该哈夫曼码表中各个哈夫曼码的码长由小到大依次作为横坐标,相同码长的哈夫曼码对应的码值由大到小依次作为纵坐标。
在上述坐标系中,在横轴的递增方向上,哈夫曼码的码长由短到长,在纵轴的递减方向上,哈夫曼码的码值由小到大。
以哈夫曼码表的表7为例,以表格形式表示上述坐标,表1的左下角表示坐标原点,即以该哈夫曼码对应的码长和码值作为坐标原点,纵向表示Y轴,横向表示X轴,表中数值是哈夫曼码表的有效码值,根据哈夫曼码表7进行坐标系重建之后的码表如表1所示:
表1
|
|
|
|
|
|
00000011 |
|
|
|
|
|
|
|
|
00000100 |
000000010 |
|
|
|
|
|
|
0000101 |
00000110 |
000000011 |
|
|
|
|
|
|
0000110 |
00001000 |
000000100 |
|
|
|
|
|
|
0000111 |
00001001 |
000000101 |
|
|
|
|
|
|
0001010 |
00010000 |
000001010 |
0000000000 |
|
|
|
|
000111 |
0001011 |
00010001 |
000001011 |
0000000001 |
|
010 |
|
|
001010 |
0001100 |
00010010 |
000001110 |
0000000010 |
1 |
011 |
0011 |
00100 |
001011 |
0001101 |
00010011 |
000001111 |
0000000011 |
参阅上述表1中,由于哈夫曼码表表7的码长有9种,因而将X轴划分9个坐标点,横坐标由左至右表示码长增加。由表1可知,在上述坐标系中,码长为8的哈夫曼码的数目最多(9个),因此,Y轴划分9个坐标点,纵坐标由上至下表示码值增加。
步骤310:根据上述坐标系,获取上述哈夫曼码表对应的编码参数集合。
本发明实施例中,上述编码参数包括哈夫曼码表对应的码长,地址,横坐标偏移量,纵坐标偏移量,右移位数。获取哈夫曼码表对应的编码参数集合的具体过程为:
根据上述坐标系,统计哈夫曼码表中每一个哈夫曼码对应的码长,通过该过程,获取每一个哈夫曼码对应的码长。
将该坐标系中的横坐标由大至小每相邻两个坐标点作为一个组合(即为第一横坐标和第二横坐标,其中,第一横坐标值小于第二横坐标值),并分别为该每一个组合分配相应的地址。通过该过程,为哈夫曼码表中的哈夫曼码分配地址,多个哈夫曼码对应同一个地址,无须分别为每一个哈夫曼码分配一个唯一的地址,从而有效避免了存储地址占用存储空间过大的问题,并且,降低了寻址时间。
将上述坐标系中的横坐标由大至小每相邻两个坐标点作为一个组合,分别获取每一个组合中第一横坐标在纵坐标方向上对应的最小码值为第一最小码值,以及第二横坐标在纵坐标方向上对应的最小码值为第二最小码值,其中,将任意一个组合对应的第一最小码值与第二最小码值的差值作为该组合对应的横坐标偏移量。在获取每一个组合对应的横坐标偏移量的过程中,由于在重构的坐标系中,纵坐标由大到小表示哈夫曼码的码值依次减小,因此,上述第一最小码值即为该坐标系中任意一个组合中的第一横坐标对应的纵坐标中数值最大纵坐标所表示的码值,第二最小码值即为该组合中第二横坐标对应的纵坐标中数值最大的纵坐标表示的码值。并且,由于第一最小码值对应的哈夫曼码的码长与第二最小码值对应的哈夫曼码的码长不同,可以通过在第一最小码值对应的哈夫曼码后补零的方式使第一最小码值对应的哈夫曼码的码长和第二最小码值对应的哈夫曼码的码长相同,从而获取第一最小码值对应的哈夫曼码和第二最小码值对应的哈夫曼码的差值,此时获取的差值为二进制数,需要将该二进制数转化为十进制数。通过上述过程,即可获取每一个组合对应的横坐标偏移量。
分别获取上述坐标系中每一个横坐标在纵坐标方向上对应的最大码值和最小码值,并将任意一个横坐标在纵坐标方向上对应的最大码值与最小码值的差值作为该横坐标对应的纵坐标偏移量,通过该过程,即可获取每一个横坐标对应的纵坐标偏移量。
将上述坐标系中的横坐标由大至小每相邻两个坐标点为一个组合,分别获取每一个组合中的第一横坐标和第二横坐标,其中,将任意一个组合对应的第二横坐标与第一横坐标的差值作为该组合对应的右移位数,通过该过程,即可获取每一个组合对应的右移位数。
将上述每一个哈夫曼码对应的码长,每一个组合对应的地址,每一个横坐标对应的纵坐标偏移量,每一个组合对应的横坐标偏移量,每一个组合对应的右移位数保存至编码参数集合。
步骤320:接收输入的多媒体数据,并从上述编码参数集合中获取上述多媒体数据对应的编码参数。
本发明实施例中,接收输入的多媒体数据,将该多媒体数据的前三位进行转化,并将该前三位转化后的数值作为上述哈夫曼码表对应的坐标系的一个横坐标值,剩余三位进行转化,并将上述剩余三位转化后的数值作为上述哈夫曼码表对应的坐标系的一个纵坐标值,其中,上述待处理的多媒体数据均为六位二进制数据,将前三位二进制数据转化为十进制数据作为横坐标值,将后三位二进制数据转化为十进制数据作为纵坐标值。由于在上述编码参数集合中,编码参数与多媒体数据转换获取的坐标(即横坐标值和纵坐标值)存在对应关系,因此,根据上述坐标即可从编码参数集合中获取该横坐标值与纵坐标值对应的编码参数。
步骤330:根据上述编码参数获取上述多媒体数据对应的哈夫曼码,并根据该对应的哈夫曼码输出多媒体数据对应的压缩文件。
本发明实施例中,获取上述多媒体数据对应的码长、地址、横坐标偏移量、纵坐标偏移量和右移位数,根据该地址获取预设编码;其中,该预设编码为将所述坐标系中的横坐标由大至小每相邻两个坐标点作为一个组合后,每一个组合中码值最小的哈夫曼码。然后,根据该预设编码,以及码长、横坐标偏移量、纵坐标偏移量和右移位数,获取多媒体数据对应的哈夫曼码。
具体的,获取所述预设编码以及横坐标偏移量相加后的和值,并将所述和值右移指定位数,其中,所述指定的位数等于所述右移位数;将右移指定位数后的值与所述纵坐标偏移量相加获取预编码哈夫曼码,预编码哈夫曼码获取公式为:
预编码哈夫曼码=【(预设编码+横坐标偏移量)>>右移位数】+纵坐标偏移量;
其中,>>表示右移;
然后根据多媒体数据对应的码长对上述预编码哈夫曼码进行修正,修正方法为,从该预编码哈夫曼码中,由低位至高位选取有效哈夫曼码,并将该有效哈夫曼码作为该多媒体数据对应的已编码数据。其中,有效哈夫曼码的码长等于多媒体数据对应的码长。
在实际应用中,一个多媒体文件包含数量庞大的多媒体数据,采用本发明技术方案,即是对上述一系列多媒体数据进行哈弗曼编码,从而获取对多媒体文件进行压缩后的压缩文件。
采用本发明技术方案,采用哈夫曼码编码技术对多媒体数据进行压缩处理,相较于其他编码技术,能够获得占用空间更小,并且对原多媒体数据破坏更小的压缩文件,从而使处理后的多媒体数据(即上述压缩文件)能够更加易于传输和存储,并且对上述压缩文件进行解码处理后,能够不失真地还原上述多媒体数据,保证了多媒体数据的完整性和准确性。
基于上述技术方案,以哈夫曼码表中的表7为例,详细介绍步骤310获取编码参数集合的方法:
参阅表2为根据表1所示的重构坐标系的各个横坐标(X轴坐标)对应的最大纵坐标(Y轴坐标)所表示的哈夫曼码的码值。
表2
X轴坐标 |
最大Y轴坐标对应的码值 |
产生来源 |
10 |
10’b0000_0000_00 |
预先设置 |
9 |
9’b0000_0001_0 |
(10’b0000_0000_00+3’b100)>>1 |
8 |
8’b0000_0011 |
预先设置 |
7 |
7’b0000_101 |
(8’b0000_0011+3’b111)>>1 |
6 |
6’b0001_11 |
预先设置 |
5 |
5’b0010_0 |
(6’b0001_11+1’b1)>>1 |
4 |
4’b0011 |
预先设置 |
3 |
3’b010 |
(4’b0011+1’b1)>>1 |
1 |
1’b1 |
预先设置 |
本发明实施例中,根据每一个横坐标对应的最大纵坐标表示的码值获取编码参数进行编码,其编码参数可以表示为{LENGTH,BADDR,BASE_OFFSET,SHIFT_NUM}。其中,LENGTH表示哈夫曼码的码长;BADDR表示预先设置的哈夫曼码的访问地址;BASE_OFFSET表示横坐标偏移量,SHIFT_NUM表示是右移位数。
将表2中每一个横坐标对应的哈夫曼码以编码参数形式表示,如表3所示,其中,该表中数值均以十进制形式表示。
表3
X坐标 |
LENGTH |
BADDR |
BASE_OFFSET |
SHIFT_NUM |
10 |
10 |
0 |
0 |
0 |
9 |
9 |
0 |
4 |
1 |
8 |
8 |
1 |
0 |
0 |
7 |
7 |
1 |
7 |
1 |
6 |
6 |
2 |
0 |
0 |
5 |
5 |
2 |
1 |
1 |
4 |
4 |
3 |
0 |
0 |
3 |
3 |
3 |
1 |
1 |
1 |
1 |
4 |
0 |
0 |
在表3中,LENGTH表示哈夫曼码的码长,其位宽由哈夫曼码表中码长最大的哈夫曼码对应的码长的位宽决定,参阅表3所示,哈夫曼码表表7中码长最大的哈夫曼码对应的码长的位宽是10,则LENGTH的位宽是4(1010)。
BADDR表示哈夫曼码对应的地址,其位宽由预先设置地址的编码的数目决定,即由哈夫曼码表中组合的数目决定,参阅表2所示,将每相邻两个横坐标作为一个组合,并分别为每一个组合分配相应的地址,则需要预先设置的组合的数目有5个,BADDR的位宽是3(101)。
SHIFT_NUM表示右移位数,将表1所示坐标系中的每相邻两个横坐标作为一个组合,以上述至少一个组合中的任意一个组合为例,获取右移位数的方法为:计算组合中第二横坐标和第一横坐标的差值。根据表2和表3可知,右移位数的最大差值为1,则SHIFT_NUM的位宽为1。
BASE_OFFSET表示横坐标偏移量,将表1所示坐标系中的每相邻两个横坐标作为一个组合,以上述至少一个组合中的任意一个组合为例,获取横坐标偏移量的方法为:将该组合中较小横坐标(即码长较小)作为第一横坐标,较大横坐标(即码长较大)作为第二横坐标,获取第一横坐标在纵坐标方向上对应的第一最小码值(即该横坐标对应的所有纵坐标中数值最大的纵坐标对应的码值),以及第二横坐标在纵坐标方向上对应的第二最小码值,并将第一最小码值对应的哈夫曼码的低位补SHIFT_NUM个0后,用该值减去第二最小码值对应的哈夫曼码,并将获取的差值转化为十进制数。例如,根据表2和表3可知,在哈夫曼码表的表7中存在的五个组合中,横坐标偏移量最大值为横坐标为8和7组成的组合,横坐标值为8时,在纵坐标方向说那个对应的最小码值为8’b0000_0011,横坐标值为7时,在纵坐标方向上对应的最小码值为7’b0000_101,SHIFT_NUM为1,则在7’b0000_101的低位补1个0转换为8’b0000_1010,减去8’b0000_0011后,差值为00000111,转换为十进制为7,此时,对应的BASE_OFFSET的位宽为3。
在现有的所有哈夫曼码表中,每一个哈夫曼码的码长不完全相同,此时,需要将不足位宽的码值的低位进行补零处理。经过上述处理过程后,可使存储器中每一个存储单位的位宽均相同,由LENGTH的值决定,存储单元数目由BADDR决定,各码值的存放情况如表4所示。
表4
地址 |
码值 |
0 |
10’b0000_0000_00 |
1 |
10'b0000_0011_0_0 |
2 |
10’b0001_11_0000 |
3 |
10’b0011_000000 |
4 |
10’b1_000000000 |
本发明实施例中,同一个横坐标在纵坐标方向上对应的各个码值都可以由该横坐标对应的最小码值加上纵坐标偏移量DATA_OFFSET获得。例如,在哈夫曼码表的表7中,横坐标值为9的在纵坐标方向上对应的各个码值生成过程如表5所示(以二进制形式表示)。
表5
各Y坐标的码值 |
产生来源 |
9’b000000010 |
9’b000000010+1’b0 |
9’b000000011 |
9’b000000010+1’b1 |
9’b000000100 |
9’b000000010+2’b10 |
9’b000000101 |
9’b000000010+2’b11 |
9’b000001010 |
9’b000000010+4’b1000 |
9’b000001011 |
9’b000000010+4’b1001 |
9’b000001110 |
9’b000000010+4’b1100 |
9’b000001111 |
9’b000000010+4’b1101 |
其中,DATA_OFFSET的位宽由最大纵坐标偏移量的位宽决定,各横坐标的最大纵坐标偏移量如表6所示(以二进制形式表示)。
表6
由表6可知,在哈夫曼码表的表7中,当横坐标为8时纵坐标偏移量最大,其纵坐标偏移量为5’b1_0000,则DATA_OFFSET的最大位宽是5。
由此可见,哈夫曼码表所包含的所有数据都可以重新编码为{LENGTH,BADDR,BASE_OFFSET,SHIFT_NUM,DATA_OFFSET},仍以哈夫曼码表的表7为例,坐标数据对应关系参阅表7至表11所示。
其中,为LENGTH分配数据的情况如表7所示(数值以十进制形式表示),表格中的数据表示形式与哈夫曼码表的数据表示形式相同。
表7
为BADDR分配数据的情况如表8所示(数值以十进制形式表示),表格中的数据表示形式与哈夫曼码表的数据表示形式相同。
表8
为BASE_OFFSET分配数据的情况如表9所示(数值以十进制形式表示),表格中的数据表示形式与哈夫曼码表的数据表示形式相同。
表9
为SHIFT_NUM分配数据的情况如表10所示(数值以十进制形式表示),表格中的数据表示形式与哈夫曼码表的数据表示形式相同。
表10
为DATA_OFFSET分配数据的情况如表11所示(数值以十进制形式表示),表格中的数据表示形式与哈夫曼码表的数据表示形式相同。
表11
由此可见,本发明实施例中,在重构的坐标系中,每一个横坐标可以对应多个哈夫曼码的码值,每一个纵坐标值也可以对应多个哈夫曼码的码值,而LENGTH,BADDR,BASE_OFFSET和SHIFT_NUM用于确定每一个横坐标对应的基准码值,DATA_OFFSET用于确定每一个纵坐标对应的哈夫曼码的码值。因此,采用本发明技术方案,无须为每一个哈夫曼码单独分配一组{LENGTH,BADDR,BASE_OFFSET,SHIFT_NUM,DATA_OFFSET},仅需要分别为LENGTH,BADDR,BASE_OFFSET,SHIFT_NUM和DATA_OFFSET分配数据,每一个BADDR,BASE_OFFSET,SHIFT_NUM,DATA_OFFSET均可以对应多个数据,从而节省了存储地址时所占用的大量空间,当需要进行哈夫曼码的编码时,仅需要获取上述编码参数即可获取编码后的哈夫曼码,无须对整个哈夫曼码表进行寻址,有效提高了编码效率。
参阅图4所示,下面结合具体的应用场景,以哈夫曼码表的表7为例,取多媒体数据为101010,则该多媒体数据表示的横坐标值为5,纵坐标值为2,对该多媒体数据进行处理的详细流程为:
步骤400:建立哈夫曼码表对应的坐标系,并根据该坐标系获取该哈夫曼码表对应的编码参数集合。
上述哈夫曼码表对应的坐标系参阅表1所示,根据表1所示的坐标系,获取编码参数集合,即获取包含LENGTH,BADDR,BASE_OFFSET,SHIFT_NUM和DATA_OFFSET五个参数的集合,如表7,表8,表9,表10和表11所示。
步骤410:接收多媒体数据(5,2),从上述编码参数集合中获取该多媒体数据对应的编码参数。
本发明实施例中,参阅表7所示,多媒体数据(5,2)对应的LENGTH的位宽为4,数值为9,以二进制表示形式为4’b1001;参阅表8所示,多媒体数据(5,2)对应的BADDR的位宽为3,数值为0,以二进制表示形式为3’b000;参阅标9所示,多媒体数据(5,2)对应的BASE_OFFSET的位宽为3,数值为4,以二进制表示形式为3’b100;参阅表10所示,多媒体数据(5,2)对应的SHIFT_NUM的位宽为1,数值为1,以二进制表示形式为1’b1;参阅表11所示,DATA_OFFSET的位宽为5,数值为3,以二进制表示形式为5’b0_0011。
步骤420:根据BADDR,获取多媒体数据对应的预设编码。
本发明实施例中,多媒体数据对应的BADDR为3’b000,参阅表4所示,从存储器中获取多媒体数据对应的预设编码BUFFER[BADDR]为10’b0000_0000_00。
步骤430:根据多媒体数据对应的编码参数以及预设编码,获取多媒体数据对应的哈夫曼码,并根据该哈夫曼码输出多媒体数据对应的压缩文件。
本发明实施例中,BASE_OFFSET为3’b100,计算BUFFER[BADDR]+BASE_OFFSET为10’b0000_0001_00;由SHIFT_NUM为1’b1,计算(BUFFER[BADDR]+BASE_OFFSET)>>SHIFT_NUM的结果为10’b0000_0000_10;由DATA_OFFSET为5’b0_0011,计算【(BUFFER[BADDR]+BASE_OFFSET)>>SHIFT_NUM】+DATA_OFFSET的结果为10’b0000_00001_01;并且由于LENGTH为4’b1001,因此,对预编码哈夫曼码10’b0000_0001_01进行修正,即获取其有效位数(低9位)的数据,为9’b0000_0010_1,则9’b0000_0010_1为上述多媒体数据对应的哈夫曼码,该值与哈夫曼码表所查找得到的值一致。
此外,本发明实施例还可以通过逻辑电路图实现,参阅图5所示为基于本发明技术方案的逻辑电路实现图。其中:
地址存储器,与预设编码存储器连接,用于存储地址(BADDR)信息,并根据接收到的多媒体数据,输出该多媒体数据对应的地址至预设编码存储器;
预设编码存储器,与横坐标偏移量存储器连接,用于存储预设编码(BUFFER),并根据多媒体数据,输出该多媒体数据对应的预设编码至横坐标偏移量存储器;
横坐标偏移量存储器,与右移位数存储器连接,用于存储横坐标偏移量信息,并根据该多媒体数据,输出该多媒体数据对应的横坐标偏移量(BASE_OFFSET),以及获取上述预设编码存储器输出的预设编码与横坐标偏移量的和值,并将该和值输出至右移位数存储器;
右移位数存储器,与纵坐标偏移量存储器连接,用于存储右移位数(SHIFT_NUM)信息,并根据上述多媒体数据,输出上述多媒体数据对应的右移位数,以及接收横坐标偏移量存储器输出的和值,将该和值右移上述右移位数,并将该右移后的值输出至纵坐标偏移量存储器;
纵坐标偏移量存储器,与码长存储器连接,用于存储纵坐标偏移量(DATA_OFFSET)信息,并输出上述多媒体数据对应的纵坐标偏移量,以及获取上述右移位数存储器输出的右移后的值与纵坐标偏移量和值作为预编码哈夫曼码,并将该预编码哈夫曼码输出至码长存储器;
码长存储器,用于存储码长(LENGTH)信息,并根据多媒体数据,输出该多媒体数据对应的码长,以及根据上述码长,对纵坐标偏移量存储器输出的预编码哈夫曼码进行修正,获取上述多媒体数据对应的哈夫曼码,并根据该对应的哈夫曼码输出多媒体数据对应的压缩文件。
基于上述技术方案,参阅图6所示,提供一种多媒体数据处理装置,包括坐标系建立单元60,编码参数集合获取单元61,编码参数获取单元62,以及编码单元63,其中,
坐标系建立单元60,用于建立哈夫曼码表对应的坐标系,其中,选取哈夫曼码表中码长最小且码值最大的哈夫曼码,以该哈夫曼码对应的码长和码值作为坐标原点,以上述哈夫曼码表中各个哈夫曼码的码长由小到大依次作为横坐标,相同码长的哈夫曼码对应的码值由大到小依次作为纵坐标;
编码参数集合获取单元61,用于根据上述坐标系,获取上述哈夫曼码表对应的编码参数集合;
编码参数集合获取单元61,具体用于根据坐标系,统计哈夫曼码表中每一个哈夫曼码对应的码长;将该坐标系中的横坐标由大至小每相邻两个坐标点作为一个组合,并分别为上述每一个组合分配相应的地址;将上述坐标系中的横坐标由大至小每相邻两个坐标点作为一个组合,分别获取每一个组合中第一横坐标在纵坐标方向上对应的第一最小码值,以及第二横坐标在纵坐标方向上对应的第二最小码值,其中,将任意一个组合对应的第一最小码值与第二最小码值的差值作为该组合对应的横坐标偏移量,第一横坐标值小于第二横坐标值;分别获取上述坐标系中每一个横坐标在纵坐标方向上对应的最大码值和最小码值,其中,将任意一个横坐标在纵坐标方向上对应的最大码值与最小码值的差值作为该横坐标对应的纵坐标偏移量;将上述坐标系中的横坐标由大至小每相邻两个坐标点为一个组合,分别获取每一个组合中的第一横坐标和第二横坐标,其中,将任意一个组合对应的第二横坐标与第一横坐标的差值作为该组合对应的右移位数,第一横坐标值小于第二横坐标值;将每一个哈夫曼码对应的码长,每一个组合对应的地址,每一个组合对应的横坐标偏移量,每一个横坐标对应的纵坐标偏移量,每一个组合对应的右移位数保存至编码参数集合。
编码参数获取单元62,用于接收输入的多媒体数据,并从上述编码参数集合中获取该多媒体数据对应的编码参数;
编码参数获取单元62,具体用于接收输入的多媒体数据,将该多媒体数据的前三位进行转化,并将上述前三位转化后的数值作为上述哈夫曼码表对应的坐标系的一个横坐标值,剩余三位进行转化,并将上述剩余三位转化后的数值作为上述哈夫曼码表对应的坐标系的一个纵坐标值;从上述编码参数集合中获取上述横坐标值与纵坐标值对应的编码参数。
编码单元63,用于根据上述编码参数获取上述多媒体数据对应的哈夫曼码,并根据上述对应的哈夫曼码输出多媒体数据对应的压缩文件;
编码单元63,具体用于获取多媒体数据对应的码长、地址、纵坐标偏移量、横坐标偏移量和右移位数,根据上述地址获取预设编码;其中,预设编码为将上述坐标系中的横坐标由大至小每相邻两个坐标点作为一个组合后,每一个组合中码值最小的哈夫曼码;根据上述述预设编码,以及码长、纵坐标偏移量、横坐标偏移量和右移位数,获取多媒体数据对应的哈夫曼码;获取上述预设编码以及横坐标偏移量相加后的和值,并将该和值右移指定位数,其中,该指定的位数等于所述右移位数;将右移指定位数后的值与上述述纵坐标偏移量相加获取预编码哈夫曼码;根据多媒体数据对应的码长对所述预编码哈夫曼码进行修正,获取多媒体数据对应的哈夫曼码。
综上所述,本发明实施例中,建立哈夫曼码表对应的坐标系,其中,选取哈夫曼码表中码长最小且码值最大的哈夫曼码,以该哈夫曼码对应的码长和码值作为坐标原点,以该哈夫曼码表中各个哈夫曼码的码长由小到大依次作为横坐标,相同码长的哈夫曼码对应的码值由大到小依次作为纵坐标;根据上述坐标系,获取上述哈夫曼码表对应的编码参数集合;接收输入的多媒体数据,并从上述编码参数集合中获取上述多媒体数据对应的编码参数;根据上述编码参数获取上述多媒体数据对应的哈夫曼码,并根据该哈夫曼码输出多媒体数据对应的压缩文件。采用本发明技术方案,仅需要分别为码长,地址,纵坐标偏移量,横坐标偏移量和右移位数分配数据,每一个码长,地址,纵坐标偏移量,横坐标偏移量和右移位数均可以对应多个数据,从而节省了存储地址时所占用的大量空间,当需要对多媒体数据进行哈夫曼码的编码时,仅需要获取上述编码参数即可获取编码后的哈夫曼码,无须对整个哈夫曼码表进行寻址,有效提高了多媒体数据的处理效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。