CN1826566A - Dv元数据提取 - Google Patents

Dv元数据提取 Download PDF

Info

Publication number
CN1826566A
CN1826566A CNA2003801104402A CN200380110440A CN1826566A CN 1826566 A CN1826566 A CN 1826566A CN A2003801104402 A CNA2003801104402 A CN A2003801104402A CN 200380110440 A CN200380110440 A CN 200380110440A CN 1826566 A CN1826566 A CN 1826566A
Authority
CN
China
Prior art keywords
data
unpack
byte
bag
field contains
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
CNA2003801104402A
Other languages
English (en)
Other versions
CN100517151C (zh
Inventor
C·A·路德维格
J·H·杜雷四世
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 Technology Licensing LLC
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 CN1826566A publication Critical patent/CN1826566A/zh
Application granted granted Critical
Publication of CN100517151C publication Critical patent/CN100517151C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • 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/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/42Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • 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/102Programmed access in sequence to addressed parts of tracks of operating record carriers
    • G11B27/107Programmed access in sequence to addressed parts of tracks of operating record carriers of operating tapes
    • 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/30Indexing; 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 the same track as the main recording
    • G11B27/3027Indexing; 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 the same track as the main recording used signal is digitally coded
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/90Tape-like record carriers
    • G11B2220/91Helical scan format, wherein tracks are slightly tilted with respect to tape direction, e.g. VHS, DAT, DVC, AIT or exabyte

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • General Engineering & Computer Science (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

DV视频输入源(104)可以是能够将DV视频内容传送给计算机(102)的任何类型的设备或通信网络,例如包括,便携式存储介质(104)(1)(例如,磁盘、媒体记忆卡、光盘)、DV视频录制设备(104)(2)(例如,数字便携式摄像放像一体机)、或诸如因特网、公司网络或家庭网络等网络(104)(3)。计算机(102)可被实现为一般能够从各个源(104)接收视频内容并操纵视频内容以便通过常驻多媒体体系结构编辑和回放的各种计算设备。

Description

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包的提取列表404:
HRESULT AddPack(
 BYTE DVPackID
);
DVPackID是为DV元数据包指定PackID的输入参数。这是DVPACKID枚举的成员。在所得的DV_METADATA结构中P,ackID位于DvMetadata.Pack[0]中。不能被添加到提取列表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[0]中。
如果RemovePack方法成功,它返回S_OK。如果该包不位于提取列表404中,则该函数返回E_ITEM_NOT_FOUND。也可返回其它出错代码。
例如,从编辑应用程序204对RemovePack的调用将从提取列表404移除指定的包。
RemoveAllPacks方法根据以下句法清空Dmux 234将提取的DV包的提取列表404:
HRESULT RemoveAllPacks();
RemoveAllPack方法没有任何参数输入。如果该方法成功,它返回S_OK。也可返回其它出错代码。例如,由编辑应用程序204调用RemoveAllPack将清空整个提取列表404。
GetCount方法根据以下句法返回位于提取列表404中的DV包的数量:
HRESULT GetCount(
 DWORD*   pCount
);
pCount参数是指定提取列表404中的包的数量的输出参数。如果该方法成功,则它返回S_OK。调用将检索提取列表404中的项(即,DVPackID)的个数。
GetPackID方法根据以下句法返回提取列表404中给定索引处的包的DVPackID:
HRESULT 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结构添加到容器306:
HRESULT 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
  CONTROL
  CASSETTE IDTAPE LENGTHTEXT HEADERTEXTTAG   0X000x010x080x090x0B
  TITLE
  TIME CODEBINARY GROUPTEXT HEADERTEXT   0x130x140x180x19
  PROGRAM
  PROGRAM RECDTIME   0x42
  AAUX
  SOURCESOURCECONTROLREC DATEREC TIME   0x500x510x520x53
  BINARY GROUPCLOSED CAPTIONTR   0x540x550x56
  VAUX
  SOURCESOURCECONTROLREC DATEREC TIMEBINARY GROUPCLOSED CAPTIONTR   0x600x610x620x630x640x650x66
  CAMERA
  CONSUMERCAMERA 1CONSUMERCAMERA 2CAMERASHUTTER   0x700x710x7F
具有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-7
typedef 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
      //
      // A:ME:Mic出错(MicError)
      // B:MULTI-BYTES:在一个多重写入操作周期中可以写入的单词的最大数量(MultiBytes)
      // C:MEM TYPE:存储器类型(MemoryType)
      // D:空间0的存储器大小:(MemorySizeOfSpace0)
      // E:空间1的最后一个空区的存储器大小(MemorySizeOfLastBankInSpace1)
      // F:空间1的存储体号(MemoryBankNoOfSpace1)
      // G:磁带厚度的单位(TapeThickness)
      // H:1/10磁带厚度
      //
  BOOL MicError;
      // 0:该MIC中的所有事件不总是存在于该磁带上
      // 1:该MIC中的所有事件确定地存在于该磁带上
  UINT32 MultiBytes;
      // 0:4字节
      // 1:8字节
      // 2:16字节
      // 3-6:保留
      // 7:未限制
  UINT32 MemoryType;
      // 0:EEPROM
      // 1:FeRAM
      // 其它=保留
  UINT32 MemorySizeOfSpace0;
  UINT32 MemorySizeOfLastBankInSpace1;
      // 0:256字节
      // 1:512字节
      // 2:1k字节
      // 3:2k字节
      // 4:4k字节
      // 5:8k字节
      // 6:16k字节
      // 7:32k字节
      // 8:64k字节
      // 其它:保留
      // 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
        //
        // A:TDP:文本数据的总数(见部分2中的图55)
        // B:文本类型(TextType)
        // C:OPN:选项数量(OptionNumber)
        // D:TEXT CODE:文本代码指定特征集(TextCode)
        // E:AREA 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)]BYTE    pTextPacks[];
        // 文本包布局-每一文本包具有该布局
        // 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有效
       // 0:MIC中的该事件数据不总是有效
       // 1:MIC中该事件数据有效
    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)
       // H:50/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.1
    BOOL MultiLanguage;
       // 0:以多种语言录制
       // 1:不以多种语言录制
    BOOL FiftySixty;
       // 0:60图场系统(NTSC)
       // 1:50图场(PAL)
    UINT32 SystemType;
       // 结合50/60标志定义视频信号的系统类型
       // 见IEC 61834-4的8.1
    BOOL Emphasis;
       // 0:加重开
       // 1:加重关
    BOOL TimeConstant;
       // 1:50.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;
       // 0:CH1
       // 1:CH2
       // 2:CH3
       // 3:CH4
       // 4:CH1和CH2
       // 5:CH3和CH4
       // 6:CH1和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;
       // 0:30分钟
       // 1:00分钟
    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;
       // 0:30分钟
       // 1:00分钟
    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 Second:
    UINT32 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
       //
       //A:TV频道(Channel)的十位数
       //B:TV频道(Channel)的个位数
       //C:黑白(BlackAndwhiteFlag)
       //D:允许彩色(ColorFramesEnableFlag)
       //E:彩色帧标识(ColorFramesId)
       //F:TV频道(Channel)的百位数
       //G:源代码(Sourcecode)
       //H:50/60(FiftySixty)
       //I:信号类型(Stype)
       //J:调谐器类别(TunerCategory)
    UINT32 Channel;
    BOOL BlackAndWhiteFlag;
       // 0:黑白
       // 1:彩色
    BOOL ColorFramesEnableFlag;
       // 0:CLF有效
       // 1:CLF无效
    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;
       // 0:60图场系统(NTSC)
       // 1:50图场系统(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
    // 61:F1.0以下
    // 62:关
    // 63:无信息
UINT32 AEMode;
    // 0:全自动
    // 1:增益优先模式
    // 2:快门优先模式
    // 3:光圈优先模式
    // 4:手动
    // 15:无信息
    // 其它:保留
UINT32 AGC;
    // 0-13:G
    // 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)
       // H:E-Zoom的单位(ElectricZoom)
       // I:1/10的E-Zoom
    BOOL 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-79:0.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;
结论
尽管在结构化特征和/或方法性动作专用的的语言中描述了本发明,但可理解,在所附权利要求书中定义的本发明不必限于所述的具体特征或动作。相反,这些具体特征和动作是作为实现所要求保护的本发明的示例性形式来公开的。

Claims (54)

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字段,含有从所述包的第三字节中解包的数据。
CNB2003801104402A 2003-10-01 2003-10-02 Dv元数据提取 Expired - Fee Related CN100517151C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/676,979 US8165449B2 (en) 2003-10-01 2003-10-01 DV metadata extraction
US10/676,979 2003-10-01

Publications (2)

Publication Number Publication Date
CN1826566A true CN1826566A (zh) 2006-08-30
CN100517151C CN100517151C (zh) 2009-07-22

Family

ID=34393647

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801104402A Expired - Fee Related CN100517151C (zh) 2003-10-01 2003-10-02 Dv元数据提取

Country Status (7)

Country Link
US (1) US8165449B2 (zh)
EP (1) EP1668434A1 (zh)
JP (1) JP2007521695A (zh)
KR (1) KR20060073921A (zh)
CN (1) CN100517151C (zh)
AU (1) AU2003279867A1 (zh)
WO (1) WO2005043263A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7792806B2 (en) * 2003-06-27 2010-09-07 Microsoft Corporation Rate change
US8135261B1 (en) 2003-12-09 2012-03-13 Apple Inc. Insertion and usage of metadata in digital video
US8064752B1 (en) 2003-12-09 2011-11-22 Apple Inc. Video encoding
US8041186B1 (en) 2003-12-09 2011-10-18 Apple Inc. Propagating metadata associated with digital video
US8271507B2 (en) * 2004-01-30 2012-09-18 Adgiants, Llc Web-based marketing management system
US7596561B2 (en) * 2004-01-30 2009-09-29 Adgiants, Llc Web-based marketing management system
WO2005074537A2 (en) * 2004-02-02 2005-08-18 University Of South Florida High performance serial bus data recorder device
CN1790419A (zh) * 2005-10-21 2006-06-21 曲建明 一种将医疗数字图像信息按所需格式标准化的方法及应用
US20080215169A1 (en) * 2007-03-02 2008-09-04 Lisa Debettencourt Audio System
JPWO2008146483A1 (ja) * 2007-05-28 2010-08-19 パナソニック株式会社 メタデータ記録装置及びメタデータ記録方法
US20090132462A1 (en) * 2007-11-19 2009-05-21 Sony Corporation Distributed metadata extraction
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US8789168B2 (en) * 2008-05-12 2014-07-22 Microsoft Corporation Media streams from containers processed by hosted code
US7860996B2 (en) 2008-05-30 2010-12-28 Microsoft Corporation Media streaming with seamless ad insertion
US8265140B2 (en) * 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
FR2948792B1 (fr) * 2009-07-30 2011-08-26 Oberthur Technologies Procede de traitement de donnees protege contre les attaques par faute et dispositif associe
IL219499B (en) 2012-04-30 2019-02-28 Verint Systems Ltd A system and method for detecting malicious software
IL226057A (en) * 2013-04-28 2017-07-31 Verint Systems Ltd System and method for automatic configuration of intrusion detection systems
IL226747B (en) 2013-06-04 2019-01-31 Verint Systems Ltd A system and method for studying malware detection
US9684594B2 (en) 2014-07-16 2017-06-20 ClearSky Data Write back coordination node for cache latency correction
US9430387B2 (en) 2014-07-16 2016-08-30 ClearSky Data Decoupling data and metadata in hierarchical cache system
US9652389B2 (en) 2014-07-16 2017-05-16 ClearSky Data Hash discriminator process for hierarchical cache system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6570728B2 (en) * 1992-12-28 2003-05-27 Sony Corporation Tape cassette including memory unit storing reproduction control instructions
WO1994018792A1 (en) * 1993-02-04 1994-08-18 Sony Corporation Magnetic recording/reproducing apparatus
US5646796A (en) * 1993-05-10 1997-07-08 Sony Corporation Apparatus and method for recording and reproducing topic data with digital video and audio data
JP3561930B2 (ja) * 1993-08-14 2004-09-08 ソニー株式会社 画像検索用id信号の記録方法、画像検索方法、及び記録画像再生装置
JP3428020B2 (ja) * 1993-09-30 2003-07-22 ソニー株式会社 ディジタル記録再生装置及びインデックス記録方法
JP3577733B2 (ja) * 1994-02-15 2004-10-13 ソニー株式会社 画像記録装置
JP3477818B2 (ja) * 1994-05-12 2003-12-10 ソニー株式会社 ディジタルオーディオ信号伝送装置
MY114287A (en) * 1994-12-26 2002-09-30 Sony Corp Digital video recorder
JP3674095B2 (ja) * 1995-08-31 2005-07-20 ソニー株式会社 カメラ設定データの記録再生方法及び記録再生装置
KR19990044590A (ko) * 1996-07-15 1999-06-25 니시무로 타이죠 디지탈 인터페이스를 구비하는 장치, 이 장치를 이용한 네트워크 시스템 및 카피 방지 방법
US6130726A (en) * 1997-03-24 2000-10-10 Evolve Products, Inc. Program guide on a remote control display
US6061692A (en) 1997-11-04 2000-05-09 Microsoft Corporation System and method for administering a meta database as an integral component of an information server
US6351471B1 (en) * 1998-01-14 2002-02-26 Skystream Networks Inc. Brandwidth optimization of video program bearing transport streams
US6516029B1 (en) * 1998-03-06 2003-02-04 Divio, Inc. Method and apparatus for adaptive video encoding
US6611812B2 (en) 1998-08-13 2003-08-26 International Business Machines Corporation Secure electronic content distribution on CDS and DVDs
US6833865B1 (en) * 1998-09-01 2004-12-21 Virage, Inc. Embedded metadata engines in digital capture devices
JP3252282B2 (ja) * 1998-12-17 2002-02-04 松下電器産業株式会社 シーンを検索する方法及びその装置
AU4521201A (en) * 1999-12-10 2001-06-25 Jerry W. Lennon Customer image capture and use thereof in a retailing system
CA2374067C (en) 2000-03-13 2012-09-25 Sony Corporation Method and apparatus for generating compact transcoding hints metadata
JP2001291323A (ja) * 2000-03-31 2001-10-19 Sony Corp 記録装置及び方法、再生装置及び方法並びに情報処理装置及び方法
US6611845B1 (en) 2000-07-21 2003-08-26 International Business Machines Corporation Method and system for storing and managing sets of objects
GB0029880D0 (en) * 2000-12-07 2001-01-24 Sony Uk Ltd Video and audio information processing
US7295755B2 (en) 2001-06-22 2007-11-13 Thomson Licensing Method and apparatus for simplifying the access of metadata
US7882510B2 (en) * 2003-08-06 2011-02-01 Microsoft Corporation Demultiplexer application programming interface

Also Published As

Publication number Publication date
WO2005043263A1 (en) 2005-05-12
US8165449B2 (en) 2012-04-24
AU2003279867A1 (en) 2005-05-19
KR20060073921A (ko) 2006-06-29
JP2007521695A (ja) 2007-08-02
EP1668434A1 (en) 2006-06-14
US20050076039A1 (en) 2005-04-07
CN100517151C (zh) 2009-07-22

Similar Documents

Publication Publication Date Title
CN1826566A (zh) Dv元数据提取
CN101065971A (zh) 媒体重放设备中使用的胶片颗粒仿真技术
CN100341328C (zh) 媒体播发装置及媒体播发方法
CN1229990C (zh) 数字影像内容的影像再生装置、影像再生方法
CN1193607C (zh) 信息处理设备和方法
CN1118772C (zh) 数字数据发送接收系统及其方法
CN1264342C (zh) 用于处理用参考信息模型配置的内容相关信息的电子节目指南
CN1222167C (zh) 数字广播装置和接收装置
CN1239021C (zh) 信息处理设备及方法、程序和记录介质
CN1685721A (zh) 再现装置、再现方法、再现程序以及记录介质
CN1541481A (zh) Mpeg表格结构
CN1913028A (zh) 信息存储介质、信息重放设备、信息重放方法和信息重放程序
CN1433546A (zh) 数据适合化装置、数据适合化方法、存储媒体及程序
CN1383677A (zh) 信息处理设备和方法、程序和记录介质
CN1694521A (zh) 用于运动图像的元数据
CN1332935A (zh) 能够使数字电视接收机以提取的格式存取系统信息的应用程序编程接口
CN1545322A (zh) 发送和接收动态图像数据的方法及其设备
CN1326638A (zh) 具有可配置功能的电视机顶盒
CN1694520A (zh) 用于运动图像的元数据
CN1381137A (zh) 信息处理方法和装置、程序和记录介质
CN1509573A (zh) 数据参考系统
CN1817034A (zh) 记录介质、再现装置、记录方法、集成电路、程序和再现方法
CN1735199A (zh) 元数据的数据结构及其再现方法
CN1379346A (zh) 数字内容作成系统以及数字内容作成程序
CN101077007A (zh) 内容呈现系统

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150507

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150507

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090722

Termination date: 20201002