分层音频编码和传输的制作方法_5

文档序号:9510215阅读:来源:国知局
施例,处理900可以包括更少和/或更多的框,或者可以以与所示不同的顺序来执行框。
[0115] 在框902中,访问第一音频帧和第二音频帧。在一个实施例中,从音频数据仓库 150中访问音频帧。第一音频帧可以与基层音频帧相对应,并且第二音频帧可以与增强层音 频帧相对应。第一音频帧和第二音频帧可以对应于相同的时间段。
[0116] 在框904中,将第一音频帧和第二音频帧相比较。在一个实施例中,将第一音频帧 和第二音频帧的字节相比较。
[0117] 在框906中,识别第一音频帧的第一部分和第二音频帧的第二部分之间的相似 性。在一个实施例中,第一部分和第二部分包括相同的比特序列或字节序列。在一些实施 例中,第一部分和第二部分都位于各音频帧中的相应位置(例如,音频帧的数据部分的开 始)。在其他实施例中,第一部分和第二部分位于各音频帧的不同位置(例如,第一部分在 数据部分的开始并且第二部分在数据部分的结尾,第一部分在首部中并且第二部分在数据 部分中,等等)。
[0118] 在框908中,用对与第一部分相对应的第一音频帧中的位置的引用来替换第二部 分,以创建修改的第二音频帧。在一个实施例中,引用包括在可被客户端设备(例如客户端 设备110)执行、用于从分层音频数据重建音频流的命令中。
[0119] 在框910中,基于第一音频帧生成第一音频层。在一个实施例中,第一音频层包括 多个音频帧。
[0120] 在框912中,基于第二音频帧生成第二音频层。在一个实施例中,第二音频层包括 多个音频帧。
[0121] 在一些实施例中,使第一音频层和第二音频层能够在网络上向客户端设备传输。 在网络上传输第一音频层可能需要第一带宽量,并且在网络上传输第一音频层和第二音频 层可能需要比第一带宽量更大的第二带宽量。如果第二带宽量对客户端设备可用,则可以 使客户端设备能够一并接收和输出第一音频层和第二音频层。如果只有第一带宽量对客户 端设备可用,则也可以使客户端设备能够接收和输出第一音频层。
[0122] 在其他实施例中,可以将第一音频层和第二音频层存储在计算机可读存储介质中 (例如,光盘、闪存驱动、硬盘驱动等)。可以经由计算机可读存储介质向客户端设备传输音 频层。
[0123] 图10示出了用于重建音频流的示例性处理1000。在一个实施例中,处理1000可 以由本文描述的任何系统(包括上文参考图1讨论的客户端设备110)来执行。根据实施 例,处理900可以包括更少和/或更多的框,并且可以以与所示不同的顺序来执行框。例如, 处理1000可以不包括与下文描述的散列校验相关的框1004、1006和/或1008。
[0124] 在框1002中,访问第一音频层和第二音频层。在一个实施例中,在网络上从内容 服务器(例如内容服务器120)流传输或下载第一音频层和第二音频层。在另一个实施例 中,从存储第一音频层和第二音频层的计算机可读存储介质访问第一音频层和第二音频 层。
[0125] 在框1004中,将第二音频层中第一音频帧的散列与第一音频层中第二音频帧的 部分和第一音频帧的部分相比较。在一个实施例中,第二音频帧的部分包括第二音频帧中 的字节。在另一个实施例中,第一音频帧的部分包括第一音频帧中的字节。
[0126] 在框1006中,处理1000基于该比较,确定在散列与第一音频帧及第二音频帧的部 分之间是否存在匹配。如果存在匹配,则处理1000前进到框1010.如果不存在匹配,则处 理1000前进到框1008。
[0127] 在框1008,向解码器输出第一音频层。在一个实施例中,如果不存在匹配,则第二 音频层中的音频帧不能验证通过。因此,替代地,向解码器输出较低质量的音频帧。
[0128] 在框1010中,识别第一音频帧中的引用。在一个实施例中,该引用包括在命令中。 命令可以引用父层音频帧中的位置。
[0129] 在框1012中,用与引用指示的位置相对应的第二音频帧中的第二部分替换引用。 在一个实施例中,引用指示的位置包括父层的标识、要复制的字节的数量、以及音频帧内开 始复制的偏移。在另一个实施例中,针对每个识别的引用,重复框1010和1012。可以将所 引用位置中的数据存储在缓存中或者直接向解码器发送。对于第一音频帧中不是引用的数 据,也将这些数据缓存或者直接向解码器发送。可以将数据缓存或者直接向解码器发送,从 而其出现在第一音频帧中。缓存的数据(或解码器中的数据)可以表示要向扬声器输出的 音频流。
[0130] 在框1014中,向解码器发送第二音频层。在一个实施例中,第二音频层包括其中 的引用已被所引用位置处的数据替换的音频帧。解码器可以向扬声器、执行音频分析的组 件、执行水印检测的组件、另一个计算设备等输出结果数据。
[0131] 图11示出了用于重建音频流的另一个示例性处理1100。在一个实施例中,处理 1100可以由本文描述的任何系统(包括上文参考图1讨论的客户端设备110)来执行。处 理1100示出了客户端设备可以如何确定要解码哪一层音频帧,使得即使一个或多个增强 层音频帧中的数据损坏,客户端设备也可以提供连续、不中断的内容回放。根据实施例,处 理1100可以包括更少和/或更多的框,并且可以以与所示不同的顺序来执行框。一般地, 在某些实施例中,如果较高级的层损坏、丢失数据、或者散列或校验和失败,则客户端设备 可以输出较低级的层来替代较高级的层。
[0132] 在框1102中,访问第一音频层、第二音频层、第三音频层、以及第四音频层。在一 个实施例中,在网络上从内容服务器(例如内容服务器120)流传输或下载音频层。在另一 个实施例中,从存储音频层的计算机可读存储介质访问音频层。虽然参考四个音频层来描 述处理1100,但这不意味着限制。可以用任何数量的音频层来执行处理1100。然后,处理 1100前进到框1104。
[0133] 在框1104中,设置变量N和X。例如,将变量N设置为4,变量X设置为4。变量N 可以表示正在处理的当前音频层,并且变量X可以表示可以从中向解码器输出音频帧的音 频层。然后,处理1100前进到框1106。
[0134] 在框1106中,将第N层中音频帧的散列与第N-I音频层中音频帧的部分和第N层 中音频帧的部分相比较。在一个实施例中,第N-I音频层音频帧的部分包括第N-I音频层 音频帧中的字节。在另一个实施例中,第N音频层音频帧的部分包括第N音频层音频帧中 的字节。然后,处理1100前进到框1108。
[0135] 在框1108中,处理1100基于该比较确定在散列与第N-I音频层音频帧及第N音 频层音频帧的部分之间是否存在匹配。如果存在匹配,则处理1100前进到框1116。如果不 存在匹配,处理1100前进到框1110。
[0136] 如果处理前进到框1110,则音频帧中发生错误。与第N及更高的增强层相对应的 任何音频帧将不被解码。在框Ilio中,处理1100确定变量N是否等于2。如果变量N等于 2,则不需要对更多的层进行处理并且处理1100前进到框1114。如果变量N不等于2,处理 1100前进到框1112。
[0137] 在框1112中,再次设置变量N和X。例如,将变量N设置为等于N-I,变量N设置 为等于N。然后,处理1100回到框1106。
[0138] 在框1114中,向解码器输出第一音频层。在一个实施例中,如果第一音频层和第 二音频层之间不存在匹配(例如,当变量N为2时进行校验),则第二音频层中的音频帧不 能验证通过。因此,替代地,向解码器输出最低质量的音频帧(对应于第一音频层)。
[0139] 如果处理前进到框1116,则在第N音频层中的音频帧中没有发生错误。在框1116 中,设置变量X。例如,将变量X设置为等于变量N和变量X中的最大值。然后,处理1100 前进到框1118。
[0140] 在框1118中,处理1100确定变量N是否等于2。如果变量N等于2,则不需要对 更多的层进行处理并且处理1100前进到框1122。如果变量N不等于2,处理1100前进到 框 1120。
[0141] 在框1120中,再次设置变量N。例如,将变量N设置为等于N-1。然后,处理1100 回到框1106。
[0142] 在框1122中,识别第X音频层中音频帧中的引用。在一个实施例中,引用包括在 命令中。命令可以引用父层音频帧中的位置。然后,处理1100前进到框1124。
[0143] 在框1124中,用与引用所指示的位置相对应的来自另一音频帧的部分替换引用。 在一个实施例中,引用所指示的位置包括父层的标识、要复制的字节的数量、以及音频帧内 开始复制的偏移。在另一个实施例中,针对每个识别的引用,重复框1122和1124。可以将 所引用位置中的数据存储在缓存中或者直接向解码器发送。缓存的数据(或解码器中的数 据)可以表示要向扬声器输出的音频流。然后,处理1100前进到框1126。
[0144] 在框1126中,向解码器输出第X音频层。在一个实施例中,第X音频层包括其中 的引用已被所引用位置处的数据替换的音频帧。解码器可以向扬声器、执行音频分析的组 件、执行水印检测的组件、另一个计算设备等输出结果数据。
[0145] 术语
[0146] 将根据本公开将清楚本文描述以外的许多其它变型。例如,根据实施例,本文所描 述的任一算法的特定动作、事件或功能可以以不同的顺序执行,可以一起添加、合并或省去 (例如,并非所有描述的动作或事件对于算法的实践而言都是必要的)。此外,在一些实施 例中,可以例如通过多线程处理、中断处理或多处理器或处理器核或在其它并行体系结构 上并发地执行动作或事件,而非顺序地执行。此外,不同的任务或处理可以由能够一起工作 的不同机器和/或计算系统来执行。
[0147] 可以将结合本文公开的实施例描述的各种说明性逻辑块、模块和算法步骤实现为 电子硬件、计算机软件或其结合。为了清楚地说明硬件和软件的可互换性,上文总体上已经 从功能方面描述了各种说明性部件、块、模块和步骤。将这些功能实现为硬件还是软件取决 于具体应用和施加至整个系统上的设计约束。对于每个具体应用,可以不同的方式实现所 描述的功能,但是这种实现决策不应该解释为背离本公开的范围。
[0148] 结合本文公开的实施例描述的各种说明性逻辑块和模块可以通过如下的机器来 实现或执行:设计成执行本文所描述功能的通用处理器、数字信号处理器(DSP)、专用集成 电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑电 路、分立硬件部件、或其任意组合。通用处理器可以是微处理器,但是备选地,处理器可以是 控制器、微控制器或状态机、其组合等。处理器可以包括被配置为处理计算机可读指令的电 气电路。在另一个实施例中,处理器包括FPGA或不需要处理计算机可执行指令来执行逻辑 操作的其他可编程器件。处理器还可以被实现为计算设备的组合(例如,DSP和微处理器 的组合)、多个微处理器、结合DSP核的一个或多个微处理器、或任意其它这种配置。计算环 境可以包括任何类型的计算机系统,包括但不限于基于微处理器的计算机系统、主机计算 机、数字信号处理器、便携式计算设备、个人组织器、设备控制器和设备内的计算引擎,仅举 几个例子。
[0149] 结合本文公开的实施例来描述的方法、处理或算法的步骤可以在硬件、存储在一 个或多个存储设备中并由一个或多个处理器执行的软件模块以及二者的组合中直接实现。 软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、 硬盘、可拆卸盘、CD-ROM或现有技术中已知的任意其它形式的计算机可读存储介质或物理 计算机存储器中。示例存储介质可以与处理器耦合,使得处理器可以从存储介质读取信息, 以及将信息写入存储介质。备选地,存储介质可以是处理器的组成部分。存储介质可以是 易失性或非易失性的。处理器和存储介质可以驻留在ASIC中。
[0150] 本文使用的条件语言,其中例如"能够"、"可能"、"可以"、"例如"等,除非特别声明 或在使用时结合上下文来理解,否则一般旨在表示某些实施例包括而其它实施例没有包括 的一些特征、元件和/或状态。因此,这种条件语言一般并非旨在暗示以任意方式需要用于 一个或多个实施例,或者暗示在具有或没有作者输入或提示的情况下,一个或多个实施例 有必要包括下述逻辑:用于决定这些特征、元件和/或状态是否应该被包括在任意特定实 施例中或者在任意特定实施例中被执行。术语"包括"、"包含"、"具有"等是同义的,并且以 开放方式包括地使用,并且不排除附加元件、特征、动作、操作等。同义术语"或"使用在其 包括意义中(并且不在其排他意义中),使得当例如用于连接元件列表时,术语"或"意味着 列表中一个、一些或所有元件。此外,本文中使用的术语"每个"除具有一般含义外,还可以 意味着"每个"所应用的元件集合的任何子集。
[0151] 诸如短语"X、Y和Z中至少一个"的析取用语,除非特有声明,应在所使用的上下 文中一般地被理解为表示可以是X、Y或Z中任一项或任一个或其组合。因此,这种
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1