用于将图像数据和其他数据类型编码为一种数据格式并将其解码的系统和方法与流程

文档序号:20608225发布日期:2020-05-01 22:18阅读:175来源:国知局
用于将图像数据和其他数据类型编码为一种数据格式并将其解码的系统和方法与流程

相关申请的交叉引用

本申请要求2017年10月16日提交的题为“将图像数据和其他数据类型编码为一种数据格式并将其解码的系统和方法”的15/785,148号美国专利申请的权益和/或优先权。本申请还要求2017年6月12日提交的题为“将图像数据流或文件和其他数据流或文件融合成数据格式流或文件或从该数据格式流或文件分离的数据格式规范和方法”的62/518,034号美国临时专利申请的权益和/或优先权。

本发明总体上涉及数据交换和存储。更具体地,本发明涉及将图像数据流或文件和其他非图像数据流或文件融合(blend)成单一数据格式。



背景技术:

图像数据流或文件是用于在计算机或设备、互联网或其他网络上分享图片的大众媒体,并且在许多不同的计算设备(如智能手机)上查看图像数据流或文件。但是在许多情况下,在查看和存储图像数据时,尤其是同时观看图像并收听音频时,可能希望分享或存储其他信息。

当前所使用的技术包括将图像数据或文件与非图像数据或文件进行分离地存储或交换。例如,用户使用jpeg文件存储或交换图片,并且将wav或mp3文件中的语音或音频数据与图像文件一起存储或交换。这种方法的问题在于,为了同时观看图像和收听相关联的音频,该用户必须执行两个动作来保存或传输两种数据文件,一种用于图像,另一种用于音频。

视频媒体数据或文件具有“移动的”图像和音频信息数据两者,但这是一种不同的媒体应用。视频占用更多的空间来存储,以及更宽的网络带宽来进行交换,并且视频文件中的图像帧的分辨率远低于可构成图像数据格式的分辨率。

因此,需要用于将图像数据流或文件与非图像数据或文件融合进单个数据流或文件的方法和技术,用于从生成的单个融合的数据流或文件中分离并返回图像数据流或文件和非图像数据流或文件的方法和技术,用于融合的单个数据流或文件的流数据或文件数据结构或格式,以及用于实施上述的融合和分离方法的应用程序。



技术实现要素:

在本发明的一方面,提供了用于将数据流编码为合并的文件的编解码器的方法。该方法包括:访问具有第一多个数据字节的第一文件;访问具有第二多个数据字节的第二文件;合并所述第一文件和所述第二文件以提供包含有头和正文的合并的文件,其中包括步骤:在第一存储步骤,将来自所述第一多个数据字节的具有第一字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第一文件字节块,其中所述字节块大小包括至少一个或多个字节的数据,在第二存储步骤,顺序地将来自所述第二多个数据字节的具有第二字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第二文件字节块,重复第一存储步骤和第二存储步骤,以将第一文件和第二文件中的所有数据字节顺序地存储至合并的文件中,并在所述头中存储与所述第一字节块大小和所述第二字节块大小有关的信息。

在另一个实施例中,所述第一文件具有第一文件格式,所述第二文件具有第二文件格式。

在另一个实施例中,所述第一文件是图像文件,和所述第二文件是非图像文件。

在另一个实施例中,所述字节被存储在所述合并的文件中的按顺序的且相邻的存储位置中。

在另一个实施例中,所述方法还包括:通过以下步骤将所述合并的文件传输至应用程序处理块以将所述合并的文件解码为所述第一文件和所述第二文件:读取所述头以确定所述第一文件和所述第二文件中的每一种文件的字节块大小;顺序地访问与所述第一文件的字节块大小相关联的若干数量的字节以及访问与所述第二文件的字节块大小相关联的若干数量的字节;以及利用所访问的字节来创建所述第一文件和所述第二文件。

在另一个实施例中,根据所述第一文件的字节数量与所述第二文件的字节数量的比率来计算所述第一文件的字节块大小和所述第二文件的字节块大小。

在另一个实施例中,计算所述第一文件和所述第二文件中的每一种文件的字节块大小的步骤包括:确定所述第一文件和所述第二文件中哪个文件包括较多的字节数量;将包括较多的字节数量的第一文件或第二文件的字节数量除以所述第一文件或所述第二文件中的另一文件的字节数量,以产生结果;确定所述结果是否包括余数,如果是,则将所述结果四舍五入成整数,该整数是所述结果的下一个整数;以及将包括较多的字节数量的所述第一文件或所述第二文件的字节块大小设置为等于所述整数。

在另一个实施例中,如果所述第一文件或所述第二文件中任一个的数据块的总数量导致:在写入所述第一文件或所述第二文件中的所有之前的字节之后,在所述第一文件或所述第二文件中存在剩余数量的字节,对于所述第一文件,该剩余字节的数量小于的所述第一字节块大小,或者对于所述第二文件,该剩余字节的数量小于所述第二字节块大小,则所述方法还包括:将部分的字节块存储至所述合并的文件中,其中所述部分的字节块与所述第一文件或所述第二文件中的一种文件相关联,并且其中所述部分的字节块包括若干数量的数据字节,该若干数量的数据字节的数量分别小于与所述部分的字节块相关联的所述第一文件或所述第二文件的字节块大小。

在另一个实施例中,所述计算所述第一文件和所述第二文件中的每一种文件的字节块大小的步骤还包括:将所述第二文件的字节块大小设置为一个字节;以及确定是否设置加速乘法器,如果是,则设置所述加速乘法器,其中所述加速乘法器是这样的值:用于操纵所述第一文件的字节块大小和所述第二文件的字节块大小,以将所述第一文件的字节块大小设置为由所述值乘以所述第一文件的字节块大小的结果,并且将所述第二文件的字节块大小设置为由该值乘以所述第二文件的字节块大小的结果。

在本发明的另一方面,提供用于将合并的文件的数据流解码为分离的数据流的编解码器的方法。该方法包括:分析所述合并的文件中所包括的头数据;计算用于第一数据流和第二数据流中的每一种的字节块大小,其中所述字节块是文件中的若干数量的数据字节,读取所述合并的文件中所包括的第一文件字节块,其中所述第一文件字节块包括所述合并的文件中的与为第一数据流而计算的字节块大小对应的若干数量的字节;将所述第一文件字节块写入第一文件;读取所述合并的文件中所包括的第二文件字节块,其中所述第二文件字节块包括所述合并的文件中的与为第二数据流而计算的字节块大小对应的若干数量的字节;以及将所述第二文件字节块写入第二文件。

在另一个实施例中,所述第一文件具有第一文件类型,所述第二文件具有第二文件类型。

在另一个实施例中,所述第一文件是图像文件,所述第二文件是非图像文件。

在另一个实施例中,所述方法还包括:确定所述合并的文件中所包括的每一个字节是否已从所述合并的文件中读取并且已写入所述第一文件或所述第二文件中的一种文件;以及一旦确定所述合并的文件中所包括的每一个字节尚未写入所述第一文件或所述第二文件中的一种文件,则重复所述读取、写入和确定步骤。

在另一个实施例中,计算用于第一数据流和第二数据流中的每一种的字节块大小包括:读取头数据中的字节块大小数据,其中字节块大小数据包括在创建所述合并的文件期间所使用的字节块大小。

在本发明的另一方面,提供用于将数据流编码为合并的文件以及将合并的文件解码为分离的数据流的系统。该系统包括:耦合至处理器的网络接口和耦合至所述处理器的存储器,所述处理器被配置为:访问具有第一多个数据字节的第一文件;访问具有第二多个数据字节的第二文件;合并所述第一文件和所述第二文件以提供包含有头和正文的合并的文件,其中,在合并期间,所述处理器被进一步配置为:在第一存储步骤,将来自所述第一多个数据字节的具有第一字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第一文件字节块,其中所述字节块大小包括至少一个或多个字节的数据,在第二存储步骤,顺序地将来自所述第二多个数据字节的具有第二字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第二文件字节块,重复第一存储步骤和第二存储步骤,以将第一文件和第二文件中的所有数据字节顺序地存储至合并的文件中,并在头中存储与所述第一字节块大小和所述第二字节块大小有关的信息。

在另一个实施例中,所述第一文件具有第一文件格式,所述第二文件具有第二文件格式。

在另一个实施例中,所述第一文件是图像文件,所述第二文件是非图像文件。

在另一个实施例中,计算所述第一文件和所述第二文件中的每一种文件中的字节块大小的步骤包括:确定所述第一文件和所述第二文件中哪个文件包括较多的字节数量;将包括较多的字节数量的第一文件或第二文件的字节数量除以所述第一文件或所述第二文件中的另一文件的字节数量,以产生结果;确定所述结果是否包括余数,如果是,则将所述结果四舍五入成整数,所述整数为所述结果的下一个整数;以及将包括较多的字节数量的所述第一文件或所述第二文件的字节块大小设置为等于所述整数。

在另一个实施例中,所述处理器被进一步配置为:分析所述合并的文件所包括的头数据;基于所述头数据中所包括的字节块大小数据来计算用于所述第一文件和所述第二文件中的每一种文件的字节块大小;记录所述合并的文件中所包括的合并的文件字节块,其中所述合并的文件字节块包括所述合并的文件中的与为所述第一文件而计算的所述字节块大小对应的若干数量的字节;将所述合并的文件字节块复制至第三文件;记录所述合并的文件中所包括的下一个合并的文件字节块,其中所述下一个合并的文件字节块包括所述合并的文件中的与为所述第二文件而计算的所述字节块大小对应的若干数量的字节;以及将所述下一个合并的文件字节块复制至第四文件。

在另一个实施例中,所述处理器被进一步配置为:检查所述合并的文件中所包括的每一个字节是否已从所述合并的文件中读取并其已写入所述第三文件或所述第四文件中的一种文件;以及一旦确定所述合并的文件中所包括的每一个字节尚未写入所述第三文件或所述第四文件中的一种文件,则重复所述读取、写入和确定步骤。

根据本公开创建了用于融合流或文件的数据结构或格式(以下称为chm格式)。该数据结构或格式有两部分:开始位于头部分处的元数据字节,和正文部分处的原始数据字节。与chm数据格式一起,创建协议(以下称为chm格式),以将图像数据流或文件与一个或多个非图像数据流或文件融合。

在一个方面,提供了将图像文件与非图像文件融合的方法。该方法可以开始于:通过应用程序访问图像和非图像数据流或文件,其中所述应用程序实施本公开所述的技术。一旦进行了访问,所述应用程序可以读取图像和非图像流或文件两者的数据信息,并且基于chm格式,其可以创建元数据字节并将元数据字节写入chm格式的数据流或文件的开始的头部分。接下来,应用程序可以从图像和非图像数据流或文件中的每一个中读取一块(onechunk)数据字节,并将这两块数据字节写入chm格式的流或文件。该应用程序可以继续并且重复地从两种数据流中读取一块数据字节,并且将这两块数据字节写入chm格式的数据流或文件,直到其到达两种图像和非图像数据流或文件的末端。该方法的处理过程称为“chm编码”。

在另一方面,提供了分离chm格式的数据流或文件并返回图像流或文件和非图像流或文件的方法。该方法可以开始于:用应用程序访问由上述融合方法生成的chm格式的数据流或文件。一旦进行了访问,所述应用程序可以从流或文件的头部分读取并检索元数据信息。接下来,基于协议,所述应用程序可以从chm格式的数据流或文件中读取两块字节,并且其可以将一块字节写入图像流或文件,以及将另一块字节写入非图像流或文件。并且应用程序可以继续并重复从chm格式数据流读取接下来的两块字节,并且将每块字节写入它们自己的数据流或文件中,直到该应用程序到达chm格式数据流或文件的末端,并且其将图像和非图像数据流或文件返回至它们的原始状态。该方法的处理过程称为“chm解码”

上面介绍的应用程序是实施融合/分离方法和协议以执行将图像和非图像数据流或文件融合为单个的chm格式数据流或文件或者将图像和非图像数据流或文件从单个的chm格式数据流或文件分离的过程的软件。

附图说明

为了更全面地理解,现结合所附附图来参考以下说明,其中:

图1图示了根据本发明的各个实施例的用于图像和非图像数据流的chm编码和解码过程的流程图;

图2图示了根据本发明各个实施例的用于融合的流或文件的被称为chm格式的数据结构或格式;

图3a图示了根据本发明各个实施例的将图像流或文件和非图像流或文件融合或编码为chm格式数据流的方法的流程图;

图3b图示了根据本发明的各个实施例的从chm格式数据流中分离或解码图像流或文件和非图像流或文件的方法的流程图;

图4图示了根据本发明各个实施例的chm文件编码过程的一个实施例的示意图;

图5图示了根据本发明各个实施例的chm创建过程的流程图;

图6图示了根据本发明各个实施例的chm文件解码过程的一个实施例的示意图;

图7图示了根据本发明各个实施例的chm解码过程;

图8图示了根据本发明各个实施例的chm文件编码过程的一个实施例的示意图,其中待融合成chm文件的文件不具有相等数量的字节;

图9a和9b图示了根据本发明各个实施例的chm编码过程的流程图;

图10图示了根据本发明各个实施例的chm文件解码过程的实施例的示意图,其中将要从chm文件中解码的文件不具有相等数量的字节;

图11图示了根据本发明各个实施例的chm解码过程的流程图;

图12图示了根据本发明各个实施例的服务器侧chm文件解码和传输系统的示意图;

图13图示了根据本发明的各个实施例的显示有网页的浏览器窗口,该网页包括在该网页上呈现的伴随有音频的图像;

图14图示了根据本发明各个实施例的服务器侧chm解码过程的流程图;

图15图示了根据本发明各个实施例的医学成像和口述chm文件创建系统;

图16图示了根据本发明各个实施例的医学成像和口述chm文件创建过程;

图17图示了根据本发明各个实施例的chm文件夹文件创建过程的示意图;

图18图示了根据本发明各个实施例的chm文件夹文件解码过程的示意图;

图19图示了根据本发明各个实施例的文件夹文件创建和解码过程;

图20图示了根据本发明各个实施例的chm文件编码过程的示意图,其中对多种文件类型的文件进行编码;

图21图示了根据本发明各个实施例的chm文件编码过程的流程图,其中对多种文件类型的文件进行编码;

图22图示了根据本发明各个实施例的chm文件解码过程的示意图,其中对多种文件类型的文件进行解码;

图23图示了根据本发明各个实施例的chm文件解码过程的流程图,其中对多种文件类型的文件进行解码;

图24图示了根据本发明各个实施例的多种文件类型chm表示的示意图;

图25图示了根据本发明各个实施例的利用chm文件的语音认证(authentication)系统的示意图;

图26图示了根据本发明各个实施例的利用chm文件的语音认证过程的流程图;

图27图示了根据本发明各个实施例的防止账户创建滥用的过程;

图28图示了根据本发明各个实施例的利用chm文件的语音到文本以及索引过程;

图29图示了根据本发明各个实施例的数据库关键词索引系统的示意图;

图30图示了根据本发明各个实施例的关键词搜索过程;

图31图示了根据本发明的各个实施例的具有余数的合并的文件的编码过程的示意图;

图32图示了根据本发明各个实施例的合并的文件的解码过程的示意图;以及

图33图示了可以在本文所描述的环境中使用的系统设备的一个实施例的示意图。

具体实施方式

现在参考附图,其中在本文全文使用相同的参考数字指代相同的元素,示出和描述了各个视图和实施例。这些附图不一定是按比例绘制的,在某些情况下,一些附图被放大和/或简化,仅用于说明的目的。本领域的普通技术人员将理解基于以下可能实施例的示例的许多可能的应用和变化。

数字信息(例如图像、音频、视频、文本等)被呈现和存储为数据二进制或数据字节。当这些数据字节被存储在媒体存储区中时,将其称为文件。当它们被加载到计算设备的存储器中或在网络线中传输时,将其称为流。融合(编码)和分离(解码)操作处理流或文件中的数据字节。

不同类型的信息(图像、音频、视频、文本、文档、程序等)具有不同的数据字节结构,当这些数据字节结构以流或文件的形式时,被称为数据格式。例如,当图像被存储在磁盘中或者通过网络进行交换时,如果图像使用jpeg数据格式,则将jpeg格式或数据字节结构存储在文件中,或者通过网络以流的形式传输。类似地,当音频被存储在磁盘上或者通过网络进行交换时,如果音频使用mp3数据格式,则将mp3格式或数据字节结构存储在文件中,或者通过网络以流的形式传输。因此,保存或传输图像以及与该图像相关的非图像(例如音频)必须进行两种单独的处理或任务,一种用于图像,另一种用于非图像。

本发明提供了独特的数据流或文件格式和结构—chm(compiledhelpmanual,已编译的帮助文件)格式,其具有图像和非图像流或文件的所有数据字节,并因此是合并的文件或数据流。与chm格式一起,本公开提供协议—chm格式化协议,其具有将图像和非图像数据流或文件融合成一个chm数据流或文件的方法、算法和规范,或者具有将chm数据流或文件分离回原始状态的图像和非图像数据流或文件的方法、算法和规范。

现在参考图1,其图示了根据本发明各个实施例的用于图像和非图像数据流的chm编码和解码过程100的一个实施例的流程图。一个示例包括图像及其描述。本文披露的编码方法102可以访问来自网络的图像数据104、由摄像机生成的图像数据106、或者来自存储器的图像数据108。编码方法102还可以访问来自网络的音频数据110、来自麦克风的音频数据112、或者来自存储器114的音频数据。然后,编码方法102从图像和非图像(音频)流或文件读取数据字节,并且将所述数据字节融合进并且写入chm数据116一个单个的流中或具有chm数据格式的chm文件中。同时包含图像和非图像数据的chm数据116可以存储在数据存储器118中,或者利用一个单个的步骤通过网络120传输至其他设备。并且在显示图像和播放图像音频之前,本文所披露的解码方法122将图像和音频分离回至它们的原始状态。

本文所设想的图像数据流或文件格式可以是任何数字图像格式。本文所设想的图像数据流或文件的示例包括但不限于:jpeg、gif、tiff、png、位图(bitmap)、raw、pnm、webp等。

本文所设想的非图像数据流或文件格式可以是任何数字非图像格式。非图像数据流或格式的示例可以包括:文本数据、文字处理数据、音频数据(例如mp3、mp4、aiff、way等)、以及视频数据等。

融合(编码)和分离(解码)方法或过程由在计算设备中运行的应用程序来执行。本文所设想的计算设备可以包括但不限于:台式计算机、膝上式计算机、平板式计算机、手持式计算机、智能电话和其他蜂窝电话、以及类似的支持互联网的移动设备、数码摄像机、任何数字图像生成和处理设备、被配置为具体地执行本发明所设想的方法的定制化计算设备等。在本文所设想的计算设备中运行的应用程序可以包括但不限于:软件可执行文件、经由由其他软件调用的api的部件或库,或者webapi或web服务等。

当图像或非图像数据字节从chm格式流或文件中分离之后,图像或非图像数据字节及其结构或格式回到其原始状态,而没有任何变化,因此它们可以由其播放器或处理器呈现为原始数据流或文件,而不改变其质量或功能。

现在参考图2,其图示了根据本公开的各个实施例的用于融合的流或文件的被称为chm格式的数据结构或格式200。数据结构或格式200具有两个部分:元数据头部分202和正文部分(bodysection)204,其中元数据头部分202包括起始处的元数据字节,正文部分204包括原始数据字节。元数据头部分202记录原始图像和非图像数据流或文件的融合协议和其他信息,例如数据大小和数据格式,以及融合和分离的基本块大小。融合的数据流或文件分别被称为“chm”格式流或“chm”格式文件。

提供了用于融合和分离两种数据流或文件的被称为chm格式化的数据处理协议。该协议定义如何基于图像和非图像数据字节流或文件的原始数据大小来确定分解图像和非图像数据字节流或文件的块大小,并且定义读取和写入图像数据字节块和非图像数据字节块的算法、步骤和顺序,从而将图像数据流或文件和非图像数据流或文件进行融合和分离。

现参考图3a和图3b,其图示了根据本发明的各个实施例的将图像流或文件和非图像流或文件融合进或编码为chm格式数据流或文件的方法,并且提供了对chm格式数据流或文件进行解码的方法。图3a图示了编码过程300的一个实施例的流程图,图3b图示了解码过程302的一个实施例的流程图。过程300可以开始于通过被配置为执行chm编码操作308的应用程序来访问目标图像数据流304(或目标图像文件)和目标非图像数据流306(或目标非图像文件)。一旦进行了访问,所述程序可以从图像数据流304和非图像数据流306中读取数据信息,基于chm数据格式来创建元数据头字节,并且在chm数据流310(或chm文件)的起始部分处写入所述头字节。接下来,基于图像数据流304和非图像数据流306的数据,利用chm格式化协议,该程序可以计算用于分解图像数据流304的块大小以及用于分解非图像数据流306的块大小。然后,该程序可以从图像数据流304中读取一个数据字节块,从非图像数据流306中读取一个数据字节块,并且将这两个数据字节块按顺序写入chm数据流310的正文部分。该程序可以继续从图像数据流304和非图像数据流306中读取接下来的两个数据字节块,并且可以生成单个chm数据流310,从而可以完成融合或chm编码过程。chm格式数据流310可以包括图像数据流304的所有数据字节和非图像数据流306的所有数据字节。

如图3b所示,提供了分离或解码单个chm数据流310并且返回图像数据流304和非图像数据流306的方法。该方法可以开始于通过被配置为执行chm解码操作314的程序来访问chm数据流310,该chm数据流310可以由参考图3a所描述的融合方法来生成。一旦进行了访问,该程序可以读取chm数据流310的元数据头部分,然后检索具有融合协议以及原始图像数据流304和非图像数据流306的信息的元数据。接下来,基于图像数据流304和非图像数据流306,利用chm格式化协议,该程序可以计算出用于分解图像数据流304的块大小以及用于分解非图像数据流306的块大小。

该程序可以从chm数据流310的正文部分读取一个字节块,并且将该字节块写入图像数据流304,以及从chm数据流310的正文部分读取另一个字节块,并且将该字节块写入非图像数据流306。该程序可以继续从chm数据流310的正文部分读取接下来的两个字节块,并且相应地将每一个数据字节块写入图像数据流304和非图像数据流306,该程序可以重复读取/写入步骤,直到其到达chm数据流310的末端,将图像数据流304和非图像数据流306返回至它们的原始状态,而不改变它们数据的任何字节和格式,因此,它们的品质或特征不会改变。

现在参考图4,其图示了根据本发明各个实施例的chm文件编码过程400的一个实施例的示意图。可以通过将一个文件或数据流的字节与一个或多个其他文件或数据流的字节进行融合来创建chm文件的正文部分。如图4所图示的,通过融合图像文件404和非图像文件406的字节来创建chm文件402。应当理解的是,图像文件404和非图像文件406可以是任何类型的文件,甚至两种图像文件或两种非图像文件,而图像文件和非图像文件用于示例的目的。在一些实施例中,用于融合算法或协议的优先级是用来确保来自每一个文件的字节被尽可能均匀地分布在chm文件402中,即使图像文件404和非图像文件406的大小可能是不相同的。

图4所示的示例演示了在两个文件恰好具有相同数量的字节的情况下算法将如何执行编码过程。图像文件404和非图像文件406的字节在图4中以十六进制格式表示。在第一步骤1,编码器从图像文件404复制第一字节“02”,并且写入第一字节“02”,作为chm文件402的正文部分的第一字节。在第二步骤2,编码器从非图像文件406复制第一字节“52”,并且写入第一字节“52”,作为chm文件402的正文部分的下一个字节。在第三步骤3,编码器从图像文件404复制第二字节“16”,并且写入第二字节“16”,作为chm文件402的正文部分的下一个字节。在第四步骤4,编码器从非图像文件406复制第二字节“49”,并且写入第二字节“49”,作为chm文件402的正文部分中的下一个(第四)字节。

这种在图像文件404和非图像文件406之间交替进行的、每次从图像文件404和非图像文件406中复制一个字节的过程,对于图像文件404和非图像文件406中的所有字节继续进行,直到将来自图像文件404和非图像文件406中的所有字节写入chm文件402为止。在倒数第二步骤n-1,编码器从图像文件404复制最后的字节“00”,并将最后的字节“00”写入chm文件402的正文部分。在最后的步骤n,编码器从非图像文件406复制最后的字节“22”,并且将最后的字节“22”写入chm文件402的正文部分。在最后的步骤n之后,完成了chm文件402,chm文件402现在包含融合在一起的来自图像文件404和非图像文件406的所有字节。由于chm文件包含图像文件404和非图像文件406中的每一个的字节,并且具有很少的所添加的其他信息,因此chm文件402的文件大小可以与图像文件404和非图像文件406的文件大小之和相同。

现在参考图5,其图示了根据本发明的各个实施例的chm创建过程500的流程图。过程500在步骤502开始,其中编码器或应用程序分析图像文件和非图像文件中的每一个的属性。在步骤504,编码器确定用于图像文件和非图像文件中的每一个的适当的字节块大小,其中所述字节块大小基于所述图像文件的大小与所述非图像文件的大小的文件大小的比。例如,如图4所图示的示例中,图像文件404和非图像文件406都包含25个字节的数据。因此,图像文件404和非图像文件406之间具有1:1的比。

在1:1的比的情况下,为了从chm文件中的图像文件和非图像文件平均分配每一个字节,图像文件和非图像文件的字节块大小可以是一个字节。如果,例如图像文件的字节数量与非图像文件的字节数量之间存在3:1的比,则对于来自非图像文件的每一个字节,将从图像文件复制三个字节,并且写入chm文件,或者在1:3的比的情况下则反之亦然。如果图像文件和非图像文件的字节数量不能很容易地以比的形式进行表示,则可以执行其他方法来确定字节块大小,如本文所描述的。

在确定了用于图像文件和非图像文件的字节块大小之后,过程行进至步骤506。在步骤506,编码器基于图像文件和非图像文件属性,为新的chm文件创建元数据头。该元数据头还可以包括与图像文件和非图像文件中的每一个的字节块大小有关的信息,以使解码器可以稍后使用元数据头信息来确定应当如何解码chm文件。在步骤508,编码器从图像文件读取字节块并且将该字节块写入新的chm文件的正文部分。在步骤510,编码器从非图像文件读取字节块并且将该字节块写入所述chm文件。过程500行进至决策块512,在此确定最后的图像文件字节块是否已被写入chm文件。如果否,则该过程返回至步骤508,以从图像文件中写入其他字节块,以及在步骤510写入其他非图像文件字节块,并且返回至决策块512,以再次确定最后的图像文件字节块是否已被写入chm文件。如果在决策块512中确定最后的字节块已被写入chm文件,则过程500行进至步骤514,以从非图像文件读取最后的字节块并且将该字节块写入chm文件。过程500在步骤516结束,在此存储已编码的chm文件。

现在参考图6,其图示了根据本发明的各个实施例的chm文件解码过程600的一个实施例的示意图。chm文件602可以包括先前在chm编码操作期间被融合进chm文件的多个字节。chm文件602中的多个字节在图6中显示为图4所图示的编码过程的最终结果,其中chm文件602中的多个字节包括来自图像文件404和非图像文件406的所有字节。为了解码chm文件并且重新创建图像文件604和非图像文件606,解码器将确定用于创建chm文件602的字节块大小,并且开始从chm文件602读取字节块并且将该字节快写入图像文件604和非图像文件606。

在第一步骤1,解码器从chm文件602读取第一字节“02”,并且将第一字节“02”写入图像文件604,作为图像文件604的第一字节。在第二步骤2,解码器从chm文件602读取第二字节“52”,并且将第二字节“52”写入非图像文件606,作为非图像文件606的第一字节。在第三步骤3,解码器从chm文件602读取第三字节“16”,并且将第三字节“16”写入图像文件,作为图像文件604的第二字节。在第四步骤4,解码器从chm文件602读取第四字节“49”,并且写入第四字节“49”,作为非图像文件606的第二字节。这种模式一直持续到从chm文件读取所有字节并且将这些字节写入图像文件604和非图像文件606为止。在倒数第二步骤n-1,解码器将倒数第二字节“00”写入图像文件604,作为图像文件604的最后的字节。在最后的步骤n,解码器将最后的字节“22”写入非图像文件,作为非图像文件606的最后的字节。在步骤n之后,完成了图像文件604和非图像文件606。图像文件604和非图像文件606可以是在创建和编码chm文件602期间使用的图像文件和非图像文件(例如图像文件404和非图像文件406)的精确副本。

现在参考图7,其图示了根据本发明各个实施例的chm解码过程700。过程700在步骤702开始,其中解码器读取chm文件的元数据头。该元数据头可以包含与用于创建chm文件的原始数据流相关的信息,例如文件的字节块大小。在步骤704,解码器确定用于被包括在chm文件中的图像文件字节块和非图像文件字节块中的每一个的字节块大小。在步骤706,解码器从chm文件读取字节块并且将该字节块写入图像文件。在步骤708,解码器从chm文件读取字节块并且将该字节块写入非图像文件。在决策块710,解码器确定最后的字节块是否已被写入图像文件。如果否,则过程返回至步骤706,解码器从chm文件读取接下来的图像文件字节块并且将该字节块写入图像文件,然后再次移动至步骤708,从chm文件读取接下来的非图像字节块并且将该字节块写入非图像文件。

如果在决策块710,确定出最后的图像文件字节块尚未写入图像文件,则过程行进至步骤712,在此解码器从chm文件读取最后的字节块并且将该字节块写入非图像文件。在步骤712之后,完成了图像文件和非图像文件。所述图像文件和所述非图像文件可以是在创建和编码chm文件期间使用的图像文件和非图像文件的精确副本。过程700在步骤714结束,在此存储解码的图像文件和解码的非图像文件。

现在参考图8,其图示了根据本发明的各个实施例的chm文件编码过程800的一个实施例的示意图,其中待融合成chm文件802的文件不具有相等数量的字节。图8图示了总共具有25个字节的图像文件804,以及总共具有72个字节的非图像文件。用于chm编码和解码的协议可以要求被合并成chm文件802的文件的字节尽可能均匀地分布。例如,可以写入协议以避免使单个文件的多个字节块集中在一起。例如,如果每次只从图像文件804和非图像文件806写入一个字节,例如图4所图示的,那么所得到的chm文件将具有来自图像文件804和非图像文件806的均匀融合的前50个字节,而chm文件的最后的47个字节都将是非图像文件字节。虽然该协议可能允许这种编码算法,但该协议将要求更均匀的字节分布。

如图8所示,编码器确定用于图像文件804的字节块大小为一个字节,而用于非图像文件806的字节块大小为三个字节。其可以通过数学运算来确定,例如或b=ceil(y/x),其中y是具有较多字节数量的文件的字节数量,x是具有较少字节数量的文件的字节数量,b是用于具有较多字节数量的文件的块大小。因此,例如,由于非图像文件806有72个字节,图像文件804有25个字节,则b=3。如果要将两个以上的文件写入chm文件,则可以对每一个具有比具有最少字节的文件更多字节的文件执行此操作。例如,如果要将另一个非图像文件融合进chm文件802,则非图像文件806的块大小将依然是3,图像文件804的块大小将依然是1。例如,如果其他非图像文件有38个字节,则对于该其他非图像文件,b=2。然后,编码器将在三个文件之间交替地将一个字节从图像文件804写入chm文件、将三个字节从非图像文件806写入chm文件、以及将两个字节从所述其他非图像文件写入chm文件,直到所有字节都被复制到chm文件为止。

如图8所示,在第一步骤1,编码器从图像文件804读取第一字节“02”并且将其写入,作为chm文件802的第一字节。在第二步骤2,编码器从非图像文件806读取首先的三个字节“524946”,并且将这些字节写入chm文件802。在第三步骤3,编码器从图像文件中读取第二字节“16”,并且在已写入的字节之后将该第二字节写入chm文件802。在第四步骤4,编码器读取非图像文件806中的接下来的三个字节,并且将这三个字节写入chm文件802。图像文件804和非图像文件806之间的切换过程继续进行,直到来自图像文件804和非图像文件806的所有字节都被写入chm文件802为止。在倒数第二步骤n-1,将非图像文件806的最后的三个字节写入chm文件802。在最后的步骤n,将图像文件804的最后的字节写入chm文件802。

应当注意的是,在图8中被用作示例的字节数量使得来自图像文件804的字节块被首先和最后写入chm文件802。可以理解的是,根据文件中的字节数量,该算法可能并不会完全均匀地分布字节块。在图8的示例中,图像文件804中有25个字节块写入,非图像文件806中有24个字节块写入。然而,算法仍然以均匀的方式分布它们。在一些实施例中,已分配的字节块大小会导致存在剩下的剩余字节。例如,如果一个文件有125个字节,而另一个文件有15个字节,则b=9。因此,将存在从具有15个字节的文件(每字节块1个字节)中进行15次写入。但是,在对具有125个字节的文件(每字节块9个字节)进行第13次写入之后,在第13次写入之后,该文件已有117个字节被写入chm文件。由于该文件中有125个字节,因此在第13次写入之后还有8个剩余字节待写入。在这种情况下,对于从具有125字节的文件进行的第14次写入,编码器可以确定在该文件中没有保留完整的字节块,并且只将最后的8个字节写入chm文件,作为从具有125个字节的文件写入的最后的字节块。在其他实施例中,编码器可以将最后的8个字节分成2个字节块,每个字节块为4个字节,以使得对具有15个字节的文件和具有125个字节的文件均进行第14次和第15次读取/写入操作。

在一些实施例中,为了限制执行读取/写入操作所花费的时间,可以应用乘法器。例如,如果文件的字节数量为25个和72个,如图8所示,b=3,对于图像文件804,编码器可以每次写入1个字节,而对于非图像文件806,可以每次写入3个字节。然而,这导致总共有49次读取/写入操作。可以应用乘法器来减少读取/写入操作的次数,这将有助于加快处理过程并且限制资源的紧张,特别是对于具有大量字节的文件。例如,可以应用2倍乘法器,将用于图像文件804的字节块大小增加到2个,并将用于非图像文件806的字节块大小增加到6个。因此,编码过程将只需要25次读取/写入操作(包括对剩余字节的任何额外的写入操作)。

现在参考图9a和9b,其图示了根据本发明的各个实施例的chm编码器过程900的流程图。该过程在步骤902开始,其中编码器分析图像文件和非图像文件中的每一个的属性。应当理解的是,这些文件可以是任何类型的文件或者任何类型的文件的组合,而使用图像文件和非图像文件仅是为了示例的目的。在步骤904,编码器使用在步骤902中找到的与图像文件和非图像文件有关的信息来创建元数据头。在步骤906,编码器将具有较多字节数量的文件的字节数量除以具有较少字节数量的文件的字节数量。在决策块908,其确定在步骤906中执行的除法的结果是否具有余数。如果是,则过程900行进至步骤910,其中步骤906中的除法的结果四舍五入到下一个整数(例如,从2.5四舍五入到3),并且为具有较多字节数量的文件分配等于该整数的字节块大小。步骤906至步骤910实际上可以是在编码器程序中通过执行ceil()函数或通过执行整数除法并将结果加1来实现的。在步骤912,将用于较小文件的字节块大小设置为1。然后过程行进至步骤914。

如果在决策块908确定没有余数,则过程行进至步骤916,其中基于图像文件的字节数量与非图像文件的字节数量的比率来设置用于图像文件的字节块大小。例如,如果图像文件有18个字节,非图像文件有27个字节,则比为2:3,因此编码器将为图像文件分配大小为2的字节块大小,为非图像文件分配大小为3的字节块大小。然后过程行进至步骤914。在步骤914,设置如本文所描述的加速乘法器,以可选地加速编码处理过程并且减少读取/写入操作次数。如果不需要,可以将加速乘法器设置为1,以保持已分配的字节块大小。

然后,过程900行进至决策块918,其中确定最后的图像文件字节块是否已被写入chm文件。如果否,则过程900行进至步骤920。在步骤920,编码器从图像文件读取字节块并且将该字节块写入chm文件。在决策块922,确定最后的非图像文件字节是否已被写入chm文件。如果否,则过程900行进至步骤924。在步骤924,编码器从非图像文件读取字节块并且将该字节块写入chm文件。在决策块926,确定图像文件和非图像文件中的所有字节是否都已被写入chm文件。如果否,则过程900将返回至决策块918。如果在决策块918确定最后的图像文件字节已被写入chm文件,则过程行进至决策块922。如果在决策块922确定最后的非图像文件字节已被写入chm文件,则过程行进至决策块926。如果在决策块926确定已写入所有的字节,则过程行进至步骤928。在步骤928,存储已编码的chm文件。

现在参考图10,其图示了根据本发明的各个实施例的chm文件解码过程1000的实施例的示意图,其中将要从chm文件1002解码的文件不具有相等的字节数量。chm文件的头数据可以指示如何创建chm文件1002,以及用于形成chm文件1002的文件的字节块大小。图10图示的示例是图8中图示的chm文件的解码过程。在第一步骤1,从chm文件1002读取第一字节“02”,并且将其写入图像文件1004。在第二步骤2,从chm文件1002读取三个字节“524946”,并且将其写入非图像文件1006。在第三步骤3,从chm文件1002读取字节“16”,并且将其写入图像文件1004。在第四步骤4,从chm文件1002读取三个字节“462408”,并且将其写入非图像文件1006。过程1000继续交替将1个字节写入图像文件1004并且将三个字节写入非图像文件1006,从而写入来自chm文件1002的所有字节。在倒数第二步骤n-1,将chm文件的最后四个字节中的首先的三个字节“ce1a0d”写入非图像文件1006。在最后的步骤n中,将chm文件的最后的字节“00”写入图像文件1004。在步骤n之后,完成了图像文件1004和非图像文件1006。图像文件1004和非图像文件1006可以是在创建并编码chm文件802期间所使用的图像文件和非图像文件(例如图像文件804和非图像文件806)的精确副本。

现在参考图11,其图示了根据本发明各个实施例的chm解码过程1100的流程图。过程1100在步骤1102开始,其中解码器读取chm文件的元数据头。在步骤1104,解码器确定chm文件中所包含的图像文件块和非图像文件块中的每一个的字节块大小。

然后,过程1100行进至决策块1106,其中确定最后的图像文件字节块是否已被写入图像文件。如果否,则进程1100行进至步骤1108。在步骤1108,解码器从chm文件读取字节块,并且将该字节块写入图像文件。在决策块1110,确定最后的非图像文件字节是否已被写入非图像文件。如果否,则流程1100行进至步骤1112。在步骤1112,解码器从chm文件读取字节块,并且将该字节块写入非图像文件。在决策块1114,确定来自chm文件的所有字节是否已被写入图像文件和非图像文件。如果否,则流程1100返回至决策块1106。如果在决策块1106确定最后的图像文件字节已被写入图像文件,则过程行进至决策块1110。如果在决策块1110确定最后的非图像文件字节已被写入非图像文件,则过程行进至决策块1114。如果在决策块1114确定所有的字节都已被写入chm文件,则过程行进至步骤1116。在步骤1116,存储已解码的图像文件和非图像文件。

现在参考图12,其图示了根据本发明的各个实施例的服务器侧chm文件解码和传输系统1200的示意图。系统1200包括服务器1202,该服务器1202包括chm编解码器(codec)1204。chm编解码器1204可以是用于编码和/或解码cmh文件或数据流的程序。服务器1202可以接收来自移动设备1206的请求,该请求通过网络1208发送。服务器可以具有在其上存储的chm文件。服务器1202可以是web服务器,其被配置为将chm文件呈现为网页的一部分。例如,所述网页可以是用于产品的在线商店页面。chm文件可以用于存储产品的一个或多个图像以及描述该产品的伴随音频,以及其他类型的文件和信息。当网页加载到移动设备1206上时,移动设备1206的用户可以查看产品的图像并收听描述该产品的音频。可以理解的是,这仅是一个示例,本文所描述的系统和过程也可以用于在其他场景中呈现图像和伴随音频。

在一些实施例中,服务器1202可以在通过网络1208将分离的文件或数据流发送至移动设备1206之前对chm文件进行解码。这允许在移动设备1206不需求chm编解码器或者浏览器插件以解码chm文件的情况下来查看或访问网页和chm文件的内容。在其他实施例中,移动设备1206可以包括所述编解码器或插件,在这种情况下,服务器可以将chm文件传输至移动设备1206,并且移动设备1206将对chm文件执行解码处理过程。如图12所图示的,服务器1202向chm编解码器1204提供chm数据流1210,该chm数据流1210是来自在服务器上存储的chm文件的流。chm编解码器1204将chm数据流1210解码为分离的文件或数据流,这些文件或数据流是在创建chm文件期间所最初使用的文件或数据流。作为一个示例,并且如图12所图示的,chm编解码器1204可以将chm数据流1210解码为分离的图像数据流1212和分离的非图像数据流1214。然后,服务器1202可以通过网络1208将图像数据流1212和非图像数据流1214传输至移动设备1206,供移动设备使用。

现在参考图13,其图示了根据本发明的各个实施例的浏览器窗口1300,该浏览器窗口1300显示了网页1302,该网页包括在网页1302上呈现的带有伴随音频1306的图像1304。如图12所描述的,chm文件可以由设备来接收,在该设备上驻留有浏览器或访问web内容的其他装置。服务器可以解码已存储的chm文件,然后将分离的流传输至所述设备,该分离的流提供将要在网页1302上呈现的内容。一旦网页1302被加载到浏览器窗口1300中,则可以呈现图像1304和其他网页内容,例如用户交互按钮1308和文本产品信息1310。一旦网站被加载,则可以开始播放音频1306,或者只是在触发指示音频1306播放时播放音频1306。例如,只能在将鼠标光标1312放置在图像1304上时、在单击图像1304时或者在滚动图像1304以使图像1304在浏览器窗口1300中可见时来播放音频1306,一旦用户操作滚动离开图像1304,则停止播放音频1306。

以这种方式用图像呈现音频提供了一种更有效的方式来用图像提供音频信息。通常,如果希望提供与音频内容相关联的图像内容,可以创建视频文件,如mp4文件,并且在图像上设置音频轨道。这可能是将音频内容与图像相关联的低效方法,因为如果目标是为音频内容提供一个或多个静态图像,而不是运动的视频内容,则创建视频文件以实现此目标创建了比所需文件更大的文件,因为即使图像或音频文件的大小是经过合并的,视频文件通常也比图像或音频文件大得多。chm文件的大小与合并的图像和音频文件的大小相同或相似,因此提供了更有效的文件类型,其占用更少的存储空间,传输速度更快等等。应当理解的是,其他类型的文件也将是这样,例如,如果文本文档也包含在chm文件中,则chm文件的大小只会以接近于文本文档的大小的量来增加。

现在参考图14,其图示了根据本发明的各个实施例的服务器侧chm解码过程1400的流程图。当服务器接收对网页的请求时,过程1400在步骤1402开始。在决策块1404,确定chm文件是否与所请求的网页相关联,例如,待加载到网页上的内容是否被编码在chm文件中。如果否,则过程1400在步骤1406结束,其中,服务器传输所请求的网页内容。如果在决策块1404确定存在与所请求的网页相关联的chm文件,则过程1400行进至步骤1408。在步骤1408,服务器对与所请求的网页相关联的被存储在服务器上的一个或多个chm文件进行解码。解码过程将chm文件划分为分离的数据流,例如图像数据流和音频数据流。

然后,过程1400行进至步骤1410,其中服务器传输所请求的网页内容,包括从chm文件中分离的数据流,例如图像数据流和音频数据流。在步骤1412,将包含有分离的数据流内容(例如图像)的网页加载到移动设备上。在步骤1414,将当前加载为浏览器中的网页的一部分的图像或显示网页内容的其他方式进行激活。所述激活可以是在触摸屏上的轻击、单击、鼠标滚动、使图像显能看到的滚动操作、或者其他方式。在步骤1416,音频回放从音频数据流开始。

现在参考图15,其图示了根据本发明的各个实施例的医学成像和口述chm文件创建系统1500。医学成像过程(如mri、x射线等)可以创建高分辨率医学成像文件1502。医生、外科医生、医学助理等医学专业人员1504可以浏览医学成像文件1502,以便对医学成像文件1502中示出的内容提供意见。在浏览期间,医学专业人员1504可以创建注释文件1506。该注释文件1506可以是包括书面或文本注释的文本文档,注释文件1506可以是记录医学专业人员的语音的音频口述,或者存储医学专业人员的注释的其他方式。一旦创建注释文件,医学成像文件1502和注释文件1506被提供至chm编码器1508。chm编码器1508可以被配置为仅执行chm编码操作,或者可以包括用于chm文件的编码和解码的编解码器。chm编码器1508创建chm文件1510,该chm文件包括医学成像文件1502字节和注释文件1506字节。chm文件1510可以被存储在服务器1512上或者用于存储的其他设备上,直到稍后需要。

例如,医疗机构,例如在高分辨率医学图像创建后查看患者的医学专家,可以请求观看高分辨率医学成像文件1502以及注释文件1506。在这种请求下,服务器1512可以通过网络1514将chm文件1510传输至属于请求医疗设施的医疗设施设备1516。医疗设施设备1516可以包括或可操作地连接至chm解码器1518。chm解码器1518可以被配置为仅执行chm解码操作,或者可以包括用于chm文件的编码和解码的编解码器。一旦由医疗设施设备1516从服务器1512接收chm文件1510,chm解码器1518可对chm文件1510进行解码,以将高分辨率医学成像文件1502和医学专业记录文件1506从chm文件1510分离。chm文件1510的大小将仅仅与高分辨率医学成像文件1502和注解文件1506的合并的大小相同或相似。在一些实施例中,在创建chm文件1510期间可以不应用压缩,以避免因压缩过程使医学成像文件1502的图像质量受到损失。chm文件1510允许将成像文件1502以其原始、高分辨率状态进行传输并从chm文件1510中分离出来,以使其他医学专业人员能够在不损失质量的情况下浏览该图像。在浏览医学成像文件1502期间,可以同时浏览注释文件1506,例如,在查看成像文件1502的同时收听由医学专业人员进行的口述。

现在参考图16,其图示了根据本发明的各个实施例的医学成像和口述chm文件创建过程1600。该过程1600在步骤1602开始,其中完成了医学成像(例如mri、x射线等)处理过程。在步骤1604,高分辨率医学成像文件由医学成像过程主题所创建。在步骤1606,医学专业人员执行口述或创建注释的其他方式,该注释提供了医学专业人员对在高分辨率医学成像文件中可以看到的内容的分析或意见。在步骤1608,创建口述文件以存储在步骤1606中创建的口述或其他注释。

在步骤1610,chm编码器接收医学成像文件和口述文件。在步骤1612,chm编码器将医学成像文件和口述文件编码为chm文件。在决策块1616,决定是否例如由医生或其他医学专业人员浏览医学图像。如果否,则chm文件可以被存储,直到对图像进行浏览为止。如果是,则过程1600行进至步骤1618。在步骤1618,chm解码器对chm文件进行解码,以便将chm文件分离为用于创建chm文件的单独的文件或数据流,在该情况下是医学成像文件和口述文件。在步骤1620,查看医学成像文件并且同时也访问口述文件,例如在查看医学图像的同时收听来自口授文件的音频回放。随后该过程在步骤1622结束。

还可以提供文件夹文件。文件夹文件可以在文件夹文件中包含多个chm文件,以便提供由chm文件定义的文件分组。尽管chm文件可以包括来自任何数量文件的字节,如本文所描述的,文件夹文件可以用于传输一系列chm文件,其中每一个chm文件是由若干相关联的文件所创建的。例如,存储在文件夹文件中的chm文件可以每一个都包括图像数据流和音频数据流。当访问文件夹文件时,可以对第一chm文件进行解码以向用户呈现来自第一chm文件的图像,同时也播放来自第一chm文件的音频。一旦音频回放完成,文件夹文件中的下一个chm文件可以被解码,使得可以呈现来自下一个chm文件的图像和音频。因此,文件夹文件允许向用户提供一系列图像或展示。文件夹文件可以包括在其中存储的具有任何类型的文件数据流的chm文件,如文本文件、文档文件、视频文件、可执行文件等,以便为用户提供一套完整的信息和内容。

现在参考图17,其图示了根据本发明的各个实施例的chm文件夹文件创建过程1700的示意图。其示出了与音频文件相关联的多个图像文件。第一图像文件1702与第一音频文件1704相关联,第二图像文件1706与第二音频文件1708相关联,第n图像文件1710被示出与第n音频文件1712相关联。所述多个图像和音频文件由chm编码器1714进行处理以创建多个chm文件,所述多个chm文件中的每一个chm文件由图像文件以及其相关联的音频文件创建。由第一图像文件1702和第一音频文件1704创建第一chm文件1716。由第二图像文件1706和第二音频文件1708创建第二chm文件1718。由第n图像文件1710和第n音频文件1712创建第nchm文件1720。然后,可以将多个chm文件中的每一个chm文件存储在文件夹文件1722中。

现在参考图18,其图示了根据本发明的各个实施例的chm文件夹文件解码过程1800的示意图。文件夹文件1802可以包括多个chm文件。如图18所图示的,文件夹文件1802包括第一chm文件1804、第二chm文件1806和第nchm文件1808,指示了文件夹文件1802中可以包括任何数量的chm文件。为了解码和呈现多个chm文件的内容,chm文件可以由chm编解码器1810进行解码,例如本文所描述的解码过程。chm编解码器1810将多个chm文件中的每一个chm文件解码为分离的文件或数据流,所述文件或数据流将与编码过程中用于创建chm文件的文件或数据流相同。例如,对第一chm文件1804进行的解码提供了第一图像文件1812和第一音频文件1814。

一旦第一chm文件1804被解码,可以播放来自第一音频文件1814的音频,同时将第一图像文件1812的图像呈现给用户。一经完成第一音频文件1814的回放,或者如果用户执行结束音频回放的动作或者以其他方式推进该过程的动作,chm编解码器1810将解码第二chm文件1806以提供第二图像文件1816和第二音频文件1818。一旦第二音频文件1818完成回放,chm编解码器1810对第nchm文件1808进行解码,以生成第n图像文件1820和第n音频文件1822。以这种方式,可以向用户呈现一系列内容。

现在参考图19,其图示了根据本发明的各个实施例的文件夹文件创建和解码过程1900。过程1900在步骤1902开始,其中创建图像文件以及与该图像文件相关联的音频文件。在步骤1904,将所述图像文件和相关联的音频文件编码为chm文件。在步骤1906,将在步骤1904中创建的chm文件保存到文件夹文件中。在决策块1908,确定是否要创建额外的图像文件和音频文件。如果是,则过程1900返回至步骤1902,以创建另一图像文件和相关联的音频文件,在步骤1904将图像文件和音频文件编码为chm文件,并且将该chm文件保存到文件夹文件中。如果在决策块1908确定不创建任何额外的图像文件和音频文件,因此不再有chm文件被编码并存储在文件夹文件中,则过程1900进入步骤1910。

在步骤1910,从文件夹文件中移除chm文件。在步骤1912,将在步骤1910中从文件夹文件中移除的chm文件解码为分离的图像和音频流。在步骤1914,执行来自音频数据流的音频回放,同时呈现来自图像数据流的图像。在决策块1916处,确定是否访问被存储在文件夹文件中的其他内容。如果是,则过程1900返回至步骤1910,以从所述文件夹文件中移除另一chm文件,在步骤1912解码chm数据流,并且在步骤1914回放音频。如果在决策块1916确定不需要访问任何额外内容,则过程1900在结束块1918结束。

现在参考图20,其图示了根据本发明的各个实施例的chm文件编码过程2000的示意图,其中对多种文件类型的文件进行编码。chm文件可以包括任意数量的各种文件类型的文件的字节,这些文件被融合到chm文件中,并随后从chm文件中解码出来。图20图示了多个文件,每一个文件具有被编码为单个chm文件的文件类型。其示出了第一文件类型的文件2002、第二文件类型的文件2004、第三文件类型的文件2006和第n文件类型的文件2008,指示了可能有任意数量的文件,每一个文件的类型不同。可以理解的是,还可以包括相同文件类型的多个文件,例如包括三个图像文件、两个音频文件和四个文本文件。可以将多个文件发送至chm编码器2010。chm编码器2010将所有多个文件编码为chm文件2012。编码过程可以如本文所描述的方式执行,以在chm文件2012中均匀地分布每一个文件的字节。

现在参考图21,其图示了根据本发明的各个实施例的chm文件编码过程2100的流程图,其中对多种文件类型的文件进行编码。过程2100在步骤2102开始,其中检索第一文件类型的第一文件。在步骤2104,检索另一文件类型的另一文件。在决策块2106,确定是否有额外的文件和其他类型的文件将被包括在编码过程中。如果是,过程将返回至步骤2104以检索另一文件。如果在决策块2106确定没有任何额外的文件或文件类型将被包括在编码过程中,则该过程行进至步骤2108。在步骤2108,对第一文件类型的第一文件的字节块进行编码。在步骤2110中,对检索到的下一个文件的字节块进行编码。在决策块2112,确定所有文件的所有字节是否都已被编码。若否,则过程2100返回至步骤2110,以对下一个字节块进行编码。在步骤2110中,“下一个”文件可以是编码过程返回到的以便从该文件写入下一个字节块的文件。例如,如果过程2100将三个文件编码为chm文件,则可以执行步骤2108以对第一文件的第一字节块进行编码,可以执行步骤2110以写入来自第二文件的第一字节块,并且在决策块2112处,确定是否尚未写入所有字节。然后,过程2100将返回至步骤2110,以写入第三文件的第一字节块。在决策块2112中再次确定并非所有字节都已写入之后,过程2100可以返回至步骤2110,以写入第一文件的下一个字节块等,直到所有文件的所有字节都被编码。一旦在决策块2112,确定所有文件中的所有字节都已被解码,在步骤2114,存储chm文件。然后,过程2100在步骤2116结束。

现在参考图22,其图示了根据本发明的各个实施例的chm文件解码过程2200的示意图,其中对多种文件类型的文件进行解码。包含多种文件类型的多个文件的已融合字节的chm文件2202由chm解码器2204进行处理。chm解码器2204可执行如本文所描述的解码操作。chm解码器2204将chm文件2202解码为各种文件类型的多个数据流。图22示出了第一文件类型的数据流2206、第二文件类型的数据流2208、第三文件类型的数据流2210和第n文件类型的数据流2212。

现在参考图23,其图示了根据本发明的各个实施例的chm文件解码过程2300的流程图,其中对多种文件类型的文件进行解码。过程2300在步骤2302开始,其中检索chm文件。在步骤2304,从chm文件解码第一文件类型的第一文件的字节块。在步骤2306,解码下一个文件的字节块。在决策块2308,确定所有文件的所有字节是否都已被解码。若否,过程2300将返回至步骤2306,以解码下一个文件的下一个字节块。如果在决策块2308确定所有字节都已被解码,则过程2300行进至步骤2310。在步骤2310,可以将解码的文件呈现或回放给用户。随后该过程在结束块2312结束。

现在参考图24,其图示了根据本发明的各个实施例的多文件类型的chm展示(presentation)2400的示意图。展示2400可以在成功的chm解码操作(如本文所描述的)之后或期间向用户呈现。展示2400示出了chm文件可以允许向用户呈现一整套文件和信息。图24图示了包括屏幕2404的设备2402。展示2400在屏幕2404上呈现多种文件类型的多个文件,例如,如图24所图示的,可以呈现图像2406、展示文档2408(例如microsoftpowerpoint文档)、文本文档2410和电子表格文档2412。当用户正在查看这些不同文件类型的文件时,可以回放音频2414以向用户提供与用户在屏幕2404上观看到内容相关的额外信息。

现在参考图25,其图示了根据本发明的各个实施例的利用chm文件的语音认证系统2500的示意图。系统2500包括认证服务器2502。认证服务器2502可以包括音频转换引擎2504和数据库2506。认证服务器2502可以使用音频转换引擎2504来识别语音并将音频转换为文本,并且可以使用数据库2506来识别用户语音模式和指令,以执行用于各种目的的语音认证。数据库2506可以包括用户凭据2508和训练数据2510。用户凭据2508可以包括用户认证数据,例如用户名、密码、安全问题的答案以及系统可以使用的以认证用户的其他信息。训练数据2510可以包括随着用户已使用认证服务器2502来认证项目而随时间而累积的用户特定数据。训练数据2510可以记录用户的语音模式以识别用户的特定语音模式。认证服务器可以通过声音和/或语言建模来执行声音识别,以确定用户在提供给认证服务器2502的音频中所说的话。

认证服务器2502可以接收用于认证的chm文件2512。出于各种原因,可以例如对网站上的登录进行认证、对文档访问进行认证等执行认证。例如,可以向用户提供仅供用户查看的合同。为了访问合同,用户可能需要首先通过提供语音命令或密码来认证该用户的身份。作为另一个示例,允许创建账户的、向用户提供的网站或其他服务(例如移动设备应用等)可以使用语音认证进行登录。如果以前在网站上创建账户的用户出于某种原因被禁止访问该网站,则服务器可以记录该用户的语音认证数据。如果该用户试图在网站上创建新的账户来规避该禁止,则该网站将会要求用户建立语音认证。然后,服务器将检查被禁止的用户的语音认证或训练数据,以便确定试图创建新账户的用户是否之前已被禁止。如果是,则账户创建将被禁止。

chm编码器2514可以接收文本认证数据流2516,包括例如用户名密码等,也可以接收语音数据流2518。chm编码器2514可以将文本认证数据流2516和语音数据流2518编码为chm文件2512。chm文件2512可以通过网络2520由移动设备(未图示)传输至认证服务器2502。一经接收到chm文件2512,认证服务器2502可以解码chm文件2512以将文本认证数据流2516与语音数据流2518分离。然后,认证服务器2502可以将文本认证数据流2516与存储在数据库2506中的用户凭据2508进行比较。如果所提供的文本认证数据流2516与存储在数据库2506中的用户凭据2508相匹配,则系统可以对由用户证明的语音数据执行语音识别。

语音最初可以通过麦克风来接收,模拟声波通过模数(a/d)转换器被转换为数字格式。利用快速傅立叶变换fft,将数字数据可以转换为频谱图,该频谱图示出了声音的频率在强度上是如何随着时间的变化而变化。然后,数据可以被分离成声学帧。可以对语音数据进行特定的音位、语音、共振峰等分析,以识别语音数据中所说的内容。还可以对语音模式进行分析,以确定谁在录音中发言。随着时间的推移,用户的训练数据被更新,以更有效地识别来自该用户的语音。该系统2500还可以利用神经网络来辅助语音识别。

现在参考图26,其图示了根据本发明的各个实施例的利用chm文件的语音认证过程2600的流程图。过程2600在步骤2602开始,其中用户尝试访问语音认证项。在步骤2604,语音捕获被激活,用户语音的录音被捕获并且被存储为语音音频文件。在步骤2606,将已创建的语音音频文件与其他用户认证信息编码为chm文件,如本文所描述的。所述其他用户认证信息可以包括用户名、密码、个人信息、安全问题和答案等。所述其他用户认证信息可以是文本数据类型的格式。在步骤2608,将编码的chm文件传输至认证服务器。

在步骤2610,认证服务器解码chm文件以将语音音频数据流与其他用户认证信息数据流分离。在步骤2612,认证服务器将语音音频数据与相关联的数据库中的语音训练数据进行比较,并且还可以使用音频转换引擎来执行语音识别过程。此外,在步骤2612,认证服务器可以将其他用户信息数据与存储在认证服务器或相关联的数据库中的用户数据进行比较。在决策块2614,确定其他用户认证信息与存储在认证服务器或相关联的数据库中的用户数据是否匹配,以及语音音频数据与训练数据是否匹配。如果存在匹配,则过程2600行进至步骤2616,并授予用户对语音认证项进行访问的权限。然后过程2600在结束块2618结束。如果在决策块2614中找不到匹配,则过程2600在结束块2618结束。

现在参考图27,其图示了根据本发明的各个实施例的防止账户创建滥用过程2700。在步骤2702,用户利用允许创建账户的服务供应商尝试创建新的用户账户,所述服务供应商例如为网站或向用户提供的其他服务(例如移动设备应用等)。在步骤2704,启动语音认证设置。完成账户创建可能需要语音认证设置。在步骤2706,语音捕获被激活,用户的语音录音被捕获并且被存储为语音音频文件。在步骤2708,将已创建的语音音频文件与其他用户信息编码为chm文件,如本文所描述的。所述其他用户信息可以包括用户输入的用于用户潜在的新账户的信息,例如用户名、密码、个人信息、安全问题和答案等。所述其他用户信息可以是文本数据类型的格式。在步骤2710,将编码的chm文件传输至认证服务器。

在步骤2712,认证服务器解码chm文件以将语音音频数据流与其他用户信息数据流进行分离。在步骤2714,认证服务器将语音音频数据与相关联的数据库中的语音训练数据进行比较,并且还可以利用音频转换引擎来执行语音识别处理过程。此外,在步骤2714,认证服务器可以将其他用户信息数据与存储在认证服务器或相关联的数据库中的用户数据进行比较。在决策块2716,确定从chm文件解码的数据是否与存储在先前被禁止使用该服务的用户的认证服务器或相关联数据库上的数据相匹配。为了匹配,对照存储在认证服务器或数据库中的用户数据,对所有文本用户信息都将进行检查。

在某些情况下,在用户所拥有的其他账户被禁止之后,如果该用户试图创建账户,则该用户将使用虚假的文本数据来尝试创建新账户。因此,认证服务器还可以将从chm文件中解码的语音数据与存储在认证服务器或数据库中的语音数据进行比较,以确定该用户的语音数据是否已存在于数据库中。如果找不到匹配,则在步骤2718,在不排除其他问题的情况下该用户账户可以被创建。如果在决策块2716找到匹配,则在步骤2720,将拒绝创建账户以防止用户滥用账户创建来规避对用户账户的禁止。

现在参考图28,其图示了根据本发明的各个实施例的利用chm文件的语音到文本以及索引过程2800。过程2800在步骤2802开始,其中设备(例如认证服务器2502)解码来自chm文件的音频数据流。在步骤2804,将音频数据流与存储的训练数据进行比较。在步骤2806,例如通过音频转换引擎2504将音频数据流转换为文本数据,并且存储该文本数据。在步骤2808,对存储的文本数据进行关键字解析,同时忽略常见字。例如,系统可以被配置为识别动词和名词,并忽略冠词、形容词、连词等。

在决策块2810,确定在步骤2808的文本解析操作期间是否找到关键字。若否,则过程2800在结束块2818结束。如果是,则过程2800行进至步骤2812。在步骤2812,对在解析操作期间所找到的特定关键字的每个实例进行计数。在决策块2814,确定为关键字计数的实例数量是否超出阈值。在一些实施例中,关键字出现的次数可以用于确定是否索引该关键字。例如,如果该词只使用了一次,则将不对该词进行索引。但是,例如,如果该词的使用次数超出10次,则将对该词进行索引。如果在决策块2814确定计数的关键字的实例数量未超出阈值,则过程2800返回至决策块2810以确定是否找到其他关键字。如果在决策块2814确定计数的关键字的实例数量超出阈值,则过程行进至步骤2816。在步骤2816,对关键字和关键字实例进行索引。然后,该过程返回至决策块2810,以确定在分析操作期间是否找到其他关键字。若否,则过程2800在结束块2818结束。

现在参考图29,其图示了根据本发明的各个实施例的数据库关键词索引系统2900的示意图。其图示图了在其上存储关键字数据2904的数据库2902。关键字数据2904可以是用户特定的,或者包括向数据库2902提供文本的所有用户。关键字数据可以包括关键字2906。关键字2906可以是之前索引的所有关键字。关键字数据2904还可以包括实例数据2908,该实例数据包括所使用的关键字的实例的数量。也可以存储位置数据2910。该位置数据2910可以指示出现有关键字的文本数据存储在所关联的数据库(例如服务器)中的位置。位置数据2910还可以被配置为指向该关键字的每个特定实例。例如,如果某个关键字在特定文档中出现了五次,则位置数据2910可以提供到该文档的文件路径,以及到该文档中的关键字的每个实例的链接。

现在参考图30,其图示了根据本发明的各个实施例的关键词搜索过程3000。过程3000在步骤3002开始,其中在存储的文本上启动搜索操作。在步骤3004,由设备(例如服务器)接收一个或多个搜索关键字。在决策块3006,确定是否找到一个或多个搜索关键字的任何实例。如果否,则过程3000在结束块3014结束。如果是,则过程3000行进至步骤3008。在步骤3008,基于该关键字的实例数量对定位的关键字进行排名。在步骤3010,可以将找到的关键字的实例按排名排序的列表形式呈现给用户。在步骤3012,响应于用户选择所找到的关键字的呈现的实例之一,将其中出现关键字的上下文文本或全部文本文档呈现给用户,然后过程3000在结束块3014结束。

现在参考图31,其图示了的具有余数的合并的文件编码过程3100的示意图。其图示了第一文件3102和第二文件3104以及合并的文件3106。根据本文描述的过程来确定第一文件的字节块大小为3个字节,而第二文件的字节块大小为2个字节。或者在将字节编码为合并的文件3106之前或者在将字节编码为合并的文件3106之后,可以用与第一文件3102和第二文件3104相关的信息来填充合并的文件3106的头部分3108。该信息可以包括被分配至第一文件3102和第二文件3104的字节块大小。例如,如图31所图示的,头部分3108包括信息“f1bbs(3)”、“f2bbs(2)”和“f1bbsr(1)”,其指示第一文件字节块大小等于3,第二文件字节块大小等于2,第一文件的剩余字节等于1个字节。

如图31所图示的,合并的文件3106具有正文部分3110,该正文部分3110包括多个字节。由于用于第一文件3102的字节块大小为3,因此在第一步骤,将第一文件3102的前三个字节写入合并的文件3106。由于第二文件3104的字节块大小为2,因此在第一步骤中从第一文件3102写入合并的文件3106的前三个字节之后,在第二步骤,将来自第二文件3104的前两个字节写入合并的文件3106。在将来自第二文件3104的前两个字节写入合并的文件的之后,在第三步骤,将第一文件3102的接下来的三个字节写入合并的文件3106。在第四步骤,将来自第二文件3104的接下来的两个字节写入合并的文件3106。在第五步骤,将来自第一文件3102的接下来的三个字节写入合并的文件3106。在第六步骤,将来自第二文件3104的接下来的和最后的两个字节写入合并的文件3106。

在第七步骤,第一文件只剩下1个字节,比被分配的三个字节块大小要小。编码器可能已经分析了第一文件3102并且确定出将会有1个字节剩余,或者编码器可能已经设置了用于第一文件3102的字节块大小,并且,在文件结尾处遇到小于字节块大小的字节数量时,编码器只需取剩余的字节并且将其写入合并的文件3106。在第八步骤,可以再次检查第二文件3104,并且可以确定第二文件3104没有剩余任何字节。在这种情况下,编码器可以只是行进,或者可以在合并的文件3106中写入null(空)值。

现在参考图32,其图示了合并的文件解码过程3200的示意图。过程3200包括应用处理块3202,其可以是编解码器或解码器的一部分,或者其他应用的一部分,例如调用编解码器或者编/解码器api以便执行编码或解码步骤的应用。合并的文件3204被解码以提取与第一文件3206和第二文件3208相关的数据流。在解码过程中,应用程序处理块3202可以每次接收与第一文件2306和第二文件3208的数据流相关的字节块。当应用处理块3202接收每个字节块时,应用处理块3202可以将该字节块写入第一文件3206或第二文件3208中的适当的一种文件。基本上同时,应用程序处理块3202也可以利用字节块进行进一步的处理或者显示字节块中所包含的内容。

例如,如图32所图示的,在第一步骤1,通过应用处理块3202从合并的文件3204复制三个字节大小的字节块。在第二步骤2,应用处理块将在第一步骤1中复制的字节块写入第一文件3206。在与第二步骤2基本上相同的时刻,执行步骤2’,以将第一步骤1中复制的字节提供至内容查看器或播放器3210,以显示目前为止已从合并的文件3204中复制的内容。例如,如果内容查看器或播放器3210允许回放音频,并且在第一步骤1中复制的字节与音频内容相关,则内容查看器或播放器3210可以开始播放在合并的文件3202的前三个字节中复制的部分音频文件。因此,由于数据流是从合并的文件3202中提取,即使在从合并的文件3204中复制所有数据字节并写入第一文件3206和第二文件3208之前,也可以使用该数据。

在第三步骤3,应用处理块3202从与第二文件3208相关的合并的文件3204中复制接下来的两个字节。在第四步骤,应用处理块3202将在第三步骤3中复制的两个字节写入第二文件3208。基本上同时,在步骤4’,应用处理块3202可以将在第三步骤3中复制的两个字节提供至内容查看器或播放器3210,以使内容查看器或播放器3210可以开始利用与第二文件3208有关的数据流。该模式可以继续,直到来自合并的文件的所有字节都已被复制并写入第一文件3206和第二文件3208。

参考图33,其图示了系统设备3300的一个实施例。系统设备3300是终端用户所使用的设备的一个可能的示例,例如移动设备、在本文所描述的系统中使用的设备,例如认证服务器2502或一个其他设备。实施例包括蜂窝电话(包括智能电话)、个人数字助理(pda)、上网本、平板电脑、笔记本电脑、台式机、工作站、远程监控控制台以及能够利用无线和/或有线通信链路与其他计算设备进行通信的任何其他计算设备。这种通信可以是直接的(例如通过对等网络、自组织网络或使用直接连接)、间接的(例如通过服务器或其他代理(例如在客户端-服务器模型中)、或者可以使用直接和间接通信的组合。可以理解的是,该设备可以以许多不同的方式以及通过许多不同类型的系统来实现,并且可以根据需要进行定制,以在特定环境中操作。

系统3300可以包括:控制器(例如,中央处理单元(“cpu”)3302、存储器单元3304、输入/输出(“i/o”)设备3306、和网络接口3308。部件3302、3304、3306和3308通过传输系统(例如,总线)3310互连。电源(ps)3312可以经由电力系统3314(其与传输系统3310一起示出但可能是不同的)向计算机系统3300的部件(例如cpu3302和存储器单元3304)提供电力。可以理解的是,系统3300可以被不同地配置,并且所列出的每个部件实际上可以代表几种不同的部件。例如,cpu3302实际上可以表示多处理器或分布式处理系统;存储器单元3304可以包括不同级别的高速缓存存储器、主存储器、硬盘和远程存储位置;i/o设备3306可包括监视器、键盘等;网络接口3308可以包括一个或多个网卡,该网卡向网络3316提供一个或多个有线和/或无线连接。因此,预期计算机系统3300的配置中将具有宽泛的灵活性。

系统3300可以使用任意的操作系统(或多个操作系统),包括由microsoft(微软公司,如windows)、apple(苹果公司,如macosx)、unix和linux提供的各种操作系统版本,并且可以包括根据系统3300的使用而专门为手持设备、个人计算机、服务器和嵌入式设备开发的操作系统。该操作系统以及其他指令可以被存储在存储器单元3304中并且由处理器3302执行。例如,存储器单元3304可以包括用于执行本文所描述的部分或全部方法的指令。这些指令可以驻留在应用3318内。应用3318还可以包括应用编程接口(api)3320。在一些实施例中,应用3318可以是chm代码、chm编码器、chm解码器等。在一些实施例中,api3320可以是用于chm编解码器、chm编码器、chm解码器等的以允许进行api调用以便启动chm编码和解码操作的api。

可以理解的是,本文所描述的chm文件、编码和解码操作以及其他过程可以包括数据压缩步骤、加密步骤或其他过程,以减小用于传输chm文件的文件大小或者提供额外的安全性。

一个示例性实施例可以包括用于将数据流编码为合并的文件的编解码器的方法,包括访问具有第一多个数据字节的第一文件;访问具有第二多个数据字节的第二文件;合并所述第一文件和所述第二文件以提供包含有头和正文的合并的文件,其中包括步骤:在第一存储步骤,将来自所述第一多个数据字节的具有第一字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第一文件字节块,其中所述字节块大小包括至少一个或多个字节的数据,在第二存储步骤,顺序地将来自所述第二多个数据字节的具有第二字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第二文件字节块,重复第一存储步骤和第二存储步骤,以将第一文件和第二文件中的所有数据字节顺序地存储至合并的文件中,并在所述头中存储与所述第一字节块大小和所述第二字节块大小有关的信息。

在上述一个或多个示例中,所述第一文件具有第一文件格式,所述第二文件具有第二文件格式。

在上述一个或多个示例中,所述第一文件是图像文件,所述第二文件是非图像文件。

在上述一个或多个示例中,所述字节被存储在所述合并的文件中的按顺序的且相邻的存储位置中。

在上述一个或多个示例中,所述方法还包括:通过以下步骤将所述合并的文件传输至应用处理块以将所述合并的文件解码为所述第一文件和所述第二文件:读取所述头以确定所述第一文件和所述第二文件中的每一种文件的字节块大小;顺序地访问与所述第一文件的字节块大小相关联的若干数量的字节以及访问与所述第二文件的字节块大小相关联的若干数量的字节;以及利用所访问的字节来创建所述第一文件和所述第二文件。

在上述一个或多个示例中,根据所述第一文件的字节数量与所述第二文件的字节数量的比率来计算所述第一文件的字节块大小和所述第二文件的字节块大小。

在上述一个或多个示例中,计算所述第一文件和所述第二文件中的每一种文件的字节块大小的步骤包括:确定所述第一文件和所述第二文件中哪个文件包括较多的字节数量;将包括较多的字节数量的第一文件或第二文件的字节数量除以所述第一文件或所述第二文件中的另一文件的字节数量,以产生结果;确定所述结果是否包括余数,如果是,则将所述结果四舍五入成整数,所述整数为所述结果的下一个整数;以及将包括较多的字节数量的所述第一文件或所述第二文件的字节块大小设置为等于所述整数。

在上述一个或多个示例中,如果所述第一文件或所述第二文件中任一个的数据块的总数量导致:在写入所述第一文件或所述第二文件中的所有之前的字节之后,在所述第一文件或所述第二文件中存在剩余数量的字节,对于所述第一文件,该剩余字节的数量小于所述第一字节块大小,或者对于所述第二文件,该剩余字节的数量小于所述第二字节块大小,则所述方法还包括:将部分的字节块存储至所述合并的文件中,其中所述部分的字节块与所述第一文件或所述第二文件中的一种文件相关联,并且其中所述部分的字节块包括若干数量的数据字节,该若干数量的数据字节的数量分别小于与所述部分的字节块相关联的所述第一文件或所述第二文件的字节块大小。

在上述一个或多个示例中,所述计算所述第一文件和所述第二文件中的每一种文件的字节块大小的步骤还包括:将所述第二文件的字节块大小设置为一个字节;以及确定是否设置加速乘法器,如果是,则设置所述加速乘法器,其中所述加速乘法器是这样的值:用于操纵所述第一文件的字节块大小和所述第二文件的字节块大小,以将所述第一文件的字节块大小设置为由所述值乘以所述第一文件的字节块大小的结果,并且将所述第二文件的字节块大小设置为由该值乘以所述第二文件的字节块大小的结果。

另一个示例性实施例可以包括用于将合并的文件的数据流解码为分离的数据流的编解码器的方法,包括:分析所述合并的文件中所包括的头数据;计算用于第一数据流和第二数据流中的每一种的字节块大小,其中所述字节块是文件中的若干数量的数据字节,读取所述合并的文件中所包括的第一文件字节块,其中所述第一文件字节块包括所述合并的文件中的与为第一数据流而计算的字节块大小对应的若干数量的字节;将所述第一文件字节块写入第一文件;读取所述合并的文件中所包括的第二文件字节块,其中所述第二文件字节块包括所述合并的文件中的与为第二数据流而计算的字节块大小对应的若干数量的字节;以及将所述第二文件字节块写入第二文件。

在上述一个或多个示例中,所述第一文件具有第一文件类型,所述第二文件具有第二文件类型。

在上述一个或多个示例中,所述第一文件是图像文件,所述第二文件是非图像文件。

在上述一个或多个示例中,所述方法还包括:确定所述合并的文件中所包括的每一个字节是否已从所述合并的文件中读取并且已写入所述第一文件或所述第二文件中的一种文件;以及一旦确定所述合并的文件中所包括的每一个字节尚未写入所述第一文件或所述第二文件中的一种文件,则重复所述读取、写入和确定步骤。

在上述一个或多个示例中,计算用于第一数据流和第二数据流中的每一种的字节块大小包括:读取头数据中的字节块大小数据,其中字节块大小数据包括在创建所述合并的文件期间所使用的字节块大小。

另一个示例性实施例可包括用于将数据流编码为合并的文件以及将合并的文件解码为分离的数据流的系统,该系统包括:耦合至处理器的网络接口和耦合至所述处理器的存储器,所述处理器被配置为:访问具有第一多个数据字节的第一文件;访问具有第二多个数据字节的第二文件;合并所述第一文件和所述第二文件以提供包含有头和正文的合并的文件,其中,在合并期间所述处理器被进一步配置为:在第一存储步骤,将来自所述第一多个数据字节的具有第一字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第一文件字节块,其中所述字节块大小包括至少一个或多个字节的数据,在第二存储步骤,顺序地将来自所述第二多个数据字节的具有第二字节块大小的数据字节块存储至所述合并的文件的所述正文中,作为第二文件字节块,重复第一存储步骤和第二存储步骤,以将第一文件和第二文件中的所有数据字节顺序地存储至合并的文件中,并在头中存储与所述第一字节块大小和所述第二字节块大小有关的信息。

在上述一个或多个示例中,所述第一文件具有第一文件格式,所述第二文件具有第二文件格式。

在上述一个或多个示例中,所述第一文件是图像文件,所述第二文件是非图像文件。

在上述一个或多个示例中,计算所述第一文件和所述第二文件中的每一种文件中的字节块大小的步骤包括:确定所述第一文件和所述第二文件中哪个文件包括较多的字节数量;将包括较多的字节数量的第一文件或第二文件的字节数量除以所述第一文件或所述第二文件中的另一文件的字节数量,以产生结果;确定所述结果是否包括余数,如果是,则将所述结果四舍五入成整数,所述整数为所述结果的下一个整数;以及将包括较多的字节数量的所述第一文件或所述第二文件的字节块大小设置为等于所述整数。

在上述一个或多个示例中,所述处理器被进一步配置为:分析所述合并的文件所包括的头数据;基于所述头数据中所包括的字节块大小数据来计算用于所述第一文件和所述第二文件中的每一种文件的字节块大小;记录所述合并的文件中所包括的合并的文件字节块,其中所述合并的文件字节块包括所述合并的文件中的与为所述第一文件而计算的所述字节块大小对应的若干数量的字节;将所述合并的文件字节块复制至第三文件;记录所述合并的文件中所包括的下一个合并的文件字节块,其中所述下一个合并的文件字节块包括所述合并的文件中的与为所述第二文件而计算的所述字节块大小对应的若干数量的字节;以及将所述下一个合并的文件字节块复制至第四文件。

在上述一个或多个示例中,所述处理器被进一步配置为:检查所述合并的文件中所包括的每一个字节是否已从所述合并的文件中读取并其已写入所述第三文件或所述第四文件中的一种文件;以及一旦确定所述合并的文件中所包括的每一个字节尚未写入所述第三文件或所述第四文件中的一种文件,则重复所述读取、写入和确定步骤。

另一个示例性实施例可以包括用于将数据流编码为合并的文件的编解码器的方法,包括:访问包括第一多个数据字节的第一文件;访问包括第二多个数据字节的第二文件;以及合并所述第一文件和所述第二文件,以提供仅包括一个头和一个正文的合并的文件,并且包括以下步骤:在第一存储步骤,将具有第一字节块大小的第一文件字节块顺序地存储至所述合并的文件的所述正文中,其中所述第一文件字节块包括来自所述第一文件的所述第一多个数据字节的一个或多个数据字节;在第二存储步骤,将具有第二字节块大小的第二文件字节块顺序地存储至所述合并的文件的所述正文中,其中所述第二文件字节块包括来自所述第二文件的所述第二多个数据字节的一个或多个数据字节;重复所述第一存储步骤和所述第二存储步骤,以将所述第一文件的所述第一多个数据字节和所述第二文件的所述第二多个数据字节顺序地存储至所述合并的文件的所述正文中,其中所述第一多个数据字节和所述第二多个数据字节均被存储在所述合并的文件的仅与所述一个头相关联的所述一个正文中;以及在所述合并的文件的所述头中存储所述第一字节块大小和所述第二字节块大小。

在上述一个或多个示例中,所述第一文件具有第一文件格式,所述第二文件具有第二文件格式。

在上述一个或多个示例中,所述第一文件为图像文件,所述第二文件为非图像文件。

在上述一个或多个示例中,所述第一文件字节块和所述第二文件字节块被存储在所述合并的文件中的顺序的且相邻的存储位置中。

在上述一个或多个示例中,所述方法还包括:通过以下步骤将所述合并的文件传输至应用程序块以将所述合并的文件解码为所述第一文件和所述第二文件:读取所述头以确定所述第一字节块大小和所述第二字节块大小;顺序地访问与所述第一字节块大小对应的第一数量的字节以及访问与所述第二字节块大小对应的第二数量的字节;以及分别利用所访问的第一数量的字节和所访问的第二数量的字节来创建所述第一文件和所述第二文件。

在上述一个或多个示例中,所述方法还包括:根据所述第一文件的字节数量与所述第二文件的字节数量的比率来计算所述第一字节块大小和所述第二字节块大小。

在上述一个或多个示例中,所述方法还包括:计算所述第一字节块大小和所述第二字节块大小,包括:确定所述第一文件和所述第二文件中哪个文件包括较多的字节数量;将包括较多的字节数量的第一文件或第二文件的字节数量除以所述第一文件或所述第二文件中的另一文件的字节数量,以产生结果;确定所述结果是否包括余数,如果是,则将所述结果四舍五入成整数,所述整数为所述结果的下一个整数;以及对于包括较多的字节数量的所述第一文件或所述第二文件,将所述第一文件的所述第一字节块大小或所述第二文件的所述第二字节块大小设置为等于所述整数。

在上述一个或多个示例中,如果所述第一文件或所述第二文件中任一个的数据块的总数量导致:在写入所述第一文件或所述第二文件中的所有之前的字节之后,在所述第一文件或所述第二文件中存在剩余数量的字节,对于所述第一文件,该剩余字节的数量小于所述第一字节块大小,或者对于所述第二文件,该剩余字节的数量小于所述第二字节块大小,则所述方法还包括:将部分的字节块存储至所述合并的文件中,其中所述部分的字节块与所述第一文件或所述第二文件中的一种文件相关联,并且其中所述部分的字节块包括若干数量的数据字节,该若干数量的数据字节的数量分别小于与所述部分的字节块相关联的所述第一文件或所述第二文件的所述第一字节块大小或所述第二字节块大小。

在上述一个或多个示例中,所述计算所述第一字节块大小和所述第二字节块大小还包括:将所述第二字节块大小设置为一个字节;以及确定是否设置加速乘法器,如果是,则设置所述加速乘法器,其中所述加速乘法器是这样的值:用于操纵所述第一字节块大小和所述第二字节块大小,以将所述第一字节块大小设置为由所述值乘以所述第一字节块大小的结果,并且将所述第二字节块大小设置为由该值乘以所述第二字节块大小的结果。

另一个示例性实施例可以包括用于将合并的文件的数据流解码为分离的数据流的编解码器的方法,包括:分析所述合并的文件的头中所包括的头数据,其中所述合并的文件仅包括一个头,并且在所述合并的文件的一个正文中包括来自第一原始文件的第一数据流的数据以及来自第二原始文件的第二数据流的数据,其中所述一个正文仅与所述一个头相关联;从头数据读取用于第一数据流和第二数据流中的每一种的字节块大小,其中字节块包括文件中的一个或多个数据字节;读取所述合并的文件中所包括的第一文件字节块,其中所述第一文件字节块包括与用于所述第一数据流的字节块大小对应的所述合并的文件中的若干数量的字节,其中用于所述第一数据流的字节块大小从所述合并的文件的所述头中读取;将所述第一文件字节块写入第一文件;读取所述合并的文件中所包括的第二文件字节块,其中所述第二文件字节块包括与用于所述第二数据流的字节块大小对应的所述合并的文件中的若干数量的字节,其中用于所述第二数据流的字节块大小从所述合并的文件的所述头中读取;以及将所述第二文件字节块写入第二文件。

在上述一个或多个示例中,所述第一文件具有第一文件类型,所述第二文件具有第二文件类型。

在上述一个或多个示例中,所述第一文件为图像文件,所述第二文件为非图像文件。

在上述一个或多个示例中,所述方法还包括:确定所述合并的文件中所包括的每一个字节是否已从所述合并的文件中读取并且已写入所述第一文件或所述第二文件中的一种文件;以及一经确定所述合并的文件中所包括的每一个字节尚未写入所述第一文件或所述第二文件中的一种文件,则重复所述读取、写入和确定步骤。

在上述一个或多个示例中,用于所述第一数据流和所述第二数据流中的每一种数据流的字节块大小是在创建所述合并的文件期间所使用的字节块大小。

另一个示例性实施例可以包括用于将数据流编码为合并的文件以及将合并的文件解码为分离的数据流的系统,包括:耦合至处理器的网络接口;和耦合至所述处理器的存储器;所述处理器被配置为:包括第一多个数据字节的第一文件;访问包括第二多个数据字节的第二文件;以及合并所述第一文件和所述第二文件,以提供仅包括一个头和一个正文的合并的文件,其中,在合并期间,所述处理器被进一步配置为:在第一存储步骤,将具有第一字节块大小的第一文件字节块顺序地存储至所述合并的文件的所述正文中,其中所述第一文件字节块包括来自所述第一文件的所述第一多个数据字节的一个或多个数据字节;在第二存储步骤,将具有第二字节块大小的第二文件字节块顺序地存储至所述合并的文件的所述正文中,其中所述第二文件字节块包括来自所述第二文件的所述第二多个数据字节的一个或多个数据字节;重复所述第一存储步骤和所述第二存储步骤,以将所述第一文件的所述第一多个数据字节和所述第二文件的所述第二多个数据字节顺序地存储至所述合并的文件的所述正文中,其中所述第一多个数据字节和所述第二多个数据字节均被存储在所述合并的文件的仅与所述一个头相关联的所述一个正文中;以及在所述头中存储与所述第一字节块大小和所述第二字节块大小相关的信息。

在上述一个或多个示例中,所述第一文件具有第一文件格式,所述第二文件具有第二文件格式。

在上述一个或多个示例中,所述第一文件为图像文件,所述第二文件为非图像文件。

在上述一个或多个示例中,所述处理器被进一步配置为:计算所述第一字节块大小和所述第二字节块大小,包括:确定所述第一文件和所述第二文件中哪个文件包括较多的字节数量;将包括较多的字节数量的第一文件或第二文件的字节数量除以所述第一文件或所述第二文件中的另一文件的字节数量,以产生结果;确定所述结果是否包括余数,如果是,则将所述结果四舍五入成整数,所述整数为所述结果的下一个整数;以及对于包括较多的字节数量的所述第一文件或所述第二文件,将所述第一文件的所述第一字节块大小或所述第二文件的所述第二字节块大小设置为等于所述整数。

在上述一个或多个示例中,所述处理器被进一步配置为:分析所述合并的文件所包括的头数据;基于所述头数据中所包括的字节块大小数据来计算用于所述第一文件和所述第二文件中的每一种文件的字节块大小;读取所述合并的文件中所包括的合并的文件字节块,其中所述合并的文件字节块包括所述合并的文件中的与为所述第一文件而计算的所述字节块大小对应的若干数量的字节;将所述合并的文件字节块写入第三文件;读取所述合并的文件中所包括的下一个合并的文件字节块,其中所述下一个合并的文件字节块包括所述合并的文件中的与为所述第二文件而计算的所述字节块大小对应的若干数量的字节;以及将所述下一个合并的文件字节块写入第四文件。

在上述一个或多个示例中,所述处理器被进一步配置为:确定所述合并的文件中所包括的每一个字节是否已从所述合并的文件中读取并其已写入所述第三文件或所述第四文件中的一种文件;以及一经确定所述合并的文件中所包括的每一个字节尚未写入所述第三文件或所述第四文件中的一种文件,则重复所述读取、写入和确定步骤。

应当理解的是,本文的附图和详细说明应当以说明性方式而不是限制性方式来考虑,并且并不旨在限于所披露的具体形式和示例。相反,在不背离本发明的精神和范围的情况下,包括对本领域普通技术人员明了的任何进一步的修改、变更、重新布置、替换、替代、设计选择和实施例,如由所附权利要求所限定的。因此,所附权利要求应被解释为包括所有这些进一步的修改、变更、重新布置、替换、替代、设计选择和实施例。

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