CN101473316A - 管理媒体文件的应用程序接口 - Google Patents

管理媒体文件的应用程序接口 Download PDF

Info

Publication number
CN101473316A
CN101473316A CNA2007800223008A CN200780022300A CN101473316A CN 101473316 A CN101473316 A CN 101473316A CN A2007800223008 A CNA2007800223008 A CN A2007800223008A CN 200780022300 A CN200780022300 A CN 200780022300A CN 101473316 A CN101473316 A CN 101473316A
Authority
CN
China
Prior art keywords
value
page
media
file
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007800223008A
Other languages
English (en)
Other versions
CN101473316B (zh
Inventor
M·A·盖茨
K·瑞纳斯
D·塞斯尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101473316A publication Critical patent/CN101473316A/zh
Application granted granted Critical
Publication of CN101473316B publication Critical patent/CN101473316B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/36Monitoring, i.e. supervising the progress of recording or reproducing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • H04N5/772Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera the recording apparatus and the television camera being placed in the same enclosure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/84Television signal recording using optical recording
    • H04N5/85Television signal recording using optical recording on discs or drums

Abstract

可以描述一种管理媒体文件的应用程序接口。一种装置可以包括具有处理器和存储器的媒体处理子系统。该存储器可以存储具有多个软件对象的应用程序接口软件库。该处理器可以响应于应用程序接口命令来执行软件对象以管理虚拟文件,该虚拟文件包括被用来存储来自多个媒体流的媒体内容的名-值对的分层结构。对其它实施例也予以描述并主张权利。

Description

管理媒体文件的应用程序接口
背景
诸如个人录像机或数字录像机等媒体设备可被用来存储和再现数字媒体内容。数字媒体内容的示例可以包括电视节目、电影、家庭视频、歌曲、图像、照片等。数字媒体内容可以从诸如电缆电视提供商、卫星电视提供商、数字多功能盘(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-1-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-1-m连接到一个或多个媒体源102-1-n的媒体处理设备106。媒体处理设备106可以包括被安排来处理从媒体源102-1-n接收到的媒体信息的任何逻辑或物理实体。在各实施例中,媒体处理设备106可以包括或可被实现为计算设备,如计算机、机顶盒(STB)、媒体服务器、台式计算机、个人计算机(PC)、膝上型计算机、手持式计算机、家庭娱乐系统、家庭影院系统等。
在各实施例中,媒体处理设备106可以包括媒体处理子系统108。媒体处理子系统108可以包括处理器、存储器和被安排来处理从媒体源102-1-n接收到的媒体信息的应用硬件和/或软件。例如,媒体处理子系统108可被安排来执行各种媒体管理操作,如接收媒体信息、存储媒体信息、记录媒体信息、播放媒体信息、执行媒体信息的特效模式操作、执行媒体信息的搜寻操作等。媒体处理子系统108可以向显示器110输出经处理的媒体信息。显示器110可以是能够显示从媒体源102-1-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)存储器、磁卡或光卡、或适于存储信息的任何其它类型的介质。如图1所示,存储器204可以存储各种软件程序,如一个或多个媒体应用程序206(包括媒体应用程序读取器206a和媒体应用程序写入器206b)、媒体文件管理器208和所附数据。
媒体处理设备106还可以具有在配置106之外的另外的特征和/或功能。例如,媒体处理设备106可以包括可移动存储210和不可移动存储212,这些存储还可以包括如前所述的各种类型的机器可读或计算机可读介质。媒体处理设备106还可以具有一个或多个输入设备214,如键盘、鼠标、笔、语音输入设备、触摸输入设备等。诸如显示器(例如,显示器110)、扬声器、打印机等一个或多个输出设备216也可以被包括在媒体处理设备106中。
媒体处理设备106还可以包括允许媒体处理设备106与其它设备进行通信的一个或多个通信连接218。通信连接218可以包括各种类型的标准通信元件,如一个或多个通信接口、网络接口、网络接口卡(NIC)、无线电、无线发射机/接收机(收发机)、有线和/或无线通信介质、物理连接器等。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非局限,通信介质包括有线通信介质和无线通信介质。有线通信介质的示例可以包括导线、电缆、金属线、印刷电路板(PCB)、背板、交换光纤、半导体材料、双绞线、同轴电缆、光纤、经传播的信号等。无线通信介质的示例可以包括声学、射频(RF)频谱、红外和其它无线介质。此处使用的术语机器可读介质和计算机可读介质旨在包括存储介质和通信介质两者。
在一般操作中,媒体处理设备106可以经由通信连接218从一个或多个媒体源102-1-n接收和存储各类媒体信息。媒体处理设备106可以使用例如,存储210、212来存储该媒体信息。媒体文件管理器208可以使用名-值对的分层结构将来自多个媒体流的媒体信息存储在具有单个虚拟文件的物理存储器中。该单个虚拟文件可具有与被用来存储该虚拟文件的物理文件格式不相同的逻辑文件格式。例如,物理文件格式可以使用存储210、212的非毗邻的存储器部分来存储虚拟文件的各部分。换言之,逻辑文件结构从物理文件结构断开。以此方式,媒体文件管理器208可以将多个媒体文件接合到单个虚拟文件中,从而降低文件复杂性并减少文件管理操作。一般地,媒体处理设备106,且具体地,媒体文件管理器208可参考图3-8和所附示例来进一步描述。
以上各实施例的操作可以参考以下附图和所附示例来进一步描述。一些附图可以包括逻辑流程。虽然此处呈现的这些附图可以包括特定的逻辑流程,但可以理解,逻辑流程仅仅提供如何实现此处描述的一般功能的示例。此外,除非另外指明,否则,给出的逻辑流程不必要以所呈现的顺序执行。另外,给出的逻辑流程可由硬件元素、由处理器执行的软件元素、或其任意组合来实现。各实施例在该上下文中不受限制。
图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可以形成任意深度的分层结构。文件头的示例可如下示出:
typedef struct SAL_FILE_HEADER{
        GUID             SALSignature;           //标识该层的格式
        GUID             ApplicationSignature;   //标识下一层的格式
           ULONG      SALVersion;           //该层的格式的版本
           ULONG      ApplicationVersion;   //下一层的格式的版本
           ULONG      ShortPageSize;        //以字节为单位的短页大小。
           ULONG      LongPageSize;         //以字节为单位的长页大小。
           ULONG      LONGRootContainerSize;//以字节为单位的根容器的长度。
           PageTable  RootContainer;        //包含NVP的‘短’值
           ULONG      FreeShortPageCount;   //空闲短页表中的页数
           ULONG      FreeLongPageCount;    //空闲长页表中的页数
           PageTable  FreeShortPages;       //循环短页表
           PageTable  FreeLongPages;        //循环长页表
           PAGEREF    FirstFreeShortPage;   //要分配的下一短页
           PAGEREF    FirstFreeLongPage;    //要分配的下一长页
  }SAL_FILE_HEADER
NVP被存储在容器中,或是根容器或是某一其它NVP的值。其将GUID或文本名绑定到二进制值。在容器的开始处相继存储NVP。在一实施例中,例如,其被填充到64位边界。容器中的NVP集合的末尾是通过遇到容器的末尾或通过具有GUID_NULL(GUID空)标签和为0的ValueSize(值大小)来指示的。可以通过将其标签设置为GUID_NULL来有效地删除NVP。NVP的示例类型定义示出如下:
    typedef struct SAL_GUID_NVP_HEADER{
            GUID             Name;       //GUID_NULL指示未使用的NVP。
            ULONG            NvpSize;    //Nvp大小
            ULONG            PrefixSize; //前缀字节
            ULONGLONG        ValueSize;  //未填充的值大小,头4位被窃;
                                          //不包括前缀字节
                             //值或PageTable,填充到64位边界
   }SAL_GUID_NVP_HEADER
   typedef struct SAL_GUID_NVP_HEADER{
          GUID               TextNvpGuid;        //总是TEXT_NVP_GUID
          ULONG              NvpSize;            //Nvp大小
          ULONG              PrefixSize;         //前缀字节
          ULONGLONG          ValueSize;           //未填充的值大小,头4位被窃;
                                                  //不包括前缀字节
          ULONG              NameSize;           //未填充的名称大小(以WCHAR为单位)
          ULONG              Reserved;           //保留(对齐)
                                                  //名称,用长‘0’值填充到64位边界
                                                  //值或PageTable,填充到64位边界
     }SAL_TEXT_NVP_HEADER;
在某些实施例中,ValueSize的最高4位可被用来提供关于给定NVP的信息。例如,NVP_FLAG_TEXT值指示NVP具有文本名且头部采用TextNvpHeader(文本NVP头部)的形式。NVP_FLAG_CONTAINER值指示NVP值包含更多的NVP。NVP_FLAG_SHORT值指示该值实际上被存储在短页页表中且头部之后的值是PageTable(页表)结构。NVP_FLAG_LONG指示该值实际上被存储在长页页表中且头部之后的值是PageTable结构。这些定义的示例如下示出:
cpp_quote(″#define NVP_FLAG_TEXT       0x1000000000000000L″)
cpp_quote(″#define NVP_FLAG_CONTAINER  0x2000000000000000L″)
cpp_quote(″#define NVP_FLAG_RESIDENT   0x4000000000000000L″)
cpp_quote(″#define NVP_FLAG_SHORT       0x8000000000000000L″)
cpp_quote(″#define NVP_FLAG_RESERVED    0xc000000000000000L″)
cpp_quote(″#define NVP_FLAG_MASK        0xf000000000000000L″)
cpp_quote(″#define NVP_VALUE_MASK       (~NVP_FLAG_MASK)″)
cpp_quote(″#define GET_VALUE_FROM_NVP_VALUESIZE_FIELD(valuefield)
((valuefield)& NVP_VALUE_MASK)″)
cpp_quote(″#define GET_FLAGS_FROM_NVP_VALUESIZE_FIELD(valuefield)
((valuefield)& NVP_FLAG_MASK)″)
cpp_quote(″#define FORM_NVP_VALUESIZE_FIELD(flags,value)
(((flags)& NVP_FLAG_MASK)|((value)& NVP_VALUE_MASK))″)
cpp_quote(″#define FORM_NVP_VALUESIZE_FIELD_WITH_NEW_VALUE(valuefield,value)
(FORM_NVP_VALUESIZE_FIELD(GET_FLAGS_FROM_NVP_VALUESIZE_FIELD(valuefield),(value)))″)
cpp_quote(″#define FORM_NVP_VALUESIZE_FIELD_WITH_NEW_FLAGS(valuefield,flags)
(FORM_NVP_VALUESIZE_FIELD((flags),GET_VALUE_FROM_NVP_VALUESIZE_FIELD(valuefield)))″)
在某些实施例中,可以使用页表技术来储存NVP。页表可以包括长页或短页的阵列,该阵列是使用包含在短页中的被称为表页的页引用的固定长度阵列的树来实现的。例如,该树可被构建为具有从页表引用的短页、从短页引用的表页和从表页引用的数据页。
页表采用数据页的稀疏阵列的形式。短页页表被用来存储“短”值。长页页表被用来存储“长”值。在两种情况下,阵列都被实现为短页中的固定长度的表的分层结构。每一“表页”都可以包括到数据页或到其它表页的页引用。可以参考图4-7来示出和描述某些示例页表。
图4示出第一页表的示例性实施例。图4示出页表400。页表400的根结构402可以包括到顶页404的引用和整数的表深度406。页表的类型定义的示例可示出如下:
   typedef struct PageTable{
        PAGEREF TopPage;
        ULONG Depth;
}PageTable;
如图4所示,页表400包括具有带空顶页引用的顶页404和为0的表深度406的基本页表。在该配置中,页表400表示全由0所组成的值。值得注意的是页表通常没有长度语义。例如,页表400可以表示由任何数量的0所组成的值。
图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[0],和具有对数据页614-2的引用612-2的TPV[3],其余TPV具有空引用。
图7示出第四页表的示例性实施例。图7示出页表700。页表700提供具有根结构702的页表的示例,该根结构具有如箭头708所示引用第一表页710的顶页704和为2的表深度706。在为2的表深度706处,第一表页710-1包括可以引用其它表页或空引用的从0到N-1的TPV。如图7所示,例如,页表700包括具有对第二表页710-2的引用712的TPV[1],其余TPV具有空引用。第二表页710-2还可以包括可以引用数据页或空引用的从0到N-1的TPV。例如,第二表页710-2可以包括具有对数据页718-1的引用716-1的TPV[0]和对数据页718-2的引用716-2的TPV[3],其余TPV具有空引用。可以理解,表页710-1、710-2每个都可以具有为1的表深度。虽然没有定义对页表深度的限制,但大于3的深度是非典型的。
在各实施例中,媒体文件管理器208可以使用分别关于短页和长页阵列的第一循环页表和第二循环页表来管理虚拟文件的空闲空间。媒体文件管理器208以两种类似但分开的方式来管理短页和长页的空闲空间。存在两个循环页的页表,一个是短页的,一个是长页的。第一循环页表可被称为例如,Header.FreeShortPages。第一循环页表Header.FreeShortPages总是从索引0完全填充到索引Header.FreeShortPageCount。第二循环页表可被称为例如,Header.FreeLongPages。第二循环页表Header.FreeLongPages总是从索引0完全填充到索引Header.FreeLongPageCount。在阵列的末尾添加和移除循环页。
在某些情况下,尤其是对于空闲长页来说,可能需要队列而不是栈。这是防止在某些情况下时间和文件位置的反相关。用于短值的短页还可能从以队列来管理中受益,虽然用于其它目的短页可能保存在栈中。页表可被用来实现使用两个索引的队列。然而,该方法将具有在长时间段内创建不必要的深页表的趋势,如将文件使用数天以实现循环缓冲时。深度不应变得过大,虽然除去只包含一个非空引用的顶页和视需要调整索引可以应付这一情况。
Header.NextShortPage和Header.NextLongPage可被用来指示应在哪里分配新鲜页。短页是从Header.NextShortPage来分配的,直到Header.NextShortPage达到长页边界为止。这一情况发生时,应当分配新的长页,且短页可从该新分配的长页来分配。长页可从Header.NextLongPage来分配。这就是文件的末尾。在某些情况下,可能需要将空闲短页接合到空闲长页中,这作为压缩工具是有用的。
在某些实施例中,媒体文件管理器208可被安排来在构建虚拟文件时向恢复日志写入状态信息,以在诸如断电或系统故障等故障情况下恢复该虚拟文件。恢复日志被写入在当前快照中所建立的虚拟文件的末尾之后的长页中(例如,在Header.NextLongPage处)。恢复日志中的长页包括第一短页中的头部、最后一个短页中的尾部以及从第二短页开始的短数据页。恢复日志应被管理来确保其不与对该虚拟文件的不可恢复的写入相冲突。恢复日志头部和恢复日志尾部的示例可示出如下:
typedef struct RecoveryLogHeader{
        GUID              Signature;         //标识恢复日志头部
        ULONG             SequenceNumber;
        ULONG             ShortPageCount;    //页阵列中短页的数量
        ULONG             LongPageCount;     //页阵列中长页的数量
        BOOLEAN           Last;              //指示这是日志中的最后一个长页
        PAGEREF           PageRefs[];        //对阵列中的每一页的引用
   }RecoveryLogHeader;
   typedef struct RecoveryLogTrailer{
           GUID               Signature;      //标识恢复日志尾部
           ULONG              SequenceNumber;  //必须匹配头部的序列号
   }RecoveryLogTrailer;
对于某些页大小组合,以上所描述的RecoveryLogHeader(恢复日志头部)可能超过短页的长度。可以通过例如,通过约束页大小、为恢复日志头部使用超过一个短页、和/或限制日志所使用的每一长页中短页的数量等来禁止这些情况,以降低或完全防止该情形的可能性。
在某些实施例中,媒体文件管理器208可以实现各种高速缓存技术来增强性能。媒体文件管理器208可以将虚拟文件分为一个或多个长页和短页、将长页和短页的一部分写入高速缓存中、以及用多个线程来访问所缓存的页。在一实施例中,例如,可以在进程之间使用命名的共享存储器来共享高速缓存。高速缓存页可被分配以下4个状态中的一个:(1)干净;(2)脏;(3)快照;和(4)快照镜像(ghost)。另外,某些页是可恢复的,而其它则不取决于其来自该文件的哪一部分。例如,所有长页通常都是不可恢复的。短页通常是可恢复的,除非是其中短页被高频率地写入且对这些写入不要求恢复的情况。
对于所有页,可以根据以下三个规则来定义页的初始状态:(1)从盘读取的所有页面开始是干净的;(2)所有新创建的页面开始是脏的;以及(3)被锁定以供写入、未被写入并随后解锁的干净页保持干净。向盘提交的进程与客户机读/写活动同时发生。不可恢复页可以用比可恢复页高的频率提交,但只要提交了可恢复页则应当提交不可恢复页。
用于提交不可恢复页的进程可如下实现。例如,所有(不可恢复)脏页变为快照。快照页作为干净页来对待,除了其正被写入、被制作副本、副本是脏的以及原件是快照镜像的时候。快照和快照镜像页被写入其在文件中的相应位置。快照镜像页被转储清除。快照页变为干净的。
用于提交所有页的进程可如下实现。所有脏页变为快照。快照页作为干净页来对待,除了在其正被写入、被制作副本、副本是脏的以及原件是快照镜像的时候。脏副本被展示在高速缓存外以供IO而非其快照镜像版本。不可恢复快照和不可恢复快照镜像页被写入其在文件中的相应位置。可恢复快照和可恢复快照镜像页被写入恢复日志。可恢复快照和可恢复快照镜像页被写入其在文件中的相应位置。快照镜像页被转储清除。快照页变为干净的。恢复日志被转储清除。
在某些实施例中,媒体文件管理器208可以实现各种并发性规则来防止冲突。媒体文件管理器208可以将虚拟文件分为各自都具有一个锁的多个资源,并由多个应用程序使用这些资源锁来从该虚拟文件中读取媒体信息。在分配层中实现的并发性规则旨在达到各种文件读取器、文件写入器和盘输入/输出(I/O)之间最高程度的独立性。高速缓存可被用来在读取器和写入器之间通信,且还将读取器和写入器与盘I/O隔离。
虚拟文件可被分为各个“文件资源”。例如,文件资源可以包括:(1)头部;(2)短页分配;(3)长页分配;(4)根容器扩充;(5)根容器访问;(6)值扩充(例如,按值);以及(7)值访问(例如,按值)。每一资源都具有其自己的锁。大多数锁在对分配层的单个调用中获得并释放。例外是“值访问”和“值扩充”。分配层API应当允许应用程序跨对该分配层的多个调用来显式地锁定这些资源。可以建立各种依赖性规则来确定在其它资源被锁定时给定消费者可以锁定什么资源。这些规则防止否则将死锁分配层的循环。这些规则还允许“应用程序层”通过防止读取器在其完全存在之前读取内容来在NVP值上实施语义。
大多数资源可以用以下两种方式中的一种来锁定:(1)读锁;(2)写锁。锁定规则如下:(1)任何数量的读取器都可以与0个写入器共享一个资源;(2)写锁与所有其它锁是互斥的。
在某些情况下,阻挡层(block layer)代码可在短时间间隔内获得锁来确保NVP、页表、分配表等的相干性。在其它情况下,在应用程序的控制下,在对阻挡层API的调用所确定的时间间隔内获得锁。
读取器在其间必须维护所述资源的数据和语义相干性以使一系列相关的读操作顺利进行的时间间隔内获得读锁。在没有获得读锁的情况下则不尝试读取。写入器在其间将要发生一系列相关的写操作以维护资源的相干性的时间间隔内获得写锁。在没有获得写锁的情况下则不尝试写入。
为允许读取器在写入器正向文件资源写入的同时从该同一文件资源中读取,写入器在其锁定给定资源的同时保持一组私有的脏页。读取器看不到这些脏页,直到写入器在释放写锁的过程中将其提交为止。在写入器释放写锁时不必要提交该数据。写入器不进行提交而做出多个写入(每次都锁定和解锁)是可以的。在缺少合并两个写入器同时产生的脏页的通用方法时,一次只允许单个写入器。如果脏页被版本化,则可以减少或消除提交锁。
为确保跨多个文件资源的相干性,分配层应当向读取器保证,所提交的改变不会被无序地到盘。高速缓存应当减少该类型的问题。可以无序地提交页,但只要其按序保留在高速缓存中,则读取器就可以以正确的顺序获得其内容。在提交写入时,可能需要抛出事件以便向读取器通知值的改变。
应用程序接口层
各实施例还可以包括含有软件对象的API软件对象库的API层,该软件对象可与对应的定义的API命令共同操作以支持上述文件分配层。该API层可以允许各种自定义应用程序利用使用媒体文件管理器208实现的文件分配方案。视给定实现的需要,该API层可以结合媒体文件管理器208使用、与媒体文件管理器208分开使用、或代替媒体文件管理器208使用。
一般而言,API是允许其它进程一起工作的计算机进程或技术。在运行操作系统和诸如MICROSOFT 
Figure A200780022300D0021092009QIETU
等各种应用程序的个人计算机的熟悉设置中,API允许应用程序与操作系统进行通信。应用程序对操作系统API进行调用,来调用操作系统服务。操作系统API后的实际代码位于动态链接库(DLL)的集合中。
类似于其它软件元素,API可以用其服务由另一软件元素所调用的计算机可执行指令的形式来实现。计算机可执行指令可用多种不同的形式来具体化。最终,指令被简化为供计算机处理器处理的机器可读位。然而,在生成这些机器可读位之前,可能存在将API实现转换为各个形式的多个功能层。例如,以C++实现的API首先作为一系列人类可读的代码行出现。随后,该API由编译器软件编译为供在诸如例如处理单元202等处理器上执行的机器可读的代码。
不同的编程语言和执行环境的增长已经导致对诸如API实现等编程代码的原始实现和到供在设备上处理的位的简化之间的另外的功能层的需求。例如,最初以诸如C++等高级语言创建的计算机程序可首先被转换为中间语言,如
Figure A200780022300D0021092033QIETU
中间语言(MSIL)。该中间语言随后在特定环境中执行之前,可即刻由即时(Just-in-Time,JIT)编译器编译。这允许代码在各种各样的处理环境中运行而不必分发多个经编译的版本。根据其上可实现API的多个层面,以及持续增长的用于创建、管理和处理代码的技术,各实施例不限于任何特定的编程语言或执行环境。
图8示出软件体系结构800的逻辑图。软件体系结构800可以示出被安排来实现和/或使用参考图1-7所描述的文件分配方案的各种软件元素。如图8所示,软件体系结构800可以包括各种自定义应用程序802-1-p、API层804和API软件库808。API软件库808可以包括多个文件对象806-1-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-1-q。自定义应用程序802-1-p可以使用一个或多个API命令来调用一个或多个对应的文件对象806-1-q以执行一组特定的文件相关功能。稍后将更详细地描述一组API命令和对应的文件对象806-1-q。
在各实施例中,一个或多个自定义应用程序802-1-p可以访问、操纵、或以其它方式使用一个或多个API命令与虚拟文件进行交互,该一个或多个API命令对应于或调用API软件库808的一个或多个文件对象806-1-q。文件对象806-1-q,以及在图示和所附描述中被标识为对象的任何其它元素,都是分立的软件单元,其通常是使用面向对象的编程技术来实现的。在某些情况下,自定义应用程序802-1-p、API层804、和/或各种API命令可被实现为一个或多个对象。有多种对象类型可用,且被广泛使用在该行业中,并且特定的对象类型可视给定实现的需要而改变。值得注意的是,此处所描述的和权利要求书中的由对象实现的功能还可以通过被设计来互相接口的多个对象来实现。各实施例在该上下文中不受限制。
更具体地,文件对象806-1-q可以表示被安排来执行实现上述媒体文件分配方案的一个或多个方面所需要的各种文件相关的操作的分立的软件单元。在各实施例中,API层804和API软件库808可被设计为对各种媒体文件分配功能、方法、或过程进行建模。例如,API层804和API软件库808可以支持诸如支持虚拟文件的文件头部中签名和版本、定义和检索关于虚拟文件的分配统计数据、支持虚拟文件中的NVP分层结构(包括创建和删除NVP的能力)、生成短值和长值(被建模为虚拟文件)、对短值或长值中的范围置0的能力、显式锁定短值和长值以供读取或写入、对指示各值何时改变的事件的订阅、以及其它功能等功能或对这些功能进行建模。各实施例在该上下文中不受限制。
在各实施例中,一个或多个文件对象806-1-q可以包括特定类的实例。例如,一个类可以包含提供用于创建文件的服务的对象,而另一个类可以包含用于从文件读取数据的对象,且又一个类可以包含用于向文件写入数据的对象。通常,程序员在运行对象的实例之前知道该对象的类。对象的类是在诸如API软件库808或其子集等类库中查找的。这样一个库可以访问所有可用的对象类的目录。客户机应用程序可以调用库中指定该应用程序想要的对象的类和该应用程序想要有指向其的指针的第一所支持的接口的功能。该库随后使实现该类的对象的服务器应用程序开始运行。该库还向发起的客户机应用程序传回指向所请求的新实例化的对象上的接口的指针。客户机随后可以直接向该对象请求指向该对象支持的任何其它接口的指针。
对象所支持的接口一般被认为该对象与其客户机之间的合约。该对象承诺如该接口定义的一样支持该接口的方法,而客户机应用程序承诺正确地调用这些方法。因此,对象和客户机必须同意显式地标识每一接口的方式、共同的描述或定义接口中的方法的方式、和如何实现接口的具体定义。因此可以按照其继承的接口参数以及其继承的类参数来描述对象。例如,在对象的类具有用于向文件写入数据的功能的情况下,继承该类的实例也将能够向文件写入数据,以及在该实例中提供的任何附加特征和功能。在类支持特定接口的情况下,该类的实例继承该“合约”并且因此也支持该接口。通过其实现各实施例的各方面的对象通常遵循这些关于对象、类、继承、和接口的定义的编程原则和理解。然而,应当清楚,对面向对象的编程技术的修改和改进正不断发生,且各实施例不限于特定类型或具有任何特定特征的对象。所提供的API可以通过现在使用或稍后开发的任何种类的对象来实现。
在一实施例中,例如,API层804可以包括interface(接口)ISAL类。根据interface ISAL类,API层804可以接收创建虚拟文件的文件创建命令。文件创建对象可以响应于该文件创建命令用文件句柄创建虚拟文件。文件创建对象可以向调用应用程序802返回该虚拟文件的文件句柄。类似地,可以使用打开文件命令来打开给定的虚拟文件。interface ISAL类和所附API命令的示例可如下示出:
object,
uuid(397656E0-B3E6-436f-88B4-2BC63DB775D7),
pointer_default(unique),
local
interface ISAL:IUnknown
{
HRESULT
CreateFile(
        [in]                      LPCWSTR          szFilename,
        [in]                      DWORD            dwSharing,
        [in]                      DWORD            dwCreation,
        [in]                      ULONG            cSids,
        [in,size_is(cSids)]      PSID*p           pSids,
        [in]                      REFGUID          AppSig,
             [in]            DWORD           AppVer,
             [out]           ISALFile**      ppFile
       );
       HRESULT
       OpenFile(
              [in]                   LPCWSTR        szFilename,
              [in]                   DWORD          dwSharing,
              [in]                   ULONG          cSids,
              [in,size_is(cSids)]   PSID*p         pSids,
              [out]                  ISALFile**     ppFile
    );
    };
在一实施例中,例如,API层804可以包括interface ISALFile类。根据interface ISALFile类,API层804可以接收获取文件信息命令,并响应于该获取文件信息命令返回关于虚拟文件的文件信息。interface ISALFile类还可以包括获取根容器命令,并从根容器发送一NVP列表。interfaceISALFile类和所附API命令的示例可如下示出:
cpp_quote(″//{AE03A0A5-DE98-45ff-8016-DDEFF70BCF61}″)
cpp_quote(″DEFINE_GUID(CLSID_SAL,″)
cpp_quote(″0xae03a0a5,0xde98,0x45ff,0x80,0x16,0xdd,0xef,0xf7,0xb,0xcf,0x61);″)
typedef struct{
            GUID            SALSignature;         //标识该层的格式
            GUID            ApplicationSignature; //标识下一层的格式
            ULONG           SALVersion;           //该层的格式版本
            ULONG           ApplicationVersion;   //下一层的格式版本
            ULONG           ShortPageSize;        //以字节为单位的短页大小。
            ULONG           LongPageSize;         //以字节为单位的长页大小。
            ULONGLONG       RootContainerSize;     //以字节为单位的根容器的长度。
            ULONG           FreeShortPageCount;    //空闲短页表中的页数
            ULONG           FreeLongPageCount;     //空闲长页表中的页数
            PAGEREF         FirstFreeShortPage;    //要分配的下一短页
            PAGEREF         FirstFreeLongPage;     //要分配的下一长页
   }SAL_FILE_INFO;
      object,
      uuid(DE5A3D59-7A4E-47bb-9B26-352A40531921),
      pointer_default(unique)
      interface ISALFile:IUnknown
      {
      HRESULT
      GetFileInfo(
      [out]    SAL_FILE_INFO*pFileInfo
      );
HRESULT
    OpenRootContainer(
    [out]ISALContainerReader**       ppContainer
        );
};
在一实施例中,例如,API层804可以包括interfaceISALContainerReader类。根据interface ISALContainerReader类,API层804可以接收容器读命令,并从容器读取NVP。interface ISALContainerReader类还可以包括读锁获取命令、读锁释放命令、常驻值命令、获取值命令、和获取容器命令。interface ISALContainerReader类和所附API命令的示例可如下示出:
object,
uuid(57950673-5697-4f30-94F9-9F05E4B5E966),
pointer_default(unique)
interface ISALContainerReader:IUnknown
{
HRESULT
A cquireReadLock();
HRESULT
ReleaseReadLock();
HRESULT
OpenNVPByName(
      [in]    PROPVARIANT*      pName,
      [out]   ISALNVPReader**   ppNVPReader
);
HRESULT
OpenNVPByIndex(
         [in]    ULONG            Index,
         [out]   ULONGLONG*p      ValueSize,
         [out]   PROPVARIANT*     pName,
         [out]   ISALNVPReader**  ppNVPReader
       );
HRESULT
GetNVPCount(
      [out      ULONG*pcNVPs
);
};
在一实施例中,例如,API层804可以包括interface ISALContainerWriter类。根据interface ISALContainerWriter类,API层804可以接收容器写命令,并向容器写入NVP。interface ISALContainerWriter类还可以包括写锁获取命令、提交改变并释放写锁命令、丢弃改变并释放写锁命令、设置常驻值命令、清除值命令、设置短值命令、设置长值命令、以及创建容器命令。interface ISALContainerWriter类和所附API命令的示例可如下示出:
object,
uuid(90E71790-57E1-47c3-9E2C-8A4A975A77B4),
pointer_default(unique)
interface ISALContainerWriter:ISALContainerReader
{
HRESULT
Acquire WriteLock();
HRESULT
Commit();
HRESULT
Release WriteLock();
HRESULT
CreateNVP(
       [in]     PROPVARIANT*      pName,
       [in]     ULONGLONG         ValueSize,
       [out]    ISALNVPWriter**   pNVPWriter
);
};
在一实施例中,例如,API层804可以包括interface ISALNVPReader类。根据interface ISALNVPReader类,API层804可以接收值读取器命令,并从容器读取短值或长值。interface ISALNVPReader类还可以包括是否为长命令、获取长度命令、读锁获取命令、读锁释放命令、和复制自命令。interface ISALNVPReader类和所附API命令的示例可如下示出:
object,
uuid(F821DCDC-E279-46eb-B012-24059B4311CA),
pointer_default(unique)
interface ISALNVPReader:IUnknown
{
HRESULT
AcquireReadLock();
HRESULT
ReleaseReadLock();
HRESULT
CopyFrom(
      [in]    ULONGLONG   ValueOffset,
      [in]    ULONG       cb,
      [out]   BYTE*       pb
);
HRESULT
GetValueSize(
      [out]   ULONGLONG*   pValueSize
);
};
在一实施例中,例如,API层804可以包括interface ISALNVPWriter类。根据interface ISALNVPWriter类,API层804可以接收值写入器命令,并向容器写入短值或长值。interface ISALNVPWriter类还可以包括写锁获取命令、提交改变并释放写锁命令、丢弃改变并释放写锁命令、复制到命令、设置长度命令、引退到偏移命令、和引退范围命令。interface ISALNVPWriter类和所附API命令的示例可如下示出:
object,
uuid(8B19572D-DE92-4fb3-9680-E576FFF1A739),
pointer_default(unique)
interface ISALNVPWriter:ISALNVPReader
{
HRESULT
AcquireWriteLock();
HRESULT
Commit();
HRESULT
Release WriteLock();
HRESULT
CopyTo(
     [in]       ULONGLONG     ValueOffset,
     [in]       ULONG         cb,
     [in]       BYTE*         pb
);
HRESULT
RetireToOffset(
     [in]       ULONGLON       ullEndOffset
);
};
此处阐明了许多具体细节以提供对这些实施例的全面理解。然而,本领域技术人员将理解,没有这些具体细节也可实践这些实施例。在其它实例中,没有详细地描述公知的操作、组件和电路以免得使这些实施例显得晦涩难懂。可以理解,此处公开的具体的结构和功能细节可以是代表性的且不必要限制这些实施例的范围。
还值得注意的是,任何对“一个实施例”或“一实施例”的引用都意味着结合该实施例所描述的特定的特征、结构、或特性被包括在至少一个实施例中。出现在说明书中各个地方的短语“在一实施例中”不必全都指的是同一实施例。
某些实施例可使用表述“耦合的”和“连接的”及其派生词来描述。应当理解,这些术语不旨在互为同义词。例如,某些实施例可使用术语“连接的”来描述以指示两个或更多元素互相有直接的物理或电接触。在另一示例中,某些实施例可使用术语“耦合的”来描述以指示两个或更多元素有直接的物理或电接触。然而,术语“耦合的”还可以意味着两个或更多元素互相不直接接触,而仍互相合作或交互。各实施例在该上下文中不受限制。
某些实施例可以例如使用可以存储一条指令或一组指令的机器可读介质或物品来实现,这些指令如果被机器执行则使得该机器执行根据各实施例的方法和/或操作。例如,这种机器可以包括任何合适的处理平台、计算平台、计算设备、计算系统、处理系统、计算机、处理器等,且可以使用硬件和/或软件的任意合适的组合来实现。例如,机器可读介质或物品可以包括任何合适类型的存储器单元、存储器设备、存储器物品、存储器介质、存储设备、存储物品、存储介质和或存储单元,例如,存储器、可移动或不可移动介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟介质、硬盘、软盘、压缩盘只读存储器(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-RW)、光盘、磁性介质、磁光介质、可移动存储器卡或盘、各种类型的数字多功能盘(DVD)、磁带、磁盒等。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (20)

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所述的方法,其特征在于,包括用来自所述软件库的第四软件对象创建所述名-值对。
CN2007800223008A 2006-06-16 2007-05-16 管理媒体文件的方法和装置 Expired - Fee Related CN101473316B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/454,409 US7783686B2 (en) 2006-06-16 2006-06-16 Application program interface to manage media files
US11/454,409 2006-06-16
PCT/US2007/011771 WO2007149167A1 (en) 2006-06-16 2007-05-16 Application program interface to manage media files

Publications (2)

Publication Number Publication Date
CN101473316A true CN101473316A (zh) 2009-07-01
CN101473316B CN101473316B (zh) 2010-12-15

Family

ID=38833722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800223008A Expired - Fee Related CN101473316B (zh) 2006-06-16 2007-05-16 管理媒体文件的方法和装置

Country Status (7)

Country Link
US (1) US7783686B2 (zh)
EP (1) EP2035952A4 (zh)
JP (1) JP5194005B2 (zh)
CN (1) CN101473316B (zh)
BR (1) BRPI0711732A2 (zh)
MX (1) MX2008014857A (zh)
WO (1) WO2007149167A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106663063A (zh) * 2014-09-05 2017-05-10 高通股份有限公司 写保护管理系统

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8234623B2 (en) * 2006-09-11 2012-07-31 The Mathworks, Inc. System and method for using stream objects to perform stream processing in a text-based computing environment
US8850154B2 (en) * 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US8904400B2 (en) 2007-09-11 2014-12-02 2236008 Ontario Inc. Processing system having a partitioning component for resource partitioning
US8209514B2 (en) * 2008-02-04 2012-06-26 Qnx Software Systems Limited Media processing system having resource partitioning
US20100083268A1 (en) * 2008-09-29 2010-04-01 Morris Robert P Method And System For Managing Access To A Resource By A Process Processing A Media Stream
US8924944B2 (en) 2012-06-29 2014-12-30 Microsoft Corporation Implementation of distributed methods that support generic functions
US9176769B2 (en) 2012-06-29 2015-11-03 Microsoft Technology Licensing, Llc Partitioned array objects in a distributed runtime
US8893155B2 (en) 2013-03-14 2014-11-18 Microsoft Corporation Providing distributed array containers for programming objects
US9678787B2 (en) 2014-05-23 2017-06-13 Microsoft Technology Licensing, Llc Framework for authoring data loaders and data savers
US10691426B2 (en) * 2017-10-26 2020-06-23 Saudi Arabian Oil Company Building flexible relationships between reusable software components and data objects
AU2020329777A1 (en) * 2019-08-12 2022-01-27 Audio Visual Preservation Solutions, Inc. Source identifying forensics system, device, and method for multimedia files

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2014799A1 (en) 1989-05-08 1990-11-08 John W. Whisler System and method for reading and writing disks formatted for an operating system foreign to the host computer
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JPH0659953A (ja) * 1992-05-21 1994-03-04 Nec Corp 仮想ファイル入出力制御方法
ATE409907T1 (de) 1993-06-03 2008-10-15 Network Appliance Inc Verfahren und vorrichtung zum beschreiben beliebiger bereiche eines dateisystems
WO1996017313A1 (en) 1994-11-18 1996-06-06 Oracle Corporation Method and apparatus for indexing multimedia information streams
US6937729B2 (en) 1995-04-03 2005-08-30 Scientific-Atlanta, Inc. Representing entitlements to service in a conditional access system
US5815703A (en) 1996-06-28 1998-09-29 Microsoft Corporation Computer-based uniform data interface (UDI) method and system using an application programming interface (API)
US6208999B1 (en) 1996-12-12 2001-03-27 Network Associates, Inc. Recoverable computer file system with a signature area containing file integrity information located in the storage blocks
US5963963A (en) * 1997-07-11 1999-10-05 International Business Machines Corporation Parallel file system and buffer management arbitration
US5940838A (en) 1997-07-11 1999-08-17 International Business Machines Corporation Parallel file system and method anticipating cache usage patterns
US5987477A (en) * 1997-07-11 1999-11-16 International Business Machines Corporation Parallel file system and method for parallel write sharing
US5960446A (en) * 1997-07-11 1999-09-28 International Business Machines Corporation Parallel file system and method with allocation map
US6366988B1 (en) * 1997-07-18 2002-04-02 Storactive, Inc. Systems and methods for electronic data storage management
US6134602A (en) 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
US6128713A (en) 1997-09-24 2000-10-03 Microsoft Corporation Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
US6415373B1 (en) 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6751623B1 (en) 1998-01-26 2004-06-15 At&T Corp. Flexible interchange of coded multimedia facilitating access and streaming
US6205457B1 (en) 1998-06-22 2001-03-20 Intel Corporation Ordered ole file structure
US6430549B1 (en) * 1998-07-17 2002-08-06 Electronic Data Systems Corporation System and method for selectivety defining access to application features
US6269254B1 (en) * 1998-09-28 2001-07-31 Motorola, Inc. Radio communications device and method with API between user application program and telephony program and method
US6922708B1 (en) 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US6324581B1 (en) 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US6990677B1 (en) * 1999-03-18 2006-01-24 Microsoft Corporation Application program interfaces for electronic program guide data services
US6718445B1 (en) 1999-03-26 2004-04-06 International Business Machines Corporation System and method for performing dynamic buffer management in an HFS (hierarchical file system DF/SMS)
JP3464172B2 (ja) 1999-06-30 2003-11-05 株式会社次世代情報放送システム研究所 送信装置および送信方法、受信装置および受信方法、ならびに、送受信システムおよび送受信方法
US6499039B1 (en) 1999-09-23 2002-12-24 Emc Corporation Reorganization of striped data during file system expansion in a data storage system
US7392481B2 (en) * 2001-07-02 2008-06-24 Sonic Solutions, A California Corporation Method and apparatus for providing content-owner control in a networked device
US6523046B2 (en) 2000-02-25 2003-02-18 Microsoft Corporation Infrastructure and method for supporting generic multimedia metadata
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6745207B2 (en) * 2000-06-02 2004-06-01 Hewlett-Packard Development Company, L.P. System and method for managing virtual storage
EP1168174A1 (en) 2000-06-19 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Automatic backup/recovery process
US7657916B2 (en) 2000-07-31 2010-02-02 Cisco Technology, Inc. Digital subscriber television networks with local physical storage devices and virtual storage
US6738875B1 (en) 2000-07-31 2004-05-18 Microsoft Corporation Efficient write-watch mechanism useful for garbage collection in a computer system
US6886033B1 (en) 2000-12-08 2005-04-26 At&T Corp. Flexible media request identification technique
US7240358B2 (en) 2000-12-08 2007-07-03 Digital Fountain, Inc. Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
US7213075B2 (en) 2000-12-15 2007-05-01 International Business Machines Corporation Application server and streaming server streaming multimedia file in a client specific format
US7046805B2 (en) 2001-03-20 2006-05-16 Digeo, Inc. System and method for efficiently storing and processing multimedia content
US7043637B2 (en) 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
US7020663B2 (en) 2001-05-30 2006-03-28 George M. Hay System and method for the delivery of electronic books
US7305011B2 (en) 2001-06-14 2007-12-04 International Business Machines Corporation Periodic broadcast and location of evolving media content with application to seminar and stroke media
US7165239B2 (en) 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7024427B2 (en) * 2001-12-19 2006-04-04 Emc Corporation Virtual file system
US7007046B2 (en) 2002-03-19 2006-02-28 Network Appliance, Inc. Format for transmission file system information between a source and a destination
US6925467B2 (en) 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7289716B2 (en) * 2002-06-14 2007-10-30 Microsoft Corporation Scalable programmable video recorder
US7286748B2 (en) 2002-07-25 2007-10-23 Microsoft Corporation Sharing live advanced streaming format indexed files
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
JP4464279B2 (ja) 2002-11-14 2010-05-19 アイシロン・システムズ・インコーポレーテッド 分散ファイルシステムにおけるファイルの再ストライピングのためのシステム及び方法
US7099881B2 (en) 2002-12-06 2006-08-29 Stmicroelectronics, Inc. Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes
US20060031889A1 (en) 2002-12-11 2006-02-09 Bennett James D Video processing system with simultaneous multiple outputs each with unique formats
US20040177371A1 (en) 2003-03-07 2004-09-09 Rami Caspi System and method for integrated communications center
US7336888B2 (en) 2003-04-24 2008-02-26 Ulead Systems, Inc. Method and apparatus for performing continuous capture during recording real-time data
EP1494130A1 (en) * 2003-06-30 2005-01-05 Sap Ag Method and system for displaying additional data fields in web based business applications
US8782020B2 (en) * 2003-11-18 2014-07-15 Oracle International Corporation Method of and system for committing a transaction to database
US7328217B2 (en) 2003-11-26 2008-02-05 Symantec Operating Corporation System and method for detecting and storing file identity change information within a file system
KR100550288B1 (ko) 2003-12-02 2006-02-08 주식회사 하우리 Ext2파일 시스템의 데이터 복구방법과 그 프로그램을기록한 기록매체
US7512878B2 (en) * 2004-04-30 2009-03-31 Microsoft Corporation Modular document format
US7409518B2 (en) 2004-05-21 2008-08-05 International Business Machines Corporation Method for improving disk space allocation
US7370273B2 (en) * 2004-06-30 2008-05-06 International Business Machines Corporation System and method for creating dynamic folder hierarchies
EP1782287A2 (en) 2004-07-21 2007-05-09 Beach Unlimited LLC Distributed storage architecture based on block map caching and vfs stackable file system modules
MX2007008112A (es) 2004-12-31 2007-10-19 British Telecomm Metodo para ejecutar una red sin conexion como una red de conexion orientada.
US8024356B2 (en) * 2006-02-03 2011-09-20 Autodesk, Inc. Database-managed image processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106663063A (zh) * 2014-09-05 2017-05-10 高通股份有限公司 写保护管理系统

Also Published As

Publication number Publication date
BRPI0711732A2 (pt) 2011-11-29
MX2008014857A (es) 2008-12-01
JP2009540466A (ja) 2009-11-19
US7783686B2 (en) 2010-08-24
CN101473316B (zh) 2010-12-15
WO2007149167A1 (en) 2007-12-27
US20070294311A1 (en) 2007-12-20
EP2035952A1 (en) 2009-03-18
EP2035952A4 (en) 2017-03-22
JP5194005B2 (ja) 2013-05-08

Similar Documents

Publication Publication Date Title
CN101473316B (zh) 管理媒体文件的方法和装置
US8856122B2 (en) Content package for electronic distribution
CN101059982B (zh) 包括元数据的存储介质及其再现设备和方法
US7984086B2 (en) Storage medium storing audio-visual data including metadata, reproducing apparatus, and method of searching for audio-visual data using the metadata
US20110289460A1 (en) Hierarchical display of content
US7996427B1 (en) Unified system for accessing metadata in disparate formats
US8131929B2 (en) Memory device and method for content virtualization
US7603387B2 (en) Techniques to manage media files
CN101506890A (zh) 视频文件的操作系统外壳管理
US20070016549A1 (en) Method system, and digital media for controlling how digital assets are to be presented in a playback device
KR100631741B1 (ko) 멀티미디어 데이터 처리 방법
CN101180680A (zh) 包括用于获得元数据的应用程序的信息存储介质及获得元数据的设备和方法
CN101521784A (zh) 用于再现图像的方法和装置
Liang On Managing Emerging Storage Devices from Different Layers: Firmware, Middleware, and Application
Coughlin et al. The Future of Home Digital Storage
Klinkmann An Architecture for Accessible and Sharable Digital Video in the Home Environment
Heinsohn Need for Integration of Physical and Virtual Media Asset Systems
Qian et al. Digital-item-based media management system and applications
Kohinata et al. AV-use File Systems for Multiple High-definition Era
Meixner et al. Challenges in Storing Multimedia Data for the Future-An Overview
CN101370021A (zh) 带网络功能的dvd光盘刻录机

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101215

Termination date: 20140516