增量式更新和格式化HD-DVD标记
背景
高清晰度数字多功能盘(HD-DVD)媒体和相关播放器正变得更加流行并被广泛使用。随着更多制造商进入这一市场,竞争增加了,这往往驱动价格下降。在该定价环境中,在HD-DVD播放器中运行的软件通常在相对不贵的消费者硬件上运行。
将HD-DVD内容和样式标记变换成供显示的有形形式在计算上是昂贵的。通常,对于可接受的用户体验而言,HD-DVD标记的呈现速率的合理目标是大约24帧每秒。用于变换和呈现HD-DVD标记的常规技术由于在每一时钟脉冲在低成本消费者硬件上执行格式化所有相关HD-DVD内容和样式标记的计算上昂贵的任务,而在尝试达到这一呈现速率目标时可能面对困难。
概述
此处描述了用于增量式更新和格式化高清晰度数字多功能盘(HD-DVD)标记的系统、方法和/或技术(“工具”)。该工具可以接收表示要从HD-DVD读取的第一景物描述的第一标记,并可以将该第一标记映射到第一区域合成中以向用户演示。该工具随后可以接收表示要从HD-DVD读取的第二景物描述的第二标记。响应于接收到第二标记,该工具可以将第一景物描述的一部分增量式重新映射到第二区域合成中以向用户演示。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。例如,术语“工具”可以指上述上下文和通篇文档所准许的系统、方法、计算机可读指令、和/或技术。
附图简述
涉及增量式更新和格式化HD-DVD标记的工具结合以下附图来描述。贯穿本公开和各附图,使用相同的标号来引用相同的组件和特征。参考标号的第一位指示其中引入该参考标号的附图。
图1是示出用于增量式更新和格式化HD-DVD标记的操作环境的框图。
图2是示出HD-DVD变换组件的附加方面的框图。
图3是示出景物描述中随时间发生的状态转换的框图。
图4是示出在文档对象模型(DOM)的状态的转换,并示出格式化器组件可如何增量式重新映射DOM状态的框图,其中这些转换响应于时钟脉冲随时间发生。
图5是示出用于增量式更新和格式化HD-DVD标记的过程的流程图。
图6是示出HD-DVD样式数据被组织成各个层的安排的框图。
图7是示出改变通知消息的附加方面的框图。
图8是示出可作为对改变通知消息的反应来执行的过程的流程图。
图9是示出用于响应于时钟信号来执行按帧格式化的过程的流程图。
图10是示出用于遍历标记树的父和子节点的过程的流程图。
详细描述
概览
下文描述能够执行和/或支持多个技术和过程的工具。以下讨论描述该工具增量式更新和格式化高清晰度数字多功能盘(HD-DVD)标记的示例性方式。该讨论还描述该工具可以执行的其它技术和/或过程。
出于上述将HD-DVD内容和样式标记格式化成有形形式的目的,术语“状态”可指的是HD-DVD规范所定义的状态和/或样式中的任一个,且术语“状态转换”指的是任何HD-DVD状态或样式的值的任何改变。
图1示出用于增量式更新和格式化HD-DVD标记的操作环境100。操作环境100可以使一个或多个用户102能够回放一个或多个HD-DVD盘104,如虚线106所概括地表示的。
这些HD-DVD盘104可包括一个或多个机器可读组件。这些组件可包括例如内容标记部分108,其可包括定义结构化元素树的XML词汇。这些元素可指定在回放HD-DVD盘时可呈现给用户的视觉或音频内容。
DVD盘104还可包括样式标记部分110,其可包括描述包括在内容标记部分108中的元素在被呈现给用户时如何出现的XML词汇。换言之,内容标记部分可以指定向用户呈现什么元素;样式标记部分可以指定如何向用户呈现这些元素。
以下呈现的表1示出HD-DVD内容标记元素树。
表1
DVD盘104还可包括定时标记部分112,其可包括指定随时间的一个或多个样式标记改变的XML词汇。
内容标记部分、样式标记部分和定时标记部分可以用声明性程序设计语言来实现。然而,脚本部分114可以用造成样式标记的随时间的非确定性改变的命令性程序设计词汇来实现。
操作环境100可允许用户102将HD-DVD盘104插入HD-DVD播放器116以供回放,如连接盘104和播放器116的虚线所示。HD-DVD播放器116可以是包括在118处表示的一个或多个处理器的基于计算机的系统。这些处理器还可被分类或表征为具有给定类型或架构,但可以具有或不具有同一类型或架构。
HD-DVD播放器还可以包括概括在120处表示的机器可读或计算机可读存储介质的一个或多个实例。计算机可读介质120可包含各个指令,该指令在由处理器118执行时执行此处被描述为由HD-DVD播放器来执行的工具或相关功能中的任一个。处理器可以访问和/或执行嵌入或编码在计算机可读介质上的指令,和/或可以访问存储在计算机可读介质中的数据。
更详细地转向计算机可读介质120,其可包括HD-DVD变换组件122的一个或多个实例。HD-DVD变换组件122可包括例如一个或多个软件模块,该软件模块在被加载到处理器并被执行时,使得HD-DVD播放器增量式更新和格式化HD-DVD标记以向用户呈现。
图1概括地在124处表示呈现给用户的标记的输出。为便于描述,但不限制可能的实现,图1包括所呈现的标记可包含的元素的若干示例。如上所述,内容标记部分108可以指定这些元素中的至少一些,这些元素可包括一个或多个几何图元126。几何图元126的示例可包括被用来构建菜单框、图形元素或用户界面的其它特征的元素。
所呈现的输出124可包括一个或多个文本元素,概括在128处表示。这些文本元素128的示例可包括在所呈现的输出124中呈现给用户的标签、描述、或其它字母数字或基于字符的信息。
所呈现的输出124可包括图像和/或视频元素的一个或多个实例,概括在130处表示。这些图像或视频元素可以作为用户界面设备的一部分(例如菜单框等)来包括,或可以提供作为HD-DVD盘的娱乐部分(例如电影、体育赛事等)来包括的主内容。
所呈现的输出124可包括音频元素的一个或多个实例,概括在132处表示。这些音频元素可以单独地或结合诸如图像/视频元素130等其它元素来呈现。
HD-DVD播放器116可以与演示设备134协作来向用户102提供所呈现的输出124,如虚线136所示。图1示出虚线136本质上是双向的,以不仅表示向用户呈现的输出124,而且还表示用户所提供的的任何响应或输入。
演示设备134可包括用于以可视形式向用户提供所呈现的输出的显示演示设备138。显示演示设备138的示例可包括用任何合适的显示技术实现的电视机、监视器、显示器等。
演示设备134可包括用于以可听形式向用户提供所呈现的输出的音频演示设备140。音频演示设备140的示例可包括用任何合适的音频技术实现的、用于将电信号转换成声波以供人耳接收的扬声器或类似设备。
图1将演示设备134和HD-DVD播放器116作为分开的块来示出,只是为了方便描述和说明而不限制可能的实现。更具体地,演示设备和HD-DVD播放器可以作为独立的或集成的组件来实现。以类似方式,显示演示设备138和音频演示设备140可以作为与演示设备134分开的独立组件或与其集成的组件来实现。
已经用图1描述了操作环境100,讨论现在前进至现在用图2呈现的、HD-DVD变换组件122的更详细的描述。
图2示出HD-DVD变换组件122的附加方面200。出于方便而非限制,先前描述的一些元素被转入图2中并由相同的参考标号来表示。
作为整体来看,内容标记108、样式标记110和定时标记112定义文档对象模型(DOM)202。DOM 202可使用XML词汇来实现为树数据结构。DOM 202可包括多个单独的标记元素,概括在图2的204处表示。以上表1描绘了各组合法的父-子元素组合,提供了DOM状态202的具体示例。
图2在204a和204n处示出标记元素的两个示例。然而,DOM的实现可包括任意数量的元素204,并且DOM树可以采取任何合适的形式。脚本114可以是以非确定性的方式改变DOM的命令性程序设计语言。
这些标记元素可以定义在屏幕上向用户呈现的事物的景物描述。图2概括地在206处表示该景物描述。尽管景物描述206可以指定在屏幕上向用户呈现什么,但景物描述本身以HD-DVD规范(如DVD论坛指导委员会所公布的)所定义的形式来表达,而非以可以直接在屏幕上表现或显示的形式来表达。将景物描述转换成适于在屏幕上显示的形式的过程在此被称为格式化。为执行该功能,HD-DVD变换组件122可包括HD-DVD格式化器组件208,其可以包括用于将景物描述格式化成适于在屏幕上显示的形式的软件指令。
HD-DVD格式化器组件208将景物描述语言206转换或映射成适于在屏幕上呈现给用户的经变换的内容和样式标记。图2概括地在210处表示经变换的内容和样式标记。该经变换的标记210是对于HD-DVD呈现组件212的输入,该组件包括用于将经变换的内容和样式标记译成最终所呈现的输出形式(例如124)的软件指令。该所呈现的输出适于经由例如演示设备134来演示给用户,并考虑了演示设备134所专用的任何特殊性。
在用图2更详细地描述了HD-DVD变换组件122之后,现在讨论前进至现在用图3呈现的、关于HD-DVD格式化器组件208可随时间处理景物描述的更详细的描述。
图3示出景物描述中的随时间发生的状态转换300。出于方便而非限制,先前描述的一些元素转入图3中并由相同的参考标号来表示。
如图3所示,在206a处表示的处于给定初始状态的景物描述由在202a处表示的处于初始状态的对应的DOM来表示。HD-DVD格式化器208将DOM状态202a映射到概括在图3的302处表示的区域合成结构。更具体地,对应于DOM状态202a的区域合成状态在302a处表示,而映射过程在304处表示。
区域合成302可被实现为指示可以如何将DOM中所指定的各元素在屏幕上呈现给用户的树结构。因此,区域合成302可包含任意数量的元素306a和306n(统称元素306)。尽管DOM可以用HD-DVD的作者选择的标记语言来指定,但区域合成是按照在其上显示该HD-DVD内容的设备的能力来表达的。HD-DVD呈现组件212可以基于区域合成302a的内容来生成所呈现的输出124a。
一个DOM节点可以产生多个区域节点,如在描述段落的DOM节点产生多行文本时,其中整个段落产生一个区域(例如,具有该段落的背景颜色),并且另外,每一行产生一个区域(例如具有该行上的某些文本和/或图像)。尽管一个区域一般反过来涉及一个DOM节点,但这可能并不总是如此。例如,考虑其中段落DOM节点完全由其自身且不用其它DOM节点来指定,并且产生各段落区域和行区域的情况。这些段落区域和行区域的每一个都将一般且具体地涉及该段落DOM节点,并且不涉及其它DOM节点。
然而,考虑其中父段落DOM节点定义背景颜色并且子段落DOM节点继承该颜色的情况。则该子段落DOM节点所产生的段落区域和各个行区域一般将涉及该子段落DOM节点。然而,严格来讲,这些段落区域和行区域还将受指定背景颜色的父段落DOM节点的影响并与其相关联。
图3示出在时钟脉冲或报时信号发生时HD-DVD格式化器208可如何随时间转换景物描述。时钟脉冲或报时信号概括地在308处表示。图3示出其中处于在206a处表示的给定状态的景物描述响应于时钟脉冲308而转换成在206n处表示的下一状态的情形。
在时钟脉冲308发生时,这向HD-DVD格式化器208提供景物描述206a已经将状态改变成206n的信号。如图3所示,新景物描述206n可以与在202n处表示的DOM的新状态相关联。图3在310处表示初始DOM状态202a和新DOM状态202n之间的任何改变。
格式化器208在响应于时钟脉冲308来更新区域合成302a时又可考虑这些改变310。更具体地,格式化器208可执行DOM 202n到在302n处表示的该区域合成的更新的状态的增量式重新映射。此处所使用的术语“增量式”指的是只重新映射新DOM状态202n相对于先前DOM状态202a而言已经改变的部分的概念,这与重新映射整个新DOM状态202n有区别。图3概括地在312处表示该增量式重新映射过程。
一旦区域合成302a被更新以得到区域合成302n,则HD-DVD呈现组件212可以产生更新的所呈现的输出124n。所呈现的输出124n反映景物描述中的由时钟脉冲308所触发的改变,如最终向用户表现的形式所呈现的。
在用图3更详细地描述HD-DVD格式化器组件208之后,现在讨论前进至现在用图4呈现的、格式化器组件208在DOM状态随时间转换时可增量式重新映射它们的各种方法的更详细的描述。
图4示出DOM状态的转换400,并且还示出格式化器组件208可如何增量式重新映射DOM状态,其中这些转换响应于时钟脉冲而随时间发生。出于方便而非限制,先前描述的一些元素转入图4中并由相同的参考标号来表示。
格式化器组件208接收表示给定的当前景物描述的数据(在206a处表示),并接收连续的时钟脉冲的指示(在308处表示)。响应于时钟脉冲308,当前景物描述206a转换成下一景物描述状态206n,而格式化器组件208接收下一景物描述状态206n的指示。
如图4所示,不同的景物描述状态与DOM的相应实例或状态相关联,如在202a、202b、202c和202n处所示。图4示出时间轴402,示例时钟脉冲308发生在离散的时间402a、402b、402c和402n处。
在DOM从状态202a转换成状态202b时,例如格式化器组件208可以确定DOM在各状态之间改变了多少。图4提供3个改变示例,分别在312a、312b和312c处表示。改变312a指示在从状态202a转换到202b时DOM中的改变,改变312b指示在从状态202b转换到202c时DOM中的改变,并且改变312c指示在从状态202c转换到202n时DOM中的改变。
格式化器组件208和/或HD-DVD播放器116的其它组件可以生成指示这些改变的范围和内容的消息。图4在404a、404b和404c处示出这些改变通知消息的3个示例(统称为改变通知消息404)。注意,此处的描述的实现可以支持任何数量的DOM状态的转换。
取决于改变通知消息404中所反映的特定一组改变的本质和范围,格式化器组件208可以使用不同的技术来增量式重新映射或重新格式化DOM状态以便得到更新的区域合成。图4示出3种技术。
在406处表示的第一情形中,格式化器组件208不执行因为改变310而引起的增量式工作。在该第一情形中,DOM状态的转换不导致任何增量式重新映射或重新格式化。何时可发生该第一情形的示例在下文中给出。
在408处表示的第二情形中,格式化器组件208使用“某些样式-所有元素”技术。在该第二技术中,格式化器组件评估DOM标记树所包含的所有元素,但只评估因为状态转换而改变的样式。
在410处表示的第三情形中,格式化器组件208使用“某些样式-单个元素”技术。在该第三技术中,格式化器组件评估标记树中的单个节点,并且在该单个节点中,只评估因为状态转换而被修改的那些样式。
在用图4描述了在DOM状态随时间转换时格式化器组件208可增量式重新映射它们的各种方法,讨论现在前进至现在用图5所呈现的、格式化器组件208可执行的过程流程的描述。
图5示出用于增量式更新和格式化HD-DVD标记的过程流程500。出于方便而非限制,先前描述的一些元素转入图5中并由相同的参考标号来表示。尽管过程流程500是结合诸如格式化器组件208等特定组件描述的,但应当注意,其它组件可以执行过程流程500的至少一部分而不背离本说明书的范围和精神。
图5示出DOM状态202a响应于时钟脉冲308转换成DOM状态202b。如上所述,DOM状态202可表示为包括多个元素的树结构。如图5所示,这些树中的元素可与相应的样式相关联,概括在502处表示。图5在502a、502b、502c处示出DOM状态202a中的这些样式的示例,并在502x、502y和502z处示出DOM状态202b中的样式的示例。在DOM状态202a转换成DOM状态时,这些样式502中的某一些(或可能没有)可能改变,如在改变通知消息404中所示。
此处所描述的工具可以响应于接收到改变通知消息404来执行过程流程500的至少一部分。在继续图5和此处所包括的其它流程图的描述之前,注意,在这些流程图中描绘的各框以所示顺序呈现仅是出于方便而非限制。这些过程流程的实现可以用任何方便的顺序执行这些框。
框504表示评估改变通知消息中所指示的格式化改变是否对应于相关样式。如果是,则过程流程500可以取“是”分支506到框508,其表示一起处理对应于相关样式的任何数据。
在多个改变通知一起传递的时候,样式可能是相关的并被一起处理。例如,改变通知消息(例如404)可包括改变A、改变B、改变C和改变D,其中改变B和C是相关的并可被一起处理。
在多个样式影响区域合成中的一个区域的同一部分时,样式也可能是相关的并被一起处理。例如,区域合成中的区域的一个部分是背景矩形,本质上是描述在何处绘制背景颜色和/或背景图像的边界框(x0,y0)-(x1,y1),如果该区域具有背景颜色或背景图像的话。许多样式可以影响该背景矩形,包括但不限于style(样式):anchor(锚)、style:x、style:y、style:position(位置)、style:inlineProgressionDimension(内联级数维度)、style:blockProgressionDimension(块级数维度)、style:writingMode(写模式)、style:width(宽度)、和style:height(高度)。因此,这些样式可被一次全部处理,因为最终计算区域中的背景矩形的计算将考虑这些样式的每一个。然而,尽管背景矩形的style:color(颜色)与该区域的边界框相关,但颜色不参与边界框的计算,并且颜色中的改变将与宽度、高度等的改变分开处理。
返回到框504,如果改变通知消息中所指示的格式化改变不对应于相关样式,则过程流程500可取“否”分支到评估框512。
评估框512表示确定过去的格式化结果是否可用,并且如果可用,则这些过去的结果对于DOM状态202b而言是否仍然正确。如果是,则过程流程500可取“是”分支514到框516,其表示在由时钟脉冲308所触发的当前重新格式化操作中使用这些过去的格式化结果。
从评估框512,如果评估结果是否定的,则该过程流程取“否”分支518到评估框520,其表示时钟脉冲所触发的任何样式改变影响DOM中的所有元素还是只影响DOM中的元素的子集。如果确定样式改变只影响这些元素的子集,则过程流程500可取“是”分支522到框524,其表示处理DOM中的元素的受影响的有用的子集。
从评估框520,如果评估的结果是否定的,则过程流程500取“否”分支526到评估框528,其表示确定从DOM状态202a到状态202b的转换是否涉及引用和/或解除引用图形资产。图形资产的示例包括其使用涉及解压操作的图像或字体文件。
从评估框528,如果评估的结果是肯定的,则过程流程500可取“是”分支530到框532,其表示安排任何引用和/或解除引用操作以使存储在HD-DVD上的适当地创作的应用程序不超过平台限制(例如不超过像素缓冲区的限制)。
从评估框528,如果评估的结果是否定的,则过程流程500可取“否”分支534到框536,其表示将干净或脏状态与DOM树中的各元素相关联。更具体地,如果DOM状态从202a到202b的转换导致对DOM树的特定元素的改变,则框536可包括将这些元素标记为“脏”,并将该DOM树的其余元素标记为“干净”。
框538表示将干净或脏状态与作为整体的DOM树相关联。更具体地,如果从DOM状态202a到DOM状态202b的改变导致对DOM树的任何改变,则框538可包括将该DOM树标记为“脏”。否则,如果DOM状态的改变未导致对作为整体的DOM树的改变,则框538可包括将该DOM树标记为“干净”。
框540表示对由框536和/或538标记为“脏”的DOM树中的那些元素和/或样式进行重新格式化。
图5所示的各种操作提供不同的优化策略。此处所描述的工具的实现可以在适当时在不同的情况下使用这些优化策略中的一个或多个。更具体地,这些优化策略可以支持某些样式-所有元素技术(例如图4的框406)和/或某些样式-单个元素技术(例如图4的框408)。
在用图5描述了格式化器组件208可执行的过程流程之后,讨论现在前进至现在用图6所呈现的、将DVD样式数据组织成各个层的描述。
图6示出HD-DVD样式数据被组织成各个层的安排600。出于方便而非限制,先前描述的一些元素转入图6中并由相同的参考标号来表示。
如图6所示,DOM状态202a响应于时钟脉冲308转换成DOM状态202b,从而导致HD-DVD格式化器208生成改变通知消息404。样式502是从图5中转入的。
格式化器208可以支持分层结构的概念。图6在602a和602n(统称602)处描绘层的两个示例,但此处所描述的工具的实现可以支持任何数量的层。层602可组织出现在给定DOM状态中的各种样式数据。在图6所示的示例中,层602与DOM状态202a中的样式502a相关联,并与DOM状态202b中的样式502x相关联。其它层(例如层602a)可以组织其它样式502,但图6为简明起见省略了这些关系。
各层可以组织样式数据的准则的示例包括分开样式数据以支持用于创作HD-DVD的声明性语言所允许的应用、引用、内联、动画和脚本值。图6分别在框604、606、608、610和612处表示这些值。
在DOM将状态从202a改变成202b时,格式化器208可以报告因该状态改变而导致的对不同层的改变。图6在614处表示对各层的这些改变。这些改变可以例如表达为用于各个层中的不同的样式的一个或多个设置(set())操作,如在框616处所示。
框618表示将这些改变表达为用于各个层中的不同样式的一个或多个复位(unset())操作。框620表示将这些层改变表达为用于各个层的样式的一个或多个获取(get())操作。框622表示将这些层改变表达为对所有层中的所有样式所执行的一个或多个获取操作,考虑每一层的相对优先级来确定有效值。框624表示将所得的有形数据按层来分开。
作为设置和复位操作的示例,考虑其中在声明性内容标记和声明性样式标记中因为style:x是内联地应用的所以某些元素的初始状态是style:x=“10px”的情况。考虑在声明性定时标记中,在电影回放了3分钟的时刻处,元素被编程来在5秒钟的过程中从10px移动到100px,并随后在5秒钟的过程中移动回来。
对于电影的整个片长(包括其中发生动画的部分在内),style:x的内联值保持10px。该值在加载期间被设置并从不被复位。
对于电影的前3分钟,在动画层不存在style:x值。在电影回放的3分钟处,style:x的动画值被设置为10px。对于下10秒钟,根据系统的性能和其它编程考虑,style:x动画值被设置为从10到100并反向从100到10的值。
在电影回放的3分10秒处,style:x的动画值被复位。在电影回放的3分10秒处,在动画层不存在style:x值。现在,对于电影的前3分钟,有效值是来自内联层的值。从3分到3分10秒,有效值是来自动画层的值。在3分10秒处,有效值再次是来自内联层的值。
作为获取操作的示例,再次考虑以上按钮,其具有style:x的静态内联值和在某一时间段内具有style:x的动画值。获取操作可以通过格式化以确定有效值来执行,本质上是层组件之外的组件要求最终数字。为适应该请求,层组件可进行从属调用来获取存储在各个层处的值,并随后根据HD-DVD规范中的优先级规则从可获得的层中选择适当的有效值。因此,存在两个版本的获取-层获取,其用来支持有效获取。
在用图6描述了用于将HD-DVD样式数据组织成各个层的技术之后,讨论现在前进至现在用图7呈现的、改变通知消息的更详细的描述。
图7示出改变通知消息的附加方面700。出于方便而非限制,先前描述的一些元素转入图7中并由相同的参考标号来表示。
如上所述,在DOM状态202a转换成DOM状态202b时可得到改变通知消息(例如404)。取决于因状态转换而引起的改变的本质和范围,改变通知消息可包括不同类型的信息。
在图7所示的示例中,改变通知消息可以指示一个或多个元素因为状态转换而正在改变,如在702处所示。元素的示例在204a-b和204x-z处示出。
改变通知消息可以指示一个或多个样式因为状态转换而正在改变,如在704处所示。样式的示例在502a-c和502x-z处示出。
改变通知消息可以指示一个或多个层因为状态转换而正在改变,如在706处所示。层的示例在602a-n处示出。
线708表示其中对DOM的改变用一个或多个设置操作表达的实例。在这些实例中,改变通知消息可以指定样式的新值,如在框710处所示。
在用图7提供了改变通知消息的更详细的描述之后,讨论现在前进至现在用图8呈现的、用于对改变通知消息作出反应的过程流程的描述。
图8示出可作为对改变通知消息的反应来执行的过程流程800。出于方便而非限制,先前描述的一些元素转入图8中并由相同的参考标号来表示。
如图8所示,在定时标记(例如112)或在脚本(例如114)中指定的DOM状态的改变可产生改变通知消息(例如404)。响应于改变通知消息,该工具可以执行过程流程800的至少一部分。
评估框802表示确定传入改变通知消息404指定设置还是复位操作。如果消息404指定设置操作,则过程流程800可取分支804到评估框806。如果消息404指定复位操作,则过程流程800可取分支808到框810。
框810表示执行获取操作来获得消息404中指定的有效样式值。
评估框812表示确定传入消息404是否允许单个元素格式化。如果允许,则过程流程800可取分支814到框816,其表示调整与传入消息404中所指定的单个元素相关的有形数据。随后,过程流程800可前进至结束状态818。
从评估框812,如果不允许单个元素格式化,则过程流程800可取分支820到框822,其表示查找传入消息中所指定的重新格式化的影响。
作为查找格式化的影响的示例,再次考虑定义背景颜色的父段落和继承该颜色的子段落。如果该父段落的背景颜色改变,则继承该改变的值的任何子也将改变。因此,不允许父段落使用单个元素格式化来格式化style:backgroundColor(背景颜色)。是否允许该格式化的知识在框828中计算,并且作为对应于父段落的格式化软件的配置的一部分来存储。
框824表示设置位或其它合适的机制来指示整个DOM树受传入消息中所指定的重新格式化的影响,并且因此是“脏”的。随后,过程流程800可前进至结束状态818。
从评估框812,如果是否允许单个元素格式化的问题尚未确定,则过程流程800可取分支826到框828,其表示检查树中的当前父和/或子。随后,过程流程800可返回到评估框812之前,如图8所示。
在格式化软件的配置中,对应于某一元素存储了对父元素的引用、第一子元素和下一兄弟元素。使用这三个链接,在适当时可以向上和/或向下和/或横向来对树进行遍历。可以遍历树的全部或一部分来确定是否准许单个元素格式化。
尽管改变通知消息可能未指定是否准许单个元素格式化,但是改变通知消息可包括通知允许或不允许单个元素格式化的决定的某些信息。
作为示例,考虑将背景颜色定义为红色的父按钮和将背景颜色定义为蓝色的子按钮。如果子按钮被改变为忽略蓝色并且相反从其父继承红色背景颜色,则对父禁用单个元素格式化,因为对父的改变现在影响子。
作为另一示例,考虑不具有显式大小的父段落和包含文本“Hello,World”的子区间。则该父段落的默认大小将基于若干事物,但对于此处的描述很重要的一个是包含串“Hello,World”的字形的区间的大小。
作为又一示例,考虑其中子区间被修改为包含“The Quick Brown Fox”而非“Hello,World”的改变通知。很明显,区间变得更大,因为现在区间中有更多文本。很明显,主要根据区间大小来确定大小的父段落现在也将变得更大。因此,在这种情况下,区间不能根据单个元素手段来格式化。
一般而言,影响可包括父-子影响和子-父影响。在实现中,这些影响可以是众多的,并且不限于以上仅为了说明而提供的继承和确定大小示例。
返回评估框806,该框表示确定消息404中所指定的层是否是重新格式化过程中的有效层。DVD规范定义哪些层是有效的或在特定情况下具有优先级。如果在该消息中所指定的层不是有效层,则过程流程800可取“否”分支830到结束状态818。另一方面,如果消息404中所指定的层是有效层,则过程流程800可取“是”分支832到评估框834。
框834表示确定被检查的当前节点是否被设置为从另一节点继承其属性的至少某一些。例如,当前节点可以是从父节点继承其属性的至少某一些的子节点。作为另一示例,当且节点可以是父节点,其属性中的至少一个基于其子的属性。一般而言,在改变消息是设置消息时,其包括正被设置的值。一个特殊类型的值是‘继承’值。
从评估框834,如果当前节点未被设置为从另一节点继承,则过程流程800可取“否”分支836到框838,其表示使用在传入消息404中所指定的样式值。随后,过程流程800可前进至结束状态818。
从评估框834,如果当前节点被设置为从另一节点继承,则过程流程800可取“是”分支840到框842,其表示对于当前节点以及当前节点的任何父或子节点禁用单个元素格式化。因为当前节点是从其它节点继承的,所以因重新格式化而导致的任何改变往往可级联树的至少一部分,并且在这种情况下,单个元素格式化可能是不适当的。随后,过程流程800可前进至上述框810。
如果过程流程在通过框842后到达评估框812,则框812将禁用单个元素格式化。在这种情况下,过程流程800可取分支820到框822。框822又可包括查明因框834的继承关系而导致的改变在树中级联了多少。
在用图8描述了用于对改变通知消息作出反应的过程流程800之后,讨论现在前进至现在用图9呈现的、用于执行按帧格式化的过程流程的描述。
图9示出用于响应于时钟信号来执行按帧格式化的过程流程900。出于方便而非限制,先前描述的一些元素转入图9中并由相同的参考标号来表示。
图9在308处示出HD-DVD时钟信号的示例。此处所描述的工具可以响应于时钟信号的离散实例来执行过程流程900的至少某一些。如上所述,HD-DVD景物描述的标记可以在树类型的结构中表示,并且随着时钟信号的发生,这些工具可以更新标记并重新格式化所更新的标记以向用户(例如图1中的102)呈现和演示。
框902表示评估时钟信号是否导致表示景物描述的树结构中的任何状态或样式改变。如果没有因时钟信号而导致状态或样式改变,则过程流程900可取“否”分支904到结束状态906。另一方面,如果因时钟信号而导致任何状态或样式改变,则过程流程900可取“是”分支908到框910。
框910表示评估树结构的任何部分是否已经作为框902中所评估的状态或样式改变的结果而变脏。换言之,框910可包括评估树中的至少一个元素是否因为状态或样式改变而要改变。更具体地,框910可包括遍历树来选择树中的由于任何状态或样式改变而要被处理的给定元素。
如果树中没有元素要被改变,则过程流程900可取“否”分支912到结束状态906。另一方面,如果树中的任何元素要被改变,则过程流程900可取“是”分支914到框916,其表示评估树遍历是否完成。如果树中没有其余的要遍历的元素,则过程流程900可取“否”分支918到结束状态906。另一方面,如果树中有任何其余的元素要遍历,则过程流程900可取“是”分支920到框922。
框922表示遍历树来访问树中剩余的至少一个下一元素来作为当前元素。框924表示确定或计算要对当前元素进行的任何改变。这些改变可被看作“脏步骤”,如图9所示。框926表示对当前元素执行任何脏步骤。随后,过程流程900可返回到框916来检查树中剩余的尚待遍历和处理的任何另外的元素。框922、924和926可以对给定标记树中所包含的各元素来重复。
在用图9描述了用于执行按帧格式化的过程流程900之后,讨论现在前进至现在用图10呈现的、遍历标记树的父和子节点的更详细的描述。
图10示出用于遍历标记树的父和子节点的过程流程1000。出于方便而非限制,先前描述的一些元素转入图10中并由相同的参考标号来表示。
图10在202处表示景物描述标记的示例DOM树。该示例DOM树202可包括任意数量的元素,其中图10在204a、204b和204c处表示了3个示例。在重新格式化景物描述时,过程流程1000可以在遍历树结构时执行双遍(two-pass)过程。框1002表示执行第一遍,而框1004表示执行第二遍。
更详细地转向框1002所示的第一遍,框1006表示遍历DOM树中的给定父节点。过程流程1000可从DOM树的根节点(例如204a)开始并从那里开始对树进行遍历。随后,遍历可以进展到根节点下的、其下具有一个或多个子节点的父节点(例如204b)。
框1008表示在前进至该当前节点的子节点之前,通过在当前节点处执行尽可能多的重新格式化工作来在当前节点处创建上下文。
框1010表示确定DOM树中是否剩余供处理的任何另外的父节点。如果是,则过程流程1000可取“是”分支框1012来返回到框1006,以选择树中的下一父节点。否则,过程流程1000可取“否”分支1014。分支1014完成第一遍的详细处理并开始第二遍的详细处理,如图10所示。
更详细转向框1004,框1016表示遍历树来访问给定父节点下的任何子节点。框1018表示解决用于处理给定父节点下的子节点的细节。
评估框1020表示确定给定父节点下是否具有剩余供处理的任何另外的子节点。如果是,则处理可取“是”分支1022回到框1016,来用下一子节点重复该过程。如果给定父节点下不具有另外的子节点,则处理可取“否”分支1024到框1026,其表示在已经解决了给定父节点下的所有子节点的细节的情况下,完全解决与给定父节点相关的细节。
在用图10描述了用于遍历标记树的父和子节点的过程流程1000之后,讨论现在前进至内容标记引用和通过标记树的总体迭代的更详细的描述。以下所示的表2示出通过树的各遍的示例分离,示为第1遍和第2遍。
表2
如以上图10所述,第1遍通过当前父节点向下遍历并建立子节点的上下文。在第2遍期间向上,子细节被完全解决,从而允许完全解决父细节。
结论
虽然以上描述在处理HD-DVD的上下文中呈现,但要注意,此处所描述的工具和技术可适用于处理其它类型的媒体,或处理除了此处所描述的类型之外的类型的标记。
虽然已经用结构特征和/或方法动作专用的语言描述了这些系统和方法,但是应该理解在所附权利要求中定义的系统和方法不必限于所述的具体特征或动作。相反地,具体特征和动作是作为实现所要求保护的系统和方法的示例性形式来公开的。
另外,对于此处描述并示出的某些数据和过程流程图,应当注意,其中描绘的过程和子过程可以按所示顺序之外的其它顺序执行而不背离本说明书的精神和范围。同样,尽管这些数据和过程流程在此是结合特定组件来描述的,但应当注意,这些数据和过程流程可以用其它组件来执行而不背离本说明书的精神和范围。