首页> 中国专利> 可缩放媒体递送的精细粒度的客户机侧控制

可缩放媒体递送的精细粒度的客户机侧控制

摘要

描述了用于调整通过网络递送的多个媒体块的质量和比特率的技术和工具。例如,多个块中的每一个用不同的速率/质量点被编码为多个层(例如,基层和多个嵌入残留层)以便精细粒度的可缩放性。服务器存储各块的各层的已编码数据以及对各块的速率-失真曲线进行参数化的曲线信息。服务器将曲线信息发送给客户机。对于多个块,客户机使用曲线信息来确定各个块的速率-失真偏好,然后向服务器发送指示速率-失真偏好的反馈。对于多个块中的每一个,服务器至少部分地基于反馈选择块的一个或多个可缩放层来递送给客户机。

著录项

  • 公开/公告号CN102165775A

    专利类型发明专利

  • 公开/公告日2011-08-24

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN200980139427.7

  • 发明设计人 S·梅若特拉;

    申请日2009-08-17

  • 分类号H04N7/26(20060101);H04N7/50(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人黄嵩泉

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 03:04:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-20

    专利权的转移 IPC(主分类):H04N7/26 变更前: 变更后: 登记生效日:20150430 申请日:20090817

    专利申请权、专利权的转移

  • 2013-06-12

    授权

    授权

  • 2011-10-05

    实质审查的生效 IPC(主分类):H04N7/26 申请日:20090817

    实质审查的生效

  • 2011-08-24

    公开

    公开

说明书

背景

工程师使用压缩(也叫做“编码”)来降低数字媒体的比特率。压缩通过将媒体转换为较低的比特率形式来降低存储和传输媒体的成本。解压缩(也叫做“解码”)从压缩形式重构原始媒体的版本。

当媒体编码器将媒体转换为较低的比特率形式时,媒体编码器会降低压缩媒体的质量以降低比特率。通过有选择地去除媒体中的细节,编码器使媒体更简单且更容易压缩,但是经压缩的媒体不太忠实于原始媒体。除了此基本质量/比特率折衷以外,媒体的比特率还取决于媒体的内容(例如,复杂性)和媒体的格式。

媒体信息是根据不同设备和应用的不同格式来组织的。格式的许多属性与分辨率有关。例如,对于视频,采样深度、空间分辨率(例如,在图片的宽度和高度方面)和时间分辨率(例如,在每秒图片数方面)与分辨率有关。对于音频,采样深度和采样速率(例如,在每秒采样数方面)与分辨率有关。通常,质量和比特率根据分辨率直接变化,越高的分辨率得到越高的质量和越高的比特率。

可缩放的媒体编码和解码便于将媒体递送到具有不同能力的设备。典型的可缩放的媒体编码器将媒体拆分为一个基层以及一个或多个增强层。基层本身提供用于以较低的质量重构的媒体的版本,而增强层添加会提升质量的信息。某些可缩放的编码器和解码器依赖于媒体的时间可缩放性(例如,低的帧速率到高的帧速率)。其他常见的可缩放的编码/解码方案使用对于空间分辨率或者视频的总体编码质量的可缩放性(例如,低失真到高失真)。可缩放层可以表示单个类型的分辨率的不同质量点(例如,用于三个不同的空间分辨率320x240、640x480和1280x960)。或者,可缩放层可以表示不同类型的分辨率的不同质量点(例如,用于320x240低质量基层、用于640x480低质量增强层、用于320x240较高质量的增强层、用于640x480较高质量的增强层,等等)。

基层以及一个或多个增强层可以用各个层的单独比特流来组织。或者,各个可缩放层的内容可以逐单元交错用于已编码媒体。例如,对于音频的第一帧,第一帧的基层数据领先第一帧的第一增强层数据,而第一增强层数据领先第一帧的第二增强层数据。随后,接着是音频的第二帧的基层数据、第二帧的第一增强层数据和第二帧的第二增强层数据。对于视频,单元可以是图片或图片组,其中基层数据和增强层数据按单元来组织。

当可缩放层表示单个类型的分辨率的不同质量点并且可缩放层在比特流中逐单元地组织,则低质量的一个或多个层可以被认为“嵌入”在下一较高质量的层中。这些层进而可以被认为嵌入在下一较高质量的层中。选择目标质量/比特率可以通过选择每一单元的已编码数据的一组嵌套层来完成。为不同质量水平的层创建嵌入到层中的比特流的一种方法使用比特面编码。在比特面编码中,将图片各块的频率变换系数分成具有每一变换系数的最高有效位的第一平面、具有每一系数的下一最高有效位的第二平面,以此类推,直到具有每一系数的最低有效位的平面。各个比特面在不同编码质量水平的不同可缩放层中编码。

通过因特网和其他计算机网络来递送媒体内容已经变得越来越流行。通过因特网的媒体递送通常由可变带宽来表征,而没有分发媒体内容的媒体服务器和回放媒体内容的媒体客户机之间的专用带宽。如果媒体内容的比特率过高,则媒体内容可能被网络丢弃,造成媒体客户机的回放停止。或者,媒体客户机可以在回放开始之前缓存一大部分的媒体内容,但这会导致回放开始之前的长时间延迟。另一方面,如果媒体内容的比特率远低于网络能够递送的比特率,则回放的媒体内容的质量将低于它能够达到的质量。通过调整媒体内容的比特率以使得比特率更紧密地匹配可用网络带宽,媒体服务器可以改进媒体客户机的回放体验。虽然调整媒体内容的质量和比特率的现有方法在许多场景中提供了足够的性能,但它们不具有以下描述的技术和工具的好处和优点。

概述

概括地说,详细描述呈现了用于调整通过网络递送的媒体的质量和比特率的技术和工具。例如,对于多个独立媒体块,可缩放媒体编码器用多个比特率/质量水平来编码各个块以用于精细粒度可缩放性,并且服务器存储已编码媒体。取决于网络特性和客户机回放偏好,对于多个块中的每一个,客户机选择比特率/质量水平,并且可缩放媒体编码器解码用所选质量水平递送给它的已编码媒体。增加多个块的比特率/质量水平选项的数量允许客户机更精确地定制它的选择来满足客户机回放偏好并适应媒体比特率或网络特性的变化。

根据此处描述的技术和工具的第一方面,诸如服务器等的工具递送被组织成多个块的媒体数据。多个块中的每一个被编码为带有精细粒度可缩放性的不同质量水平的多个可缩放层。该工具发送各块的曲线信息。对于给定块,曲线信息可以包括对块的速率-失真曲线进行参数化的速率-失真点。或者,曲线信息可以包括指示块的速率-失真曲线的形状的一组参数。对于多个块中的每一个,该工具接收指示速率-失真偏好的反馈,并且至少部分地基于该反馈来从块的可缩放层中选择一个或多个可缩放层。例如,服务器将曲线信息发送给给定媒体客户机,从给定媒体客户机接收反馈,并将所选层发送回给定媒体客户机。当服务器存储块的可缩放层和曲线信息时,服务器可以在不同时间将曲线信息和所选层递送给不同的媒体客户机。

例如,块的多个可缩放层包括基层和多个残留层。多个残留层可以是从块的比特面编码而导致的残留嵌入层,其中嵌入层中的每一个表示块的变换系数的比特面。在递送块的层时,该工具总是选择和发送块的基层。取决于速率-失真偏好,该工具选择和发送块的多个残留层中的零个或多个。

根据此处描述的技术和工具的第二方面,诸如媒体客户机等的工具处理被组织成多个块的媒体数据,其中多个块中的每一个已经被编码为带有精细粒度可缩放性的不同质量水平的多个可缩放层。该工具接收多个块的曲线信息。对于各块中的每一个,该工具确定块的速率-失真偏好(例如,按照位计数或位范围)并发送速率-失真偏好。该工具随后接收块的多个可缩放层之中的一个或多个可缩放层。例如,媒体客户机从给定服务器接收曲线信息,将速率-失真偏好发送给服务器,然后从服务器接收回所选层。

对于给定块,曲线信息可以包括该工具用来将失真确定为块的可缩放层的下载时间的函数的速率-失真信息。例如,在确定速率失真偏好时,对于一个或多个块的段,该工具确定该段的总体回放时间约束。对于段中的一个或多个块中的每一个,该工具选择下载时间从而减少段中的一个或多个块之间的总体失真,同时还满足该段的总体回放时间约束。下载时间的选择可以包括设置权重参数从而使得该段的累计下载时间匹配总体回放时间约束。对于包括多个块的段,块的下载时间的选择可以包括将段拆分成多个子段。随后,对于多个子段中的每一个,该工具确定子段的总体回放时间约束,并且对于子段中的一个或多个块中的每一个,选择下载时间从而减少子段中的一个或多个块之间的总体失真,同时还满足子段的总体回放时间约束。

根据此处描述的技术和工具的第三方面,诸如媒体客户机等的工具接收被组织成多个块的媒体数据的流头部,其中多个块中的每一个已经被编码为带有精细粒度可缩放性的不同质量水平的多个可缩放层。该工具接收多个块的曲线信息。对于多个块中的每一个,块的曲线信息指示与块的多个可缩放层中的每一个相关联的不同速率-失真点。该工具分别确定多个块的速率-失真偏好并发送速率-失真偏好。对于多个块中的每一个,该工具接收块的一个或多个可缩放层。

通过下面的结合附图对本发明进行的详细描述,本发明的前述和其他目标、特点和优点将变得更加显而易见。提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。

附图简述

图1是示出其中可以实现所描述的若干技术和工具的合适的计算环境的框图。

图2是示出其中可以实现若干所描述的技术和工具的示例可缩放媒体递送系统的图。

图3是示出用具有可缩放层的块来组织的已编码媒体的示例文件格式的图。

图4是示出可缩放媒体的不同块的失真-下载时间曲线的图表。

图5是示出用于将曲线信息和媒体的可缩放层递送给客户机的一般化技术的流程图。

图6是示出用于处理曲线信息和向服务器请求媒体的可缩放层的一般化技术的流程图。

图7是示出用于确定媒体的各块的速率-失真偏好的示例技术的流程图。

详细描述

本申请涉及用于可缩放媒体递送的精细粒度的客户机侧控制的技术和工具。这些技术和工具允许客户机通过选择媒体的比特率/质量水平来定制其回放体验。增加在对媒体的各块进行编码时所使用的比特率/质量水平选项的数量允许客户机更精确地定制其对其回放偏好、媒体复杂性的变化和网络状况的变化的选择。

例如,服务器存储已经用多个比特率可缩放地编码(并因此多个质量水平)的媒体内容的各块。对于客户机,服务器发送关于对各块可用的多个比特率/质量水平的信息。考虑该信息,客户机通过为该客户机希望回放的每一块选择比特率/质量水平来定制其回放体验。在决定要选择哪些比特率/质量水平时,客户机可以考虑多个因素。客户机可以为要回放的每一块选择比特率/质量水平从而具有服从诸如服务器和客户机之间的网络状况之类的约束、优选启动等待时间和优选假信号容忍度的可能的最佳质量。网络状况包括可以由于网络拥塞或其他因素而随着时间变化的网络带宽和网络延时。启动等待时间指的是在客户机在开始解码和回放媒体内容之前缓存媒体内容的延时。增加启动延时允许客户机缓存更多的媒体内容,这通常允许客户机提升总体质量水平。然而,用户通常偏好小的启动等待时间从而回放更快地开始。术语假信号指的是由于丢失数据而导致的回放中断。例如,当解码器在回放期间到达一帧音频或视频但丢失需要用于解码帧的数据时,解码器停止回放或试图隐藏丢失部分。通常,客户机对假信号具有极少的容忍度或没有容忍度。或者,客户机考虑其它和/或附加因素。

在某些实现中,可缩放媒体编码器使用媒体内容的频率系数的比特面编码。客户机通过从嵌入的比特流中选择一个或多个比特面来为块选择比特率/质量水平。这类似于允许客户机执行编码的系数的简单的速率-失真量化。虽然比特面选择不允许客户机控制诸如变换块大小或过滤参数等编码器设置,但它为不同客户机提供了一种定制那些客户机回放的编码结果的方式。速率粒度和质量控制取决于块的大小和比特面的数量。每块具有越多的比特面和越小的块提供了对客户机的越精细粒度的控制,而每块具有越少的比特面或越大的块给予客户机越少的选项和越粗略的控制粒度。取决于实现,可缩放媒体编码器可以在嵌入表示中使用较精细的可缩放性(例如,精细到逼近比特粒度的水平)或较粗略的可缩放性(例如,带有基层和若干残留层),只要在每块的多个速率/质量点中的任一处的截断得到有效的比特流。或者,可缩放媒体编码器提供可缩放层但不使用比特面编码或嵌入比特流。

除了提供带有在块边界切换比特率和质量的能力的客户机之外,在某些实现中,此处描述的可缩放媒体递送体系结构结合大规模内容递送网络(“CDN”)来实现。例如,用来递送带有HTTP分组的Web内容的CDN还可以高速缓存媒体内容以供递送给客户机。当CDN包括在分布式地理位置高速缓存媒体内容的多个服务器时,客户机-服务器下载时间可以由于地理邻近和服务器负载平衡而减少。此外,在某些实现中,尽管对某些CDN的高速缓存限制使得大型文件的高速缓存变得有问题,但精细粒度的可缩放性导致已编码媒体内容块的各层的较小的文件大小。为了利用客户机侧速率控制的优点,CDN中的服务器存储用大速率数和质量水平编码的媒体,其中不同的速率与给定块的不同文件集相对应。例如,从可缩放媒体编码器输出的嵌入比特流被拆分成块的不同文件(带有与不同的系数量化水平相对应的不同水平的比特流截断),并且现有CDN中的服务器存储该不同文件,这便于客户机在没有对现有CDN的服务器进行服务器侧修改的情况下的精细粒度的速率控制。或者,代替使不同的可缩放层的截断点与单独文件的文件边界对齐(从而使得客户机在指示其速率-失真偏好时整体地请求特定文件集或请求对应于文件集的比特数),服务器可以改为存储带有不同可缩放层的嵌入比特流的单个文件。在这种情况下,服务器响应于来自客户机的速率-失真偏好(例如,字节范围请求)在单个文件中的任意位置处截断比特流。或者,服务器可以使用这些机制的组合,为多个文件中的每一个中的一个或多个不同层的至少一部分存储嵌入比特流。响应于来自客户机的速率-失真偏好(例如,整体地发送文件0、文件1和文件2,并且只发送块7的文件3的字节0到900或只发送块7的6300个字节),服务器可以发送一个或多个完整文件和/或对应于嵌入比特流中的截断点的部分文件。

此处描述的技术和工具的发明性方面,包括但不限于以下各项:

1.将可缩放媒体编码器和解码器用于精细粒度的客户机侧的速率控制。精细粒度的客户机侧的速率控制允许不同的客户机精确地对其各自的情况定制媒体递送和回放。

2.使用指示媒体内容的块的可缩放层的速率-失真特性的曲线信息。服务器存储各块的曲线信息并将曲线信息发送给客户机,客户机评估曲线信息并确定各块中的每一个的速率-失真偏好。不同的块通常具有不同的曲线信息。曲线信息有效地对各个块的速率-失真属性进行参数化以便精细粒度的客户机侧的速率控制。

3.客户机在评估速率-失真曲线信息时用来确定请求媒体内容的哪些比特率/质量水平的决策制定过程。通过使用速率-失真曲线信息来将失真确定为下载时间的函数,决策制定过程帮助客户机改进速率-失真性能同时还考虑网络状况及其回放偏好。

4.现有HTTP CDN的请求机制(例如,字节范围GET请求)的使用来获得媒体内容的所需比特数。充分利用现有CDN基础结构简化了带有精细粒度的客户机侧速率控制的可缩放媒体递送的实现。通过利用已经普遍的现有HTTP服务器,帮助避免了使用专用媒体服务器的需要。

此处所描述的实现方式可能有各种不同的替代方案。通过改变流程图所示出的阶段的顺序,通过拆分、重复或省略某些阶段等等,可以改变参考流程图所描述的某些技术。可缩放媒体递送的精细粒度的客户机侧控制的不同方面可以组合使用或单独使用。不同的实施例实现所描述的技术和工具的一个或多个。

此处所描述的一些技术和工具解决背景中指出的一个或多个问题。通常,给定的技术/工具不会解决所有这样的问题。

I.计算环境

图1示出了其中可以实现所描述的若干技术和工具的合适的计算环境(100)的一般化示例。操作环境(100)不旨在对使用范围或功能提出任何限制,因为技术和工具可以在各种通用或专用计算环境中实现。

参考图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。在图1中,此最基本配置(130)包括在虚线内。处理单元(110)执行计算机可执行指令,并可以是现实的或虚拟的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器(120)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等等),或两者的某种组合。存储器(120)存储实现可缩放媒体递送的精细粒度的客户机侧控制的服务器侧和/或客户机侧功能的软件(180)。

计算环境可以具有附加特征。例如,计算环境(100)包括存储器(140)、一个或多个输入设备(150)、一个或多个输出设备(160),以及一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算环境(100)的组件互连在一起。通常,操作系统软件(未示出)为在计算环境(100)中执行的其他软件提供操作环境,并协调计算环境(100)的各组件的活动。

存储设备(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、CD-ROM、DVD,或能用于存储信息且可以在计算环境(100)内被访问的任何其他介质。存储设备(140)存储用于实现可缩放媒体递送的精细粒度的客户机侧控制的服务器侧和/或客户机侧功能的软件(180)的指令。

输入设备(150)可以是诸如键盘、鼠标、笔或轨迹球之类的触摸输入设备、语音输入设备、扫描设备、或向计算环境(100)提供输入的另一设备。对于音频或视频编码,输入设备(150)可以是声卡、视频卡、TV调谐器卡,或接受模拟或数字形式的音频或视频输入的类似的设备,或将音频或视频采样读取到计算环境(100)中的CD-ROM或CD-RW。输出设备(160)可以是显示器、打印机、扬声器、CD-写入器,或从计算环境(100)提供输出的另一设备。

通信连接(170)允许通过通信介质与另一个计算实体进行通信。通信介质在已调数据信号中传送诸如计算机可执行指令、音频或视频输入或输出之类的信息或其他数据。已调制数据信号是以在信号中编码信息的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括利用电气、光学、射频(RF)、红外线、声音或其他载体实现的有线或无线技术。

可以在计算机可读介质的一般上下文中来描述技术和工具。计算机可读介质是可以在计算环境内被访问的任何可用介质。作为示例而非限制,对于计算环境(100),计算机可读介质包括存储器(120)、存储设备(140)、通信介质,以及上面各项中的任何项的组合。

可以在诸如在目标实际或虚拟处理器上的计算环境中执行的诸如程序模块中所包括的那些计算机可执行指令之类的计算机可执行指令的一般上下文中来描述技术和工具。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等等。程序模块的功能可以按需在各个实施例中进行组合或在程序模块之间拆分。程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。

为了呈现起见,本详细描述使用了如“选择”和“重构”等术语来描述计算环境中的计算机操作。这些术语是对于由计算机执行的操作的高级抽象,不应该与人执行的动作相混淆。与这些术语相对应的实际计算机操作随着实现不同而不同。

II.网络环境

图2示出包括通过网络(230)来将媒体内容分发给多个媒体客户机(250、260、270)的服务器(210、220)的示例可缩放媒体递送系统(200)。网络(230)可以包括因特网或另一计算机网络。

媒体服务器(210)包括用于对诸如音频或视频之类的媒体进行编码的可缩放媒体编码器(212)。可缩放媒体编码器(212)将单独的媒体块编码为不同的质量/比特率层,这便于取决于不同层的数量的可为精细粒度或粗略粒度的可缩放性。可缩放媒体编码器(212)可以使用媒体的频谱系数的比特面编码来产生嵌入层。有了该嵌入层,媒体客户机对所需数量或范围的比特的请求导致在所需比特数处或恰好在所需比特数下的一组层的选择。或者,可缩放媒体编码器(212)使用另一编码方案。此外,虽然图2示出可缩放媒体编码器(212)和服务器侧控制器(214)一起在媒体服务器(210)中,可替换地,媒体服务器(210)从媒体服务器(210)外部的可缩放媒体编码器接收已编码媒体内容。

媒体服务器(210)用媒体的每一块的可缩放层的形式来存储已编码数据以及媒体的头部信息(例如,流头部)。另外,媒体服务器(210)存储各块中的每一个的速率-失真曲线信息。例如,速率-失真曲线信息包括给定块的每一可缩放层的质量(或失真)信息以及速率信息。或者,一组参数指示给定块的速率-失真曲线的形状。媒体服务器(210)可在不同文件中存储块的不同可缩放层,存储带有被组织成嵌入比特流的不同可缩放层的单个文件,或存储各自具有一个或多个不同可缩放层的至少一部分的嵌入比特流的多个文件。

服务器侧媒体控制器(214)管理与一个或多个媒体客户机(250、260、270)的连接。当给定媒体客户机请求媒体流时,服务器侧媒体控制器(214)将流的流头部连同媒体流中的部分或全部块的速率-失真曲线信息一起发送给媒体客户机。对于块,服务器侧媒体控制器(214)最后从媒体客户机接收指示块的速率-失真偏好的反馈。考虑块的速率-失真偏好,服务器侧控制器(214)选择该块的一个或多个可缩放层并将所选层发送给媒体客户机。例如,服务器侧控制器(214)选择共同满足或接近满足媒体客户机的速率-失真偏好的该块的可缩放层。一般而言,媒体服务器(210)和服务器侧媒体控制器(214)是“哑的”,因为它们用简单而直接的方式对来自客户机(250、260、270)的反馈作出反应。这帮助服务器(210)并发地管理与大量客户机的连接,并且这简化了适配现有服务器以协作媒体递送的精细粒度的客户机侧控制的任务。

在图2中,第二服务器(220)示出其中服务器(220)只是存储和提供媒体内容的各块的不同可缩放层的文件的Web服务器的示例实现。例如,分开的可缩放媒体编码器离线地对媒体内容进行编码。服务器(220)将给定块的不同可缩放层存储为不同的文件,或存储为带有被组织成嵌入比特流的不同可缩放层的单个文件,或存储为各自具有一个或多个不同可缩放层的至少一部分的嵌入比特流的多个文件。服务器(220)还存储流头部的程序描述信息以及媒体内容的各块的速率-失真曲线信息。在服务器(220)中,服务器侧控制器被实现为检索文件或文件范围来发送给媒体客户机(250、260、270)中的一个或多个的文件服务器(224)。客户机(250、260、270)中的一个请求头部文件(例如,包括程序描述信息和速率-失真曲线信息),服务器(220)简单地将该头部文件提供给客户机。客户机随后请求与媒体内容的各块的可缩放层相对应的文件或文件范围,并且服务器(220)简单地将所请求的内容提供给客户机。

媒体客户机(250)包括客户机侧控制器(254)和用于对诸如音频或视频之类的媒体进行解码的可缩放媒体解码器(252)。在请求了媒体流之后,客户机侧控制器(254)接收流头部以及媒体流中的部分或全部块的速率-失真曲线信息。对于长的流或在捕捉之后短暂延迟递送的流,客户机侧控制器可以接收各块的子集的速率-失真曲线信息,稍后提供其他块的更多的曲线信息。

媒体客户机(250)具有在解码之前临时地存储媒体流的已编码数据的缓存。基于块的速率-失真信息以及诸如缓存充满度(可以是所需等待时间的函数,先前下载的块的比特率和回放率,以及网络状况)之类的准则和/或所估计的下载时间(作为速率和块的函数),客户机侧控制器(254)寻找该块的速率-失真偏好。例如,客户机侧控制器(254)寻找块的速率分配并请求块的比特数或比特范围。在某些实现中,客户机侧控制器(254)发送对于块的比特的字节范围请求GET。或者,客户机侧控制器发送对与块的速率-失真偏好相对应的特定文件和/或文件范围的请求。

可缩放媒体解码器(252)对被编码为不同质量/比特率层的媒体的各个块进行解码。可缩放媒体解码器(252)可以使用媒体的频谱系数的比特面解码。一般而言,响应于对块的所需比特数或比特范围的请求,可缩放媒体解码器(252)通过使用由客户机侧控制器(254)接收的层来重构块。或者,可缩放媒体解码器(252)使用另一解码方案。此外,虽然图2示出可缩放媒体解码器(252)和客户机侧控制器(254)一起在媒体客户机(250)中,但媒体客户机(250)另选地将已编码媒体内容输出给媒体客户机(250)外部的可缩放媒体解码器。

III.示例可缩放媒体组织和文件格式

结合可缩放媒体递送的精细粒度的客户机侧控制,可缩放媒体编码器和解码器可以将各种编码/解码技术和文件格式中的任一种用于已编码数据。本章节描述了示例文件格式和组织已编码媒体的方式。

编码器将媒体内容分成独立编码的各块。约束编码以避免块间依赖性便于随机存取功能,因为解码可以在任意给定块开始。例如,对于视频,块可以是包括帧内编码图片然后是帧间编码图像的封闭图片组(“GOP”),在GOP外部的图片之间不存在依赖性。对于音频,在许多编码方法中,音频样本的各帧缺少帧间依赖性,并且块是某一整数个的帧。在随机存取之后,在查找位置对初始帧的开始处的样本的诸如重叠-加操作之类的操作被忽略。一般而言,将媒体内容划分成独立的块取决于实现。不同类型的媒体块不必在块边界上同步。

或者,编码器约束块间的依赖性来允许块的最低比特率版本之间的依赖性。允许块间的依赖性可以促进较高的压缩效率,以随机存取功能为某些代价。例如,在查找位置开始回放时,客户机下载和重构查找位置处的块所依赖于的先前的块。

一旦将内容分成各个块,编码器用多个比特率(并因此多个质量水平)对各块进行编码。假定恒定的传输速率,已编码媒体的块的比特率与块的文件大小相对应。为了改进客户机侧速率控制的灵活性,服务器增加了可用比特率(和质量水平)的数量。在某些实现中,编码器使用来自可缩放媒体编码的输出的嵌入比特流来实现精细粒度的可缩放性。比特流截断通过选择比特率/质量水平点来设置块的相应系数的量化水平。本质上,调节系数的量化允许客户机控制客户机请求的系数的速率-失真性能。然而,它不允许客户机控制更复杂的编码设置。通常,这不显著破坏质量,只要比特率范围不是非常大,此时编码器可以用其他方式在不同质量/速率极端处使用不同设置。或者,除了比特面编码或者与比特面编码组合,媒体编码沿空间、时间、色彩空间和/或采样深度维度来使用可缩放编码。

可缩放性的粒度取决于实现。理论上,粒度可以与比特级粒度一样精细。实际上,对于给定块,使用基层和所需数量的残留层通常向客户机提供可接受数量的比特率/质量水平点,只要对不同块的不同比特率/质量水平的任意选择得到有效的比特流。

图3示出媒体内容的已编码块的文件(300)的示例文件格式。文件(300)的组织帮助服务器用不同的速率/指令水平将媒体内容递送给不同的客户机。对于有关某些实现中的文件格式的附加细节,参见2008年5月12日提交的题为“Optimized Client Side Rate Control and Indexed File Layout for StreamingMedia(用于流化媒体的优化的客户机侧速率控制和索引的文件布局)”的第12/119,364号美国专利,该专利的公开内容通过引用结合于此。或者,服务器使用另一格式的文件用于媒体数据的已编码块。

文件(300)具有包括关于媒体内容的完整流的参数的程序描述域(310)。这些参数可以包括关于流的元数据以及关于编码/解码设置的信息。

文件(300)还包括流的文件级索引(320)。索引(320)存储流中的媒体内容的各块的速率-失真曲线信息。例如,索引(320)存储对块可用的比特率/质量水平的数量以及每一层的大小信息和质量信息,这些信息指示块的速率-失真曲线上的点。或者,更一般地,索引(320)存储用某一其他方式参数化,例如,作为参数表示的块的速率-失真曲线信息。

图3示出文件(300)中m个块的数据。块0的索引(330)引用块0的媒体数据文件(340),块1的索引(331)引用块1的媒体数据文件(341),以此类推。图3示出块0的媒体数据文件(340)的详细内容,它包括公用数据域(350)和带有可以具有可变大小的n个不同比特率/质量水平的数据的层数据域(352)。公用数据域(350)包括编码/解码参数和回放块时总是使用的其他信息。层数据域(352)包括基层0(360)和从对块进行可缩放媒体编码成可以具有可变大小的n个层中得到的n-1个残留层(361、362、369)。例如,n-1个残留层(361、362、369)存储从嵌入比特流中拆分中的已编码频谱系数数据。在某些实现中,层(360...369)中的每一个将一个或多个不同可缩放层的至少一部分存储为嵌入比特流。

为了回放流,客户机请求和接收流的程序描述域(310)和文件级索引(320)。对于每一块,客户机请求和接收公用数据(350),并且考虑适用于块的文件级索引(320)信息,从块的层数据域(352)中请求(例如,通过使用字节范围请求)和接收零个或多个层(或其范围)。通常,层数据域(352)使用块的大部分比特率,并且客户机通过选择要请求多少层数据域(352)来选择用于块的回放的速率/质量点。

根据图3所示的文件(300)的文件格式,可缩放媒体编码器产生被分为块的层数据域(352)的n个可缩放层,其中文件级索引(320)存储指示块的相应的n个可缩放层的大小和失真的信息。客户机可以使用字节范围请求或其他机制来得到所需数量的层。或者,可缩放媒体编码器产生其中每一比特(或字节)可以被认为是单个层并且比特(或字节)数量是固定大小的层的数量的嵌入比特流。在这种情况下,服务器不必存储或发送层的大小信息,因为客户机只从层数据域(352)请求所需比特(或字节)数。媒体递送的精细粒度的客户机侧控制的某些示例实现因此结合媒体的比特面编码来工作,该比特面编码提供了非常精细粒度的可缩放性,例如,因为变换系数被组织成用于在任意速率-失真点处的灵活划分。

IV.理论和示例

本章节中的简化示例示出速率-失真优化和用于可缩放媒体的流的其他优化的原理。

A.速率-失真优化

如果层具有固定大小(例如,每层整数N个字节)并且总比特预算是该固定大小的整数倍(例如,客户机的解码器缓存的整数ZxN个字节),则客户机可以使用速率-失真技术来寻找最优速率分配。(一般而言,如此处所使用的,术语“最优”描述了根据某一参数化或建模,比其它解决方案更好满足某组准则的解决方案,该解决方案取决于环境在绝对方面可以是也可以不是最优的,而术语“优化”用于指示找到这一解决方案的过程。)

流包括M个块。第i个块的失真Di是速率的函数,如Di[Ri]给出的,其中Ri是第i个块的速率(用于第i个块的比特数)。在回放第i个块的同时通过服务器和客户机之间的信道下载的比特计数是Bi,其中比特计数对于不同的块可以随时间改变。B-1是初始缓存充满度直,并假定R-1为零。

客户机应用约束使解码器缓存从不饿死(遭受下溢)。换言之,假定最小的网络连接,当客户机准备解码和回放媒体块时,解码器缓存总是包括媒体块的已编码数据。客户机还可以施加约束使解码器缓存从不溢出,或者可以假定关于解码器缓存的存储空间的无限可用性并忽略溢出阻止约束。为了阻止缓存在回放第i个块时下溢,客户机检查约束:

并且客户机为直到i的段中的所有块检查该缓存下溢阻止约束。因此,对于块0,客户机检查约束R0≤B-1,它意味着用于块0的比特必须少于初始缓存充满度,或者,换言之,用于块0的比特必须少于在初始启动延时期间下载的比特数。对于块1,客户机检查约束R0+R1≤B-1+B0,它意味着用于块0和块1的比特必须少于在初始延时和块0的回放期间下载的比特数,以便使块1的回放准时开始。对于块2,客户机检查约束R0+R1+R2≤B-1+B0+B1,以此类推。

客户机为媒体流的M个块寻找一组速率从而服从满足全部M个块的缓存下溢阻止约束,总体失真D被最小化:

较简单的问题是给定作为M个块的最后一个的缓存下溢阻止约束累计BM-1,寻找速率分配。这一较简单的问题的解决方法可以使用拉格朗日乘子来建模并且等价于最小化:

J=Σi=0M-1(Di[Ri]+λRi).

客户机寻找满足缓存下溢阻止约束累计BM-1的λ。对速率部分求导,并将结果设为零来寻找拐点,得到假设速率到导数的映射。通过代入,于是最优速率分配是di[Ri]=-λ。在应用将导数映射到速率的逆函数之后,则为了寻找同时还满足M个块的最后一个的缓存下溢阻止约束累计BM-1的M个块的一组速率Ri(其中i=0...M-1),客户机寻找λ从而使得:

则,对于段中从0到M-1的任意给定块i,最优速率由给出。

因子λ指示M个块的速率失真曲线上的斜率。当将相同的因子λ应用于全部M个块时,对于各块中的每一个,在该块的曲线上的相同斜率处选择速率-失真点,考虑到曲线的凸形,该点是最优的。如果要通过将比特从第一块转移到第二块来重新分配比特,则第一块的失真的增加(由于向上移动到曲线的更陡峭的部分)将超过第二块的失真的减少(由于向下移动到曲线较不陡峭的部分)。对于给定的总体缓存下溢阻止约束,客户机进而将斜率设为在各个块的曲线上的各块的累计速率满足总体约束的点处相同。

如果满足缓存下溢阻止约束累计BM-1的最优速率分配还满足段中的每一个其他块i的累计Bi,则客户机已经找到了M个块的可接受的一组速率。然而,如果对于至少一个块违反了缓存下溢阻止约束,则客户机从违反约束的部分中移除比特并将它们重新分配到各块的其余部分。例如,假设客户机检查满足总体约束累计BM-1的速率分配以及满足约束累计Bk的速率分配,其中k<M。客户机寻找在i=M-1时满足缓存下溢阻止约束的权重参数λ的值:

但对于当i=k时违反约束的这一λ的值。

可能存在违反缓存下溢约束的多个k值,在这种情况下客户机首先聚焦于具有违反约束的最低k值的块。客户机进而分别为i=0,...,k和i=k+1,...,M-1的范围寻找不同的因子λ1和λ2,以使得:

并且

则,对于0,...,k之间的任何块i,客户机分配由给出的速率,并且对于k+1,...,M-1之间的任何块i,客户机分配由给出的速率。另一方面,通过将块k+1到M-1的比特转移到块0到k来重新分配比特将违反块0到k中的一个或多个的缓存下溢阻止约束。如果存在满足k+1,...,M-1之间的任何块i的其他约束,则客户机递归地拆分范围直到满足全部M个块的约束。

例如,假设客户机寻找同时满足总体段约束R0+R1+R2+R3+R4≤B-1+B0+B1+B2+B3的五个块的段的速率。对于那些速率,满足前两个块的约束R0≤B-1和R0+R1≤B-1+B0,但违反了第三个块的约束:R0+R1+R2≤B-1+B0+B1。客户机因此寻找满足约束R0+R1+R2≤B-1+B0+B1的前三个块的子段的速率(以较低的比特率/较高的失真)。(因为分配到前三个块的累计速率各自被减少了,所以仍然满足约束R0≤B-1和R0+R1≤B-1+B0。)客户机随后寻找满足约束R3≤B2和R3+R4≤B2+B3的后两个块的另一子段的速率。如果违反了第二子段中的任何约束,则客户机递归地应用同一过程来拆分第二子段并为所得新的子段寻找速率。

B.下载时间失真优化

代替聚焦于速率和缓存充满度水平,客户机可以改为考虑各块的可缩放层的估计的下载时间(取决于各块的速率和网络特性)以及各块的回放持续时间和客户机回放偏好。客户机选择在给定各块的回放持续时间的情况下其估计的下载时间允许及时回放、同时还最小化失真的那些可缩放层。因此,服务器可以存储媒体的各块的可缩放层的一组速率-失真信息,不同的客户机使用该速率-失真信息来定制其对于作为考虑网络状况和各自客户机的回放偏好的下载时间的函数的失真的确定。

在某些实现中,客户机假定对于给定块的所估计的下载时间是速率的线性函数(例如,假定在下载块的已编码数据的同时具有恒定的网络带宽,假定速率的变化不影响网络带宽),从而使得作为下载时间的函数的失真图是凸的。即使给定块的所估计的下载时间不是速率的线性函数,但只要作为下载时间的函数的失真图是凸的,客户机就可以使用以下优化方法。

图4示出可缩放媒体的不同块的失真-下载时间曲线(410、420、430、440)的图(400)。各个曲线是分段线性的且是凸的。曲线中的每一个由多个点来参数化,其中每一点定义块i的可能失真和下载时间。例如,块0的曲线(410)包括表示该块的不同可缩放层的已编码数据的八个点(411到418)。第一个点(411)指示只下载该块的层0时的失真和下载时间,第四个点(414)指示在下载该块的层0、1、2和3时的失真和下载时间,并依次类推。不同的曲线(410、420、430、440)由于各个块的不同速率-失真属性(例如,不同的复杂性)会具有不同的形状。一般而言,越复杂的块在给定速率具有越高的失真。

在决定要请求哪些可缩放层时,客户机约束流的各个块的所估计的下载时间从而使得当来到要回放该块的时间时各个块中的每一个可用于解码和回放。客户机可以在开始回放之前缓存至少某些块的已编码数据。初始延时T-1指示当客户机在回放开始之前下载内容的启动等待时间。第一个块的下载时间S0应该少于或等于初始延时,从而使得在回放开始时第一个块的已编码数据可用:S0≤T-1。例如,如果初始延时是5秒,则第一个块的下载时间应该少于5秒。前两个块的下载时间S0+S1应该少于或等于初始延时加上第一个块的回放持续时间:S0+S1≤T-1+T0。即,当客户机准备回放第二个块时,第二个块的已编码数据应该可用于解码。类似地,对于第三个块的回放时间约束为:S0+S1+S2≤T-1+T0+T1

各块的持续时间的累计值指示流中接下来的块的“时间戳”。时间戳信息常常用比特流来发信号。例如,指示第i个块的时间戳(不计算初始延时),并且时间戳值可以被存储在第i个块的分组头部中。对于各个块,回放时间约束可以被建模为:

其中T-1指示初始延时,并且其中客户机检查每一块i=0,1,...,M-1的约束。累计Ti因此指示对于块i的时间戳加上初始延时。

对于已编码媒体内容的第i个块,客户机得到指示不同速率的不同失真水平的信息Di[Ri],并且客户机还具有指示作为第i个块的速率的函数的估计的下载时间的信息(考虑网络连接特性):Si=fi[Ri]。另外,客户机得到指示第i个块的回放持续时间的信息Ti。从该信息中,客户机确定作为第i个块的下载时间的函数的失真:Dsi[Si]=Dsi[fi[Ri]]。或者,客户机直接接收指示作为下载时间的函数的失真的信息。

服从回放时间约束,客户机寻找最小化总体失真D的一组估计的下载时间Si

客户机可以使用拉格朗日乘子来对寻找一组下载时间的问题进行建模。

J=Σi=0M-1(Dsi[Si]+λSi).

对估计的下载时间进行部分求导,并将结果设为零来寻找拐点,得到假设下载时间到导数的映射。通过代入,于是最优速率分配是:dsi[Si]=-λ。在应用将导数映射到下载时间的逆函数之后,则一般而言,为了寻找同时还满足M个块的最后一个的总体回放时间的M个块的一组下载时间Si(其中i=0...M-1),客户机寻找权重参数λ从而使得:

换言之,对于M个块的整个段,客户机计算下载时间的分配来满足约束:累计SM-1=累计TM-1。如果违反了M个块中的任一个的回放时间约束,则客户机将各块拆分成不同的子段并对各个子段重复该过程。在找到可接受的一组下载时间之后,客户机从下载时间中寻找速率分配。对于第i个块,速率客户机随后可以使用Ri来请求块的版本。

例如,当客户机迭代地为段或者为段中的子段分配下载时间时,客户机使用变量开始和结束来分别跟踪开始和结束块。为了寻找服从约束累计S结束-累计S开始-1≤累计T结束-累计T开始-1的一组下载时间,客户机搜索λ的值从而使得:

客户机随后将段中的每一块的下载时间分配Si设为其中i=开始,...,结束。

最初,开始=0并且结束=M-1。客户机寻找满足约束累计SM-1≤累计TM-1的下载时间,随后检查从开始到结束的所有其他的i值是否满足约束累计Si≤累计Ti。如果满足,则客户机使用该组下载时间。否则,客户机寻找违反回放时间约束的第一个块的索引k。

k=最小值(i|累计Si>累计Ti)。客户机随后分别为块开始,...,k的段和块k+1,...,结束的段计算下载时间。对于块开始,...,k的段,客户机计算下载时间来满足约束:累计Sk-累计S开始-1≤累计Tk-累计T开始-1。(因为下载时间跨块开始,...,k中的每一个减少,所以仍然满足块开始,...,k-1的回放时间约束。)对于块k+1,...,结束的段,客户机计算下载时间来满足约束:累计S结束-1-累计Sk≤累计T结束-1-累计Tk。如果合适,则客户机进一步拆分块k+1,...,结束的段直到满足各段的回放时间约束。因为k的值随着满足段中的回放时间约束而增加(即,违反其回放时间约束的第一个块(如果存在)的索引保持增加),最终找到全部块的下载时间。

例如,表1示出十个块i=0,...,9的回放持续时间Ti以及十个块的累计回放持续时间值(示为C_Ti)。初始延时T-1=5,而最后一个块开始时的累计回放持续时间C_T9(包括初始延时)是17秒。Si值的第一列示出当检查十个块的整个段的回放时间约束时的下载时间,而C_Si值的第一列示出累计下载时间。

  i  Ti  C_Ti  Si  C_Si  好?  Si  C_Si  好?  Si  C_Si  好?  -1  5  0  0  0  0  1  5  1.5  1.5  是  1.4  1.4  是  1  2  6  3.3  4.8  是  3.1  4.5  是  2  1  8  0.9  5.7  是  0.8  5.3  是  3  1  9  1.4  7.1  是  1.2  6.5  是  4  1  10  1.3  8.4  是  1.2  7.7  是  5  3  11  3.5  11.9  否  3.3  11  是  6  1  14  1.2  13.1  1.4  12.4  是  7  1  15  0.5  13.6  0.7  13.1  是  8  1  16  0.8  14.4  1.0  14.1  是  9  4  17  2.6  17.0  是  2.9  17.0  是

表1:示例下载时间和回放持续时间。

对于该组Si值,当i=5时违反回放时间约束,在该点处块i=0,...,5的已编码数据的累计回放持续时间C_T5是(当i=5的块开始回放时)11秒但累计下载时间C_S5是11.9秒。客户机因此将段拆分成块i=0,...,5的第一子段和i=6,...,9的第二子段。对于第一子段,客户机寻找服从约束C_S5-C_S-1≤C_T5-C_T-1的修订的下载时间。对于第二子段,客户机寻找服从约束C_S9-C_S5≤C_T9-C_T5的修订的下载时间。

或者,客户机使用另一种方法来确定将多少比特用于媒体内容的各块。

V.用于提供以便精细粒度的客户机侧控制的媒体的一般化技术

图5示出用于提供带有对如何递送媒体的精细粒度的客户机侧控制的多个媒体块的一般化技术(500)。诸如图2的媒体服务器(210)、图2的Web服务器(220)之类的服务器或其他服务器执行该技术(500)。

多个块中的每一个被编码为不同质量水平的多个可缩放层。一般而言,多个块被这样组织以使得在回放期间可以为任意块选择任意组层。例如,在不依赖于任何其他块的情况下对多个块中的每一个进行编码。或者,最多依赖于另一块的基层来对多个块中的每一个进行编码。在某些实现中,媒体被编码为嵌入比特流中的比特面。更一般地,媒体块被编码为基层和多个残留层,该多个残留层可以沿可缩放性的单个维度或可缩放性的多个维度与基层组合,其中所使用的残留层的数量为块设置速率-失真点。

服务器存储多个块的曲线信息。例如,服务器存储指示块的多个速率-失真点的信息。或者,服务器存储指示块的速率-失真曲线的总体形状的形状参数。一般地,服务器可以离线地为先前编码的媒体确定曲线信息,并且存储曲线信息和已编码媒体以便递送到各客户机。或者,服务器可以在对媒体进行编码时确定曲线信息,随后存储曲线信息(至少临时地)以便与已编码数据一起递送。

参考图5,服务器发送(510)媒体数据的多个块的曲线信息。服务器可以将曲线信息发送给单个客户机或多个客户机。客户机使用该曲线信息来确定被编码为可缩放层的媒体的速率-失真偏好。例如,客户机使用该曲线信息来确定各块的失真-下载时间特性,然后使用失真-下载时间特性来确定多个块的速率-失真偏好。或者,代替发送指示速率-失真值的曲线信息,服务器改为发送指示失真-下载时间特性的曲线信息。

对于多个块中的每一个,服务器从客户机接收(520)指示速率-失真偏好的反馈。例如,服务器接收对块的比特数或比特范围的请求。或者,用某一其他方法来参数化速率-失真偏好。通过使用块的速率-失真偏好,服务器选择(530)块的一个或多个可缩放层并将所选可缩放层发送(540)给客户机。例如,服务器选择块中共同提供尽可能接近速率-失真偏好但不超过它的速率的一组可缩放层。服务器随后检查(550)是用同一客户机的块还是另一客户机的块来继续。

虽然图5示出与可缩放媒体递送有关的诸如“发送曲线信息”和“选择可缩放层”之类的操作,但在示例实现中,Web服务器响应于来自媒体客户机的请求执行诸如文件检索和文件操纵操作之类的操作。或者,被特别适配于与媒体客户机交互以便对媒体递送的精细粒度的客户机侧控制的媒体服务器执行这些操作。

VI.用于媒体递送的精细粒度的客户机侧控制的一般化技术

图6示出用于对如何递送多个媒体块的精细粒度的客户机侧控制的一般化技术(600)。一般而言,多个块被组织和编码为参考图5所述的多个可缩放层。诸如图2的媒体客户机(250)之类的客户机或其他客户机执行该技术(600)。

客户机接收(610)多个块的曲线信息。曲线信息可以包括块的多个速率-失真点。或者,曲线信息包括指示块的速率-失真曲线的总体形状的形状参数,或者指示多个块的失真-下载时间特性而非指示速率-失真值。

对于多个块中的每一个,客户机使用所接收的曲线信息中的至少某些来确定(620)块的速率-失真偏好。例如,客户机通过(a)如章节IV.B所解释的寻找满足多个块的回放时间约束的一组下载时间,然后(b)使用下载时间来设置多个块的速率来确定多个块中的每一个的比特数或比特范围。图7示出用于以此方式来确定速率-失真偏好的示例技术(700)。或者,客户机使用另一种方法来确定各块的速率-失真偏好。客户机将块的速率-失真偏好发送(630)给服务器,服务器至少部分地基于速率-失真偏好来选择一个或多个可缩放层。客户机随后接收(640)块的一个或多个可缩放层以供解码和回放。客户机随后检查(650)是否对另一块继续。

图7示出用于确定段的各块的速率-失真偏好的示例技术(700)。诸如图2的媒体客户机(250)之类的客户机或其他客户机执行该技术(700)。一般而言,技术(700)示出如章节IV.B所述的失真-下载时间优化的一种方法。

客户机确定(710)一个或多个块的段的一个或多个回放时间约束。例如,客户机接收一个或多个块的回放持续时间信息,并使用回放持续时间信息和初始回放延时值来为一个或多个块中的每一个设置累计回放时间持续时间。

客户机随后分别确定(720)最小化一个或多个块的总体失真、同时还满足段的总体回放时间约束的一个或多个下载时间。例如,对于一个或多个块中的每一个,客户机使用曲线信息来确定作为块的不同可缩放层的下载时间的函数的失真。客户机随后使用失真-下载时间信息来为一个或多个块中的每一个选择下载时间从而使得在累计地考虑时,下载时间满足段的总体回放时间约束。在选择下载时间时,客户机可以设置权重参数从而使得段中的各块的累计下载时间匹配段的总体回放时间约束,并且各块的所选下载时间具有各个块的失真-下载时间曲线上的同一斜率。

客户机根据客户机考虑总体回放时间约束所确定的一组下载时间来检查(730)是否违反了段中的一个或多个块的中间回放时间约束。如果没有,则客户机使用块的下载时间来确定(740)段中的一个或多个块中的每一个的速率,并且技术结束。

否则,如果违反了中间回放时间约束,则客户机将段拆分(750)成多个子段并递归地确定(760)各个子段的速率-失真偏好。例如,客户机将第一子段设为在段的第一块处开始并在第一个违反中间回放时间约束的块处结束,然后对第一子段重复技术(700)。(确定第一子段中的各块的速率-失真偏好应该不需要对第一子段的进一步拆分,因为减小了第一子段中的每一个块的速率并且仍然满足中间回放时间约束。)客户机对包括段的其余各块的第二子段重复技术(700)。(确定第二子段中的各块的速率-失真偏好可能需要对第二子段的进一步拆分。)客户机检查(770)是否要对任何更多的子段重复技术(700),如果否,则技术结束。

已经参考各实施例描述和示出了本发明的原理,应认识到,在不偏离这些原理的情况下可以在安排和细节方面修改各实施例。应该理解,此处所描述的程序、进程或方法未涉及或仅限于任何特定类型的计算环境,除非另外特别声明。根据此处所描述的原理,可以使用各种类型的的通用或专门的计算环境,或执行操作。可以以硬件实现以软件示出的实施例的元件,反之亦然。

鉴于可应用本发明的原理的许多可的实施例,要求保护落入所附权利要求书及其等效技术方案的范围和精神之内的所有这样的实施例作为本发明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号