CN102568517B - 用于数字媒体处理的接口 - Google Patents

用于数字媒体处理的接口 Download PDF

Info

Publication number
CN102568517B
CN102568517B CN201110306936.3A CN201110306936A CN102568517B CN 102568517 B CN102568517 B CN 102568517B CN 201110306936 A CN201110306936 A CN 201110306936A CN 102568517 B CN102568517 B CN 102568517B
Authority
CN
China
Prior art keywords
media
time
playing duration
media content
duration time
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.)
Active
Application number
CN201110306936.3A
Other languages
English (en)
Other versions
CN102568517A (zh
Inventor
R·兰加拉杰
M·雷根
R·W·鲁瑟尔
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 CN102568517A publication Critical patent/CN102568517A/zh
Application granted granted Critical
Publication of CN102568517B publication Critical patent/CN102568517B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42646Internal components of the client ; Characteristics thereof for reading from or writing on a non-volatile solid state storage medium, e.g. DVD, CD-ROM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/432Content retrieval operation from a local storage medium, e.g. hard-disk
    • H04N21/4325Content retrieval operation from a local storage medium, e.g. hard-disk by playing back content from the storage medium
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/84Television signal recording using optical recording
    • H04N5/85Television signal recording using optical recording on discs or drums
    • 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
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/10537Audio or video recording
    • 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
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10629Data buffering arrangements, e.g. recording or playback buffers the buffer having a specific structure
    • G11B2020/10666Ring buffers, e.g. buffers wherein an iteratively progressing read or write pointer moves back to the beginning of the buffer when reaching the last storage cell
    • 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
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/1075Data buffering arrangements, e.g. recording or playback buffers the usage of the buffer being restricted to a specific kind of data
    • G11B2020/10759Data buffering arrangements, e.g. recording or playback buffers the usage of the buffer being restricted to a specific kind of data content data
    • 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
    • G11B2020/10935Digital recording or reproducing wherein a time constraint must be met
    • G11B2020/10944Real-time recording or reproducing, e.g. for ensuring seamless playback of AV data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs
    • G11B2220/2562DVDs [digital versatile discs]; Digital video discs; MMCDs; HDCDs

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Photographic Processing Devices Using Wet Methods (AREA)

Abstract

本文描述了用于数字媒体处理的接口。在此所述的API促进在媒体内容播放器的媒体处理流水线内的硬件与软件组件之间的效率和及时互操作性。(PhyMemDataStrutureAPI)物理存储器数据结构API便于硬件组件对由软件组件使用的存储器内的信息的直接访问,以使硬件组件能使用直接存储器访问技术来获取存储器的内容,而不是使用处理器周期来执行复制命令。物理存储器数据结构API展示与存储在由软件组件使用的存储器中的媒体内容单元相关联的数据结构的一个或多个字段,且所展示字段存储关于媒体内容单元的存储器位置的物理特性的信息。(SyncHelperAPI)同步助手API用于从硬件组件获取信息并传送信息到硬件组件,那些信息用于调节准备可同步演示的媒体内容流的媒体样本的硬件组件的时序。

Description

用于数字媒体处理的接口
本申请是PCT国际申请号为PCT/US2008/068025、国际申请日为2008年6月24日、中国国家申请号为200880022588.3、题为“用于数字媒体处理的接口”的申请的分案申请。
技术领域
本文涉及用于数字媒体处理的接口。
背景技术
数字媒体演示由诸如视频、音频、图像、文本、和/或图形等媒体内容的顺序集合所组成。在媒体内容播放器向用户表现和/或呈现此类媒体内容的顺序集合时,它们可被称为媒体内容流。某些媒体内容播放器被配置成同时表现和呈现超过一个独立控制的媒体内容流(例如,带有诸如导演评论、演员传记、或广告等特征的主电影)。此类媒体内容播放器还能够将用户可选的可视或可听对象(例如,各种菜单、游戏、特殊效果、或其它选项)与一个或多个媒体内容流同时表现和呈现。
使用软件、硬件、固件、或任何其组合的形式的任何类型的设备可以是媒体内容播放器。诸如光学介质播放器(例如,DVD播放器)、计算机、以及提供对大量相对经济、便携或以其它方式可访问的数据存储的访问权的其它电子设备等设备尤其适用于满足消费者对具有很长播放持续时间的数字媒体演示的需求。
各种实体常常提供媒体内容播放器的不同软件和硬件组件,且期望此类组件在具有有限处理和存储器资源的环境中成功地互操作。因此期望提供用于在所有类型的媒体内容播放器和其体系结构上确保对数字媒体演示的资源高效、相对而言无假信号的播放,包括可并发演示的媒体内容流的准确同步。
发明内容
此处所述的数字媒体处理技术和接口(诸如应用程序编程接口(“API”))促进在与媒体内容播放器相关联的媒体处理流水线内的硬件与软件组件之间的高效、一致的互操作性。
通常,媒体处理流水线负责接收来自诸如光盘、硬盘、网络位置、以及其它可能来源等媒体源的媒体内容集合,并执行处理任务以准备媒体内容集合用于向用户演示诸如电影、电视节目、音频节目、或其它演示等一个或多个数字媒体演示的媒体内容。此类媒体内容的集合被称为剪辑,其中一个剪辑一般从一个媒体源接收一个剪辑。自特定媒体源读取的剪辑的离散部分在此被称为媒体内容单元,媒体内容单元一般被多路分解、解压缩、解码、和/或解密。在被多路分解之后,此类媒体内容单元在此被称为媒体样本。然而,应该理解,此处所用的命名约定仅出于示例性目的,且可使用任何所需的命名约定。
媒体处理流水线包括诸如媒体源读取器、多路分解器、解码器、解密器等组件,它们可用硬件或软件或其组合来实现。可使用诸如DirectShowTM多媒体框架等框架来实现媒体处理流水线。然而,应该理解,可使用任何现在已知或以后开发的框架来实现媒体处理流水线。
在媒体处理流水线中的软件组件与硬件组件之间的边界处交换信息(诸如关于媒体内容本身和/或媒体内容向用户的演示的信息)。在一个信息交换场景中,由软件组件使用的存储器内的信息(术语存储器可涵盖任何类型的计算机可读存储介质)也可由硬件组件使用。在另一信息交换场景中,硬件组件基于由软件组件所查明的信息修改其操作,或反之亦然。
此处所述的一个示例性技术和接口-出于讨论目的被称为“物理存储器数据结构”(“PhysMemDataStructure”)接口-被配置成用于媒体处理流水线的软件组件与硬件组件之间的边界处的操作以便于硬件组件对来自由软件组件所使用的存储器的信息的直接访问,而不是使用指令/处理器周期来复制该信息。物理存储器数据结构接口向硬件组件展示与存储在由软件组件使用的存储器中的媒体内容单元(其由硬件组件处理)相关联的数据结构的一个或多个字段。这些数据结构的字段存储关于各个媒体内容单元位于其中的存储器的物理特性的信息。此类物理特性的示例包括但不限于存储器的类型、存储块大小、指向存储器位置的读/写指针的位置、以及相关于此类存储器指针的媒体内容单元的偏移位置。为进一步增进存储器资源的高效使用,软件组件可将媒体内容单元存储在环形缓冲区中。为达到更高的存储器和处理效率,可使用虚拟存储器来在物理存储器环形缓冲区的结束部分复制该环形缓冲区的开始部分。
此处所述的其它示例性技术和接口-出于讨论的目的被称为“同步助手”(“SyncHelper”)接口-被配置成便于与硬件组件与软件组件之间的信息交换,这可用于调节时序(例如,为维持两个媒体内容流之间的感知同步)或硬件或软件组件的其它可操作方面。此处所述的一个同步助手接口-被称为“获取解码时间”(“GetDecodeTimes”)接口-提供关于由硬件组件(诸如多路分解器、解码器、或表现器)在特定时间点表现的特定媒体内容单元或媒体样本的信息。所提供的信息包括在特定时间点的数字媒体演示的播放持续时间的已经过的时间量、以及媒体样本从其中被导出的剪辑的播放持续时间的已经过的时间量。另一同步助手接口-被称为“同步到STC”(“SyncToSTC”)接口-便于各种可并发演示的媒体内容流的同步。在一示例性场景中,同步到STC(SyncToSTC)接口查明(即,请求/接收或计算)由获取解码时间接口所返回的数字媒体演示的播放持续时间的已经过的时间量的两个值之差,并命令一个或多个硬件组件基于所查明的差调节时序(例如,调节时序信号的速率或调节哪个媒体样本被解码或两者)。
提供本概述是为了以简化的形式介绍一些概念。这些概念将在详细描述一节中进一步描述。除本概述中所描述的以外的元素或步骤是可能的,且没有元素或步骤是必需的。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来协助确定所要求保护的主题的范围。所要求保护的主题不限于解决在本公开的任意部分中提及的任何或所有缺点的实现。
附图说明
图1是示例性媒体内容播放器的简化功能框图。
图2是更详细地示出图1的示例性媒体时间线的示意图。
图3是更详细地示出图1的媒体内容管理器块的各方面的简化功能框图。
图4是示出用于图3中所示的媒体处理流水线的各方面的示例性体系结构的简化功能框图。
图5是用于使用图1中示出的媒体内容播放器、图3中示出的媒体处理流水线、和/或图4中示出的体系结构的各方面来准备供演示的媒体内容的方法的流程图。
图6是用于使用图1中示出的媒体内容播放器、图3中示出的媒体处理流水线、和/或图4中示出的体系结构的各方面来准备媒体内容的两个剪辑的各部分以供同步演示的方法的流程图。
图7是可在其中实现或使用图1中示出的媒体内容播放器或图5和6中所出的方法的全部或部分的操作环境的示例性配置的简化功能框图。
图8是可在其中实现或使用图7中示出的操作环境的各方面的客户机-服务器体系结构的简化功能框图。
具体实施方式
对数字媒体演示的可预测和相对而言无假信号的播放通常取决于媒体内容播放器的有限计算资源的高效使用,尤其是存储器和处理器资源的高效使用。假信号和低效可在各种情况下发生,尤其在信息在操作于媒体处理流水线中的硬件组件与软件组件之间传送时。在一个场景中,低效可在信息在由软件组件使用的存储器与由硬件组件使用的存储器之间传送时发生-期望最小化在存储器访问事务中使用的处理和/或存储器资源。在另一场景中,媒体可在多个媒体内容流由个别的硬件准备以供向用户同时演示且合适信息不可用于让硬件组件确保操作同步时可发生内容流的播放中的假信号和/或用户感受到的同步的丢失-需要向硬件组件提供信息以供在调节执行特定处理任务的时序中使用。
此处讨论在软件组件与硬件组件之间的边界处操作以展示可由硬件组件使用来增加在媒体内容播放器的媒体处理流水线中操作的组件的效率、准确性和互操作性的信息的各种技术和应用程序编程接口(“API”)。
现在转向附图,其中同样的标号指定同样的组件,图1是表现媒体内容的示例性媒体内容播放器100(下文中称为“演示系统”100)的简化功能框图。媒体内容由视频、音频、图像、文本、和/或图形的序列(通常为时间排序的)组成。演示系统可以是表现媒体内容的任何系统,包括但不限于光学媒体播放器、计算设备或其操作系统、音频播放器、机顶盒、电信设备、个人数字助理、图像或视频捕捉设备等。出于讨论的目的,假设演示系统是用于播放诸如电影或其它类型的演示等媒体内容同时带有用户可选的可视或可听交互式对象(例如,菜单、游戏、特殊效果、或其它选项)的交互式多媒体演示系统。
如图所示,演示系统100包括媒体内容管理器102、交互式内容(“IC”)管理器104、演示管理器106、时序信号管理块108、以及混合器/呈现器110。一般而言,设计选择规定了如何实现演示系统100的特定功能。这样的功能可使用硬件、软件或固件、或它们的组合来实现。
在操作中,演示系统100处理交互式多媒体演示内容(“演示内容”)120。演示内容120包括媒体内容分量(“媒体分量”)122和交互式内容分量(“IC分量”)124。媒体分量122和IC分量124一般地、但不一定分别由媒体内容管理器102和IC管理器104作为分别的流来处理。
演示系统100便于将演示内容120作为所播放演示127向用户(未示出)演示。所播放演示127表示与由混合器/呈现器110产生且可由用户通过诸如显示器或扬声器(未示出)等设备接收的演示内容120相关联的可视和/或可听信息。出于讨论的目的,假定演示内容120和所播放演示127表示以任何格式的高清晰度DVD电影内容的各方面。然而,应当理解,演示内容120和所播放演示127可被配置成用于演示现在已知或将来开发的任何类型的媒体内容演示。
媒体分量122表示可作为所播放演示127内的媒体内容流(在以下结合图2进一步示出和讨论媒体内容流208和228)向用户演示的视频、音频、图像、文本、和/或图形的一个或多个序列(通常为可时间排序的)。可同时演示超过一个独立控制的媒体内容流(例如,带有诸如导演评论、演员传记、或广告等特征的主电影)。
电影一般具有一个或多个版本(例如,针对成年观众的一个版本、以及针对年轻观众的一个版本);一个或多个标题131,以及具有与每一标题相关联的一个或多个章节(未示出)(标题在以下结合演示管理器106进一步描述);一个或多个音轨(例如,电影可使用一种或多种语言来播放,带有或不带有字幕);以及诸如导演评论、附加镜头、演员传记、广告、预告片等等之类的额外的特征。应当理解,标题与章节之间的区别纯粹是逻辑上的区别。例如,单个可感知的媒体片段可以是单个标题/章节中的一部分,或可由多个标题/章节组成。由内容创作源来确定适用的逻辑区别。
形成媒体分量122的各方面的视频、音频、图像、文本、和/或图形的序列集合一般被称为剪辑123(剪辑123在媒体分量122和播放列表128内示出,且还在图2中被引用并在以下进一步讨论)。然而,应该理解,可按任何所需的方式来组合和/或表示形成媒体分量122的数据序列的集合,且实际数据可被安排成任何所需单元并由所需单元表示,例如,比特、帧、样本、数据分组、图片的组、增强的视频对象单元等。数据的特定单元的数字内容(以及数据的单元的大小)可基于若干因素,如视频、音频、或包括该单元的数据内容的特征、或与样本从其中被导出的媒体源相关联的一个或多个参数(例如,媒体源标识和/或位置、编码器/解码器参数或设置、或加密参数或设置)。在以下结合图2进一步讨论媒体源。
媒体数据132是与媒体分量122相关联的、准备好由媒体内容管理器102呈现并被发送到混合器/呈现器110的数据。媒体数据132通常对每一活动剪辑123包括该剪辑中的一部分的呈现。
再次参考演示内容120,IC分量124包括交互式对象125以及用于演示可视或可听对象的任何指令(被示为应用程序155),其中交互式对象是用户可选择的可视或可听对象,且可任选地与媒体分量122并发地演示。交互式对象的示例包括视频样本或剪辑、音频样本或剪辑、图像、图形、文字及它们的组合及其它等。
应用程序155提供演示系统100用于向用户演示交互式对象125的机制。应用程序155表示电子地控制对数据的预定操作的任何信号处理方法或存储的指令。
IC管理器104包括一个或多个指令处理引擎181,该引擎将接收、解释与应用程序155相关联的命令、并安排这些命令的执行。随着应用程序155的执行的进展和用户输入150被接收到,所播放演示127内的行为可被触发。标记为“来自ICM的输入”190的应用程序155的某些指令的执行可便于与演示系统100内的其它功能或组件的通信或互操作性。如图所示,输入190被媒体内容管理器102接收到(在以下结合图2进一步讨论),但演示系统100内的其它组件或功能也可响应于输入190。
交互式内容数据(“IC数据”)134是与IC分量124相关联的数据,此数据被准备来由IC管理器104呈现并被发送到混合器/呈现器110。
时序信号管理块108(在以下结合图3进一步讨论)产生各种时序信号158,这些信号被用于控制媒体内容管理器102和IC管理器104分别对媒体数据132和IC数据134进行的准备和产生的时序。例如,时序信号管理块108通常负责确定向用户演示媒体数据132(结合图3示出并讨论的“媒体数据演示速率307”)和IC数据134的速率。在另一示例中,时序信号158用来实现媒体数据132和/或IC数据134的大致同步(例如,在每帧的基础上或在另一时间基础上的时序/同步)。
混合器/呈现器在视频平面(未示出)中呈现媒体数据132,并在图形平面(未示出)中呈现IC数据134。图形平面一般,但不一定覆盖在视频平面上以便为用户产生所播放演示127。
演示管理器106被配置成与媒体内容管理器102和IC管理器104、混合器/呈现器110、以及时序信号管理块108通信,以便于对演示内容120的处理以及向用户演示所播放演示127。演示管理器106是有对播放列表128的访问。播放列表128包括可向用户演示的剪辑123和应用程序155(包括交互式对象125)的时间排序的序列及其它等。剪辑123和应用程序155/交互式对象125可被安排成形成一个或多个标题131。如上所述,同时向用户播放超过一个独立控制的标题/媒体内容流是可能的。可在播放列表128上指出此类同时播放的流,或偶发用户输入可造成媒体内容流的同时播放。
演示管理器106使用播放列表128来查明具体媒体演示的演示时间线130(在电影的情况下是标题),其通常具有预先确定的的播放持续时间,表示该标题可向用户演示的具体时间量。播放持续时间内的特定已经过时间量的表示常常被称为“标题时间”。因为标题可被播放一次或一次以上(例如,以循环方式),所以播放持续时间是基于标题的一次重复来确定的。在概念上,演示时间线130表现何时特定剪辑123和应用程序155可向用户演示的标题时间(尽管如所示,通常不知道开始和停止某些特定剪辑的播放的用户输入可在何时发生)。特定剪辑123通常还具有预先确定的播放持续时间、表示演示该剪辑的具体时间量。剪辑播放持续时间内的具体已经过时间量的表示常常被称为“演示时间”。剪辑的每一可单独演示的部分(出于讨论的目的可被称为“媒体样本”,尽管可使用任何所需的命名约定)在该剪辑的播放持续时间内具有一相关联的、预先确定的演示时间。为了在媒体内容的演示中避免用户可感知的假信号,可在安排/预先确定的演示时间之前准备一个或多个即将到来的媒体样本以供演示。
为更好地说明特定剪辑的播放和与其相关联的时序/时间,使用播放列表128和/或演示时间线130来查明一个或多个媒体内容时间线(“媒体时间线”)142是有用的。继续参考图1和2,图3是特定剪辑123的示例性媒体时间线142。在媒体时间线142上指出了各个媒体样本演示时间202。媒体样本演示时间202表示特定剪辑的播放持续时间内的时间,在这些时间一个或多个媒体样本可被作为媒体数据132演示。如所示,媒体样本演示时间202可按基于可随剪辑到剪辑而变化的预先确定的媒体数据演示速率207的速率来产生。注意,媒体数据演示速率207不必与特定剪辑123被编码的速率相同,然而媒体数据演示速率可基于特定剪辑的编码速率而改变。某些用户输入150还可影响从媒体源检索媒体样本的速度并因此影响媒体样本演示时间202发生的速率。例如,所播放演示127可按正常速度在前向方向上行进,并且也可按快于或慢于正常速度的速度在前向和反向两个方向上行进。应当理解,正常速度是一相对术语,并且正常速度可以在各演示之间以及各剪辑之间变化。在快退和快进操作期间,某些媒体内容(如所示,媒体样本230)的播放常常被跳过。其它用户输入可造成某些内容的播放被跳过,如在用户从电影的一部分跳到另一部分时那样。
在媒体时间线142上示出当前已经过播放时间209(即,剪辑与之相关联的数字媒体演示的标题时间)。在当前已经过播放时间209向用户演示媒体样本250。如图所示,当前已经过播放时间209与特定媒体样本演示时间202一致,尽管此一致是不必要的。还示出了下一可演示媒体样本演示时间214。下一可演示媒体样本演示时间314用于确定应接着被准备以供向用户演示的下一媒体样本、和/或下一媒体样本演示时间(如图所示,下一可处理媒体样本270被准备以供演示)。应当理解,下一可演示媒体样本/演示时间可以是根据播放列表128的下一连续媒体样本/演示时间,或者可以是离开与当前已经过播放时间209相关联的媒体样本/演示时间相隔一个或多个媒体样本/演示时间202的媒体样本/演示时间。存在查明下一可演示媒体样本/媒体样本演示时间的各种方式,这些方式在此处不作详细讨论。然而,通常,预测的已经过播放时间220(即,数字媒体演示的播放持续时间的预测标题时间)和对应的下一可演示媒体样本/演示时间。诸如播放速度、媒体帧速率207等信息、以及其它信息可用于确定预测的已经过播放时间和/或定位特定媒体样本演示时间/媒体样本。
再次参考图1,在操作中,演示管理器106向媒体内容管理器102和IC管理器104提供包括但不限于有关演示时间线130和/或媒体时间线142的信息的信息。基于来自演示管理器106的输入,IC管理器104准备好用于IC数据134,而媒体内容管理器102准备好的媒体数据132用于呈现。
继续参考图1和2,图3是更详细地示出媒体内容管理器102的各方面的简化功能框图。媒体内容管理器102包括一个或多个媒体处理流水线。示出两个媒体处理流水线:媒体处理流水线1302和媒体处理流水线2320,虽然任何数量的媒体处理流水线都是可能的。通常,媒体处理流水线1302和媒体处理流水线2320各自用于准备独立控制的媒体内容流308和328以供向用户演示。一个媒体处理流水线通常负责参考第一时序信号1350来准备诸如电影等主要媒体内容流,而其它媒体处理流水线负责参考第二时序信号2370来准备诸如导演评论、演员传记、广告等一个或多个次要媒体内容流。时序信号表示从媒体源检索媒体内容的样本和/或准备媒体内容的样本以向用户演示的速率(然而,此类速率可基于用户输入、编码/加密/压缩格式、以及其它因素而动态地改变),且通常从诸如与演示系统100和/或诸如媒体处理流水线内的硬件组件等专用设备相关联的时钟源等时钟源(未示出)中导出。
媒体内容管理器102负责准备诸如图2中示出的下一可处理媒体样本270等即将到来的剪辑的可单独演示部分以供演示。此类准备常常涉及多个步骤,包括但不限于读取来自特定媒体源的剪辑的即将到来的部分(所示的媒体源304和324是任何设备、位置、或媒体内容从中导出或取得的数据);以及使用诸如阅读器、多路分解器、解码器、呈现器、和/或解密器等基于硬件和软件的媒体处理组件(媒体处理组件306和326在以下结合图4进一步示出和讨论)来从自媒体源读取的信息中获取可播放的媒体内容流308、328。
应该理解,媒体内容管理器102可具有基于包括媒体分量122和/或IC分量124的各种剪辑123的标识和安排(预先确定的或基于偶发用户输入150)的动态处理负载。通常,期望媒体处理流水线的消耗不超过演示系统100的处理资源(例如,CPU周期)的10-15%。
在使用诸如存储器到存储器复制等传统复制事务来在各存储器位置之间传送信息时,大量处理资源可被消耗,且用于复制事务的处理资源的过度使用可能造成数字媒体演示的播放中的假信号。但是,常希望在由媒体处理流水线的不同组件所使用的存储器之间传送信息,尤其希望在由硬件组件使用的存储器与由软件组件使用的存储器之间传送信息。除其它原因以外,使用硬件组件以加速媒体内容处理。
同时准备演示两个或更多剪辑的即将到来的部分也可消耗大量诸如存储器处理器周期等计算资源,,并可能以不容易预测的方式进一步加剧数字媒体内容的播放中的假信号的可能。此外,准备供演示的剪辑的特定部分所需的存储器和/或处理资源(因而用于此类准备的时间)在各样本之间或从各剪辑之间的相同的。影响所需资源和准备时间的某些因素与媒体内容本身相关联(包括但不限于诸如媒体单元/样本大小、媒体源/位置、编码或解码参数、以及加密参数等因素)。影响所需资源的其它因素与媒体内容播放器相关联(例如,媒体处理流水线体系结构、动态处理负载、以及媒体内容播放器体系结构的其它特征),而还有另一些影响所需资源的因素与用户输入相关联(例如,用户选择的媒体内容、内容格式、或播放速度)。
继续参考图1-3,图4是更详细地示出媒体处理组件块306和326的体系结构和操作方面的简化功能框图。在一个可能的实现中,DirectShowTM多媒体框架用于将媒体处理任务分成被称为过滤器的步骤的组合,使得每一过滤器具有将过滤器连接在一起的多个输入针脚和多个输出针脚。然而,应该理解,可使用任何现在已知或之后开发的框架来实现媒体处理流水线。
如图所示,软件-硬件边界403由虚线标出——边界403左侧的组件主要是基于软件的组件(或使用软件来实现的组件的部分),而边界403右侧的组件主要是基于硬件的组件(或使用硬件或固件或其组合来实现的组件的部分)。示例性体系结构包括具有对基于硬件的组件可直接读取的第一存储器430的访问权的基于软件的媒体源阅读器402、通常具有对存储器(出于讨论的目的被示出并被称为第二存储器433)的一个或多个块的访问权的基于硬件的多路分解器(“demux”)404、一个或多个也通常具有对存储器(出于讨论的目的被示出并被称为第二存储器433)的一个或多个块的访问权的基于硬件的解码器/呈现器490、以及应用程序编程接口408,该接口包括PhyMemDataStruture API(物理存储器数据结构API)410、Sniffer/Callback API(分组探测程序/回调API)422、以及包括GetDecode-Times API(取得解码时间API)418和SyncToSTC API(同步到STC API)420的SyncHelper API(同步助手API)416。
媒体源阅读器402负责接收(经由数据推或拉技术)来自特定媒体源的剪辑的可单独演示部分(出于讨论的目的被称为媒体单元407)、将所接收的媒体单元407存储在存储器430中、以及下传关于被存储的媒体单元407的数据(例如传递到demux 404或解码器/呈现器490)。在一个可能的实现中,使用数据结构将数据下传到demux 404。例如,在DirectShowTM架构的上下文中,媒体单元407被包装在被称为IMediaSample对象(IMediaSample引用该对象实现的接口,该对象可被称为媒体样本(Media Samples))的数据结构中。ImediaSample常常被约束于一在初始化时分配的固定大小,且取决于媒体内容单元的大小可能不用足其固定大小。使用如下所述的环形缓冲区420使存储器能更有效率地使用。
存储器430表示可由演示系统100的操作系统访问的任何计算机可读介质(计算机可读介质在以下结合图7进一步讨论),包括但不限于物理连续和分散-搜集的存储器、虚拟高速缓冲和未高速缓冲存储器、物理锁定和未锁定(用于分散-搜集的类型)存储器、以及被映射优化以供由环形缓冲区420(在以下进一步讨论)使用的虚拟存储器。硬件分配存储器块432是存储器430的数量或区域(具有任何大小或配置)的抽象表示,存储器430可被视为具有可由媒体源阅读器402根据某些算法(示例性算法在以下结合图5示出并讨论)和由诸如“物理存储器数据结构API”410等某些API 408的使用来分别地分配以供demux 404(或媒体处理流水线302或320的其它组件)访问的块。在一示例性实现中,硬件分配存储器块432是具有其中存储从媒体源阅读器402获取的各个媒体内容单元407的块的环形缓冲区420。使用环形缓冲区420的一个优点是在经由磁道读取数据时可更高效地读取某些计算机可读媒体,在环形缓冲区420不需对读取操作施加任何分组约束时尤其如此(例如,来自光学设备)。使用环形缓冲区420的另一优点是比用于平常更快地读取数据的特效模式(例如,来自光学设备)。使用内建于环形缓冲区读取器的组块机制更容易实现跳过执行完全解码所不需要的媒体内容单元的部分。环形缓冲区420的其它细节及其优点和操作在以下结合图5进一步讨论。
Demux 404响应于接收媒体单元407(如图2中示出的下一可处理媒体样本270)和/或来自媒体源读取器402的输出针脚401的、与输入针脚411处的媒体单元407相关联的数据结构,并分离两个或更多预先由兼容的多路复用器组合的信号(如媒体内容的解码流)。存储器433表示一个或多个计算机可读介质(计算机可读介质在以下结合图7进一步讨论),如可由demux 404或其它硬件组件使用的缓冲器或寄存器。Demux 404向解码器/呈现器490的输入针脚491提供与输出针脚421上的单独媒体内容流(如媒体内容流308或328)相关联的经多路分解的媒体样本409。
解码器/呈现器490负责接收出于讨论的目的被称为媒体样本409(例如,MPEG-2样本)的经多路分解的媒体单元,并负责使用用于对经多路分解的媒体样本进行去除干扰/去除加密的广泛公知技术来产生与特定媒体内容流308、328相关联的媒体数据132。尽管示出了媒体源、多路分解器、以及解码器/呈现器之间的一对一关系,应该理解,任何数量的此类组件(与其它组件一起)的任何安排是可能的,且可在媒体处理流水线1302与媒体处理流水线2320之间共享此类组件。
提供API 408以增强媒体处理流水线内的软件组件和硬件组件的互操作性,并促进演示系统100的存储器和处理资源的高效使用。在一可能的实现中,API是在计算机可读存储介质上编码的计算机可执行指令的集合,其可在演示系统100的操作期间被执行和/或被媒体处理流水线306和326的指令的作者访问。通常,API 408被配置成执行在以下结合图5和6进一步示出并讨论的方法的各方面。
物理存储器数据结构API 410被配置成推广对可由诸如demux 404和解码器/呈现器490等硬件组件直接使用的存储器430的支持。在一可能的实现中(例如,在具有DirectShowTM框架的媒体处理流水线的上下文中),包装在IMediaSample对象中的媒体单元407借助ImemAllocator一个对象的一次实现被分配(例如,使用demux 404的输入针脚411-输出针脚401将查询输入针脚411,因此demux 404可向存储器提供硬件可使用/所需的特性)到硬件分配存储器块432内的存储位置,且关于此类存储位置的信息(如类型存储器、存储器块的大小、指向存储器的指针的位置、以及相对于指向存储器的指针特定媒体单元的存储位置的偏移位置)被“物理存储器数据结构API”410展示给诸如demux 404和解码器/呈现器490等硬件组件。硬件组件从而能够直接访问/检索硬件分配存储器块432内的信息(例如,经由直接存储器访问技术),而不是使用指令和处理器周期来复制该信息。
可用于在媒体处理流水线302、322和/或媒体处理组件306、326的上下文中实现物理存储器数据结构API 410的示例性伪代码在以下示出。
分组探测程序/回调API 422被用于提供由演示系统100的基于软件的元素对已被demux 404解析的某些媒体样本409(例如,在高清晰DVD节目流中多路复用的“HLI”、“ADV”、以及“NAV”分组)和/或已经被解码器/呈现器490解码/呈现的媒体数据132进行的访问。在一可能的实现中,DirectShowTM框架过滤器连接到demux 404的输出针脚421或解码器/呈现器490的输出针脚(未示出),且此过滤器用于支持“分组探测程序/回调API”422。
可用于在媒体处理流水线302、322和/或媒体处理组件306、326的上下文中实现将检测媒体样本409或媒体数据132的某些类型的“分组探测程序/回调API”的示例性伪代码在以下示出。
同步助理API 416被配置成便于可用于维护媒体内容流308和328之间的可感知的同步的信息交换。“获取解码时间API”418被配置成提供关于与由硬件组件(如demux 404或一个或多个解码器/呈现器490)准备特定媒体样本(例如,被认为是下一可处理媒体样本270的媒体单元407或媒体样本409)以供演示的时间相关联的特定时间(如标题时间209和媒体样本演示时间202)的状态通知。可使用由“同步到STC API”420提供的信息以基于由获取解码时间API 418从处理同步可演示媒体样本的不同解码器/呈现器(或其它硬件组件)返回的标题时间209中的差来调节时序信号350和/或370。
可用于实现“同步助手API”416的示例性伪代码在以下示出。
继续参考图1-4,图5和6是用于由一个或多个媒体处理流水线(如媒体处理流水线1302或媒体处理流水线2320)使用由一个或多个API 408所提供的功能来准备媒体内容(如一个或多个剪辑123的部分)以供演示的方法。图5中示出的方法对最小化在信息在由软件组件(如媒体源阅读器402或另一软件组件)使用的存储器(如存储器430)与由硬件组件(如demux 404或解码器/呈现器490或其它硬件组件)使用的存储器(如存储器433)之间传送时使用的处理和/或存储器资源是有用的。在图6中示出的方法对在准备多个可同时播放的媒体内容流以供分别的硬件组件演示时维护感知同步是有用的。
可使用诸如以下结合图7所讨论的处理器702等一个或多个通用、多用途或单用途处理器来实现图5和6中所示的过程。除非具体规定,否则此处所述的诸方法不限于特定次序或顺序。此外,所述的方法或其元素中的某一些可并发发生或执行。
参考图5的流程图中示出的方法,该方法在框500开始并在框502继续,其中标识诸如硬件分配的存储器块432等第一存储器的一部分以存储诸如剪辑123的可单独播放各部分等媒体内容单元(如从特定媒体源304接收的媒体单元407)。在框504和506中分别标识媒体内容单元以及该媒体内容单元在第一存储器中的存储位置。
在媒体处理流水线302、320的相应媒体处理组件306、326的上下文中,硬件分配的存储器块432可被实现为环形缓冲区420以增进存储器和处理资源的高效使用。环形缓冲区420可被视为具有可由媒体源阅读器402(或媒体处理流水线302或320的其它组件)分别地分配以供存储媒体单元407的块。存储在环形缓冲区420中的每一媒体单元407的偏移是已知的,且可相对于指向环形缓冲区420内的位置的一个或多个指针的值来表示,如存储器起始(“BOM”)指针435、存储器结尾(“EOM”)指针437、已用存储器起始指针(“BUMP”)453、和/或已用存储器结尾指针(“EUMP”)455。随着demux 404或另一硬件组件从环形缓冲区420获取媒体单元407的表示,可相应地移动BUMP 453和/或EUMP 455。因为可以不按序获取和释放媒体单元407,可维护环形缓冲区420内的媒体单元407的偏移的列表以确保BUMP 453和EUMP不被允许绕过彼此。
为进一步增进存储器使用和处理效率,虚拟存储器可用于在环形缓冲区420结尾处复制来自环形缓冲区420起始处的一个或多个存储器块。如图所示,复制BOM块450(这是存储器起始“BOM”块450的复制)使用虚拟存储器来实现,且逻辑地位于存储器结尾“EOM”块411之后。虚拟存储器的此用途被称为“自动包装”功能,因为这在分解要在配备读和写指针的环形缓冲区中使用的较大的存储器块时是尤其有用的。自动包装功能的使用是可选的——通常demux 404的提供者可选择提供不映射两次的存储器而媒体处理流水线仍将工作,但可能较低效地利用存储器。在此类环形缓冲区实现中,存在“环绕”到缓冲区起始的存储器部分可能需要特殊处理的特殊情况。例如,复制或以其它方式获取环绕的存储器部分中的信息可能需要两个事务——一个事务在缓冲区结尾中检索信息、以及另一事务在缓冲区起始中检索信息。因此,通常难于完全利用环形缓冲区大小。如上所述的虚拟存储器的使用避免了在信息大小太大以至于不能适应环形缓冲区结尾时分配额外存储器或跳到环形缓冲区结尾(两者都导致存储器的低效使用)的需要。
可用于实现将存储器的物理部分两次映射到两倍大小的虚拟存储器区域的“自动包装”特征的示例性代码(用于Windows CE 6.0操作系统软件,虽然可使用任何使用虚拟存储器的操作系统)在以下示出。
再次参考图5的流程图,框508示出形成与特定媒体内容单元相关联的数据结构的步骤,该数据结构具有用于存储关于媒体内容单元在第一存储器中的存储位置的信息的字段。接着,在框510,向具有第二存储器的硬件组件(如demux 404或解码器/呈现器490)展示该数据结构。在框512可以看到,硬件组件可使用数据结构中关于媒体内容单元的存储位置的信息来不使用中央处理单元地直接将该媒体内容单元从第一存储器传送到第二存储器。
在使用DirectShowTM框架实现的媒体处理组件306、326的上下文中,媒体源阅读器402使用诸如IMediaSampleObjects等数据结构来向下游硬件组件提供全部或部分以下信息:指向存储器430和/或硬件分配存储器块432的指针;存储器430和/或硬件分配存储器块432的大小;媒体单元407的起始和停止时间、标志、以及任何其它所需信息。有利的是,关于由媒体源阅读器402分配以供由demux 404(以及其它硬件组件)访问的环形缓冲区420的存储器块的特性的信息由“物理存储器数据结构API”410被展示,该信息还可由诸如IMediaSampleObject等数据结构(或其字段)提供。由demux 404和其它硬件组件从“物理存储器数据结构API”410导出的物理存储器信息被用于直接访问环形缓冲区420内的各个媒体内容单元407的存储位置,以大幅消除对诸如“存储器复制”事务等处理器密集型复制事务的需要。经由“物理存储器数据结构API”410来展示的关于硬件分配存储器块432的特性的信息包括但不限于:存储器432的类型;存储器的存储器块的大小;指向存储器的一个或多个指针437、435、453、或455的位置;以及相对于指向存储器的一个或多个指针的特定媒体单元407的偏移位置。
参考图6中示出的方法,该方法在框600开始并在框602和604继续,其中多媒体演示的播放持续时间被相应地标识,且诸如媒体内容流308和媒体内容流328等可作为分别的媒体内容流播放的两个剪辑(都具有其自己的播放持续时间)被标识。接着,在框606和608分别地标识两个可同步演示的媒体样本:一个来自第一剪辑而一个来自第二剪辑。
通常,演示系统的基于软件组件(如演示管理器106的各方面)知道当前可播放剪辑123。在媒体处理流水线302、320的媒体处理组件306、326的上下文中,相应地可能使用“分组探测程序/回调API”422来标识可由demux 404和/或解码器/呈现器490处理的指定媒体单元407和/或媒体样本409。
如在框610所示,在第一时间查明某些信息-该第一时间与来自第一剪辑的媒体样本由诸如媒体处理流水线1302内的demux 404或解码器/呈现器490等第一硬件组件进行准备以供演示的时间相关联。在框610处,查明以下信息:数字媒体演示的播放持续时间的已经过的时间量、以及第一剪辑的播放持续时间的已经过的时间量。
如在框612所示,在第二时间查明某些信息-该第二时间与来自第二剪辑的媒体样本由诸如媒体处理流水线2302内的demux 404或解码器/呈现器490等第二硬件组件进行准备以供演示的时间相关联。在框612处,查明以下信息:数字媒体演示的播放持续时间的已经过的时间量、以及第二剪辑的播放持续时间的已经过的时间量。
如上结合图2中示出的媒体示例性媒体时间线所述,播放持续时间的已经过的时间量通常被称作标题时间(或全局系统时间),且一特定剪辑的播放持续时间的已经过的时间量通常对应于与具体媒体样本相关联的具体预先确定的媒体样本演示时间202。“获取解码时间API”418被配置成检查第一和第二剪辑两者的媒体样本和/或媒体时间线142,并返回在框610和612指出的信息。
在框614,在框610计算的数字媒体演示的播放持续时间的已经过的时间量与在框612计算的数字媒体演示的播放持续时间的已经过的时间量被查明,且如框616所示此差值可用于调节硬件组件的时序以准备和/或演示媒体样本。
在媒体处理流水线302、320的媒体处理组件306、326的上下文中,“同步到STC API”420相应地被配置成使用经由“取得解码时间API”418所获取的信息以通过将delta(基于在框614查明的播放持续时间的已经过的时间量之间的差)应用于处理诸如时序信号350和370等时间和/或时序信号来同步来自不同硬件组件的各种媒体内容流。应该理解,“同步到STC API”420还可用于同步具有其它回放约束的媒体内容流(例如,如播放列表所确定的)。
继续参考图1-6,图7是可在其中实现或使用演示系统100的全部或一部分的操作环境700的示例性配置的框图。操作环境700一般表现为各种各样的通用或专用计算环境。操作环境700仅是合适的操作环境的一个示例,而不旨在对此处所述的系统和方法的使用范围或功能提出任何限制。例如,操作环境700可以是现在已知或将来开发的一种类型的计算机,诸如个人计算机、工作站、服务器、便携式设备、膝上型计算机、图形输入板;或任何其它类型的电子设备,诸如光学媒体播放器或另一类型的媒体播放器,或其任何方面。例如操作环境700也可以是分布式计算网络或Web服务。操作环境700的一个具体示例是诸如DVD播放器或与其相关联的操作系统之类的便于播放高清DVD电影的环境。
如图所示,操作环境700包括或访问计算单元的各组件,包括一个或多个处理器702、计算机可读介质704、以及计算机程序706。处理器702响应计算机可读介质704和计算机程序706。处理器702可以是物理的或虚拟的处理器,且可执行汇编、编译或机器级指令以实现特定的过程。这样的指令可使用源代码或任何其它已知的计算机程序设计工具来创建。
计算机可读介质704表示任何形式的、现在已知或将来开发的、能够记录、存储或传输诸如可由处理器702执行的指令等计算机可读数据的任意数量的本地或远程设备或其组合。具体地,计算机可读介质704可以是或可包括半导体存储器(例如,诸如只读存储器(“ROM”)、任何类型的可编程ROM(“PROM”)、随机存取存储器(“RAM”)、或闪存);磁存储设备(诸如软盘驱动器、硬盘驱动器、磁鼓、磁带、或磁光盘);光学存储设备(诸如任何类型的紧致盘或数字多功能盘);磁泡存储器、高速缓冲存储器、磁心存储器、全息存储器;记忆棒、纸带;穿孔卡、或其任何组合。计算机可读介质704还可包括传输介质及其相关联的数据。传输介质/数据的示例包括但不限于具体化成任何形式的有线或无线传输的数据,诸如由已调制载波信号承载的分组化或非分组化数据。
计算机程序706表示电子地控制对数据的预定操作的任何信号处理方法或存储的指令。一般而言,计算机程序706是按照基于组件的软件开发的公知实践被实现为软件组件、并被编码到计算机可读介质(诸如计算机可读介质704)中的计算机可执行指令。计算机程序可按照各种方式组合或分发。
存储714包括与操作环境700特别相关联的附加的或不同的计算机可读介质,诸如光盘或其它便携介质(光盘由可选的光盘驱动器716处理)。作为公知且广泛可得到的元件的一个或多个内部总线720可用于在操作环境700或其诸元件内来回传输数据、地址、控制信号以及其它信息。
输入接口708提供对计算环境700的输入。输入可使用诸如用户接口之类的任何类型的现在已知或将来开发的接口来收集。用户接口可以是诸如遥控器、显示器、鼠标、笔、指示笔、跟踪球、键盘等触摸输入设备、话筒、扫描设备和用于输入数据的所有类型的设备。
输出接口710提供来自操作环境700的输出。输出接口710的示例包括显示器、打印机、扬声器、驱动器(诸如光盘驱动器716和其它盘驱动器或存储介质)等。
外部通信接口712可用于增强操作环境700经由诸如信道信号、数据信号、或计算机可读介质之类的通信介质从另一实体接收信息或向其发送信息的能力。外部通信接口712可以是或可包括诸如电缆调制解调器、数据终端设备、媒体播放器、数据存储设备、个人数字助理之类的各种元件、或任何其它设备或组件/其组合以及相关联的网络支持设备和/或软件或接口。
图8是可与其结合使用演示系统100或操作环境700的客户机-服务器体系结构800的简化功能框图。演示系统100和/或操作环境700的一个或多个方面可被表示在体系结构800的客户机侧802上或被表示在体系结构800的服务器侧804上。如图所示,通信框架803(可以是例如有线或无线的任意类型的公共或专用网络)便于在客户机侧802与服务器侧804之间的通信。
在客户机侧802上,能以硬件、软件、固件或它们的任意组合实现的一个或多个客户机806响应于客户机数据存储808。客户机数据存储808可以是计算机可读介质704,用于存储对客户机806是本地的信息。在服务器侧804上,一个或多个服务器810响应于服务器数据存储812。与客户机数据存储808一样,服务器数据存储812可包括一个或多个计算机可读介质704,用于存储对服务器810是本地的信息。
已描述了用于与媒体内容同步地向用户演示交互式内容的演示系统的各方面。然而,应当理解,并不是必须使用该演示系统的所有所描述的组件,各组件在使用时也不必同时存在。在演示系统100的上下文中被描述为计算机程序的函数/组件不限于由计算机程序的任意具体实施例来实现。相反,函数是传送或变换数据的过程,且一般可使用硬件、软件、固件或其任何组合来实现或执行。
尽管以针对结构特征和/或方法动作专用的语言描述了此处的主题,但也可以理解,权利要求书中确定的主题不必限于上述的具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
还可以理解,当一个元素被指出为对另一个元素作出响应时,这些元素可直接或间接耦合。此处所描述的连接在实践中可以是逻辑或物理的,以实现元素之间的耦合或通信接口。连接可被实现为软件进程之间的进程间通信,或联网计算机之间的机器间通信等。
在本文中使用的词语“示例性”意味着用作示例、范例或说明。此处被描述为“示例性”的任何实现或其各方面不必被解释为对于其它实现或其方面是优选的或更有利的。
如可以理解的,可设计除上述具体实施例之外的实施例而不背离所附权利要求书的精神和范围,本文主题的范围旨在由所附权利要求书限定。

Claims (3)

1.一种用于播放具有播放持续时间和媒体内容分量(122)的数字媒体演示的方法,所述媒体内容分量包括:
被安排成第一多个媒体样本的第一剪辑(123),所述第一剪辑具有第一播放持续时间且可被作为第一媒体内容流播放,以及
被安排成第二多个媒体样本的第二剪辑(123),所述第二剪辑具有第二播放持续时间且可被作为第二媒体内容流播放,所述方法(600)包括:
从所述第一剪辑中标识(606)第一媒体样本;
从所述第二剪辑中标识第二媒体样本,所述第二媒体样本与所述第一媒体样本可同步播放(608);
在与按基于第一时序信号的速率使用第一硬件组件来准备所述第一媒体样本以供演示相关联的第一时间,
查明(610)所述数字媒体演示的所述播放持续时间的第一已经过的时间量,以及
查明(610)所述第一播放持续时间的已经过的时间量;
在与按基于第二时序信号的速率使用第二硬件组件来准备所述第二媒体样本以供演示相关联的第二时间,
查明(612)所述数字媒体演示的所述播放持续时间的第二已经过的时间量,以及
查明(612)所述第二播放持续时间的已经过的时间量;
查明在所述数字媒体演示的所述播放持续时间的所述第一已经过的时间量与所述数字媒体演示的所述播放持续时间的所述第二已经过的时间量之间的差;以及
基于所述差来调节(616)所述第一时间或所述第二时间或两者;
其中查明所述数字媒体演示的所述播放持续时间的所述第一已经过的时间量和所述第一播放持续时间的所述已经过的时间量的步骤还包括:
发起对第一API的第一调用(418),所述第一调用包括关于所述第一媒体样本的信息;以及
基于所述第一调用来接收来自所述第一API的第一响应,所述第一响应包括关于所述数字媒体演示的所述播放持续时间的所述第一已经过的时间量和所述第一播放持续时间的所述已经过的时间量的信息,以及
其中查明所述数字媒体演示的所述播放持续时间的所述第二已经过的时间量和所述第二播放持续时间的所述已经过的时间量的步骤还包括:
发起对所述第一API的第二调用,所述第二调用包括关于所述第二媒体样本的信息;以及
基于所述第二调用来接收来自所述第一API的第二响应,所述第二响应包括关于所述数字媒体演示的所述播放持续时间的所述第二已经过的时间量和所述第二播放持续时间的所述已经过的时间量的信息。
2.如权利要求1所述的方法,其特征在于,所述第一和第二硬件组件从包括以下各项的组中选出:多路分解器(404);解码器(490);以及呈现器(490)。
3.如权利要求1所述的方法,其特征在于,调节所述第一时间或所述第二时间或两者的步骤还包括:
发起对第二API的调用(420),所述调用包括的信息从包括以下各项的组中选出:所述第一响应、所述第二响应、以及在所述数字媒体演示的所述播放持续时间的所述第一已经过的时间量与所述数字媒体演示的所述播放持续时间的所述第二已经过的时间量之间的差;
基于对所述第二API的调用来接收来自所述第二API的响应;以及
基于来自所述第二API的响应,调节由以下各项组成的组中的一个或多个:所述第一播放持续时间的所述已经过的时间量;所述第二播放持续时间的所述已经过的时间量;所述第一时序信号;以及所述第二时序信号。
CN201110306936.3A 2007-06-30 2008-06-24 用于数字媒体处理的接口 Active CN102568517B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/824,720 US8612643B2 (en) 2007-06-30 2007-06-30 Interfaces for digital media processing
US11/824,720 2007-06-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2008800225883A Division CN101689170B (zh) 2007-06-30 2008-06-24 用于数字媒体处理的接口

Publications (2)

Publication Number Publication Date
CN102568517A CN102568517A (zh) 2012-07-11
CN102568517B true CN102568517B (zh) 2015-03-25

Family

ID=40162404

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201110306936.3A Active CN102568517B (zh) 2007-06-30 2008-06-24 用于数字媒体处理的接口
CN2008800225883A Active CN101689170B (zh) 2007-06-30 2008-06-24 用于数字媒体处理的接口

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2008800225883A Active CN101689170B (zh) 2007-06-30 2008-06-24 用于数字媒体处理的接口

Country Status (13)

Country Link
US (3) US8612643B2 (zh)
EP (1) EP2162827B1 (zh)
JP (1) JP5394375B2 (zh)
KR (1) KR101530101B1 (zh)
CN (2) CN102568517B (zh)
AU (1) AU2008270705A1 (zh)
BR (1) BRPI0812130A2 (zh)
CA (1) CA2687762A1 (zh)
IL (1) IL201952A (zh)
MX (1) MX2009013685A (zh)
RU (1) RU2453908C2 (zh)
TW (1) TWI443582B (zh)
WO (1) WO2009006107A2 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051090B2 (en) * 2007-12-28 2011-11-01 Realtek Semiconductor Corp. File management method of a ring buffer and related file management apparatus
US9667365B2 (en) 2008-10-24 2017-05-30 The Nielsen Company (Us), Llc Methods and apparatus to perform audio watermarking and watermark detection and extraction
US8359205B2 (en) 2008-10-24 2013-01-22 The Nielsen Company (Us), Llc Methods and apparatus to perform audio watermarking and watermark detection and extraction
CA3008502C (en) 2009-05-01 2020-11-10 The Nielsen Company (Us), Llc Methods, apparatus and articles of manufacture to provide secondary content in association with primary broadcast media content
EP2302845B1 (en) 2009-09-23 2012-06-20 Google, Inc. Method and device for determining a jitter buffer level
JP5310456B2 (ja) * 2009-10-05 2013-10-09 ソニー株式会社 情報処理装置、情報処理方法および情報処理システム
US20110320953A1 (en) * 2009-12-18 2011-12-29 Nokia Corporation Method and apparatus for projecting a user interface via partition streaming
US8477050B1 (en) 2010-09-16 2013-07-02 Google Inc. Apparatus and method for encoding using signal fragments for redundant transmission of data
US8643696B2 (en) * 2011-01-19 2014-02-04 Broadcom Corporation Synchronizing media streams using time signal(s) from an independent time source
US8751565B1 (en) * 2011-02-08 2014-06-10 Google Inc. Components for web-based configurable pipeline media processing
KR101051182B1 (ko) * 2011-03-10 2011-07-22 주식회사 다이나믹앤라이브 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치
US8804819B1 (en) 2011-04-19 2014-08-12 Google Inc. Method and apparatus for encoding video using data frequency
US8681866B1 (en) 2011-04-28 2014-03-25 Google Inc. Method and apparatus for encoding video by downsampling frame resolution
US9106787B1 (en) 2011-05-09 2015-08-11 Google Inc. Apparatus and method for media transmission bandwidth control using bandwidth estimation
US8856624B1 (en) 2011-10-27 2014-10-07 Google Inc. Method and apparatus for dynamically generating error correction
CN103186359B (zh) 2011-12-30 2018-08-28 南京中兴软件有限责任公司 硬件抽象数据结构、数据处理方法及系统
US9185429B1 (en) 2012-04-30 2015-11-10 Google Inc. Video encoding and decoding using un-equal error protection
US9754105B1 (en) * 2012-09-25 2017-09-05 Malwarebytes Corporation Preventing the successful exploitation of software application vulnerability for malicious purposes
US9172740B1 (en) 2013-01-15 2015-10-27 Google Inc. Adjustable buffer remote access
US9311692B1 (en) 2013-01-25 2016-04-12 Google Inc. Scalable buffer remote access
US9225979B1 (en) 2013-01-30 2015-12-29 Google Inc. Remote access encoding
US20150031416A1 (en) 2013-07-23 2015-01-29 Motorola Mobility Llc Method and Device For Command Phrase Validation
US9711152B2 (en) 2013-07-31 2017-07-18 The Nielsen Company (Us), Llc Systems apparatus and methods for encoding/decoding persistent universal media codes to encoded audio
US20150039321A1 (en) * 2013-07-31 2015-02-05 Arbitron Inc. Apparatus, System and Method for Reading Codes From Digital Audio on a Processing Device
US9602498B2 (en) * 2013-10-17 2017-03-21 Fortinet, Inc. Inline inspection of security protocols
US20150379118A1 (en) * 2014-06-27 2015-12-31 United Video Properties, Inc. Methods and systems for generating playlists based on activities being performed by a user
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization
US11070872B2 (en) * 2014-10-20 2021-07-20 Saturn Licensing Llc Receiving device, transmitting device, and data processing method
US9805036B2 (en) * 2015-06-05 2017-10-31 Disney Enterprises, Inc. Script-based multimedia presentation
KR20210078109A (ko) 2019-12-18 2021-06-28 삼성전자주식회사 스토리지 장치 및 이를 포함하는 시스템
CN113538030B (zh) * 2020-10-21 2024-03-26 腾讯科技(深圳)有限公司 一种内容推送方法、装置及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1455409A (zh) * 2002-01-15 2003-11-12 雅马哈株式会社 用于与可视图像同步记录和/或再现音乐的多媒体平台
CN1138409C (zh) * 1999-09-21 2004-02-11 索尼公司 多路分接装置
US6816909B1 (en) * 1998-09-16 2004-11-09 International Business Machines Corporation Streaming media player with synchronous events from multiple sources

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864713A (en) * 1996-02-12 1999-01-26 Hewlett-Packard Company Method for determining if data should be written at the beginning of a buffer depending on space available after unread data in the buffer
JPH09261457A (ja) * 1996-03-19 1997-10-03 Canon Inc 印刷制御装置並びに印刷制御装置のデータ処理方法およびコンピュータで読み出し可能なプログラムを格納した記憶媒体
US6262777B1 (en) * 1996-11-15 2001-07-17 Futuretel, Inc. Method and apparatus for synchronizing edited audiovisual files
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
KR100265231B1 (ko) * 1997-07-03 2000-09-15 윤종용 방송방식이 서로 다른 복수화면의 동시시청 가능한 tv수신장치
US6134602A (en) * 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
US7085710B1 (en) * 1998-01-07 2006-08-01 Microsoft Corporation Vehicle computer system audio entertainment system
US6654428B1 (en) * 1998-01-13 2003-11-25 Massachusetts Institute Of Technology Systems and methods for wireless communications
JPH11261986A (ja) * 1998-03-13 1999-09-24 Fujitsu Ltd デジタル多重伝送装置
US6715126B1 (en) * 1998-09-16 2004-03-30 International Business Machines Corporation Efficient streaming of synchronized web content from multiple sources
JP2002537591A (ja) * 1999-02-01 2002-11-05 ザ トラスティース オブ コロンビア ユニバーシティ イン ザ シティ オブ ニューヨーク マルチメディア・アーカイブの記述スキーム
EP1669996A3 (en) 2001-06-14 2006-07-05 Samsung Electronics Co., Ltd. Information strorage medium containing preload information, apparatus and method for reproducing therefor
US7013468B2 (en) * 2002-02-26 2006-03-14 Parametric Technology Corporation Method and apparatus for design and manufacturing application associative interoperability
CA2439733A1 (en) * 2002-10-07 2004-04-07 Microsoft Corporation Time references for multimedia objects
US7120626B2 (en) * 2002-11-15 2006-10-10 Koninklijke Philips Electronics N.V. Content retrieval based on semantic association
JP2005018842A (ja) 2003-06-24 2005-01-20 Sony Corp 再生装置および方法
JP2005032379A (ja) 2003-07-10 2005-02-03 Sony Corp 記録装置および方法
US7444389B2 (en) 2003-12-09 2008-10-28 Emc Corporation Methods and apparatus for generating a content address to indicate data units written to a storage system proximate in time
US7627227B2 (en) * 2004-05-17 2009-12-01 Microsoft Corporation Reverse presentation of digital media streams
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
JP4562505B2 (ja) * 2004-12-02 2010-10-13 ソニー株式会社 多重化分離装置および多重化分離方法
US7590777B2 (en) 2004-12-10 2009-09-15 International Business Machines Corporation Transferring data between system and storage in a shared buffer
KR100677597B1 (ko) 2005-01-12 2007-02-02 삼성전자주식회사 저장 매체에 기록된 데이터와 다운로드된 데이터를 함께재생하는 재생 방법 및 그 재생 장치
US7694008B2 (en) * 2005-05-04 2010-04-06 Venturi Wireless Method and apparatus for increasing performance of HTTP over long-latency links

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6816909B1 (en) * 1998-09-16 2004-11-09 International Business Machines Corporation Streaming media player with synchronous events from multiple sources
CN1138409C (zh) * 1999-09-21 2004-02-11 索尼公司 多路分接装置
CN1455409A (zh) * 2002-01-15 2003-11-12 雅马哈株式会社 用于与可视图像同步记录和/或再现音乐的多媒体平台

Also Published As

Publication number Publication date
AU2008270705A1 (en) 2009-01-08
EP2162827A4 (en) 2011-05-11
US20140281054A1 (en) 2014-09-18
IL201952A0 (en) 2010-06-16
MX2009013685A (es) 2010-01-20
US20090007159A1 (en) 2009-01-01
JP2010532536A (ja) 2010-10-07
KR101530101B1 (ko) 2015-06-18
EP2162827B1 (en) 2020-04-08
US9043504B2 (en) 2015-05-26
KR20100035690A (ko) 2010-04-06
TWI443582B (zh) 2014-07-01
JP5394375B2 (ja) 2014-01-22
RU2009149495A (ru) 2011-07-10
WO2009006107A3 (en) 2009-03-05
CN101689170A (zh) 2010-03-31
CN101689170B (zh) 2013-01-23
TW200910209A (en) 2009-03-01
US20150271238A1 (en) 2015-09-24
IL201952A (en) 2014-11-30
WO2009006107A2 (en) 2009-01-08
CN102568517A (zh) 2012-07-11
BRPI0812130A2 (pt) 2014-11-18
RU2453908C2 (ru) 2012-06-20
CA2687762A1 (en) 2009-01-08
US8612643B2 (en) 2013-12-17
EP2162827A2 (en) 2010-03-17

Similar Documents

Publication Publication Date Title
CN102568517B (zh) 用于数字媒体处理的接口
CN102089823B (zh) 多媒体演示系统及方法
EP2062259B1 (en) Timing aspects of media content rendering
CN101689137B (zh) 使用共享存储器池的数字数据管理
EP1899968A2 (en) Synchronization aspects of interactive multimedia presentation management
US11317131B2 (en) Time shift buffer via flash memory

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: 20150729

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

Effective date of registration: 20150729

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.