管理媒体文件的应用程序接口的制作方法

文档序号:6455211阅读:128来源:国知局
专利名称:管理媒体文件的应用程序接口的制作方法
管理媒体文件的应用程序接口 背景
诸如个人录像机或数字录像机等媒体设备可被用来存储和再现数字媒 体内容。数字媒体内容的示例可以包括电视节目、电影、家庭视频、歌曲、 图像、照片等。数字媒体内容可以从诸如电缆电视提供商、卫星电视提供
商、数字多功能盘(DVD)播放器、压縮盘(CD)播放器、数字视频家庭 系统、通过因特网连接的媒体内容提供商、计算机文件等各种媒体源接收。 结果,媒体设备可能需要存储来自使用多种文件和文件类型的不同的媒体 源的数量不断增加的媒体内容。这可能显著地增加文件管理操作、文件结 构复杂性和相关联的成本。因此,可能需要改进的文件管理技术来解决这 些和其它问题。
概述
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的 一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特 征,也不旨在用于限制所要求保护的主题的范围。
各实施例一般可以针对媒体系统。具体地, 一些实施例可以针对用于 媒体系统的文件管理技术。在一实施例中,例如,媒体处理系统或子系统 可以包括处理器、存储器和通信接口。存储器可被用来存储供处理器执行 的媒体文件管理器。该媒体文件管理器可被用来实现用于对诸如将多个媒 体流和/或媒体文件存储到单个虚拟文件中等各种使用场景分配虚拟文件 中的空间的文件分配方案。
各实施例还可以包括软件对象的软件库和支持API层访问和管理虚拟 文件的定义的应用程序接口 (API)命令。该API层可以允许各种自定义应 用程序利用使用该媒体文件管理器实现的文件分配方案。视给定实现的需 要,该API层可以结合媒体文件管理器使用、与媒体文件管理器分开使用、 或代替媒体文件管理器使用。
在操作中,该媒体处理系统可以通过一个或多个通信接口从各个媒体 源接收媒体信息的多个媒体流。媒体文件管理器可以使用名-值对的分层结构将多个媒体流存储在具有单个虚拟文件的物理存储器中。该单个虚拟文 件可具有与被用来存储该虚拟文件的物理文件格式不相同的逻辑文件格 式。例如,物理文件格式可以使用物理存储器的非毗邻的和/或非顺序的部 分来存储虚拟文件的各部分。以此方式,可以使用单个虚拟文件来存储多 个媒体流或媒体文件,从而降低文件复杂性并减少文件管理操作。对其它 实施例也予以描述并主张权利。
附图简述


图1示出媒体系统的示例性实施例。
图2示出媒体处理设备的示例性实施例。 图3示出一逻辑流程的示例性实施例。 图4示出第一页表的示例性实施例。 图5示出第二页表的示例性实施例。 图6示出第三页表的示例性实施例。 图7示出第四页表的示例性实施例。 图8示出应用程序接口的逻辑图的示例性实施例。
详细描述
各实施例可以针对支持文件分配方案的应用程序接口 (API)层,该文 件分配方案可被用来使用诸如例如盘上存储等任何形式的机器可读或计算 机可读介质来存储、检索、或管理媒体内容。该文件分配方案可被用来将 从各媒体源接收到的各类媒体内容存储到包括单个虚拟文件的单个统一文 件结构中。在某些情况下,该虚拟文件可具有与被用来实际存储该媒体内 容的物理文件结构不相同的逻辑文件结构,从而使该虚拟文件免受物理约 束和要求。考虑到与例如电视节目和电影等相关联的相对较大量的媒体内 容,该文件分配方案尤其适于PVR和多媒体应用程序。然而,该文件分配 方案是非常灵活的且是可扩展的,因而不必限于PVR或多媒体应用程序。
该文件分配方案可被用作许多应用程序和使用场景的盘上存储容器。因为 其未与任何给定类型的应用程序紧密集成并且因此是非常可扩展的,所以
该文件分配方案可适用于任何形式的当前和将来的需要管理较大量数据的 应用程序。在各实施例中,该文件分配方案提供关于媒体文件格式的文件分配层 以管理文件中的空间。在某些实施例中,该文件分配方案包括各种设计特 征,如支持基本文件语义、支持文件完整性和崩溃可恢复性、同时支持多 个写入器和多个读取器、允许与较早版本的向后兼容并实施给定媒体的性 能要求、以及允许大的名-值对独立地增长。该文件分配方案还可以包括给 定实现所需的其它设计特征。
各实施例可以包括支持该文件分配层的API层。该API层可以包括软
件对象的API软件库和一组定义的API命令。根据此处所描述的文件分配 方案,各应用程序可以使用该API命令来调用各软件对象以执行所需的文 件管理操作。具体地,该文件分配API层对各种文件分配功能、方法、服 务、或过程进行建模。在一实施例中,例如,该API层可以对虚拟文件的 文件头的签名和版本、关于虚拟文件的分配统计数据、虚拟文件中的名-值 对的分层结构(包括创建和删除名-值对的能力)、被建模为虚拟文件的短 值和长值、对短值和长值中的范围置0的能力、显式锁定短值和长值以供 读取和写入、以及对指示各值何时改变的事件的订阅等进行建模。也可对
其它文件分配功能、方法、服务、或过程进行建模,且各实施例在该上下 文中不受限制。可以稍后参考图8来描述适于支持文件分配层的各API命 令和对应的软件对象。
文件分配层
图1示出媒体系统100的框图。媒体系统100可以表示适用于实现各 种实施例的通用系统体系结构。媒体系统100可以包括多个元素。元素可
以包括被安排来执行特定操作的任何物理或逻辑结构。视给定的一组设计 参数或性能约束的需要,每一元素可被实现为硬件、软件、或其任意组合。 硬件元素的示例可以包括设备、组件、处理器、微处理器、电路、电路元 件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成
电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现 场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。软件的示例可以包括任何软件组件、程序、应 用软件、计算机程序、应用程序、系统程序、机器程序、操作系统软件、 中间件、固件、软件模块、例程、子例程、函数、方法、接口、软件接口、 应用程序接口 (API)、指令集、计算代码、计算机代码、代码段、计算机 代码段、文字、值、符号、或其任意组合。虽然图1中示出的媒体系统100
在特定拓扑结构中具有有限数量的元素,但可以理解,媒体系统100视给
定实现所需在另选拓扑结构中可以包括更多或更少元素。各实施例在该上 下文中不受限制。
在各实施例中,媒体系统100可被安排为传递、管理或处理不同类型 的信息,如媒体信息和控制信息。媒体信息的示例一般包括表示对用户有 意义的内容的任何数据,如语音信息、视频信息、音频信息、图像信息、 文本信息、数字信息、字母数字符号、图形等。控制信息可以指的是表示 对自动化系统有意义的命令、指令或控制字的任何数据。例如,控制信息 可被用来将媒体信息路由通过一个系统、在设备之间建立连接、指示设备 以预定的方式处理该媒体信息等。
在各实施例中,媒体系统100可以包括媒体源102-l-n。媒体源102-1-n 可以包括能够向媒体处理设备106发起或传递媒体信息(例如,数字视频 信号、音频信号等)和/或控制信息的任何物理或逻辑实体。媒体源102-1-n 的示例可以包括DVD设备、VHS设备、数字VHS设备、个人录像机(PVR)、 数字录像机(DVR)、计算机、游戏控制台、CD播放器、数码相机、数字 摄像放像一体机等。媒体源102-1-n的其它示例可以包括向媒体处理设备 106提供广播或流模拟或数字媒体信息的媒体分发系统。媒体分发系统的示 例可以包括,例如,无线电(OTA)广播系统、地面电缆系统(CATV)、 卫星广播系统等。媒体源102-1-n可以视给定实现的需要而置于媒体处理设 备106的内部或外部。
在各实施例中,媒体系统100可以包括通过一个或多个通信介质 104-l-m连接到一个或多个媒体源102-1-n的媒体处理设备106。媒体处理 设备106可以包括被安排来处理从媒体源102-1-n接收到的媒体信息的任何 逻辑或物理实体。在各实施例中,媒体处理设备106可以包括或可被实现为计算设备,如计算机、机顶盒(STB)、媒体服务器、台式计算机、个 人计算机(PC)、膝上型计算机、手持式计算机、家庭娱乐系统、家庭影
院系统等。
在各实施例中,媒体处理设备106可以包括媒体处理子系统108。媒 体处理子系统108可以包括处理器、存储器和被安排来处理从媒体源 102-l-n接收到的媒体信息的应用硬件和/或软件。例如,媒体处理子系统 108可被安排来执行各种媒体管理操作,如接收媒体信息、存储媒体信息、 记录媒体信息、播放媒体信息、执行媒体信息的特效模式操作、执行媒体 信息的搜寻操作等。媒体处理子系统108可以向显示器IIO输出经处理的 媒体信息。显示器IIO可以是能够显示从媒体源102-l-n接收到的媒体信息 的任何显示器。
图2示出媒体处理设备106的更详细的框图。在其最基本的配置中, 媒体处理设备106通常包括至少一个处理单元202和存储器204。处理单元 202可以是能够执行软件的任何类型的处理器,如通用处理器、专用处理器、 媒体处理器、控制器、微控制器、嵌入式处理器、数字信号处理器(DSP) 等。存储器204可以使用能够存储数据的任何机器可读的或计算机可读介 质来实现,包括易失性和非易失性存储器。例如,存储器204可以包括只 读存储器(ROM)、随机存取存储器(RAM)、动态RAM (DRAM)、 双数据率DRAM(DDRAM)、同步DRAM( SDRAM)、静态RAM(SRAM)、 可编程ROM (PROM)、可擦除可编程ROM (EPROM)、电可擦除可编 程ROM (EEPROM)、闪存、诸如铁电聚合物存储器等聚合物存储器、奥 氏存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存 储器、磁卡或光卡、或适于存储信息的任何其它类型的介质。如图l所示, 存储器204可以存储各种软件程序,如一个或多个媒体应用程序206 (包括 媒体应用程序读取器206a和媒体应用程序写入器206b)、媒体文件管理器 208和所附数据。
媒体处理设备106还可以具有在配置106之外的另外的特征和/或功 能。例如,媒体处理设备106可以包括可移动存储210和不可移动存储212, 这些存储还可以包括如前所述的各种类型的机器可读或计算机可读介质。
9媒体处理设备106还可以具有一个或多个输入设备214,如键盘、鼠标、笔、 语音输入设备、触摸输入设备等。诸如显示器(例如,显示器110)、扬声 器、打印机等一个或多个输出设备216也可以被包括在媒体处理设备106 中。
媒体处理设备106还可以包括允许媒体处理设备106与其它设备进行 通信的一个或多个通信连接218。通信连接218可以包括各种类型的标准通 信元件,如一个或多个通信接口、网络接口、网络接口卡(NIC)、无线电、 无线发射机/接收机(收发机)、有线和/或无线通信介质、物理连接器等。 通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机 可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。 术语"已调制数据信号"指的是其一个或多个特征以在信号中编码信息的 方式被设定或更改的信号。作为示例而非局限,通信介质包括有线通信介 质和无线通信介质。有线通信介质的示例可以包括导线、电缆、金属线、 印刷电路板(PCB)、背板、交换光纤、半导体材料、双绞线、同轴电缆、 光纤、经传播的信号等。无线通信介质的示例可以包括声学、射频(RF) 频谱、红外和其它无线介质。此处使用的术语机器可读介质和计算机可读 介质旨在包括存储介质和通信介质两者。
在一般操作中,媒体处理设备106可以经由通信连接218从一个或多 个媒体源102-l-n接收和存储各类媒体信息。媒体处理设备106可以使用例 如,存储210、 212来存储该媒体信息。媒体文件管理器208可以使用名-值对的分层结构将来自多个媒体流的媒体信息存储在具有单个虚拟文件的 物理存储器中。该单个虚拟文件可具有与被用来存储该虚拟文件的物理文 件格式不相同的逻辑文件格式。例如,物理文件格式可以使用存储210、 212 的非毗邻的存储器部分来存储虚拟文件的各部分。换言之,逻辑文件结构 从物理文件结构断开。以此方式,媒体文件管理器208可以将多个媒体文 件接合到单个虚拟文件中,从而降低文件复杂性并减少文件管理操作。一 般地,媒体处理设备106,且具体地,媒体文件管理器208可参考图3-8和 所附示例来进一步描述。
以上各实施例的操作可以参考以下附图和所附示例来进一步描述。一
10些附图可以包括逻辑流程。虽然此处呈现的这些附图可以包括特定的逻辑 流程,但可以理解,逻辑流程仅仅提供如何实现此处描述的一般功能的示 例。此外,除非另外指明,否则,给出的逻辑流程不必要以所呈现的顺序 执行。另外,给出的逻辑流程可由硬件元素、由处理器执行的软件元素、 或其任意组合来实现。各实施例在该上下文中不受限制。
图3示出逻辑流程300的一个实施例。逻辑流程300可以表示此处描 述的诸如媒体系统100、媒体处理设备106和/或媒体处理子系统108等一 个或多个实施例所执行的操作。如图3所示,在框302,可以接收媒体信息 的多个媒体流。在框304,可以使用名-值对(NVP)的分层结构将多个媒 体流存储在单个虚拟文件中。各实施例在该上下文中不受限制。
媒体处理子系统108的媒体文件管理器208可被安排来实现用于分配 诸如虚拟媒体文件等虚拟文件中的空间的文件分配方案。该虚拟文件可以 例如在一个或多个容器中包括多个NVP。 NVP可以表示名称和二进制值之 间的特定绑定。 一特定类型的容器可被称为根容器。根容器可以包括给定 文件中的最高级容器。
NVP可以包括NVP名和NVP值。NVP名可以包括全局唯一标识符 (GUID)、文件名、文本名、串、或某一其它唯一文件标识符。NVP值可 以包括若干类的值,包括常驻值、短值、或长值。不同类的NVP值提供具 有关于值大小的性能和效率暗示的区别。常驻值被存储在带内,毗邻于对 应的NVP名。短值使用实现包括多个短页的虚拟文件的页表技术来存储。 短页可以指的是定义长度的文件中的两个分配单元中较短的一个。页表可 以包括长页或短页的阵列,该阵列是使用包含在短页中的被称为表页的页 引用的固定长度的阵列树来实现的。长值是使用应用于长页的相同或类似 的页表技术来存储的。长页可以指的是定义长度的文件中的两个分配单元 中较长的一个。
在各实施例中,媒体文件管理器208可以将虚拟文件分为各个长页, 长页的长度是在创建该文件时确定的。例如,典型的长页大小可以是256k 字节。给定长页可被分为多个短页,短页的长度也是在创建该文件时确定 的。例如,典型的短页大小可以是4k字节。所有长页都应当以一致性的方式来分割以确保文件完整性。新的长页被分配在文件的末尾。长页还可从
SAL文件头(SAL—File Header)中的空闲长页(FreeLongPages)页表来分 配。如果该页表为空,则各页被分配在该文件的末尾(例如,该文件增长 了)。通过首先分配长页并随后从其分配短页来分配新的短页。
一般而言,页大小可具有各种设计约束。例如,短页和长页大小(以 字节表达)通常是2的幂。在另一示例中,长页通常比短页长。在又一示 例中,短页通常至少与文件头一样长。在又一示例中,总体文件大小通常 限于短页大小的4,294,967,296倍(例如,在短页大小是4k字节时是16万 亿字节)。
如在短页中所表达的一样,各页由其在文件中的偏移值来引用。因此, 文件中的第一短页具有引用0,文件中的第一长页也是。文件中的第二短页 具有引用1,而第二长页具有等于长页大小除以短页大小的引用。例如,考 虑到先前场景中的值(例如,256k/4k = 64),第二长页可以具有64的引 用值。
在各实施例中,文件中的第一长页总是被分为各个短页。文件中的第 一短页通常只包含文件头。例如,媒体文件管理器208可以将虚拟文件的 文件头存储在该虚拟文件的第一短页中。文件头包含签名和版本、页大小、 根容器的页表和关于文件中的空闲空间管理的各个字段。媒体文件管理器 208可以使用两个定义的签名GUID。第一签名GUID指示该文件遵循此处 所描述的格式。第二签名GUID由应用程序用来指示该文件在下一层是如 何格式化的。还定义了两个版本号以便对这两层处的格式做向后兼容修订。
根容器是包含该虚拟文件中的最高级NVP的短值。短值可以包括短页 的页表。那些NVP值中的某些值自身可以是容器,所以NVP可以形成任 意深度的分层结构。文件头的示例可如下示出
妙ede/"wc/飄—m五—服^D五/J f
GWD 5L4i57g"afMW; 〃标识该层游谘式
Gt7/D ^^/z.ca"owS/g"加we; 〃》天识7"一屋游潜式Sy4i Kew'o",.〃该屋游潜式游敛本
〃7^—屋游谘式游敛本
〃"字萝力卓泣游jg^犬^ 。
〃"字,为卓泣游长及—犬V、。
〃以字萝力卓位游裙棼器游长度。
〃包涂A^T游'叛'澄
〃, "表顿避
〃f銜长^"表^游^"教
Page We〃辨叛页表
〃翁豕长资表
〃要分赠,一瓶资
〃要分衝游7"—长页
NVP被存储在容器中,或是根容器或是某一其它NVP的值。其将GUID 或文本名绑定到二进制值。在容器的开始处相继存储NVP。在一实施例中, 例如,其被填充到64位边界。容器中的NVP集合的末尾是通过遇到容器 的末尾或通过具有Gt//Z)_A^^L (GUID空)标签和为0的Fa/w"/ze (值大 小)来指示的。可以通过将其标签设置为WZX来有效地删除NVP。 NVP的示例类型定义示出如下
f/丄CWG jVvp促e ;
〃G f//£>—WC/丄丄猎示^伊屑游Wr尸。 力力
〃薪缀字梦
〃未赏充游澄丈V、,头4位淤窃;
〃不包翁薪缀字梦〃澄或PageraWe,賓充齊(W位迈界
C/丄CWG /Ve/b:57ze; 〃薪缀字梦
C/丄OM 丄OYG Fa/weSZze; 〃未賓充游澄;f 、,关4位凝窃,-
〃不包菸豫缀字梦
C/丄CWG Wa附e57ze,' 〃未"^充游名^^犬V、 r"『C7/J"为卓泣J
(7丄CWG / Mwed; 〃保激(^/齐>>
〃名称,屑长勺'澄賓充齊64泣迈界 〃澄或尸ageraWe,镇充教64泣迈芥
j嵐—r£\T—,P—
在某些实施例中,Fa/weS/ze的最高4位可被用来提供关于给定NVP 的信息。例如,WF尸—FZ^G一7^;rr值指示NVP具有文本名且头部采用 7ex^Vvpi/eafi^ (文本NVP头部)的形式。CCW7^/A^i 值指 示NVP值包含更多的NVP。 A^T—Fi:」G—值指示该值实际上被存储 在短页页表中且头部之后的值是PageraWe(页表)结构。7VfT—F丄jCWG 指示该值实际上被存储在长页页表中且头部之后的值是Pflge7^6/e结构。 这些定义的示例如下示出<formula>formula see original document page 15</formula>
在某些实施例中,可以使用页表技术来储存NVP。页表可以包括长页 或短页的阵列,该阵列是使用包含在短页中的被称为表页的页引用的固定 长度阵列的树来实现的。例如,该树可被构建为具有从页表引用的短页、 从短页引用的表页和从表页引用的数据页。
页表采用数据页的稀疏阵列的形式。短页页表被用来存储"短"值。 长页页表被用来存储"长"值。在两种情况下,阵列都被实现为短页中的 固定长度的表的分层结构。每一 "表页"都可以包括到数据页或到其它表页的页引用。可以参考图4-7来示出和描述某些示例页表。
图4示出第一页表的示例性实施例。图4示出页表400。页表400的 根结构402可以包括到顶页404的引用和整数的表深度406。页表的类型定 义的示例可示出如下
t/丄CWG D一;
如图4所示,页表400包括具有带空顶页引用的顶页404和为0的表 深度406的基本页表。在该配置中,页表400表示全由O所组成的值。值 得注意的是页表通常没有长度语义。例如,页表400可以表示由任何数量 的O所组成的值。
图5示出第二页表的示例性实施例。图5示出页表500。页表500提 供具有根结构502的页表的示例,该根结构具有如箭头508所示引用单个 数据页510的顶页504和为0的表深度506。数据页510中的数据被解释为 在所表示的值中偏移量为0处出现。
图6示出第三页表的示例性实施例。图6示出页表600。页表600提 供具有根结构602的页表的示例,该根结构具有如箭头608所示引用单个 表页610的顶页604和为1的表深度606。在为1的表深度606处,表页 610包括可以引用数据页或空引用的从0到N-1的表页值(TPV)。如图6 所示,例如,页表600包括具有对数据页614-1的引用612-1的TPV[O], 和具有对数据页614-2的引用612-2的TPV[3],其余TPV具有空引用。
图7示出第四页表的示例性实施例。图7示出页表700。页表700提 供具有根结构702的页表的示例,该根结构具有如箭头708所示引用第一 表页710的顶页704和为2的表深度706。在为2的表深度706处,第一表页710-1包括可以引用其它表页或空引用的从0到N-l的TPV。如图7所 示,例如,页表700包括具有对第二表页710-2的引用712的TPV[l],其 余TPV具有空引用。第二表页710-2还可以包括可以引用数据页或空引用 的从0到N-l的TPV。例如,第二表页710-2可以包括具有对数据页718-1 的引用716-1的TPV[O]和对数据页718-2的引用716-2的TPV[3],其余TPV 具有空引用。可以理解,表页710-1、 710-2每个都可以具有为1的表深度。 虽然没有定义对页表深度的限制,但大于3的深度是非典型的。
在各实施例中,媒体文件管理器208可以使用分别关于短页和长页阵 列的第一循环页表和第二循环页表来管理虚拟文件的空闲空间。媒体文件 管理器208以两种类似但分开的方式来管理短页和长页的空闲空间。存在 两个循环页的页表, 一个是短页的, 一个是长页的。第一循环页表可被称 为例如,i/efl^er.i^ee57zoW尸"g"o第一循环页表/feoi/e广i^Vee57zoW尸"ges总 是从索引0完全填充到索引//e^/erT^ee^oW尸ageCoM" 。第二循环页表可 被称为例如,i/e"t/e广i^Vee丄o"g尸ag^ 。第二循环页表//eGrder T^Vee丄o"g尸ages 总是从索引0完全填充到索引//e^er.Fwe丄o"g尸ageCow""在阵列的末尾 添加和移除循环页。
在某些情况下,尤其是对于空闲长页来说,可能需要队列而不是栈。 这是防止在某些情况下时间和文件位置的反相关。用于短值的短页还可能 从以队列来管理中受益,虽然用于其它目的短页可能保存在栈中。页表可 被用来实现使用两个索引的队列。然而,该方法将具有在长时间段内创建 不必要的深页表的趋势,如将文件使用数天以实现循环缓冲时。深度不应 变得过大,虽然除去只包含一个非空引用的顶页和视需要调整索引可以应 付这一情况。
//eader Vex^S/zoW尸age和//eacferA^x^o"g尸age可被用来指示应在哪里 分配新鲜页。短页是从//ea&riVejc^^oWPage来分配的,直到 //e"&rJVexAS/wW尸age达到长页边界为止。这一情况发生时,应当分配新 的长页,且短页可从该新分配的长页来分配。长页可从 //et^r.7Vex仏owg尸age来分配。这就是文件的末尾。在某些情况下,可能需 要将空闲短页接合到空闲长页中,这作为压縮工具是有用的。在某些实施例中,媒体文件管理器208可被安排来在构建虚拟文件时 向恢复日志写入状态信息,以在诸如断电或系统故障等故障情况下恢复该 虚拟文件。恢复日志被写入在当前快照中所建立的虚拟文件的末尾之后的
长页中(例如,在//ea&rVex仏o"g尸age处)。恢复日志中的长页包括第一 短页中的头部、最后一个短页中的尾部以及从第二短页开始的短数据页。 恢复日志应被管理来确保其不与对该虚拟文件的不可恢复的写入相冲突。
恢复日志头部和恢复日志尾部的示例可示出如下
〃标欽统复^吉:^新
〃僻拼艘纖量
〃^7^^^长页游教f
〃潜示这是仏吉^游虜后一个长资
〃对厗,炉游每一资游歹/菊
〃标识统复仏安屋教 〃必鄉紗教游颜号
对于某些页大小组合,以上所描述的及"01^7丄0§/^^/^ (恢复日志头
部)可能超过短页的长度。可以通过例如,通过约束页大小、为恢复日志 头部使用超过一个短页、和/或限制日志所使用的每一长页中短页的数量等来禁止这些情况,以降低或完全防止该情形的可能性。
在某些实施例中,媒体文件管理器208可以实现各种高速缓存技术来 增强性能。媒体文件管理器208可以将虚拟文件分为一个或多个长页和短 页、将长页和短页的一部分写入高速缓存中、以及用多个线程来访问所缓 存的页。在一实施例中,例如,可以在进程之间使用命名的共享存储器来
共享高速缓存。高速缓存页可被分配以下4个状态中的一个(1)干净;
(2) 脏;(3)快照;和(4)快照镜像(gh0St)。另外,某些页是可恢复 的,而其它则不取决于其来自该文件的哪一部分。例如,所有长页通常都 是不可恢复的。短页通常是可恢复的,除非是其中短页被高频率地写入且 对这些写入不要求恢复的情况。
对于所有页,可以根据以下三个规则来定义页的初始状态(1)从盘 读取的所有页面开始是干净的;(2)所有新创建的页面开始是脏的;以及
(3) 被锁定以供写入、未被写入并随后解锁的干净页保持干净。向盘提交
的进程与客户机读/写活动同时发生。不可恢复页可以用比可恢复页高的频 率提交,但只要提交了可恢复页则应当提交不可恢复页。
用于提交不可恢复页的进程可如下实现。例如,所有(不可恢复)脏 页变为快照。快照页作为干净页来对待,除了其正被写入、被制作副本、 副本是脏的以及原件是快照镜像的时候。快照和快照镜像页被写入其在文 件中的相应位置。快照镜像页被转储清除。快照页变为干净的。
用于提交所有页的进程可如下实现。所有脏页变为快照。快照页作为 干净页来对待,除了在其正被写入、被制作副本、副本是脏的以及原件是
快照镜像的时候。脏副本被展示在高速缓存外以供IO而非其快照镜像版本。
不可恢复快照和不可恢复快照镜像页被写入其在文件中的相应位置。可恢 复快照和可恢复快照镜像页被写入恢复日志。可恢复快照和可恢复快照镜 像页被写入其在文件中的相应位置。快照镜像页被转储清除。快照页变为 干净的。恢复日志被转储清除。
在某些实施例中,媒体文件管理器208可以实现各种并发性规则来防 止冲突。媒体文件管理器208可以将虚拟文件分为各自都具有一个锁的多 个资源,并由多个应用程序使用这些资源锁来从该虚拟文件中读取媒体信息。在分配层中实现的并发性规则旨在达到各种文件读取器、文件写入器 和盘输入/输出(I/O)之间最高程度的独立性。高速缓存可被用来在读取器 和写入器之间通信,且还将读取器和写入器与盘I/0隔离。
虚拟文件可被分为各个"文件资源"。例如,文件资源可以包括(1) 头部;(2)短页分配;(3)长页分配;(4)根容器扩充;(5)根容器 访问;(6)值扩充(例如,按值);以及(7)值访问(例如,按值)。 每一资源都具有其自己的锁。大多数锁在对分配层的单个调用中获得并释 放。例外是"值访问"和"值扩充"。分配层API应当允许应用程序跨对 该分配层的多个调用来显式地锁定这些资源。可以建立各种依赖性规则来 确定在其它资源被锁定时给定消费者可以锁定什么资源。这些规则防止否 则将死锁分配层的循环。这些规则还允许"应用程序层"通过防止读取器 在其完全存在之前读取内容来在NVP值上实施语义。
大多数资源可以用以下两种方式中的一种来锁定(1)读锁;(2) 写锁。锁定规则如下(1)任何数量的读取器都可以与O个写入器共享一 个资源;(2)写锁与所有其它锁是互斥的。
在某些情况下,阻挡层(block layer)代码可在短时间间隔内获得锁来 确保NVP、页表、分配表等的相干性。在其它情况下,在应用程序的控制 下,在对阻挡层API的调用所确定的时间间隔内获得锁。
读取器在其间必须维护所述资源的数据和语义相干性以使一系列相关
的读操作顺利进行的时间间隔内获得读锁。在没有获得读锁的情况下则不 尝试读取。写入器在其间将要发生一系列相关的写操作以维护资源的相干 性的时间间隔内获得写锁。在没有获得写锁的情况下则不尝试写入。
为允许读取器在写入器正向文件资源写入的同时从该同一文件资源中 读取,写入器在其锁定给定资源的同时保持一组私有的脏页。读取器看不 到这些脏页,直到写入器在释放写锁的过程中将其提交为止。在写入器释 放写锁时不必要提交该数据。写入器不进行提交而做出多个写入(每次都 锁定和解锁)是可以的。在缺少合并两个写入器同时产生的脏页的通用方 法时, 一次只允许单个写入器。如果脏页被版本化,则可以减少或消除提 交锁。
20为确保跨多个文件资源的相干性,分配层应当向读取器保证,所提交 的改变不会被无序地到盘。高速缓存应当减少该类型的问题。可以无序地 提交页,但只要其按序保留在高速缓存中,则读取器就可以以正确的顺序 获得其内容。在提交写入时,可能需要抛出事件以便向读取器通知值的改变。
应用程序接口层
各实施例还可以包括含有软件对象的API软件对象库的API层,该软 件对象可与对应的定义的API命令共同操作以支持上述文件分配层。该API 层可以允许各种自定义应用程序利用使用媒体文件管理器208实现的文件 分配方案。视给定实现的需要,该API层可以结合媒体文件管理器208使 用、与媒体文件管理器208分开使用、或代替媒体文件管理器208使用。
一般而言,API是允许其它进程一起工作的计算机进程或技术。在运 行操作系统和诸如MICROSOFT WORD⑧等各种应用程序的个人计算机的 熟悉设置中,API允许应用程序与操作系统进行通信。应用程序对操作系 统API进行调用,来调用操作系统服务。操作系统API后的实际代码位于 动态链接库(DLL)的集合中。
类似于其它软件元素,API可以用其服务由另一软件元素所调用的计 算机可执行指令的形式来实现。计算机可执行指令可用多种不同的形式来 具体化。最终,指令被简化为供计算机处理器处理的机器可读位。然而, 在生成这些机器可读位之前,可能存在将API实现转换为各个形式的多个 功能层。例如,以0++实现的API首先作为一系列人类可读的代码行出现。 随后,该API由编译器软件编译为供在诸如例如处理单元202等处理器上 执行的机器可读的代码。
不同的编程语言和执行环境的增长已经导致对诸如API实现等编程代 码的原始实现和到供在设备上处理的位的简化之间的另外的功能层的需 求。例如,最初以诸如0++等高缀语言创建的计算机程序可首先被转换为 中间语言,如MICROSOFT⑧中间语言(MSIL)。该中间语言随后在特定环境中执行之前,可即刻由即时(Just-in-Time, JIT)编译器编译。这允许代码 在各种各样的处理环境中运行而不必分发多个经编译的版本。根据其上可 实现API的多个层面,以及持续增长的用于创建、管理和处理代码的技术, 各实施例不限于任何特定的编程语言或执行环境。
图8示出软件体系结构800的逻辑图。软件体系结构800可以示出被 安排来实现和/或使用参考图1-7所描述的文件分配方案的各种软件元素。 如图8所示,软件体系结构800可以包括各种自定义应用程序802-l-p、API 层804和API软件库808。 API软件库808可以包括多个文件对象806-l-q。 可以理解,视给定实现的需要,软件体系结构800可以包括更多或更少软 件元素。
自定义应用程序802-1-p可以包括被设计来利用上述文件分配方案或 与之交互的任何应用软件、应用硬件、或两者的组合。自定义应用程序802 的一个示例可以包括媒体应用程序206。媒体应用程序206还可以包括媒体 应用程序读取器(MAR) 206a和媒体应用程序写入器(MAW) 206b。
自定义应用程序802-1-p可被编程或设计来使用API层804所定义的 各种API命令。API层804的各种定义的API命令(及相关联的参数)准 许对API软件库808进行访问。API软件库808可以包括各种软件对象, 在此被称为文件对象806-l-q。自定义应用程序802-1-p可以使用一个或多 个API命令来调用一个或多个对应的文件对象806-l-q以执行一组特定的文 件相关功能。稍后将更详细地描述一组API命令和对应的文件对象806-l-q。
在各实施例中, 一个或多个自定义应用程序802-1-p可以访问、操纵、 或以其它方式使用一个或多个API命令与虚拟文件进行交互,该一个或多 个API命令对应于或调用API软件库808的一个或多个文件对象806-l-q。 文件对象806-l-q,以及在图示和所附描述中被标识为对象的任何其它元素, 都是分立的软件单元,其通常是使用面向对象的编程技术来实现的。在某 些情况下,自定义应用程序802-l-p、 API层804、和/或各种API命令可被 实现为一个或多个对象。有多种对象类型可用,且被广泛使用在该行业中, 并且特定的对象类型可视给定实现的需要而改变。值得注意的是,此处所 描述的和权利要求书中的由对象实现的功能还可以通过被设计来互相接口的多个对象来实现。各实施例在该上下文中不受限制。
更具体地,文件对象806-l-q可以表示被安排来执行实现上述媒体文件 分配方案的一个或多个方面所需要的各种文件相关的操作的分立的软件单
元。在各实施例中,API层804和API软件库808可被设计为对各种媒体 文件分配功能、方法、或过程进行建模。例如,API层804和API软件库 8U8 P」以文狩诺卯文狩返似乂忏的乂忏大部屮佥%和版本、定义和检索关于 虚拟文件的分配统计数据、支持虚拟文件中的NVP分层结构(包括创建和 删除NVP的能力)、生成短值和长值(被建模为虚拟文件)、对短值或长 值中的范围置0的能力、显式锁定短值和长值以供读取或写入、对指示各 值何时改变的事件的订阅、以及其它功能等功能或对这些功能进行建模。 各实施例在该上下文中不受限制。
在各实施例中, 一个或多个文件对象806-l-q可以包括特定类的实例。 例如, 一个类可以包含提供用于创建文件的服务的对象,而另一个类可以 包含用于从文件读取数据的对象,且又一个类可以包含用于向文件写入数 据的对象。通常,程序员在运行对象的实例之前知道该对象的类。对象的 类是在诸如API软件库808或其子集等类库中査找的。这样一个库可以访 问所有可用的对象类的目录。客户机应用程序可以调用库中指定该应用程 序想要的对象的类和该应用程序想要有指向其的指针的第一所支持的接口 的功能。该库随后使实现该类的对象的服务器应用程序开始运行。该库还 向发起的客户机应用程序传回指向所请求的新实例化的对象上的接口的指 针。客户机随后可以直接向该对象请求指向该对象支持的任何其它接口的 指针。
对象所支持的接口一般被认为该对象与其客户机之间的合约。该对象 承诺如该接口定义的一样支持该接口的方法,而客户机应用程序承诺正确 地调用这些方法。因此,对象和客户机必须同意显式地标识每一接口的方 式、共同的描述或定义接口中的方法的方式、和如何实现接口的具体定义。 因此可以按照其继承的接口参数以及其继承的类参数来描述对象。例如, 在对象的类具有用于向文件写入数据的功能的情况下,继承该类的实例也 将能够向文件写入数据,以及在该实例中提供的任何附加特征和功能。在类支持特定接口的情况下,该类的实例继承该"合约"并且因此也支持该 接口。通过其实现各实施例的各方面的对象通常遵循这些关于对象、类、 继承、和接口的定义的编程原则和理解。然而,应当清楚,对面向对象的 编程技术的修改和改进正不断发生,且各实施例不限于特定类型或具有任 何特定特征的对象。所提供的API可以通过现在使用或稍后开发的任何种 类的对象来实现。
在一实施例中,例如,API层804可以包括Z"^/ace f接/7J/^4丄类。 根据/" ^/"^/&4丄类,API层804可以接收创建虚拟文件的文件创建命令。 文件创建对象可以响应于该文件创建命令用文件句柄创建虚拟文件。文件 创建对象可以向调用应用程序802返回该虚拟文件的文件句柄。类似地, 可以使用打开文件命令来打开给定的虚拟文件。/^^/ace/^4丄类和所附API
命令的示例可如下示出
<formula>formula see original document page 24</formula>/嵐池** pp池
入'
w:cwg c械
/oW7 /緣池** p卢7e入.
在一实施例中,例如,API层804可以包括/"^/ace /WZ^7/e类。根 据/Wer/ace /&4i^7/e类,API层804可以接收获取文件信息命令,并响应 于该获取文件信息命令返回关于虚拟文件的文件信息。/"^/ace 类还可以包括获取根容器命令,并从根容器发送一 NVP列表。/"to/ace ZS^丄Fz7e类和所附API命令的示例可如下示出
cppjwo e广〃 ^五03y4O45-Z)i;卵"5^-卵/6-Z)D五/V70BCF(57"
卿—9"。fe广0,0Ja0a5,0虚,to/6, ftccW, toe/ ftc/7,婦,ftcc/ 0,力〃标识该崖游谘式
G,〃标欽7"—屋游潜式
〃该层游谘式廣本
〃7"—屋游潜式嚴本
〃"字梦力卓泣游哲^"大V、。
〃"字梦力卓泣游长及—丈V、。
o o/Co w tow enS7w〃"字梦为卓泣游液^器游长度。
〃^銜嚴,表^游页教
〃S像长^"表^游^"教
〃要分雄n页
〃要分衝游7"—长页
J 肌£—/ATO ;
wwW(D五5/13Z 外-7/H5-47W-9fl26-3"v4卯5"92/义 /她r/ace .7t/"A"oww
嵐—羅<9 * p顺/"/。
入'在 一 实施例中,例如,API层 804可以包括 /"&r/ace 7&4^Co Za/we/-i eat/er类。根据/"fe尸y^ce ZS/4丄Cow^ /wer/ eac/er类,API层804 可以接收容器读命令,并从容器读取NVP。 /"^/flce /&4ZCo"to/"er^a^r 类还可以包括读锁获取命令、读锁释放命令、常驻值命令、获取值命令、 和获取容器命令。/Wer/ace /&4ZCo"/a/ eri e^/er类和所附API命令的示例 可如下示出
v4cw.7"e/ ea必ocA: (9,. We/eflsei eflc/丄ocA: (9,.<formula>formula see original document page 28</formula>
在一实施例中,例如,API层804可以包括f"/er/ace /S^丄Cowto/ww『〃Y" 类。根据/"^/ace ZS^LCowto'wer『n'^"类,API层804可以接收容器写命 令,并向容器写入NVP。 /"&i/ace /A4丄Cowffr"er类还可以包括写锁 获取命令、提交改变并释放写锁命令、丢弃改变并释放写锁命令、设置常 驻值命令、清除值命令、设置短值命令、设置长值命令、以及创建容器命 令。/"^/ace /&^Omto'"er『/^er类和所附API命令的示例可如下示出<formula>formula see original document page 28</formula>河 河
入. ,.
在一实施例中,例如,API层804可以包括/"to/ace /&4ZA^Ti eafi^ 类。根据/""r/ace /A^A^Ti ea^r类,API层804可以接收值读取器命令, 并从容器读取短值或长值。/Ww/flce /^4ZA^T7 ea^r类还可以包括是否为 长命令、获取长度命令、读锁获取命令、读锁释放命令、和复制自命令。 /""//ace Z^ZJVr尸及e^/er类和所附API命令的示例可如下示出
固W (TS27DC£>C-£279-46e6-謝2-2柳額3〃C力,爿c《M'yeWea必ocA: (9,.

5潛*
喊 一入.
在一实施例中,例如,API层804可以包括/"ter/ace /&4ZA^T『n'^< 类。根据/"fer/ace /&4ZJVfT『/^er类,API层804可以接收值写入器命令, 并向容器写入短值或长值。/"^^"/&4^\^尸『^7^类还可以包括写锁获取 命令、提交改变并释放写锁命令、丢弃改变并释放写锁命令、复制到命令、
30设置长度命令、引退到偏移命令、和引退范围命令。/"^/ace/&4ZA^T『W^ 类和所附API命令的示例可如下示出
鼎W (S腊5 72D-Z)腦-,-柳0-fi5 76FF尸"7碌
河 t;丄cwG入. 八
此处阐明了许多具体细节以提供对这些实施例的全面理解。然而,本 领域技术人员将理解,没有这些具体细节也可实践这些实施例。在其它实 例中,没有详细地描述公知的操作、组件和电路以免得使这些实施例显得 晦涩难懂。可以理解,此处公开的具体的结构和功能细节可以是代表性的 且不必要限制这些实施例的范围。
还值得注意的是,任何对"一个实施例"或"一实施例"的引用都意 味着结合该实施例所描述的特定的特征、结构、或特性被包括在至少一个 实施例中。出现在说明书中各个地方的短语"在一实施例中"不必全都指 的是同一实施例。
某些实施例可使用表述"耦合的"和"连接的"及其派生词来描述。 应当理解,这些术语不旨在互为同义词。例如,某些实施例可使用术语"连 接的"来描述以指示两个或更多元素互相有直接的物理或电接触。在另一 示例中,某些实施例可使用术语"耦合的"来描述以指示两个或更多元素 有直接的物理或电接触。然而,术语"耦合的"还可以意味着两个或更多 元素互相不直接接触,而仍互相合作或交互。各实施例在该上下文中不受 限制。
某些实施例可以例如使用可以存储一条指令或一组指令的机器可读介 质或物品来实现,这些指令如果被机器执行则使得该机器执行根据各实施 例的方法和/或操作。例如,这种机器可以包括任何合适的处理平台、计算 平台、计算设备、计算系统、处理系统、计算机、处理器等,且可以使用 硬件和/或软件的任意合适的组合来实现。例如,机器可读介质或物品可以 包括任何合适类型的存储器单元、存储器设备、存储器物品、存储器介质、 存储设备、存储物品、存储介质和或存储单元,例如,存储器、可移动或 不可移动介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟
介质、硬盘、软盘、压縮盘只读存储器(CD-ROM)、可记录压縮盘(CD-R)、 可重写压縮盘(CD-RW)、光盘、磁性介质、磁光介质、可移动存储器卡或盘、各种类型的数字多功能盘(DVD)、磁带、磁盒等。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理 解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反, 上述具体特征和动作是作为实现权利要求的示例形式公开的。
权利要求
1. 一种包括含有指令的机器可读存储介质的物品,所述指令如果被执行则使系统接收对应于来自软件库(808)的软件对象(806)的应用程序接口命令,并用所述软件对象来访问具有关于多个媒体流的媒体信息的虚拟文件,所述多个媒体流是使用名-值对的分层结构来存储的。
2. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所 述系统执行以下动作的指令接收创建所述虚拟文件的文件创建命令、响 应于所述文件创建命令用文件句柄创建所述虚拟文件、并发送关于所述虚 拟文件的文件句柄。
3. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所述系统执行以下动作的指令接收获取文件信息命令,并响应于所述获取文件信息命令发送关于所述虚拟文件的文件信息。
4. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所 述系统执行以下动作的指令接收获取根容器命令,并从根容器发送一名-值对列表。
5. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所 述系统执行以下动作的指令接收容器读命令,并从容器读取名-值对。
6. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所 述系统执行以下动作的指令接收容器写命令,并向容器写入名-值对。
7. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所 述系统执行以下动作的指令接收值读取器命令,并从容器读取短值或长 值。
8. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所 述系统执行以下动作的指令接收值写入器命令,并向容器写入短值或长 值。
9. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使所 述系统执行以下动作的指令接收读锁命令,并锁定短值或长值以供读取。
10. 如权利要求1所述的物品,其特征在于,还包括如果被执行则使 所述系统执行以下动作的指令接收写锁命令,并锁定短值或长值以供写入。
11. 一种包括具有处理器(202)和存储器(204)的媒体处理子系统 的装置,所述存储器存储具有多个软件对象(806)的应用程序接口软件库(808),所述处理器响应于应用程序接口命令执行所述软件对象以管理包 括名-值对的分层结构的虚拟文件,所述名-值对的分层结构被用来存储来自 多个媒体流的媒体内容。
12. 如权利要求11所述的装置,其特征在于,所述应用程序接口软 件库包括以下的至少一个响应于文件创建命令的文件创建对象、响应于 获取文件信息命令的文件信息对象、响应于获取根容器命令的根容器对象、 响应于容器读命令的容器读对象、响应于容器写命令的容器写对象、响应 于值读取器命令的值读取器对象、响应于值写入器命令的值写入器对象、 响应于读锁命令的读锁对象、或响应于写锁命令的写锁对象。
13. 如权利要求11所述的装置,其特征在于,包括使用所述应用程 序接口软件库从所述虚拟文件读取名-值对的媒体应用程序读取器。
14. 如权利要求11所述的装置,其特征在于,包括使用所述应用程序接口软件库向所述虚拟文件写入名-值对的媒体应用程序写入器。
15. 如权利要求11所述的装置,其特征在于,包括管理所述虚拟文 件的媒体文件管理器。
16. —种方法,包括接收对应于来自软件库(808)的软件对象(806)的应用程序接口命 令;以及使用所述软件对象访问具有关于多个媒体流的媒体信息的虚拟文件, 所述多个媒体流是使用名-值对的分层结构来存储的。
17. 如权利要求16所述的方法,其特征在于,包括用来自所述软件 库的第一软件对象向所述虚拟文件写入媒体信息。
18. 如权利要求16所述的方法,其特征在于,包括用来自所述软件 库的第二软件对象从所述虚拟文件读取媒体信息。
19. 如权利要求16所述的方法,其特征在于,包括用来自所述软件 库的第三软件对象创建所述虚拟文件。
20.如权利要求16所述的方法,其特征在于,包括用来自所述软件 库的第四软件对象创建所述名-值对。
全文摘要
可以描述一种管理媒体文件的应用程序接口。一种装置可以包括具有处理器和存储器的媒体处理子系统。该存储器可以存储具有多个软件对象的应用程序接口软件库。该处理器可以响应于应用程序接口命令来执行软件对象以管理虚拟文件,该虚拟文件包括被用来存储来自多个媒体流的媒体内容的名-值对的分层结构。对其它实施例也予以描述并主张权利。
文档编号G06F17/00GK101473316SQ200780022300
公开日2009年7月1日 申请日期2007年5月16日 优先权日2006年6月16日
发明者D·塞斯尔, K·瑞纳斯, M·A·盖茨 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1