Dv元数据提取的制作方法

文档序号:6761817阅读:287来源:国知局
专利名称:Dv元数据提取的制作方法
技术领域
本发明一般涉及处理多媒体数据,尤其涉及从DV格式的多媒体数据中提取元数据。
背景技术
DV是广泛用于数字视频摄像机的数字视频格式。DV格式是由一般被称为DV协会的各公司的协会创建的国际标准。DV最初被称为DVC(数字视频盒式磁带),它使用金属汽化磁带(metal evaporate tape)来录制非常高质量的数字视频。DV视频规范IEC 61834规定了在数字磁带上形成螺旋录制的数据块的内容、格式以及录制方法。它也描述了对盒式磁带、调制方法、磁化和基本系统数据、使用6.35mm(1/4英寸)磁带录制系统的数字视频盒式磁带以及提供录制的盒式磁带的可交换性的装置的电子和机械特征的公用规范。
在数据流中按照大约每秒29兆比特的速率(3.7M字节/秒)传送DV视频信息。DV视频帧一般包括10个DIF序列,其中的每一个包含各自含有80字节数据的150个DIF块。除视频和音频数据以外,每一DV视频帧包括与视频和音频数据相关联的被称为DV元数据的附加数据。
DV元数据可包括与DV帧中的视频数据相关联的各种数据。例如,DV元数据可包括录制视频的时间和日期、录制视频时便携式摄像放像一体机上的各种设置等。根据IEC 61834-4,DV元数据被分成256个分开的“包”。尽管为DV元数据保存256个包,但其中的许多包尚待定义。每一个包包含5个字节。每一DV元数据包中的第一字节是包ID,接下来四个字节包含二进制字段。
DV格式允许每一DV视频帧独立于自身而不必依赖来自前导或后续帧的任何数据。例如,在DV帧内同样的元数据被重复无数次。嵌入每一DV帧内的冗余以及DV格式所固有的大量附加数据(例如,元数据)使得DV视频成为编辑的理想格式。然而,各种困难阻止目前的DV编辑应用程序完全利用使得DV视频理想地适于编辑的独特特征。
在典型DV情形中,在便携式摄像放像一体机中录制视频并将其转换成数字格式。数字磁带中的视频数据可在数字磁带驱动器中播放,诸如便携式摄像放像一体机、DVCR或独立单元中的数字磁带驱动器。DV数据可通过火线电子地传送给计算机的硬盘。传送进程通常由捕捉驱动程序、独立实用程序、或在诸如台式个人计算机等计算机上执行的编辑应用程序的组件执行。在传送过程中,DV数据以通常仅由计算机理解的文件格式被“包装”,诸如用于Windows的AVI或用于Mac的Quicktime。从而,一旦完成传送进程之后,计算机硬盘上的DV数据按照标准编辑应用程序可处理的文件格式来包装。诸如AdobePremierePro等各种编辑应用程序允许通过实时视频和音频编辑工具的非线性视频编辑。
然而,如上所述,目前的DV编辑应用程序很少或不利用按照使其理想地适于编辑的DV视频格式所提供的丰富信息。对此的主要原因是,难以从DV视频帧内提取DV元数据。目前DV元数据提取要求应用程序开发器编写其自身的自定义代码以便提取特别期望的元数据。另外,由DV编辑应用程序执行的提取进程将是非常处理器密集型的,这将妨碍该应用程序的其它编辑功能的性能。这些困难的结果是DV元数据一般不被大多数DV编辑应用程序使用。
从而,存在对从DV数据流中提取DV元数据的方式的需求。
发明概述此处描述了从DV数据流中提取DV元数据。
根据一个实现,接收指定将要从DV数据流中提取的附加的每一帧的DV元数据的指令。该元数据从DV数据流的DV帧中提取。
根据另一实现,元数据被存储在容器中,且该容器被附加到DV帧的DV样本。该容器可被管理以便在其中存储附加的DV元数据结构,并允许检索存储在其中的元数据项。
根据又一实现,DV元数据结构被存储在容器内。DV元数据结构是DV元数据包的解包版本。DV元数据结构包括从DV元数据包中解包的二进制值,以及与每一二进制相关联的不同的变量名。
附图简要说明在全部附图中使用相同的参考标号参考相似的组件和特征。


图1示出了适于DV元数据提取的示例性环境。
图2示出了适于从DV数据流中提取DV元数据的计算机的示例性环境。
图3示出了通过各种处理组件处理的DV数据的示例。
图4示出了DV元数据提取工具的各个组件。
图5示出了含有一个或多个DV元数据包和一个或多个未打包DV_METADATA结构的容器。
图6示出了用于从DV数据流中提取DV元数据的示例性方法的框图。
图7示出了用于从DV数据流中提取DV元数据的另一示例性方法的框图。
图8示出了适于实现诸如图2中所示的计算机的示例性计算环境。
较佳实施例的详细描述概观以下描述针对表示DV元数据提取工具的一组接口、数据结构和事件。DV元数据提取工具包括用于描述将从DV数据流中提取的DV元数据包的API(应用程序编程接口)。提取API被称为MFExtractDVMetadata,它支持用于指定和移除要从DV帧中提取的DV元数据包的方法。提取API也支持用于确定提取列表中的DV元数据包的格式以及确定该提取列表中给定索引处的DV元数据包的ID的方法。
DV元数据提取工具也包括用于描述一旦从DV帧中提取DV元数据之后持有该DV元数据的容器的API。容器API被称为IMFDVMetadataContainer,它支持用于对容器添加或移除DV结构以及从容器中检索数据、从容器中移除数据和迭代通过容器的方法。DV元数据提取工具也包括表示未打包DV元数据包的高层结构的集合。
DV元数据提取工具一般是在Microsoft公司的Media Foundation(媒体基础)体系结构的环境中描述的。然而,注意,此处DV元数据提取工具是按照允许在任何合适的多媒体体系结构中使用它的方式来设计和描述的。
示例性环境图1示出了适于DV元数据提取的示例性环境100。图1的示例性环境100包括计算机102和一个或多个DV视频输入源104。
DV视频输入源104可以是能够将DV视频内容传送给计算机102的任何类型的设备或通信网络,例如包括,便携式存储介质104(1)(例如,磁盘、媒体卡(mediacard)、光盘)、DV视频录制设备104(2)(例如,数字便携式摄像放像一体机)、或诸如因特网、公司网络或家庭网络等网络104(3)。
视频录制设备104(2)可以是能够按照DV格式(即,在数字磁带上)录制活动视频和音频以供稍后经由例如DVCR、便携式摄像放像一体机或诸如计算机102等个人计算机中的数字磁带驱动器重放的各种数字录制设备中的任何一种。视频录制设备104(2)一般能够使用i.LINK(IEEE 1394)或火线数字接口直接连接至计算机102,使得DV视频内容可在计算机102上直接编辑。
计算机102可被实现为一般而言能够从各个源104接收视频内容并操纵视频内容以便通过诸如微软公司的Media Foundation体系结构等常驻多媒体体系结构编辑和回放的各种计算设备。计算机102通常另外能够执行常见的计算功能,诸如电子邮件、日程安排、任务组织、文字处理、Web浏览等。在所述实施例中,计算机102运行在开放平台操作系统上,诸如Microsoft的Windows操作系统。计算机102可被实现为,例如台式计算机、服务器计算机、膝上型计算机或其它形式的个人计算机(PC)。以下将参考图8更详细地描述计算机102的一个示例性实现。
如以下将参考示例性实施例更详细讨论的,计算机102一般被配置成具有包含允许从DV数据中提取DV元数据的DV元数据提取工具的多媒体体系结构。
示例性实施例图2示出了适于从DV数据流中提取DV元数据的计算机102的示例性实施例。贯穿本发明,将在诸如由个人计算机执行的程序模块等计算机/处理器可执行指令的通用环境中描述多媒体体系结构及便于提取DV元数据的相关组件。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。而且,本领域技术人员可以理解,这样的程序模块可以使用其它计算机系统配置来实现,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、网络PC、小型机、大型计算机等。而且,本发明也可以在分布式计算环境中实现,其中任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。在图2的当前计算环境中,计算机102一般被示为含有位于本地存储器中的程序模块(未示出)。如上所述,将在以下参考图8更详细描述计算机102的示例性实现。
图2中所示的DV元数据提取工具200可在诸如微软的Media Foundation等多媒体体系结构202的环境中操作。然而,DV元数据提取工具200不限于在这样的体系结构中操作。因此,DV元数据提取工具200也可被实现为,例如独立组件或另一应用程序的子组件。在描述DV元数据提取工具200之前,将参考图2提供对多媒体体系结构202的简要描述。
如图2中所示,多媒体体系结构202包括各种组件层。另外,多媒体体系结构202一般也包括支持或相关联的媒体应用程序204。这样的应用程序204在图2中被示为与多媒体体系结构202分开,但也可被示为体系结构202的一部分。多媒体体系结构202的组件层包括控制组件层206、核心组件层208、基础组件层210、开发平台层212和定义层214。
控制组件层208的组件包括媒体处理器234、基本编辑器218、基本编码器220、媒体会话222、拓扑加载器224、媒体引擎226、源分解器228。这些组件一般组成可以是完全受控或不受控的面向任务的API(应用程序编程接口)。控制组件206一般提供执行诸如将适当的核心层组件208链接在一起以便处理媒体的任务的管理功能。例如,拓扑加载器224检查传入媒体文件的多媒体数据类型,并确定需要将核心层组件208中的哪些处理组件(即,230、232、234、236、238)链接成处理链以正确地呈现数据类型。注意,为本发明起见,该媒体数据类型是DV数据。控制层206的媒体引擎组件226管理通过由拓扑加载器224汇集的处理组件链(即,230、232、234、236、238)对数据的处理。例如,媒体引擎226将通过处理链推送数据,从而控制何时停止回放、开始回放、后退、跳至特定的时间等。
核心层组件208包括媒体源230、元数据读/写232、MUX/Dmux(多路复用/多路分解)234、变换236和媒体宿238。媒体源230通过通用de、良好定义的接口提供多媒体数据。媒体源230描述图像,包括将被访问的视频数据流。存在用于提供来自不同多媒体文件类型或设备的多媒体数据的媒体源的众多实现。然而,本发明针对DV格式的多媒体。
核心层238的多个变换236通过通用的、良好定义的接口各自在多媒体数据上执行某种类型的变换操作。变换的示例包括,编解码器、DSP、视频整形器、音频重采样器、统计处理器、色彩重采样器等。尽管在核心层208内分开示出MUX/Dmux 234(此后称为Dmux 234),但它是变换236的一种表示,它采用交错的多媒体数据作为输入,并将该数据分成多媒体数据的各个单独有用的媒体流。因此,在本发明的环境中,Dmux 234是从DV媒体源230中分离出DV帧或样本的视频和音频分量等的DV Dmux 234。
也在图2的多媒体体系结构202内将Dmux 234示为包含DV媒体元数据提取工具200。如此处将以下更详细描述的,Dmux 234支持通过DV元数据提取工具200的DV元数据提取。DV元数据提取工具200一般允许用户创建和管理将从DV数据流中提取的DV元数据包的提取列表。一旦将DV元数据包ID添加到该提取列表之后,DV Dmux 234从每一DV帧中提取相关联的DV元数据包,同时它分离出该DV帧的视频和音频分量。DV Dmux 234在容器中存储DV元数据包,并将该容器作为扩展的属性附加于输出视频样本。尽管此处结合Dmux 234或作为其一部分描述DV元数据提取工具200,但这不旨在作为对于可在核心层208或其它地方的哪里实现DV元数据提取工具200的限制。由于Dmux 234的分离功能所提供的效率的便利,在Dmux 234内实现DV元数据提取工具200是较佳的实施例。因此,DV元数据提取工具200可以仅是处于能够访问DV数据流的任何位置的媒体源230的一部分、DMO(DirectX媒体对象)或独立软件组件。以下将参考随后的附图更详细地讨论DV元数据提取过程。
媒体宿(宿)238也包含在核心层208的处理组件中。宿238一般通过通用的、良好定义的接口接受多媒体数据作为输入。存在媒体宿的多种实现用于对多媒体数据执行不同功能,诸如将多媒体数据写至给定的文件类型或写至网络,或使用显卡在视频监视器上显示多媒体数据。
多媒体体系结构202的基础组件210和开放平台212一般组成大多数不受控的API。基础组件210包括媒体容器240、连网242、DRM 244、MPEG格式支持246和音频/视频引擎248。这些组件一般执行单独的功能以支持多媒体体系结构202。开放平台212一般包括资源管理基础架构和常见的原语类型,诸如采样、时钟、事件、缓冲等。多媒体体系结构202的定义层包括与方案、协议和格式(例如,元数据、设备模型、类型等)相关的定义和策略。
图3示出了通过核心层208的多个处理组件处理的DV数据的示例,这多个组件包括如上简要所述的Dmux 234的DV元数据提取工具200。DV数据样本(DV帧)300进入Dmux 234,在那里它们被分离成视频样本302和音频样本304。视频样本302通过处理链前进至各种处理组件,诸如视频编解码器308和视频呈现器310,在此之后,它们可在视频显示器312上显示。音频样本304通过处理链前进至诸如音频呈现器314等各种处理组件,在此之后,可通过音频扬声器316播放它们。当Dmux 234对DV样本300进行分离时,它也提取根据来自提取列表(见图4)的DV元数据包ID(DVPackID)在DV样本300内定位的DV元数据包。在定位其DVPackID位于提取列表中的DV元数据包之后,Dmux 234提取DV元数据包,将其存储在容器306中,并将容器306作为扩展的属性附加于相应的输出视频样本302。
对DV元数据包的某个子集,DV元数据提取工具200也提供对被称为DV_METADATA结构(见图5)的DV包专用数据结构的扩展支持。除在容器306中存储这些扩展支持包的DV元数据包之外,Dmux 234也在容器306中存储未打包的DV_METADATA结构。因此,对某些扩展支持DV元数据包,DV元数据提取工具200将打包的数据分解成可用的DV包专用数据结构,即DV_METADATA结构。图5示出了含有一个或多个DV元数据包500以及与DV元数据包500对应的一个或多个未打包DV_METADATA结构502。
根据,IEC 61834-4,存在DV格式的256个DV元数据包。此处在以下名为“接口定义语言”的本发明的引用章节中示出这256个DV数据包。尽管为DV元数据保存256个包,但这些包中的多个尚待定义。在接口定义语言引用章节中示出各种DV元数据的二进制包布局。所包含的DB元数据包二进制布局用于作为未打包DV打包专用数据结构(即,DV_METADATA结构)所特别支持的那些DV元数据包。因此,接口定义语言章节也包括用于特别支持的DB元数据包的未打包DV_METADATA结构。一般而言,每一DV元数据包包括按照该包的二进制布局的5个字节。每一DV元数据包中的第一字节是DVPackID,接下来四个字节包含二进制字段。
再次参考图3和4,DV元数据提取工具200支持通过各种方法维护提取列表404的提取API 400(应用程序编程接口)。DV元数据提取工具200也支持将在以下描述的容器API 402。图4示出了DV元数据提取工具200以及它所支持的提取API 400和容器API 402。图4中也示出提取列表404,它可包含各个DVPackID。提取API 400被称为MFExtractDVMetadata API,它所支持的方法包括AddPack(添加包)、RemovePack(移除包)、RemoveAllPacks(移除所有包)、GetCount(获取计数)以及GetPack(获取包)。
AddPack方法根据以下句法将指定的包添加到将在每一DV帧300上提取的DV包的提取列表404HRESULT AddPack(BYTE DVPackID);
DVPackID是为DV元数据包指定PackID的输入参数。这是DVPACKID枚举的成员。在所得的DV_METADATA结构中P,ackID位于DvMetadata.Pack
中。不能被添加到提取列表404的唯一的包是DVPAC_NO_INFO(0xFF)(见接口定义语言章节)。
如果AddPack方法成功,它返回S_OK。然而,如果DVPackID是DVPACK_NO_INFO,则将返回E_INVALIDARG。也可返回其它错误。
例如,从编辑应用程序204对AddPack的调用将DVPackID添加到提取列表404。即使之前已经添加过该包(即,DVPackID),该函数仍将成功。该包将不被引用计数,所以即使包被添加了两次它也仅需移除一次。
RemovePack方法根据以下句法将指定的包从将在每一DV帧300上提取的包的提取列表404中移除HRESULT RemovePack(BYTE DVPackID);DVPackID是为DV元数据包指定PackID的输入参数。这是DVPACKID枚举的成员。在所得的DV_METADATA结构中,PackID位于DvMetadata.Pack
中。
如果RemovePack方法成功,它返回S_OK。如果该包不位于提取列表404中,则该函数返回E_ITEM_NOT_FOUND。也可返回其它出错代码。
例如,从编辑应用程序204对RemovePack的调用将从提取列表404移除指定的包。
RemoveAllPacks方法根据以下句法清空Dmux 234将提取的DV包的提取列表404HRESULT RemoveAllPacks();RemoveAllPack方法没有任何参数输入。如果该方法成功,它返回S_OK。也可返回其它出错代码。例如,由编辑应用程序204调用RemoveAllPack将清空整个提取列表404。
GetCount方法根据以下句法返回位于提取列表404中的DV包的数量HRESULT GetCount(DWORD*pCount
);pCount参数是指定提取列表404中的包的数量的输出参数。如果该方法成功,则它返回S_OK。调用将检索提取列表404中的项(即,DVPackID)的个数。
GetPackID方法根据以下句法返回提取列表404中给定索引处的包的DVPackIDHRESULT GetPack(DWORD Index,BYTE*pDVPackID);Index参数是输入参数,它是所期望的DVPack ID的提取列表404中的索引。pDVPackID是输出参数,它是指向对象将复制在指定的索引处找到的项的DVPackID处的字节的指针。
如果GetPackID方法成功,则它将返回S_OK。如果Index超出范围,则该方法返回出错代码MF_E_INVALIDINDEX。如果返回错误,则pDVPackID的值为DVPACK_NO_INFO(0xFF)。
GetPackID方法允许调用者(例如,应用程序204)通过反复地调用GetPackId并递增索引直到返回E_INVALIDARG来检索将要提取的项的全部列表。
如上所述,DV元数据提取工具200也支持容器API 402(见图4)。容器306(图3)被置成由Dmux 234分离的视频样本302上的样本属性。容器API 400被称为IMFDVMetadataContainer,它所支持的方法包括Add(添加)、Remove(移除)、RemoveAll(移除所有)、GetCount(获取计数)、Lock(锁定)、Unlock(解除锁定)、GetFirst(获取第一个)以及GetNext(获取下一个)。一般而言,IMFDVMetadataContainer API提供用于将属性添加列表、将属性从列表中移除、清空容器306和迭代通过容器306的通用机制。
Add方法根据以下句法将DV包专用数据结构,即DV_METADATA结构添加到容器306HRESULT Add(const DV_METADATA*pMetadata,UINT32*puIndex);pMetadata参数是输入参数,它是指向DV_METADATA结构的常量指针。pMetadata->cbSize用于在容器306中分配存储器,以及将整个DV_METADATA结构的副本置于新分配的存储器中。
ulIndex是输出参数,它返回新添加的DV_METADATA结构的索引。如果添加其它的结构或从容器306中删除结构,索引可能改变。
如果Add方法成功,则它返回S_OK。如果它不能为新项分配足够的空间,它也可返回E_OUTOFMEMORY。该操作将在常量时间O(k)中完成。如果容器由另一线程锁定,那么该操作将被阻断直到该锁被释放(见以下的Lock和Unlock方法)。
Remove根据以下句法从容器306中移除DV包专用数据结构,即DV_METADATA结构HRESULT Remove(UINT32 uIndex);uIndex参数是输入参数,它指示要从容器306中移除的项的索引。当从容器306中移除项时,容器306中其余的项的索引可能改变。
如果该方法成功,则它将返回S_OK。如果不能找到具有匹配索引的项,那么它也可返回E_INVALIDARG。这包括当容器306为空的情况。该操作将在线性时间O(n)中完成,其中n是存储在列表中的项的个数。如果容器由另一线程锁定,则该操作将被阻断直到该锁被释放(见以下的Lock和Unlock方法)。
RemoveAll方法根据以下句法从容器306中清空所有的项(例如,DV元数据包和DV包专用数据结构)HRESULT RemoveAll();RemoveAll方法没有任何参数输入。如果该方法成功,则它将返回S_OK,且容器306中将不再存在任何项。然而,这之后并不一定释放存储器。容器306可实现轮询方案来避免重复的小型分配。该操作将在线性时间O(n)内完成,其中n为容器306中的项的个数。如果由另一线程锁定,则该操作将被阻断直到该锁被释放。(见以下的Lock和Unlock方法)。
GetCount方法根据一下句法返回容器306中的项的计数HRESULT GetCount(UINT32*puCount);
puCount参数是返回当前在容器306中的项的个数的输出参数。如果该方法成功,则它返回S_OK。
该操作将在常量时间O(k)内完成。所返回的计数仅当进行调用时才有效。可由其它线程添加或移除对象。锁定对象将防止其它线程在释放锁之前向容器添加项或从中移除项。(见以下的Lock和Unlock方法)。
Lock方法用于锁定容器306用于排他性访问。这保证了容器306可被迭代,且只要锁的所有者不添加或移除项,所返回的指向DV_METADATA结构的指针就将保持有效。该方法的句法如下HRESULT Lock();Lock方法没有输入参数。如果该方法成功,则它返回S_OK。它也可返回其它出错代码。如果不可用,那么调用将被阻断直到可获取锁定。
Unlock方法可根据以下句法释放通过Lock方法获得的锁HRESULT Unlock()UINT32*puIndex,const DV_METADATA**pMetadata);Unlock方法不存在输入参数。如果该方法成功,则它返回S_OK。它也可返回其它出错代码。
GetFirst方法根据以下句法从容器306的开头开始迭代HRESULT GetFirst(UINT32*puIndex,Const DV_METADATA**ppMetadata);puIndex参数是指定从容器306中检索到的项的索引的输出参数。ppMetadata参数是指定指向包含元数据的对象内部数据结构的指针的输出参数。如果向容器306添加或从中移除项,那么该指针可能无效。
如果该方法成功,则它返回S_OK。如果索引超出范围或自从对GetFirst()的最近一次调用以来向容器306添加或从中移除项,那么该方法可返回E_INVALIDARG。如果对象没有被锁定,则该方法将返回MF_E_INVALIDREQUEST。调用Lock方法确保当迭代该列表时其它线程不会向容器306添加或从中移除项。
GetNext方法根据以下句法对容器306中的每一项迭代HRESULT GetNext(UINT32*puIndex,Const DV_METADATA**ppMetadata);puIndex参数是指定从容器306中检索到的项的索引的输出参数。ppMetadata参数是指定指向包含元数据的对象内部数据结构的指针的输出参数。如果向容器306添加或从中移除项,那么该指针可能无效。
如果该方法成功,则它返回S_OK。如果索引超出范围或自从对GetFirst()的最近一次调用以来向容器306添加或从中移除项,那么该方法可返回E_INVALIDARG。如果对象没有被锁定,则该方法将返回MF_E_INVALIDREQUEST。调用Lock方法确保当迭代该列表时其它线程不会向容器306添加或从中移除项。
示例性方法现在将主要参考图6-7的流程图描述从DV数据流中提取DV元数据的示例方法。该方法一般应用于以上参考图2-5讨论的示例性实施例。所述方法的元素可由任何适当的装置来执行,包括例如,通过ASIC上的硬件逻辑块或通过在处理器可读介质上定义的处理器可读指令的执行。
如此处所使用的,“处理器可读介质”可以是可包含、存储、传递、传播或传送指令供处理器使用或执行的任何装置。处理器可读介质可以是,不作为限制,电、磁、光、电磁、红外或半导体系统、装置、设备或传播介质。处理器可读介质的更具体示例包括,具有一根或多根电线的电气连接(电)、便携式计算机磁盘(磁)、随机存取存储器(RAM)(磁)、只读存储器(ROM)(磁)、可擦除可编程只读存储器(EPROM或闪存)、光纤(光)、可重写压缩光盘(CD-RW)(光)以及便携式压缩光盘只读存储器(CDROM)(光)。
图6示出了从DV数据流中提取DV元数据的示例性方法600。在框602处,接收指定将从DV数据流中提取的附加的每一帧DV元数据。该指令由可以是计算机102上的多媒体体系结构202的一部分的DV元数据提取工具200接收。该指令通常从诸如在计算机102上执行的DV编辑应用程序等应用程序中接收。该指令以DV元数据提取工具200的提取接口400所支持的方法调用的形式被定向至提取接口400。该指令通过方法调用内包含的DVPackID来标识该DV元数据。提取接口400所支持的方法调用包括,将DVPackID添加至DV元数据提取列表404的AddPack方法调用、从提取列表404中移除DVPackID的RemovePack方法调用以及从提取列表404中移除所有DVPackID的RemoveAllPacks方法调用。提取接口400所支持的其它方法包括返回指示存在于提取列表404中的DVPackID的数量的数字的GetCount方法调用、以及返回位于提取列表404中的指定索引处的DVPackID的GetPackID方法调用。
在框604处,从DV数据流的DV帧中提取指令中指定的DV元数据。在一个实现中,多媒体体系结构202的核心层208内的Dmux 234在它将DV帧分离成分量视频302和音频304样本时提取所指定的DV元数据。该提取包括Dmux 234查看DV元数据提取列表404以确定提取哪一个DV元数据包。在框606处,在容器306中存储该DV元数据。在框608中,该容器被附加于由Dmux 234从DV帧300中分离的视频样本302。
在框610中,由DV元数据提取工具200管理该容器。DV元数据提取工具200包括支持应用程序204可用于访问和管理容器306中的数据的方法的容器接口402。容器接口402所支持的方法调用有将DV_METADATA结构添加至容器的Add方法调用、从容器中移除DV_METADATA结构的Remove方法调用、从容器中移除所有项的RemoveAll方法调用、返回指示存在于容器中的项的数量的数字的GetCount方法调用、锁定容器以供排他性访问的Lock方法调用、对容器解除锁定的Unlock方法调用、从容器中检索在容器的开始索引处的项的GetFirst方法调用以及从容器中检索在容器的下一索引处的项的GetNext方法调用。
图7示出了用于从DV数据流中提取DV元数据的另一示例性方法700。在框702处,管理DV元数据提取列表404。DV元数据提取列表404是由DV元数据提取工具200管理的。DV元数据提取工具200支持用于通过各种方法管理提取列表的提取接口400。提取接口400所支持的方法包括,将DVPackID添加至DV元数据提取列表404的AddPack方法调用、从提取列表404中移除DVPackID的RemovePack方法调用以及从提取列表404中移除所有DVPackID的RemoveAllPacks方法调用。提取接口400所支持的其它方法包括返回指示存在于提取列表404中的DVPackID的数量的数字的GetCount方法调用、以及返回位于提取列表404中的指定索引处的DVPackID的GetPackID方法调用。
在框704处,基于提取列表404中的DVPackID从DV帧300中提取DV元数据包。在一个实现中,多媒体体系结构202的核心层208内的Dmux 234在它将DV帧分离成分量视频302和音频304样本时提取所指定的DV元数据包。该提取包括Dmux 234查看DV元数据提取列表404以确定提取哪一个DV元数据包。在框706处,将DV元数据包存储在IMFDVMetadataContainer 306中。
在框708处,将DV元数据包解包成DV包专用数据结构。该DV包专用数据结构从DV元数据包中分解出打包的二进制数据,并向相应的变量名分配二进制值,使得应用程序204易于利用来自DV元数据包的数据。在框710处,将DV包专用数据结构存储在IMFDVMetadataContainer 306中,在框712处,IMFDVMetadataContainer 306被附加于由Dmux 234从DV帧300中分离的视频样本302。
在框714处,由DV元数据提取工具200管理IMFDVMetadataContainer 306。DV元数据提取工具200包括支持应用程序204可用于访问和管理容器306中的数据的方法的容器接口402。容器接口402所支持的方法调用有,将DV包专用数据结构(称为DV_METADATA结构)添加至容器的Add方法调用、从容器中移除DV_METADATA结构的Remove方法调用、从容器中移除所有项的RemoveAll方法调用、返回指示存在于容器中的项的数量的数字的GetCount方法调用、锁定容器以供排他性访问的Lock方法调用、对容器解除锁定的Unlock方法调用、从容器中检索在容器的开始索引处的项的GetFirst方法调用、以及从容器中检索在容器的下一索引处的项的GetNext方法调用。
当通过流程图以及与流程图的框相关联的文字来揭示一个或多个方法时,可以理解,这些框不必按照所呈现的顺序执行,且替换的顺序可能产生类似的优点。而且,这些方法不是详尽的,其可单独执行或彼此结合执行。
示例性计算机图8示出了适于实现计算机102的示例性计算环境800。尽管示出了一个特定配置,但可按照其它计算配置来实现客户计算机102。
计算机环境800包括计算机802形式的通用计算系统。计算机802的组件可以包括,但不限于,一个或多个处理单元804、系统存储器806和将包括处理器804在内的各种系统组件耦合至系统存储器806的系统总线808。
系统总线808可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线、加速图形端口和使用各种总线体系结构中的任一种的处理器或局部总线。系统总线808的示例有外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机802通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机802访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。系统存储器806包括诸如随机存取存储器(RAM)810等易失性存储器形式的计算机可读介质,和/或诸如只读存储器(ROM)812等非易失性存储器。基本输入/输出系统(BIOS)814包含有助于诸如启动时在计算机802中元件之间传递信息的基本例程,它通常存储在ROM 812中。RAM 810通常包含处理单元804可以立即访问和/或目前正在操作的数据和/或程序模块。
计算机802也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。作为示例,图8示出了从不可移动、非易失性磁介质(未示出)中读取或向其写入的硬盘驱动器816,从可移动、非易失性磁盘820(例如,“软盘”)中读取或向其写入的磁盘驱动器818,以及从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘824中读取或向其写入的光盘驱动器822。硬盘驱动器816、磁盘驱动器818和光盘驱动器822各自可由一个或多个数据媒体接口826连接至系统总线808。或者,硬盘驱动器816、磁盘驱动器818和光盘驱动器822可由SCSI接口(未示出)连接至系统总线808。
磁盘驱动器及其相关联的计算机可读介质为计算机802提供了对计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管示例示出了硬盘816、可移动磁盘820和可移动光盘824,可以理解,也可以使用可存储可由计算机访问的数据的其它类型的计算机可读介质,诸如盒式磁带或其它磁性存储设备,闪存卡、数字多功能盘(DVD)或其它光学存储,随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)等,来实现示例性计算系统和环境。
可在硬盘816、磁盘820、光盘824、ROM 812和/或RAM 810上存储任何数量的程序模块,作为示例,包括操作系统826、一个或多个应用程序模块828、其它程序模块830和程序数据832。这样的操作系统826、一个或多个应用程序模块828、其它程序模块830和程序数据832中的每一个(或其某种组合)可包含用于用户网络访问信息的高速缓存方案的实施例。
计算机802可包括标识为通信介质的各种计算机/处理器可读介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
用户可以通过诸如键盘834和定点设备836(例如,“鼠标”)等输入设备向计算机系统802输入命令和信息。其它输入设备838(未明确示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线808的输入/输出接口840连接至处理单元804,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。
监视器842或其它类型的显示设备也可经由接口,诸如视频适配器844连接至系统总线807。除监视器842以外,其它外围输出设备可包括诸如扬声器(未示出)和打印机846等组件,它们可以通过输入/输出接口840连接至计算机820。
计算机802可使用至一台或多台远程计算机,诸如远程计算设备848的逻辑连接在网络化环境中操作。作为示例,远程计算设备848可以是个人计算机、服务器、便携式计算机、服务器、路由器、网络计算机、对等设备或其它常见网络节点等。远程计算设备848被示出可包括此处相对于计算机802描述的许多或所有元素和特征的便携式计算机。
计算机802与远程计算机848之间的逻辑连接被示为局域网(LAN)850和通用广域网(WAN)852。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN网络环境中使用时,计算机802通过网络接口或适配器854连接至局域网850。当在WAN连网环境中使用时,计算机1802通常包括调制解调器856或用于通过广域网852建立通信的其它装置。调制解调器856对计算机802可以是内置或外置的,它可以通过输入/输出接口840或其它合适的机制连接至系统总线808。可以理解,所示的网络连接是示例性的,且可以使用在计算机802与804之间建立通信链路的其它手段。
在网络化环境中,正如计算环境800所示,相对于计算机802描述的程序模块或其部分可存储在远程存储器存储设备中。作为示例,远程应用程序858驻留在远程计算机848的存储器设备上。为说明起见,应用程序和诸如操作系统等其它可执行程序组件在此处被示为离散的框,但可认识到,这样的程序和组件在不同的时刻可驻留在计算机系统802的不同存储组件中,且由计算机的数据处理器执行。
接口定义语言如上所述,此IDL(接口定义语言)章节列出256个DV元数据包以及由DV元数据提取工具200以扩展的方式作为DV包专用数据结构(即,DV_METADATA结构)所特别支持这些包的各个二进制包布局。本章节也包括对所支持的DV_METADATA结构的未打包DV元数据的特定布局。在以下表格中标识具有扩展支持的DV元数据包表1


具有DV元数据提取工具200的扩展支持的每一DV包专用数据结构(即,DV_METADATA结构)以大小和DV包开始。该大小成员包含完整的DV_METADATA结构的大小。DVPack(5字节数组)是原始的DV元数据。每一个包含有5个字节。第一字节是来自以上表1的包ID。后面的四个字节包含含有数据的位字段。扩展支持包中的每一个具有相关联的结构,其中位字段被解包并稍加处理成为更可用的形式。可在IEC 61834-4中找到DV包的完全定义。
由DV元数据提取工具200所支持的256个DV元数据包和DV包专用数据结构(即,DV_METADATA结构)如下typedef enum_DVPACKID{DVPACK_CONTROL_CASSETTE_ID= 0x00,DVPACK_CONTROL_TAPE_LENGTH= 0x01,DVPACK_CONTROL_TIMER_ACT_DATE= 0x02,DVPACK_CONTROL_TIMER_ACS_S_S=0x03,
DVPACK_CONTROL_PR_START_POINT_04=0x04,DVPACK_CONTROL_PR_START_POINT_05=0x05,DVPACK_CONTROL_TAGID_NO_GENRE= 0x06,DVPACK_CONTROL_TOPIC_PAGE_HEADER=0x07,DVPACK_CONTROL_TEXT_HEADER= 0x08,DVPACK_CONTROL_TEXT= 0x09,DVPACK_CONTROL_TAG_0A= 0x0A,DVPACK_CONTROL_TAG_0B= 0x0B,DVPACK_CONTROL_TELETEXT_INFO=0x0C,DVPACK_CONTROL_KEY= 0x0D,DVPACK_CONTROL_ZONE_END_0E= 0x0E,DVPACK_CONTROL_ZONE_END_0F= 0x0F,DVPACK_TITLE_TOTAL_TIME= 0x10,DVPACK_TITLE_REMAIN_TIME=0x11,DVPACK_TITLE_CHAPTER_TOTAL_NO= 0x12,DVPACK_TITLE_TIME_CODE= 0x13,DVPACK_TITLE_BINARY_GROUP= 0x14,DVPACK_TITLE_CASSETTE_NO=0x15,DVPACK_TITLE_SOFT_ID_16= 0x16,DVPACK_TITLE_SOFT_ID_17= 0x17,DVPACK_TITLE_TEXT_HEADER=0x18,DVPACK_TITLE_TEXT= 0x19,DVPACK_TITLE_TITLE_START_1A= 0x1A,DVPACK_TITLE_TITLE_START_1B= 0x1B,DVPACK_TITLE_REEL_ID_1C= 0x1C,DVPACK_TITLE_REEL_ID_1D= 0x1D,DVPACK TITLE_TITLE_END_1E= 0x1E,DVPACK_TITLE_TITLE_END_1F= 0x1F,DVPACK_CHAPTER_TOTAL_TIME= 0x20,DVPACK_CHAPTER_REMAIN_TIME= 0x21,DVPACK_CHAPTER_CHAPTER_NO= 0x22,DVPACK_CHAPTER_TIME_CODE=0x23,DVPACK_CHAPTER_BINARY_GROUP= 0x24,DVPACK_CHAPTER_RESERVED_25= 0x25,DVPACK_CHAPTER_RESERVED_26= 0x26,DVPACK_CHAPTER_RESERVED_27= 0x27,DVPACK_CHAPTER_TEXT_HEADER= 0x28,DVPACK_CHAPTER_TEXT= 0x29,DVPACK_CHAPTER_CHAPTER_START_2A= 0x2A,DVPACK_CHAPTER_CHAPTER_START_2B= 0x2B,DVPACK_CHAPTER_RESERVED_2C= 0x2C,DVPACK_CHAPTER_RESERVED_2D= 0x2D,DVPACK_CHAPTER_CHAPTER_END_2E= 0x2E,DVPACK_CHAPTER_CHAPTER_END_2F= 0x2F,DVPACK_PART_TOTAL_TIME= 0x30,DVPACK_PART_REMAIN_TIME= 0x31,DVPACK_PART_PART_NO= 0x32,DVPACK_PART_TIME_CODE= 0x33,DVPACK_PART_BINARY_GROUP=0x34,DVPACK_PART_RESERVED_35= 0x35,DVPACK_PART_RESERVED_36= 0x36,DVPACK_PART_RESERVED_37= 0x37,DVPACK_PART_TEXT_HEADER= 0x38,DVPACK_PART_TEXT=0x39,DVPACK_PART_START_3A=0x3A,
DVPACK_PART_START_3B= 0x3B,DVPACK_PART_RESERVED_3C=0x3C,DVPACK_PART_RESERVED_3D=0x3D,DVPACK_PART_PART_END_3E=0x3E,DVPACK_PART_PART_END_3F=0x3F,DVPACK_PROGRAM_TOTAL_TIME= 0x40,DVPACK_PROGRAM_REMAIN_TIME= 0x41,DVPACK_PROGRAM_REC_DTIME= 0x42,DVPACK_PROGRAM_TIME_CODE= 0x43,DVPACK_PROGRAM_BINARY_GROUP=0x44,DVPACK_PROGRAM_RESERVED_45= 0x45,DVPACK_PROGRAM_RESERVED_46= 0x46,DVPACK_PROGRAM_RESERVED_47= 0x47,DVPACK_PROGRAM_TEXT_HEADER= 0x48,DVPACK_PROGRAM_TEXT=0x49,DVPACK_PROGRAM_PROGRAM_START_4A=0x4A,DVPACK_PROGRAM_PROGRAM_START_4B=0x4B,DVPACK_PROGRAM_RESERVED_4C= 0x4C,DVPACK_PROGRAM_RESERVED_4D= 0x4D,DVPACK_PROGRAM_PROGRAM_END_4E= 0x4E,DVPACK_PROGRAM_PROGRAM_END_4F= 0x4F,DVPACK_AAUX_SOURCE= 0x50,DVPACK_AAUX_SOURCE_CONTROL= 0x51,DVPACK_AAUX_REC_DATE= 0x52,DVPACK_AAUX_REC_TIME= 0x53,DVPACK_AAUX_BINARY_GROUP= 0x54,DVPACK_AAUX_CLOSED_CAPTION= 0x55,DVPACK_AAUX_TR= 0x56,DVPACK_AAUX_RESERVED_57=0x57,DVPACK_AAUX_TEXT_HEADER=0x58,DVPACK_AAUX_TEXT= 0x59,DVPACK_AAUX_AAUX_START_5A= 0x5A,DVPACK_AAUX_AAUX_START_5B= 0x5B,DVPACK_AAUX_RESERVED_5C=0x5C,DVPACK_AAUX_RESERVED_5D=0x5D,DVPACK_AAUX_AAUX_END_5E=0x5E,DVPACK_AAUX_AAUX_END_5F=0x5F,DVPACK_VAUX_SOURCE= 0x60,DVPACK_VAUX_SOURCE_CONTROL= 0x61,DVPACK_VAUX_REC_DATE= 0x62,DVPACK_VAUX_REC_TIME= 0x63,DVPACK_VAUX_BINARY_GROUP= 0x64,DVPACK_VAUX_CLOSED_CAPTION= 0x65,DVPACK_VAUX_TR= 0x66,DVPACK_VAUX_TELETEXT= 0x67,DVPACK_VAUX_TEXT_HEADER=0x68,DVPACK_VAUX_TEXT= 0x69,DVPACK_VAUX_VAUX_START_6A= 0x6A,DVPACK_VAUX_VAUX_START_6B= 0x6B,DVPACK_VAUX_MARINE_MOUNTAIN=0x6C,DVPACK_VAUX_LONGITUDE_LATITUDE= 0x6D,DVPACK_VAUX_VAUXEND_6E= 0x6E,DVPACK_VAUX_VAUX_END_6F=0x6F,DVPACK_CAMERA_CONSUMER_CAMERA_1=0x70,DVPACK_CAMERA_CONSUMER_CAMERA_2=0x71,
DVPACK_CAMERA_RESERVED_72= 0x72,DVPACK_CAMERA_LENS= 0x73,DVPACK_CAMERA_GAIN= 0x74,DVPACK_CAMERA_PEDESTAL= 0x75,DVPACK_CAMERA_GAMMA= 0x76,DVPACK_CAMERA_DETAIL=0x77,DVPACK_CAMERA_TEXT_HEADER= 0x78,DVPACK_CAMERA_TEXT= 0x79,DVPACK_CAMERA_RESERVED_7A= 0x7A,DVPACK_CAMERA_CAMERA_PRESET= 0x7B,DVPACK_CAMERA_FLARE= 0x7C,DVPACK_CAMERA_SHADING= 0x7D,DVPACK_CAMERA_KNEE= 0x7E,DVPACK_CAMERA_SHUTTER= 0x7F,DVPACK_LINE_HEADER= 0x80,DVPACK_LINE_Y= 0x81,DVPACK_LINE_CR= 0x82,DVPACK_LINE_CB= 0x83,DVPACK_LINE_RESERVED_84= 0x84,DVPACK_LINE_RESERVED_85= 0x85,DVPACK_LINE_RESERVED_86= 0x86,DVPACK_LINE_RESERVED_87= 0x87,DVPACK_LINE_TEXT_HEADER= 0x88,DVPACK_LINE_TEXT=0x89,DVPACK_LINE_LINE_START_8A= 0x8A,DVPACK_LINE_LINE_START_8B= 0x8B,DVPACK_LINE_RESERVED_8C= 0x8C,DVPACK_LINE_RESERVED_8D= 0x8D,DVPACK_LINE_LINE_END_8E= 0x8E,DVPACK_LINE_LINE_END_8F= 0x8F,DVPACK_MPEG_SOURCE= 0x90,DVPACK_MPEG_SOURCE_CONTROL= 0x91,DVPACK_MPEG_REC_DATE=0x92,DVPACK_MPEG_REC_TIME=0x93,DVPACK_MPEG_BINARY_GROUP=0x94,DVPACK_MPEG_STREAM= 0x95,DVPACK_MPEG_RESERVED_96= 0x96,DVPACK_MPEG_RESERVED_97= 0x97,DVPACK_MPEG_TEXT_HEADER= 0x98,DVPACK_MPEG_TEXT=0x99,DVPACK_MPEG_SERVICE_START_9A=0x9A,DVPACK_MPEG_SERVICE_START_9B=0x9B,DVPACK_MPEG_RESERVED_9C= 0x9C,DVPACK_MPEG_RESERVED_9D= 0x9D,DVPACK_MPEG_SERVICE_END_9E= 0x9E,DVPACK_MPEG_SERVICE_END_9F= 0x9F,DVPACK_RESERVED_RESERVED_A0= 0xA0,DVPACK_RESERVED_RESERVED_A1= 0xA1,DVPACK_RESERVED_RESERVED_A2= 0xA2,DVPACK_RESERVED_RESERVED_A3= 0xA3,DVPACK_RESERVED_RESERVED_A4= 0xA4,DVPACK_RESERVED_RESERVED_A5= 0xA5,DVPACK_RESERVED_RESERVED_A6= 0xA6,DVPACK_RESERVED_RESERVED_A7= 0xA7,DVPACK_RESERVED_RESERVED_A8= 0xA8,
DVPACK_RESERVED_RESERVED_A9= 0xA9,DVPACK_RESERVED_RESERVED_AA= 0xAA,DVPACK_RESERVED_RESERVED_AB= 0xAB,DVPACK_RESERVED_RESERVED_AC= 0xAC,DVPACK_RESERVED_RESERVED_AD= 0xAD,DVPACK_RESERVED_RESERVED_AE= 0xAE,DVPACK_RESERVED_RESERVED_AF= 0xAF,DVPACK_RESERVED_RESERVED_B0= 0xB0,DVPACK_RESERVED_RESERVED_B1= 0xB1,DVPACK_RESERVED_RESERVED_B2= 0xB2,DVPACK_RESERVED_RESERVED_B3= 0xB3,DVPACK_RESERVED_RESERVED_B4= 0xB4,DVPACK_RESERVED_RESERVED_B5= 0xB5,DVPACK_RESERVED_RESERVED_B6= 0xB6,DVPACK_RESERVED_RESERVED_B7= 0xB7,DVPACK_RESERVED_RESERVED_B8= 0xB8,DVPACK_RESERVED_RESERVED_B9= 0xB9,DVPACK_RESERVED_RESERVED_BA= 0xBA,DVPACK_RESERVED_RESERVED_BB= 0xBB,DVPACK_RESERVED_RESERVED_BC= 0xBC,DVPACK_RESERVED_RESERVED_BD= 0xBD,DVPACK_RESERVED_RESERVED_BE= 0xBE,DVPACK_RESERVED_RESERVED_BF= 0xBF,DVPACK_RESERVED_RESERVED_C0= 0xC0,DVPACK_RESERVED_RESERVED_C1= 0xC1,DVPACK_RESERVED_RESERVED_C2= 0xC2,DVPACK_RESERVED_RESERVED_C3= 0xC3,DVPACK_RESERVED_RESERVED_C4= 0xC4,DVPACK_RESERVED_RESERVED_C5= 0xC5,DVPACK_RESERVED_RESERVED_C6= 0xC6,DVPACK_RESERVED_RESERVED_C7= 0xC7,DVPACK_RESERVED_RESERVED_C8= 0xC8,DVPACK_RESERVED_RESERVED_C9= 0xC9,DVPACK_RESERVED_RESERVED_CA= 0xCA,DVPACK_RESERVED_RESERVED_CB= 0xCB,DVPACK_RESERVED_RESERVED_CC= 0xCC,DVPACK_RESERVED_RESERVED_CD= 0xCD,DVPACK_RESERVED_RESERVED_CE= 0xCE,DVPACK_RESERVED_RESERVED_CF= 0xCF,DVPACK_RESERVED_RESERVED_D0= 0xD0,DVPACK_RESERVED_RESERVED_D1= 0xD1,DVPACK_RESERVED_RESERVED_D2= 0xD2,DVPACK_RESERVED_RESERVED_D3= 0xD3,DVPACK_RESERVED_RESERVED_D4= 0xD4,DVPACK_RESERVED_RESERVED_D5= 0xD5,DVPACK_RESERVED_RESERVED_D6= 0xD6,DVPACK_RESERVED_RESERVED_D7= 0xD7,DVPACK_RESERVED_RESERVED_D8= 0xD8,DVPACK_RESERVED_RESERVED_D9= 0xD9,DVPACK_RESERVED_RESERVED_DA= 0xDA,DVPACK_RESERVED_RESERVED_DB= 0xDB,DVPACK_RESERVED_RESERVED_DC= 0xDC,DVPACK_RESERVED_RESERVED_DD= 0xDD,DVPACK_RESERVED_RESERVED_DE= 0xDE,DVPACK_RESERVED_RESERVED_DF= 0xDF,
DVPACK_RESERVED_RESERVED_E0= 0xE0,DVPACK_RESERVED_RESERVED_E1= 0xE1,DVPACK_RESERVED_RESERVED_E2= 0xE2,DVPACK_RESERVED_RESERVED_E3= 0xE3,DVPACK_RESERVED_RESERVED_E4= 0xE4,DVPACK_RESERVED_RESERVED_E5= 0xE5,DVPACK_RESERVED_RESERVED_E6= 0xE6,DVPACK_RESERVED_RESERVED_E7= 0xE7,DVPACK_RESERVED_RESERVED_E8= 0xE8,DVPACK_RESERVED_RESERVED_E9= 0xE9,DVPACK_RESERVED_RESERVED_EA= 0xEA,DVPACK_RESERVED_RESERVED_EB= 0xEB,DVPACK_RESERVED_RESERVED_EC= 0xEC,DVPACK_RESERVED_RESERVED_ED= 0xED,DVPACK_RESERVED_RESERVED_EE= 0xEE,DVPACK_RESERVED_RESERVED_EF= 0xEF,DVPACK_SOFT_MODE_MARKER_CODE= 0xF0,DVPACK_SOFT_MODE_OPTION_F1= 0xF1,DVPACK_SOFT_MODE_OPTION_F2= 0xF2,DVPACK_SOFT_MODE_OPTION_F3= 0xF3,DVPACK_SOFT_MODE_OPTION_F4= 0xF4,DVPACK_SOFT_MODE_OPTION_F5= 0xF5,DVPACK_SOFT_MODE_OPTION_F6= 0xF6,DVPACK_SOFT_MODE_OPTION_F7= 0xF7,DVPACK_SOFT_MODE_OPTION_F8= 0xF8,DVPACK_SOFT_MODE_OPTION_F9= 0xF9,DVPACK_SOFT_MODE_OPTION_FA= 0xFA,DVPACK_SOFT_MODE_OPTION_FB= 0xFB,DVPACK_SOFT_MODE_OPTION_FC= 0xFC,DVPACK_SOFT_MODE_OPTION_FD= 0xFD,DVPACK_SOFT_MODE_OPTION_FE= 0xFE,DVPACK_NO_INFO= 0xFF,}DVPACKID;typedef struct_DV_METADATA{UINT32 cbSize;BYTE Pack[5];} DV_METADATA;typedef UINT32 DV_AUDIOBLOCK_ID;//对DVSL可以是0//对DVSD、DV25可以是0-1//对DV50可以是0-3//对DVH1可以是0-7typedef struct_DV_AUDIO_METADATA{DV_METADATA Metadata;DV_AUDIOBLOCK_ID AudioBlock;} DV_AUDIO_METADATA;//包专用结构
typedef struct_DV_METADATA_CONTROL_CASSETTE_ID{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 0 0 0 0 0 0 0// PC1 A 1 1 B B B C C// PC2 D D D D E E E E// PC3 F F F F F F F F// PC4 G G G G H H H H//// AMEMic出错(MicError)// BMULTI-BYTES在一个多重写入操作周期中可以写入的单词的最大数量(MultiBytes)// CMEM TYPE存储器类型(MemoryType)// D空间0的存储器大小(MemorySizeOfSpace0)// E空间1的最后一个空区的存储器大小(MemorySizeOfLastBankInSpace1)// F空间1的存储体号(MemoryBankNoOfSpace1)// G磁带厚度的单位(TapeThickness)// H1/10磁带厚度//BOOL MicError;// 0该MIC中的所有事件不总是存在于该磁带上// 1该MIC中的所有事件确定地存在于该磁带上UINT32 MultiBytes;// 04字节// 18字节// 216字节// 3-6保留// 7未限制UINT32 MemoryType;// 0EEPROM// 1FeRAM// 其它=保留UINT32 MemorySizeOfSpace0;UINT32 MemorySizeOfLastBankInSpace1;// 0256字节// 1512字节// 21k字节// 32k字节// 44k字节// 58k字节// 616k字节// 732k字节// 864k字节// 其它保留// 0xF无信息UINT32 MemoryBankNoOfSpace1;UINT32 TapeThickness;} DV_METADATA_CONTROL_CASSETTE_ID;typedef struct_DV_METADATA_CONTROL_TAPE_LENGTH{DV_METADATA DVMetadata;// 二进制包布局
// PC0 0 0 0 0 0 0 0 1// PC1 A A A A A A AL 1// PC2 A A A A A A A A// PC3 AM A A A A A A A// PC4 1 1 1 1 1 1 1 1//// A磁带长度,MSB在PC3(M)左侧,LSB位于PC1(L)右侧。
//UINT32 TapeLength;} DV_METADATA_CONTROL_TAPE_LENGTH;typedef struct_DV_METADATA_TEXT_HEADER{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 0 0 0 1 0 0 0(对控制文本头部(TEXT_HEADER))// PC0 0 0 0 1 1 0 0 0(对标题文本头部)// PC1 A A A A A A A AL// PC2 B B B B C C C AM// PC3 D D D D D D D D// PC4 E E E F F F F F//// ATDP文本数据的总数(见部分2中的图55)// B文本类型(TextType)// COPN选项数量(OptionNumber)// DTEXT CODE文本代码指定特征集(TextCode)// EAREA NO.区域号指示在磁带上的哪个区域存储该主题(AreaNumber)。
// F主题标签(TopicTag)//UINT32 TotalTextData;UINT32 TextType;// 0名称// 1存储器// 2站// 3模型// 6操作符// 7副标题// 8概要// 9全屏// C一个字节编码的字体// D两个字节编码的字体// E图形// F无信息// 其它保留UINT32 OptionNumber;UINT32 TextCode;// (见IEC 61834-4的控制文本头部包)UINT32 AreaNumber;UINT32 TopicTag;UINT32 cbTextPacks;[size_is(cbTextPacks)]BYTEpTextPacks[];// 文本包布局-每一文本包具有该布局// PC0 0 0 0 0 1 0 0 1(对控制文本)// PC0 0 0 0 1 1 0 0 1(对标题文本)// PC1 ? ? ? ? ? ? ? ?
// PC2 ????????// PC3 ????????// PC4 ????????// 根据在相关联的文本头部包(TEXT HEADER)中指定的文本类型// 该包包含字体数据、图形数据或文本数据} DV_METADATA_TEXT_HEADER;typedef struct_DV_METADATA_TAG{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 0 0 0 1 0 1 1(对控制标签)// PC1 A A A A A A AL B// PC2 A A A A A A A A// PC3 AM A A A A A A A// PC4 C D E 1 F F F F//// A绝对磁道号(AbsoluteTrackNumber)// B空白标志(BlankFlag)// C文本标志(TextFlag)// D暂时为真(TemporaryTrue)// E保持标志(HoldFlag)// F标签ID(TagId)UINT32 AbsoluteTrackNumber;BOOL BlankFlag;// 1在该绝对磁道号之前存在不连续// 0在该绝对磁道号之前不存在不连续BOOL TextFlag;// 0文本信息存在// 1没有文本信息存在BOOL TemporaryTrue;// 该标志仅对MIC有效// 0MIC中的该事件数据不总是有效// 1MIC中该事件数据有效BOOL HoldFlag;// 0在回放或录制之后保持绝对磁道号// 1在回放或录制之后更新绝对磁道号UINT32 TagId;} DV_METADATA_TAG;typedef struct_DV_METADATA_TITLE_TIME_CODE{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 0 0 1 0 0 1 1// PC1 A 1 B B C C C C// PC2 1 D D D E E E E// PC3 1 F F F G G G G// PC4 1 1 H H I I I I//// A空白标志(Blank)// B帧(Frame)的十位数// C帧(Frame)的个位数// D秒(Second)的十位数
// E秒的(Second)个位数// F分钟(Minute)的十位数// G分钟(Minute)的个位数// H小时(Hour)的十位数// I小时(Hour)的个位数BOOL Blank;// 0在该绝对磁道号之前存在不连续// 1在该绝对磁道号之前不存在不连续UINT32 Frame;UINT32 Second;UINT32 Minute;UINT32 Hour;} DV_METADATA_TITLE_TIME_CODE;typedef struct_DV_METADATA_AAUX_BINARY_GROUP{DV_METADATA DVMetadata;DV_AUDIOBLOCK_ID DVAudioBlockId;// 二进制包布局// PC0 0 0 0 1 0 1 0 0(对标题二进制组(BINARY_GROUP))// PC1 A A A A B B B B// PC2 C C C C D D D D// PC3 E E E E F F F F// PC4 G G G G H H H H//// A二进制组2(BinaryGroup2)// B二进制组1(BinaryGroup1)// C二进制组4(BinaryGroup4)// D二进制组3(BinaryGroup3)// E二进制组6(BinaryGroup6)// F二进制组5(BinaryGroup5)// G二进制组8(BinaryGroup8)// H二进制组7(BinaryGroup7)UINT32 BinaryGroup1;UINT32 BinaryGroup2;UINT32 BinaryGroup3;UINT32 BinaryGroup4;UINT32 BinaryGroup5;UINT32 BinaryGroup6;UINT32 BinaryGroup7;UINT32 BinaryGroup8;} DV_METADATA_AAUX_BINARY_GROUP;typedef struct_DV_METADATA_BINARY_GROUP{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 0 0 1 0 1 0 0(对标题二进制组)// PC1 A A A A B B B B// PC2 C C C C D D D D// PC3 E E E E F F F F// PC4 G G G G H H H H//// A二进制组2(BinaryGroup2)
//B二进制组1(BinaryGroup1)//C二进制组4(BinaryGroup4)//D二进制组3(BinaryGroup3)//E二进制组6(BinaryGroup6)//F二进制组5(BinaryGroup5)//G二进制组8(BinaryGroup8)//H二进制组7(BinaryGroup7)UINT32 BinaryGroup1;UINT32 BinaryGroup2;UINT32 BinaryGroup3;UINT32 BinaryGroup4;UINT32 BinaryGroup5;UINT32 BinaryGroup6;UINT32 BinaryGroup7;UINT32 BinaryGroup8;} DV_METADATA_BINARY_GROUP;typedef struct_DV_METADATA_PROGRAM_REC_DTIME{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 0 0 0 0 1 0// PC1 A A BM B B B B BL// PC2 CM C CL DM D D D DL// PC3 EM E E FM F F F FL// PC4 E E E EL GM G G GL//// A录制模式(RecordingMode)// B分钟(Minutes)// C周(Week)// D小时(Hours)// E年(Year)// F日(Day)// G月(Month)UINT32 RecordingMode;// 0视频// 1音频// 2音视频// 3重复UINT32 Minutes;// 3F无信息UINT32 Hours;// 1F无信息UINT32 Day;UINT32 Month;UINT32 Year;// 年份的最后两位UINT32 WeekDay;// 0周日// 1周一// 2周二// 3周三// 4周四// 5周五// 6周六
// 7无信息} DV_METADATA_PROGRAM REC_DTIME;typedef struct_DV_METADATA_AAUX_SOURCE{DV_METADATA DVMetadata;DV_AUDIOBLOCK_ID DVAudioBlockId;// 二进制包布局// PC0 0 1 0 1 0 0 0 0// PC1 A 1 B B B B B B// PC2 C D D E F F F F// PC3 1 G H I I I I I// PC4 J K L L L M M M//// A锁定标志(LockedFlag)// B音频帧大小(AudioFrameSize)// C立体声模式(StereoMode)// D每个音频块的音频通道(Channel)// E成对位(PairBit)// F音频模式(AudioMode)// G多语言标志(Multi-LanguageFlag)// H50/60(FiftySixty)// I系统类型(SystemType)// J加重标志(EmphasisFlag)// K加重的时间常量(TimeConstant)// L采样频率(SamplingFrequency)// M量化(Quantization)BOOL LockedFlag;// 0锁定模式// 1未锁定模式UINT32 AudioFrameSize;BOOL StereoMode;// 0多重立体声音频// 1集总音频UINT32 Channel;// 0每个音频块一个通道// 1每个音频块两个通道// 其它保留BOOL PairBit;// 0一对通道// 1独立通道UINT32 AudioMode;// 音频模式的解释取决于立体声模式,// 通道以及处理中的音频块。见IEC 61834-4的章节8.1BOOL MultiLanguage;// 0以多种语言录制// 1不以多种语言录制BOOL FiftySixty;// 060图场系统(NTSC)// 150图场(PAL)UINT32 SystemType;// 结合50/60标志定义视频信号的系统类型// 见IEC 61834-4的8.1BOOL Emphasis;
// 0加重开// 1加重关BOOL TimeConstant;// 150.15毫秒// 0保留UINT32 SamplingFrequency;UINT32 Quantization;} DV_METADATA_AAUX_SOURCE;typedef struct_DV_METADATA_AAUX_SOURCE_CONTROL{DV_METADATA DVMetadata;DV_AUDIOBLOCK_ID_DVAudioBlockId;// 二进制包布局// PC0 0 1 0 1 0 0 0 1// PC1 A A B B C C D D// PC2 E F G G G H H H// PC3 I J J J J J J J// PC4 1 K K K K K K K//// A复制生成管理系统(CopyGnerationManagementSystem)// B之前录制的输入源(InputSource)// C压缩的次数(Compression)// D源情形(SourceSituation)// E录制开始(RecordStart)// F录制结束(RecordEnd)// G录制模式(RecordMode)// H插入通道(InsertChannel)// I方向标志(DirectionFlag)// J速度(PlayBackSpeed)// K流派类别(GenreCategory)UINT32 CopyGenerationManagementSystem;// 0允许复制而无限制// 1未使用// 2允许生成副本一次// 3不允许复制UINT32 InputSource;// 0模拟输入// 1数字输入// 2保留// 3无信息UINT32 Compression;// 0压缩一次// 1压缩两次// 2压缩三次或以上// 3无信息UINT32 SourceSituation;// 0带有听众约束的扰频源// 1没有听众约束的扰频源// 2带有听众约束的源或带有听众约束的解扰源// 3无信息BOOL RecordingStart;// 0录制起始点// 1不录制起始点
BOOL RecordingEnd;// 0录制结束点// 1不录制结束点UINT32 RecordMode;// 1原始// 3插入一个通道(CH1或CH2或CH或CH4)// 4插入四个通道(CH1和CH2和CH2和CH4)// 5插入两个通道(CH1和CH2)或(CH3和CH4)// 7无效录制(静音)UINT32 InsertChannel;// 0CH1// 1CH2// 2CH3// 3CH4// 4CH1和CH2// 5CH3和CH4// 6CH1和CH2和CH3和CH4// 7无信息BOOL DirectionFlag;// 0后退方向// 1前进方向UINT32 PlaybackSpeed;// 见IEC 61834-4的8.2章节UINT32 GenreCategory;// 见IEC 61834-4的3.3章节} DV_METADATA_AAUX_SOURCE_CONTROL;typedef struct_DV_METADATA_AAUX_REC_DATE{DV_METADATA DVMetadata;DV_AUDIOBLOCK_ID DVAudioBlockId;// 二进制包布局// PC0 0 1 0 1 0 0 1 0(对AAUX录制日期(REC DATE))// PC1 A B C C D D D D// PC2 1 1 E E F F F F// PC3 G G G H I I I I// PC4 J J J J K K K K//// A日光节约时间(DaylightSavingsTime)// B三十分钟(ThirtyMinutesFlag)// C时区(TimeZone)的十位数// D时区(TimeZone)的个位数// E天(Day)的十位数// F天(Day)的个位数// G周(Week)// H月(Month)的十位数// I月(Month)的个位数// J年(Year)的十位数// K年(Year)的个位数BOOL DaylightSavingsTime;// 0日光节约时间// 1正常BOOL ThirtyMinutesFlag;// 030分钟// 100分钟
UINT32 TimeZone;UINT32 Day;UINT32 Week;UINT32 Month;UINT32 LastTwoDigitsOfYear;} DV_METADATA_AAUX_REC_DATE;typedef struct_DV_METADATA_VAUX_REC_DATE{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 1 0 0 0 1 0(对VAUX录制日期)// PC1 A B C C D D D D// PC2 1 1 E E F F F F// PC3 G G G H I I I I// PC4 J J J J K K K K//// A日光节约时间(DaylightSavingsTime)// B三十分钟(ThirtyMinutesFlag)// C时区(TimeZone)的十位数// D时区(TimeZone)的个位数// E天(Day)的十位数// F天(Day)的个位数// G周(Week)// H月(Month)的十位数// I月(Month)的个位数// J年(Year)的十位数// K年(Year)的个位数BOOL DaylightSavingsTime;// 0日光节约时间// 1正常BOOL ThirtyMinutesFlag;// 030分钟// 100分钟UINT32 TimeZone;UINT32 Day;UINT32 Week;UINT32 Month;UINT32 LastTwoDigitsOfYear;} DV_METADATA_VAUX_REC_DATE;typedef struct_DV_METADATA_AAUX_REC_TIME{DV_METADATA DVMetadata;DV_AUDIOBLOCK_ID DVAudioBlockId;// 二进制包布局// PC0 0 1 0 1 0 0 1 1(对AAUX录制时间(REC_TIME))// PC1 1 1 A A B B B B// PC2 1 C C C D D D D// PC3 1 E E E F F F F// PC4 1 1 G G H H H H//// A帧(Frame)的十位数
// B帧(Frame)的个位数// C秒(Second)的十位数// D秒(Second)的个位数// E分钟(Minute)的十位数// F分钟(Minute)的个位数// G小时(Hour)的十位数// H小时(Hour)的个位数UINT32 Frame;UINT32 SecondUINT32 Minute;UINT32 Hour;} DV_METADATA_AAUX_REC_TIME;typedef struct_DV_METADATA_VAUX_REC_TIME{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 1 0 0 0 1 1(对VAUX录制时间)// PC1 1 1 A A B B B B// PC2 1 C C C D D D D// PC3 1 E E E F F F F// PC4 1 1 G G H H H H//// A帧(Frame)的十位数// B帧(Frame)的个位数// C秒(Second)的十位数// D秒(Second)的个位数// E分钟(Minute)的十位数// F分钟(Minute)的个位数// G小时(Hour)的十位数// H小时(Hour)的个位数UINT32 Frame;UINT32 Second;UINT32 Minute;UINT32 Hour;} DV_METADATA_VAUX_REC_TIME;typedef struct_DV_METADATA_AAUX_CLOSED_CAPTION{DV_METADATA DVMetadata;DV_AUDIOBLOCK_ID DVAudioBlockId;// 二进制包布局// PC0 0 1 0 1 0 1 0 1(对AAUX隐藏字幕(CLOSED CAPTION))// PC1 1 1 A A A B B B// PC2 1 1 C C C D D D// PC3 1 1 1 1 1 1 1 1// PC4 1 1 1 1 1 1 1 1//// A主要音频语言(MainAudioLanguage)// B主要音频类型(MainAudioType)// C第二音频语言(SecondAudioLanguage)// D第二音频类型(SecondAudioTyPe)UINT32 MainAudioLanguage;// 0未知
// 1英语// 2西班牙语// 3法语// 4德语// 5意大利语// 6其它// 7无UINT32 MainAudioType;// 0未知// 1单声道// 2模拟立体声// 3真立体声// 4立体声环绕// 5数据服务// 6其它// 7无UINT32 SecondAudioLanguage;// 0未知// 1英语// 2西班牙语// 3法语// 4德语// 5意大利语// 6其它// 7无UINT32 SecondAudioType;// 0未知// 1单声道// 2描述性视频服务// 3无节目音频// 4特别效果// 5数据服务// 6其它// 7无} DV_METADATA_AAUX_CLOSED_CAPTION;typedef struct_DV_METADATA_AAUX_TR{DV_METADATA DVMetadata;DV_AUDIOBLOCK_ID DVAudioBlockId;// 二进制包布局// PC0 0 1 0 1 0 1 1 0(对AAUX TR)// PC1 A A A AL B B B B// PC2 A A A A A A A A// PC3 A A A A A A A A// PC4 AM A A A A A A A//// A数据(Data)// B数据类型(Datatype)UINT32 DataType;UINT32 Data;}DV_METADATA_AAUX_TR;typedef struct_DV_METADATA_VAUX_TR
{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 1 0 0 1 1 1(对VAUX TR)// PC1 A A A AL B B B B// PC2 A A A A A A A A// PC3 A A A A A A A A// PC4 AM A A A A A A A//// A数据(Data)// B数据类型(Datatype)UINT32 DataType;UINT32 Data;} DV_METADATA_VAUX_TR;typedef struct_DV METADATA_VAUX_SOURCE{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 1 0 0 0 0 0// PC1 A A A A B B B B// PC2 C D E E F F F F// PC3 G G H I I I I I// PC4 J J J J J J J J////ATV频道(Channel)的十位数//BTV频道(Channel)的个位数//C黑白(BlackAndwhiteFlag)//D允许彩色(ColorFramesEnableFlag)//E彩色帧标识(ColorFramesId)//FTV频道(Channel)的百位数//G源代码(Sourcecode)//H50/60(FiftySixty)//I信号类型(Stype)//J调谐器类别(TunerCategory)UINT32 Channel;BOOL BlackAndWhiteFlag;// 0黑白// 1彩色BOOL ColorFramesEnableFlag;// 0CLF有效// 1CLF无效UINT32 ColorFramesId;// 对525-60// 0彩色帧A// 1彩色帧B//// 对625-50// 0第1、2场(Field)// 1第3、4场// 2第5、6场// 3第7、8场UINT32 SourceCode;BOOL FiftySixty;
// 060图场系统(NTSC)// 150图场系统(PAL)UINT32 SType;UINT32 TunerCategory;} DV_METADATA_VAUX_SOURCE;typedef struct_DV_METADATA_VAUX_SOURCE_CONTROL{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 1 0 0 0 0 1// PC1 A A B B C C D D// PC2 E 1 F F 1 G G G// PC3 H I J K L M N N// PC4 1 O O O O O O O//// A复制生成管理系统(CopyGenerationManagementSystem)// B之前录制的输入源(JustPreviousInput)// C压缩次数(Compression)// D源和所录制的情形(SourceSituation)// E录制起始点(RecordStart)// F录制模式(RecordMode)// G显示选择模式(DisplaySelect)// H帧/场标志(FrameField)// I第一/第二标志(FirstSecond)// J帧改变标志(FrameChange)// K隔行扫描标志(Interlace)// L静止场画面标志(StillField)// M静止摄影画面标志(StillCamera)// N广播系统(BroadcastSystem)// O流派类别(GenreCategory)UINT32 CopyGenerationManagementSystem;// 0允许复制而无限制// 1未使用// 2允许生成副本一次// 3不允许复制UINT32 JustPreviousInput;// 0模拟// 1数字// 2保留// 3无信息UINT32 Compression;// 0压缩一次// 1压缩两次// 2压缩三次或更多// 3无信息UINT32 SourceSituation;// 0带有听众约束的扰频源和在没有解扰的情况下录制// 1没有听众约束的扰频源且在没有解扰的情况下录制// 2带有听众约束的源或带有带有听众约束的解扰的源// 3无信息BOOL RecordingStart;// 0录制起始点// 1不录制起始点// 3无信息
UINT32 RecordMode;// 0原始// 1保留// 2插入// 3无效录制UINT32 DisplaySelect;BOOL FrameField;// 0两个场中仅一个被输出两次// 1两个场均按顺序输出BOOL FirstSecond;// 0场2为输出// 1场2为输出BOOL FrameChange;// 0与之前紧接的帧相同的画面// 1与之前紧接的帧不同的画面BOOL Interlace;// 0非隔行扫描// 1隔行扫描或未识别BOOL StillField;// 0场之间的时间区别几乎为0秒// 1场之间的时间区别大致为1.001/60秒或1/50秒BOOL StillCamera;// 0静止摄影画面// 1非静止摄影画面UINT32 BroadcastSystem;UINT32 GenreCategory;} DV_METADATA_VAUX_SOURCE_CONTROL;typedef struct_DV_METADATA_VAUX_CLOSED_CAPTION{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 1 0 0 1 0 1(对VAUX隐藏字幕)// PC1 A A A A A A A A// PC2 B B B B B B B B// PC3 C C C C C C C C// PC4 D D D D D D D D//// A第1场21行第1字节(FirstFieldFirstByte)// B第1场21行第2字节(FirstFieldSecondByte)// C第2场21行第1字节(SecondFieldFirstByte)// D第2场21行第2字节(SecondFieldSecondByte)UINT32 FirstFieldFirstByte;UINT32 FirstFieldSecondByte;UINT32 SecondFieldFirstByte;UINT32 SecondFieldSecondByte;} DV_METADATA_VAUX_CLOSED_CAPTION;typedef struct_DV_METADATA_CAMERA_CONSUMER_CAMERA_1{DV_METADATA DVMetadata;// 二进制包布局
// PC0 0 1 1 1 0 0 0 0// PC1 1 1 A A A A A A// PC2 B B B B B C C C// PC3 D D D E E E E E// PC4 F G G G G G G G//// A光圈(Iris)// B自动曝光模式(AEMode)// C自动增益控制(AGC)// D白平衡模式(WBMode)// E白平衡(WhiteBalance)// F对焦模式(FocusMode)// G焦点(FocusPosition)UINT32 Iris;// 按照F数的位置// 0-60其中光圈位置=2^(IP/8)的IP// 61F1.0以下// 62关// 63无信息UINT32 AEMode;// 0全自动// 1增益优先模式// 2快门优先模式// 3光圈优先模式// 4手动// 15无信息// 其它保留UINT32 AGC;// 0-13G// 15无信息UINT32 WBMode;// 0自动// 1保持// 2一键式// 3预设// 7无信息// 其它保留UINT32 WhiteBalance;// 0烛光// 1白炽灯// 2低色温的荧光灯// 3高色温的荧光灯// 4日光// 5阴暗// 6其它// 31无信息// 其它保留BOOL FocusMode;// 0自动对焦// 1手动对焦UINT32 FocusPosition;// 0-126焦点位置=Mx10^L// 其中M是焦点的最高5位// 而L是焦点的最低2位// 127无信息
} DV_METADATA_CAMERA_CONSUMER CAMERA_1;typedef struct_DV_METADATA_CAMERA_CONSUMER_CAMERA_2{DV_METADATA DVMetadata;// 二进制包布局// PC0 0 1 1 1 0 0 0 1// PC1 1 1 A B B B B B// PC2 C D E E E E E E// PC3 F F F F F F F F// PC4 G H H H I I I I//// A垂直摇摄全景方向(VerticalPanningDirection)// B垂直摇摄全景速度(VerticalPanningSpeed)// C图像稳定器(ImageStabilizer)// D水平摇摄全景方向(HorizontalPanningDirection)// E水平摇摄全景速度(HorizontalPanningSpeed)// F焦距(FocalLength)// G允许变焦标志(ZoomEnable)// HE-Zoom的单位(ElectricZoom)// I1/10的E-ZoomBOOL VerticalPanningDirection;// 0与垂直扫描相同方向// 1与垂直扫描相反方向UINT32 VerticalPanningSpeed;// 0-29摇摄全景速度// 30高于每场29行// 31无信息BOOL ImageStabilizer;// 0开// 1关BOOL HorizontalPanningDirection;// 0与水平扫描相同方向// 1与水平扫描相反方向UINT32 HorizontalPanningSpeed;// 0-30摇摄全景速度// 62高于每场122像素// 63无信息UINT32 FocalLength;// 0-254焦距// 255无信息BOOL ZoomEnable;// 0电子变焦开// 1电子变焦关UINT32 ElectricZoom;// 0-790.0-7.9单位的电子变焦// 126大于8倍// 127无信息} DV_METADATA_CAMERA_CONSUMER_CAMERA_2;typedef struct_DV_METADATA_CAMERA_SHUTTER{DV_METADATA DVMetadata;// 二进制包布局//
// 对顾客使用//// PC0 0 1 1 1 1 1 1 1// PC1 1 1 1 1 1 1 1 1// PC2 1 1 1 1 1 1 1 1// PC3 A A A A A A A AL// PC4 1 AM A A A A A A//// 对专业使用//// PC0 0 1 1 1 1 1 1 1// PC1 B B B B B B B B// PC2 C C C C C C C C// PC3 1 1 1 1 1 1 1 1// PC4 1 1 1 1 1 1 1 1////// A快门速度(ShutterSpeed)// B顶线快门速度(UpperLineSpeed)// C底线快门速度(LowerLineSpeed)//UINT32 ShutterSpeed;// 0x0000-0x7FFE快门速度// 0x7FFF无信息UINT32 UpperLineSpeed;// 0-254快门速度// 255无信息UINT32 LowerLineSpeed;}DV_METADATA_CAMERA_SHUTTER;结论尽管在结构化特征和/或方法性动作专用的的语言中描述了本发明,但可理解,在所附权利要求书中定义的本发明不必限于所述的具体特征或动作。相反,这些具体特征和动作是作为实现所要求保护的本发明的示例性形式来公开的。
权利要求
1.一种含有处理器可执行指令的处理器可读介质,所述处理器可执行指令被配置成接收指定从DV数据流中提取附加的每一帧DV元数据的指令;以及响应于所述指令从所述DV数据流的DV帧中提取所述元数据。
2.如权利要求1所述的处理器可读介质,其特征在于,包括其它处理器可执行指令,所述其它处理器可执行被配置成将所述元数据存储在容器中;将所述容器附加于所述DV帧的视频样本。
3.如权利要求1所述的处理器可读介质,其特征在于,所述接收指令包括接收AddPack调用,以将DVPackID添加至提取列表;接收RemovePack调用,以将DVPackID从所述提取列表中移除;以及接收RemoveAllPacks调用,以从所述提取列表中移除所有的DVPackID。
4.如权利要求3所述的处理器可读介质,其特征在于,包括其它处理器可执行指令,所述其它处理器可执行指令被配置成响应于GetCount调用,返回指示存在于所述提取列表中的DVPackID的数量的数字;以及响应于GetPackID调用,返回所述提取列表中索引处的DVPackID。
5.如权利要求1所述的处理器可读介质,其特征在于,所述提取包括确定来自提取列表的DVPackID;以及基于所述DVPackID标识所述DV帧内的元数据。
6.如权利要求2所述的处理器可读介质,其特征在于,还包括被配置成管理所述容器的处理器可执行指令。
7.如权利要求6所述的处理器可读介质,其特征在于,所述管理容器包括响应于Add调用,将DV_METADATA结构添加至所述容器;响应于Remove调用,从所述容器中移除DV_METADATA结构;响应于RemoveAll调用,从所述容器中移除所有项;响应于GetCount调用,返回指示存在于所述容器中的项的数量的数字;响应于Lock调用,锁定所述容器以供排他性访问;响应于Unlock调用,对所述容器解除锁定;响应于GetFirst调用,从所述容器中检索在所述容器的开始索引处的项;以及响应于GetNext调用,从所述容器中检索在所述容器的下一索引处的项。
8.如权利要求7所述的处理器可读介质,其特征在于,所述DV_METADATA结构包括DV元数据包的解包版本。
9.如权利要求8所述的处理器可读介质,其特征在于,所述DV_METADATA结构包括从所述DV元数据包中解包的二进制值;以及与每一二进制值相关联的不同变量名。
10.如权利要求2所述的处理器可读介质,其特征在于,还包括处理器可执行指令,所述处理器可执行指令被配置成多路分解所述DV帧以生成所述视频样本和音频样本。
11.一种含有如权利要求1所述的处理器可读介质的计算机。
12.一种含有处理器可执行指令的处理器可读介质,所述处理器可执行指令被配置成管理DV元数据提取列表;以及基于所述提取列表内的DVPackID,从DV帧中提取DV元数据包。
13.如权利要求12所述的处理器可读介质,其特征在于,还包括被配置成将所述DV元数据包存储至IMFDVMetadataContainer内的处理器可执行指令。
14.如权利要求13所述的处理器可读介质,其特征在于,还包括被配置成将所述IMFDVMetadataContainer附加于所述DV帧的DV样本的处理器可执行指令。
15.如权利要求13所述的处理器可读介质,其特征在于,还包括被配置成将所述DV元数据包解包成DV包专用数据结构的处理器可执行指令。
16.如权利要求15所述的处理器可读介质,其特征在于,还包括被配置成将所述DV包专用数据结构存储在IMFDVMetadataContainer内的处理器可执行指令。
17.如权利要求15所述的处理器可读介质,其特征在于,所述DV包专用数据结构包括从所述DV元数据包中解包的二进制值;以及与每一二进制值相关联的不同的变量名。
18.如权利要求12所述的处理器可读介质,其特征在于,所述管理包括响应于AddPack调用,将DVPackID添加至所述提取列表;响应于RemovePack调用,将DVPackID从所述提取列表中移除;响应于RemoveAllPacks调用,从所述提取列表中移除所有的DVPackID;响应于GetCount调用,返回指示存在于所述提取列表中的DVPackID的数量的数字;以及响应于指定索引的GetPackID调用,返回所述提取列表中位于所述索引处的DVPackID。
19.如权利要求12所述的处理器可读介质,其特征在于,所述提取包括通过包含所述DVPackID的DV元数据包中的头部标识所述DV帧中的DV元数据包;以及将所述DV元数据包从所述DV帧中提取出来。
20.如权利要求13所述的处理器可读介质,其特征在于,还包括被配置成管理所述IMFDVMetadataContainer的处理器可执行指令。
21.如权利要求20所述的处理器可读介质,其特征在于,所述管理IMFDVMetadataContainer包括响应于Add调用,将DV_METADATA结构添加至所述IMFDVMetadataContainer;响应于Remove调用,从所述IMFDVMetadataContainer中移除DV_METADATA结构;响应于RemoveAll调用,从所述IMFDVMetadataContainer中移除所有项;响应于GetCount调用,返回指示存在于所述IMFDVMetadataContainer中的项的数量的数字;响应于Lock调用,锁定所述IMFDVMetadataContainer以供排他性访问;响应于Unlock调用,对所述IMFDVMetadataContainer解除锁定;响应于GetFirst调用,从所述IMFDVMetadataContainer中检索在所述IMFDVMetadataContainer的开始索引处的项;以及响应于GetNext调用,从所述IMFDVMetadataContainer中检索在所述IMFDVMetadataContainer的下一索引处的项。
22.一种包含如权利要求12所述的处理器可读介质的计算机。
23.一种方法,包括接收从DV数据流中提取DV元数据的指令;响应于所述指令从所述DV数据流中提取所述元数据;将所述元数据存储在容器中;以及将所述容器附加于所述DV数据流的视频样本。
24.如权利要求23所述的方法,其特征在于,还包括根据容器API(应用程序编程接口)上的方法调用管理对所述容器的访问。
25.一种方法,包括基于对元数据提取API(应用程序编程接口)的方法调用,管理DV元数据提取列表中的DVPackID;以及基于所述提取列表内的DVPackID,从DV帧中提取DV元数据包。
26.如权利要求25所述的方法,其特征在于,还包括将所述DV元数据包解包成DV包专用数据结构;以及将所述DV元数据包和所述DV包专用数据结构存储在容器中。
27.如权利要求27所述的方法,其特征在于,还包括将所述容器附加于所述DV帧的视频样本。
28.如权利要求27所述的方法,其特征在于,还包括基于对容器API的方法调用,管理对所述容器的访问。
29.一种含有被配置成从DV帧中提取元数据并允许访问所述元数据的DV元数据提取工具的计算机。
30.如权利要求29所述的计算机,其特征在于,所述DV元数据提取工具包括提取接口,它被配置成响应于来自应用程序的方法调用维护DVPackID的提取列表,以及基于所述DVPackID的提取列表将DV包存储在容器中;以及容器接口,它被配置成响应于来自所述应用程序的方法调用将DV包专用数据结构存储在所述容器中,以及管理对DV包和DV包专用数据结构的访问。
31.如权利要求29所述的计算机,其特征在于,还包括包含所述DV元数据提取工具的多媒体体系结构。
32.一种计算机,包括用于管理DV元数据提取列表的装置;以及用于基于所述提取列表内的DVPackID从DV帧中提取DV元数据包的装置。
33.如权利要求32所述的计算机,其特征在于,还包括用于将所述DV元数据包存储在IMFDVMetadataContainer中的装置。
34.如权利要求33所述的计算机,其特征在于,还包括用于将所述IMFDVMetadataContainer附加于所述DV帧的DV样本的装置。
35.如权利要求33所述的计算机,其特征在于,还包括用于将所述DV元数据包解包成DV包专用数据结构的装置;以及用于将所述DV包专用数据结构存储在所述IMFDVMetadataContainer内的装置。
36.一种其上存储表示5字节DV_METADATA_CONTROL_CASSETTE_ID包的数据结构的处理器可读介质,所述数据结构包括MicError字段,含有从所述包的第二字节中解包的数据;MultiBytes字段,含有从所述包的第二字节中解包的数据;MemoryType字段,含有从所述包的第二字节中解包的数据;MemorySizeOfSpace0字段,含有从所述包的第三字节中解包的数据;MemorySizeOfLastBlankInSpace1字段,含有从所述包的第三字节中解包的数据;MemoryBankNumberOfSpace1字段,含有从所述包的第四字节中解包的数据;以及TapeThickness字段,含有从所述包的第五字节中解包的数据。
37.一种其上存储表示5字节DV_METADATA_CONTROL_TAPE_LENGTH包的数据结构的处理器可读介质,所述数据结构包括TapeLength字段,含有从所述包的第2至4字节中解包的数据。
38.一种其上存储表示5字节DV_METADATA_TEXT_HEADER包的数据结构的处理器可读介质,所述数据结构包括TotalTextData字段,含有从所述包的第二和第三字节中解包的数据;TextType字段,含有从所述包的第三字节中解包的数据;OptionNumber字段,含有从所述包的第三字节中解包的数据;TextCode字段,含有从所述包的第四字节中解包的数据;AreaNumber字段,含有从所述包的第五字节中解包的数据;以及TopicTag字段,含有从所述包的第五字节中解包的数据。
39.一种其上存储表示5字节DV_METADATA_TAG包的数据结构的处理器可读介质,所述数据结构包括AbsoluteTrackNumber字段,含有从所述包的第二、第三和第四字节中解包的数据;BlankFlag字段,含有从所述包的第二字节中解包的数据;TextFlag字段,含有从所述包的第五字节中解包的数据;TemporaryTrue字段,含有从所述包的第五字节中解包的数据;HoldFlag字段,含有从所述包的第五字节中解包的数据;以及TagID字段,含有从所述包的第五字节中解包的数据。
40.一种其上存储表示5字节DV_METADATA_TITLE_TIME_CODE包的数据结构的处理器可读介质,所述数据结构包括空白标志字段,含有从所述包的第二字节中解包的数据;帧的十位数字段,含有从所述包的第二字节中解包的数据;帧的个位数字段,含有从所述包的第二字节中解包的数据;秒的十位数字段,含有从所述包的第三字节中解包的数据;秒的个位数字段,含有从所述包的第三字节中解包的数据;分钟的十位数字段,含有从所述包的第四字节中解包的数据;分钟的个位数字段,含有从所述包的第四字节中解包的数据;小时的十位数字段,含有从所述包的第五字节中解包的数据;以及小时的个位数字段,含有从所述包的第五字节中解包的数据。
41.一种其上存储表示5字节包的数据结构的处理器可读介质,所述数据结构包括BinaryGroup2字段,含有从所述包的第二字节中解包的数据;BinaryGroup1字段,含有从所述包的第二字节中解包的数据;BinaryGroup4字段,含有从所述包的第三字节中解包的数据;BinaryGroup3字段,含有从所述包的第三字节中解包的数据;BinaryGroup6字段,含有从所述包的第四字节中解包的数据;BinaryGroup5字段,含有从所述包的第四字节中解包的数据;BinaryGroup8字段,含有从所述包的第五字节中解包的数据;以及BinaryGroup7字段,含有从所述包的第五字节中解包的数据。
42.一种其上存储表示5字节DV_METADATA_PROGRAM_REC_DTIME包的数据结构的处理器可读介质,所述数据结构包括RecordingMode字段,含有从所述包的第二字节中解包的数据;Minutes字段,含有从所述包的第二字节中解包的数据;Week字段,含有从所述包的第三字节中解包的数据;Hours字段,含有从所述包的第三字节中解包的数据;Year字段,含有从所述包的第四和第五字节中解包的数据;Day字段,含有从所述包的第四字节中解包的数据;以及Month字段,含有从所述包的第五字节中解包的数据。
43.一种其上存储表示5字节DV_METADATA_AAUX_SOURCE包的数据结构的处理器可读介质,所述数据结构包括LockedFlag字段,含有从所述包的第二字节中解包的数据;AudioFrameSize字段,含有从所述包的第二字节中解包的数据;StereoMode字段,含有从所述包的第三字节中解包的数据;Channel字段,含有从所述包的第三字节中解包的数据;PairBit字段,含有从所述包的第三字节中解包的数据;AudioMode字段,含有从所述包的第三字节中解包的数据;MultiLanguage字段,含有从所述包的第四字节中解包的数据;FiftySixty字段,含有从所述包的第四字节中解包的数据;SystemType字段,含有从所述包的第四字节中解包的数据;Emphasis字段,含有从所述包的第五字节中解包的数据;TimeConstant字段,含有从所述包的第五字节中解包的数据;SamplingFrequency字段,含有从所述包的第五字节中解包的数据;以及Quantization字段,含有从所述包的第五字节中解包的数据。
44.一种其上存储表示5字节DV_METADATA_AAUX_SOURCE_CONTROL包的数据结构的处理器可读介质,所述数据结构包括CopyGenerationManagementSystem字段,含有从所述包的第二字节中解包的数据;InputSource字段,含有从所述包的第二字节中解包的数据;Compression字段,含有从所述包的第二字节中解包的数据;SourceSituation字段,含有从所述包的第二字节中解包的数据;RecordingStart字段,含有从所述包的第三字节中解包的数据;RecordingEnd字段,含有从所述包的第三字节中解包的数据;RecordMode字段,含有从所述包的第三字节中解包的数据;InsertChannel字段,含有从所述包的第三字节中解包的数据;DirectionFlag字段,含有从所述包的第四字节中解包的数据;PlaybackSpeed字段,含有从所述包的第四字节中解包的数据;以及GenreCategory字段,含有从所述包的第五字节中解包的数据。
45.一种其上存储表示5字节包的数据结构的处理器可读介质,所述数据结构包括DaylightSavingsTime字段,含有从所述包的第二字节中解包的数据;ThirtyMinutesFlag字段,含有从所述包的第二字节中解包的数据;时区的十位数字段,含有从所述包的第二字节中解包的数据;时区的个位数字段,含有从所述包的第二字节中解包的数据;天的十位数字段,含有从所述包的第三字节中解包的数据;天的个位数字段,含有从所述包的第三字节中解包的数据;Week字段,含有从所述包的第四字节中解包的数据;月的十位数字段,含有从所述包的第四字节中解包的数据;月的个位数字段,含有从所述包的第四字节中解包的数据;年的十位数字段,含有从所述包的第五字节中解包的数据;以及年的个位数字段,含有从所述包的第五字节中解包的数据。
46.一种其上存储表示5字节包的数据结构的处理器可读介质,所述数据结构包括帧的十位数字段,含有从所述包的第二字节中解包的数据;帧的个位数字段,含有从所述包的第二字节中解包的数据;秒的十位数字段,含有从所述包的第三字节中解包的数据;秒的个位数字段,含有从所述包的第三字节中解包的数据;分钟的十位数字段,含有从所述包的第四字节中解包的数据;分钟的个位数字段,含有从所述包的第四字节中解包的数据;小时的十位数字段,含有从所述包的第五字节中解包的数据;以及小时的个位数字段,含有从所述包的第五字节中解包的数据。
47.一种其上存储表示5字节DV_METADATA_AAUX_CLOSED_CAPTION包的数据结构的处理器可读介质,所述数据结构包括MainAudioLanguage字段,含有从所述包的第二字节中解包的数据;MainAudioType字段,含有从所述包的第二字节中解包的数据;SecondAudioLanguage字段,含有从所述包的第三字节中解包的数据;以及SecondAudioType字段,含有从所述包的第三字节中解包的数据。
48.一种其上存储表示5字节包的数据结构的处理器可读介质,所述数据结构包括Data字段,含有从所述包的第二到第五字节中解包的数据;以及DataType字段,含有从所述包的第二字节中解包的数据。
49.一种其上存储表示5字节DV_METADATA_VAUX_SOURCE包的数据结构的处理器可读介质,所述数据结构包括TV频道的十位数字段,含有从所述包的第二字节中解包的数据;TV频道的个位数字段,含有从所述包的第二字节中解包的数据;黑白字段,含有从所述包的第三字节中解包的数据;允许彩色字段,含有从所述包的第三字节中解包的数据;彩色帧标识字段,含有从所述包的第三字节中解包的数据;TV频道的百位数字段,含有从所述包的第三字节中解包的数据;源代码字段,含有从所述包的第四字节中解包的数据;50/60字段,含有从所述包的第四字节中解包的数据;信号类型字段,含有从所述包的第四字节中解包的数据;以及调谐器类别字段,含有从所述包的第五字节中解包的数据。
50.一种其上存储表示5字节DV_METADATA_VAUX_SOURCE_CONTROL包的数据结构的处理器可读介质,所述数据结构包括CopyGenerationManagementSystem字段,含有从所述包的第二字节中解包的数据;JustPreviousInput字段,含有从所述包的第二字节中解包的数据;Compression字段,含有从所述包的第二字节中解包的数据;SourceSituation字段,含有从所述包的第二字节中解包的数据;RecordStart字段,含有从所述包的第三字节中解包的数据;RecordMode字段,含有从所述包的第三字节中解包的数据;DisplaySelect字段,含有从所述包的第三字节中解包的数据;FrameField字段,含有从所述包的第四字节中解包的数据;FirstSecond字段,含有从所述包的第四字节中解包的数据;FrameChange字段,含有从所述包的第四字节中解包的数据;Interlace字段,含有从所述包的第四字节中解包的数据;StillField字段,含有从所述包的第四字节中解包的数据;StillCamera字段,含有从所述包的第四字节中解包的数据;BroadcastSystem字段,含有从所述包的第四字节中解包的数据;以及GenreCategory字段,含有从所述包的第五字节中解包的数据。
51.一种其上存储表示5字节DV_METADATA_VAUX_CLOSED_CAPTION包的数据结构的处理器可读介质,所述数据结构包括FirstFieldFirstByte字段,含有从所述包的第二字节中解包的数据;FirstFieldSecondByte字段,含有从所述包的第三字节中解包的数据;SecondFieldFirstByte字段,含有从所述包的第四字节中解包的数据;以及SecondeFieldSecondByte字段,含有从所述包的第五字节中解包的数据。
52.一种其上存储表示5字节DV_METADATA_CAMERA_CONSUMER_CAMERA_1包的数据结构的处理器可读介质,所述数据结构包括Iris字段,含有从所述包的第二字节中解包的数据;AEMode字段,含有从所述包的第三字节中解包的数据;AGC字段,含有从所述包的第三字节中解包的数据;WBMode字段,含有从所述包的第四字节中解包的数据;WhiteBalance字段,含有从所述包的第四字节中解包的数据;FocusMode字段,含有从所述包的第五字节中解包的数据;以及FocusPosition字段,含有从所述包的第五字节中解包的数据。
53.一种其上存储表示5字节DV_METADATA_CAMERA_CONSUMER_CAMERA_2包的数据结构的处理器可读介质,所述数据结构包括VerticalPanningDirection字段,含有从所述包的第二字节中解包的数据;VerticalPanningSpeed字段,含有从所述包的第二字节中解包的数据;ImageStabilizer字段,含有从所述包的第三字节中解包的数据;HorizontalPanningDirection字段,含有从所述包的第三字节中解包的数据;HorizontaPanningSpeed字段,含有从所述包的第三字节中解包的数据;FocalLength字段,含有从所述包的第四字节中解包的数据;ZoomEnable字段,含有从所述包的第五字节中解包的数据;以及ElectricZoom字段,含有从所述包的第五字节中解包的数据。
54.一种其上存储表示5字节DV_METADATA_CAMERA_SHUTTER包的数据结构的处理器可读介质,所述数据结构包括ShutterSpeed字段,含有从所述包的第四和第五字节中解包的数据;UpperLineSpeed字段,含有从所述包的第二字节中解包的数据;以及LowerLinerSpeed字段,含有从所述包的第三字节中解包的数据。
全文摘要
DV视频输入源(104)可以是能够将DV视频内容传送给计算机(102)的任何类型的设备或通信网络,例如包括,便携式存储介质(104)(1)(例如,磁盘、媒体记忆卡、光盘)、DV视频录制设备(104)(2)(例如,数字便携式摄像放像一体机)、或诸如因特网、公司网络或家庭网络等网络(104)(3)。计算机(102)可被实现为一般能够从各个源(104)接收视频内容并操纵视频内容以便通过常驻多媒体体系结构编辑和回放的各种计算设备。
文档编号G11B27/031GK1826566SQ200380110440
公开日2006年8月30日 申请日期2003年10月2日 优先权日2003年10月1日
发明者C·A·路德维格, J·H·杜雷四世 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1