CN1812589A - 基于软件的音频呈现 - Google Patents
基于软件的音频呈现 Download PDFInfo
- Publication number
- CN1812589A CN1812589A CNA2006100025112A CN200610002511A CN1812589A CN 1812589 A CN1812589 A CN 1812589A CN A2006100025112 A CNA2006100025112 A CN A2006100025112A CN 200610002511 A CN200610002511 A CN 200610002511A CN 1812589 A CN1812589 A CN 1812589A
- Authority
- CN
- China
- Prior art keywords
- video
- audio
- software
- clock
- speed
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4341—Demultiplexing of audio and video streams
-
- C—CHEMISTRY; METALLURGY
- C02—TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
- C02F—TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
- C02F3/00—Biological treatment of water, waste water, or sewage
- C02F3/02—Aerobic processes
- C02F3/10—Packings; Fillings; Grids
- C02F3/103—Textile-type packing
-
- C—CHEMISTRY; METALLURGY
- C02—TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
- C02F—TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
- C02F3/00—Biological treatment of water, waste water, or sewage
- C02F3/02—Aerobic processes
- C02F3/10—Packings; Fillings; Grids
- C02F3/109—Characterized by the shape
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2368—Multiplexing of audio and video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4305—Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
- H04N21/43072—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/432—Content retrieval operation from a local storage medium, e.g. hard-disk
- H04N21/4325—Content retrieval operation from a local storage medium, e.g. hard-disk by playing back content from the storage medium
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8106—Monomedia components thereof involving special audio data, e.g. different tracks for different languages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- C—CHEMISTRY; METALLURGY
- C02—TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
- C02F—TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
- C02F3/00—Biological treatment of water, waste water, or sewage
- C02F2003/001—Biological treatment of water, waste water, or sewage using granular carriers or supports for the microorganisms
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Life Sciences & Earth Sciences (AREA)
- Hydrology & Water Resources (AREA)
- Environmental & Geological Engineering (AREA)
- Water Supply & Treatment (AREA)
- Chemical & Material Sciences (AREA)
- Organic Chemistry (AREA)
- Microbiology (AREA)
- Biodiversity & Conservation Biology (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
描述了基于软件的音频呈现。一个特定的实现包括计算机可读介质,它被配置成测量外部时钟与音频时钟之间的第一漂移速率,直到漂移达到一个阈值。响应于该漂移达到阈值并且基于第一漂移速率,该实现操纵音频时钟,使它达到第二漂移速率,该第二漂移速率具有较小的值以及与第一漂移速率相反的极性。
Description
技术领域
本发明涉及媒体呈现,尤其涉及基于软件的音频呈现。
背景技术
存在收听和/或观看媒体内容的大量消费者需求。这样的媒体内容很容易从大量来源获得。消费者在它们观看和/或收听这样的媒体时希望有质量的体验。此外,消费者看重能执行多种功能并且还能提供有质量的用户体验的单个多功能消费者设备。
个人计算机(PC)提供一种多功能平台来观看和/或收听媒体。PC获得媒体,将它适当地剖析剖析成音频数据和视频数据。PC随后解码该媒体,并且诸如通过显示设备和/或扬声器呈现数据以向用户演示。PC单独或结合硬件组件使用基于软件的组件来解码和呈现媒体。PC平台的基于软件的配置是多功能的,因为它可适用于播放各种媒体格式。此外,随着新格式的开发,PC可被更新以处理新格式。这样的更新经常可以自动地完成,很少需要或不需要用户费神。诸如基于硬件的平台等其它平台的多功能性稍弱,因为它们是在制造时“配置”的,并且没有或只有有限的这些能力。
PC的这种多功能性已经让大部分消费者接受。然而,为了利用它的多功能性,PC平台已经将优先级给予了各种设计参数而不是其它方面。例如,在从直播来源获得音频样本的情况下,在现有PC平台上的音频呈现可能没有使音频硬件呈现速率与音频样本捕捉速率协调的能力。然而,如果未经检查的话,在两分钟之间的任何差异随着延长的播放时间的过去会变得显著。
例如,在从诸如陆地、电缆或卫星无线电或TV广播系统等直播来源捕捉音频样本的情况下,源时钟与音频呈现硬件时钟之间的漂移最后可能变得如此之大,以致于某些音频样本必须被丢弃或者必须在直播音频流中插入静音。这样一种场景可以产生不太令人愉快的用户体验。此外,在PC平台上,其中音频呈现组件基于它自己的时钟来呈现,该时钟常常与媒体源或视频呈现组件不同步,会发生一种情况,其中音频演示与相应的视频演示的不同步到观看者很容易注意到它的程度。这样的情况通过诸如播放电影等长时间的播放,或在长时间观看单个TV频道时会加剧。
随着技术的进步,消费者希望由当前PC的基于软件的平台结合提高的图像和/或声音质量提供的灵活性,来填充不断扩大的消费者设备和场景的领域。
发明内容
描述了基于软件的音频呈现。一个特定的实现包括计算机可读介质,它被配置成测量外部时钟与音频时钟之间的第一漂移速率,直到该漂移达到一个阈值。响应于漂移达到该阈值并且基于第一漂移速率,该实现操纵音频时钟,使它达到具有较小值以及与第一漂移速率相反的极性的第二漂移速率。
另一个实现确定第一音频样本的可能音频呈现时间。该实现查明第一视频帧的可能视频呈现时间。该实现在可能音频呈现时间与可能视频呈现时间中的较后者呈现第一音频样本和第一视频帧。
附图说明
图1示出了其中可实现基于软件的音频呈现的示例性系统的表示。
图2示出其中可实现基于软件的音频呈现的操作环境中的示例性系统、设备和组件。
图3包括示出一个示例性基于软件的音频呈现过程的流程图。
图4示出与示例性基于软件的音频呈现实现相关联的时间线和事件的表示。
图5-6示出与示例性基于软件的视频呈现实现相关联的时间线和事件的表示。
图7A-7B包括示出一个示例性基于软件的视频呈现过程的流程图。
图8-9示出与用于同步基于软件的音频呈现与基于软件的视频呈现的示例性实现相关联的时间线和事件的表示。
具体实施方式
综述
下面的描述涉及用于基于软件的音频呈现和/或使音频呈现过程与外部时钟和/或视频呈现过程同步的方法与系统。
可将数字音频内容视为被配置成以给定的源速率处理来为用户产生声音的多个样本。源按照源时钟以给定的音频采样速率提供音频样本。音频解码器对音频样本进行解码,并且使经解码内容的各个样本可用于呈现。音频样本可以向音频硬件呈现。音频硬件具有按照给定的源速率设置的处理周期。音频硬件按照音频硬件的时钟以源采样速率处理或消耗样本,该时钟可略微不同于源硬件的时钟。
基于软件的音频呈现过程可以协调来自源的音频内容的产生与在音频硬件处内容的消耗或处理。基于软件的音频呈现过程使用音频时钟时间来协调呈现过程。音频时钟是从在单位时间内由音频硬件消耗的多个音频样本中导出的,该单位时间反映音频硬件的时钟。
在一个实现中,基于软件的音频呈现过程通过测量音频时钟相对于外部时钟的速率来使它的音频时钟与外部时钟同步。例如,音频呈现过程可测量在第一条件(其中漂移正在接近阈值)期间的速率。该阈值可以从一个值范围内选择,该范围内的值比任何系统抖动都大,但比将产生值得注意的口型同步不一致的值要小。该音频呈现过程随后可基于测量到的速率,过度补偿至第二条件,使得时钟漂移消除。某些实现采用更多的步骤来精细调整测量到的速率与音频速率之间漂移的速率,使得音频时钟速率围绕测量到的速率振荡。这些实现可预期在选择音频速率如何围绕测量到的速率振荡时诸如系统抖动和口型同步不一致之类的问题。由于音频时钟围绕测量到的速率振荡,累积漂移消除以提供非常令人愉快的用户体验。
某些实现使用速率重采样操纵音频时钟,这涉及根据环境丢弃或抽取单独的帧或者呈现单独的帧多次。下面将更详细地描述作为操纵音频时钟速率的方法的速率重采样。
为给用户创建视频图象,显示设备和相关联的图形硬件被配置成产生一系列用户感知为“运动视频”的顺序图象。显示设备按照一组标准来配置,以符合非常精确的显示或操作周期。对于每个显示周期的一致周期,显示设备从可用的视频帧生成图象。基于软件的视频呈现过程被配置成跟踪这个显示周期。基于软件的视频呈现引擎可以基于该跟踪在显示周期中的适当点处呈现显示设备的单独视频帧。用户对运动视频的感知或观看体验在按照显示设备的显示周期呈现一系列单独的帧时得到增强。
此外,用户的观看体验在相应的音频和视频数据以经同步的方式演示给用户时得到增强。描述了用于同步音频和视频演示的实现。例如,当用户发出诸如播放电影等播放命令时,同步过程可以确定电影的第一音频样本的可能音频呈现时间,并且可以查明电影的第一视频帧的可能视频呈现时间。该同步过程随后可以在可能音频呈现时间与可能视频呈现时间中的较后者呈现第一音频样本,使得音频与视频演示同时开始。
下面描述的实现在计算环境的上下文中描述。各种配置可以由诸如程序模块等由如个人计算机或PC等计算机执行的计算机可执行指令或代码装置来实现,。通常,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定的任务或者实现特定的抽象数据类型。
可在除PC以外的计算机系统配置中实现各种实施例。例如,各种实施例可在手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、小型机、大型机等中实现。而且,随着技术继续发展,各种实施例可在尚待识别的设备类上实现。例如,本实现的多功能性结合日益增长的处理能力可产生在一般的物理外观上类似当今蜂窝电话的设备,但可以通过设备的处理能力、数据传输能力和/或显示能力来执行各种组合功能。这只是用于所描述的实现的现有与正在开发的多种配置之一。
可替换地或者除此之外,各种实施例也可在分布式计算环境中实践,其中任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可位于本地与远程存储器存储设备中。
尽管如上所述的各种实现可结合到上述各种类型的操作环境中,但在图2的以常规计算设备形式的示例性通用计算设备的上下文中只出现一个示例性环境的描述,该常规计算设备在本文档末尾的“示例性操作环境”标题下更详细地描述。
示例性实现
图1示出用于执行基于软件的音频呈现和/或基于软件的视频呈现的示例性系统100。系统100包括耦合到显示设备104的计算设备102,诸如PC。计算设备102也可以耦合到如一般在106处指示的网络,诸如因特网。
计算设备102可以包括源110、剖析器112、音频解码器114、两个音频缓冲器115A、115B、基于软件的音频呈现引擎116和音频硬件118。该计算设备还包括基于软件的视频解码器120、两个视频缓冲器122A、122B、基于软件的视频呈现引擎124、图形硬件126和电视编码器128。在这个特定的系统配置中,剖析器112、音频解码器114、音频缓冲器115A、115B、音频呈现引擎116、视频解码器120、缓冲器122A、122B和视频呈现引擎124被实现为软件模块。这些模块存储在存储器中并由一个或多个处理器执行。存储和处理器没有在图1中明确示出,但图5示出了这样一个计算系统的一个示例性配置。
源110表示视频和/或音频内容的本地存储,其中内容以各种格式存储。源110可被实现为数据存储或存储器设备。可供替换地或除源110之外,计算设备102也可通过网络106访问外部源。剖析器112被配置成识别从源110或者通过网络106接收到的音频和/或视频的各种数据格式。剖析器112将音频数据分发给基于软件的音频解码器114,并将视频数据分发给基于软件的视频解码器120。
音频
可以将数字音频内容视为被配置成以给定的源速率处理来累积地为用户产生声音的多个样本。诸如源110等源按照源或外部时钟(未明确指定)以给定的源速率提供音频样本。例如,如果给定的源速率是每秒1,000个样本或1,000赫兹(Hz),则源按照源时钟以1,000Hz的速率产生样本。源速率一般运行在20,000到50,000赫兹范围内,尽管其它源速率适用于下述技术。用这样一个每秒较高的样本数,人们一般不能察觉到单独的样本。该事实可以有利地用于音频时钟同步,如从下文中将清楚的。
音频解码器114对由源产生的音频样本进行解码,并且通过音频缓冲器115A使单独的经解码的样本对音频呈现引擎116可用。可以将音频样本呈现到音频硬件118。音频硬件具有按照给定源速率设置的处理周期。例如,当源速率是每秒1,000个样本时,则设置音频硬件的处理周期,使得每秒消耗1,000个音频样本。音频硬件可能没有每秒可读时钟时间,但硬件的处理速率可以被确定为在外部时钟上每单位时间消耗的样本,或者被确定为在源处产生的样本与由音频硬件消耗的样本之比。
基于软件的音频呈现引擎116使用音频时钟来给音频呈现过程提供时间。音频时钟速率是从每单位时间音频硬件消耗的样本数中导出的。基于软件的音频呈现引擎116被配置成跟踪或测量相对于外部时钟的音频时钟。基于软件的音频呈现引擎还可以采取一个动作来减少音频时钟与外部时钟之间累积的漂移。因此,例如,假定源演示时间是一个小时。基于软件的音频呈现过程可以采取一个动作来减少在一个小时的播放期间音频时钟与外部时钟之间的累积漂移,即使两个时钟可以精确地或者可以不精确地在一个小时持续时间内的特定瞬时时间点同步。此外,如将在下面描述的,并非试图精确地使音频时钟与测量到的速率匹配,而是音频呈现引擎可以操纵音频时钟,使得音频时钟速率围绕测量到的速率振荡以有效地消除任何累积漂移。
基于软件的音频呈现引擎可以实现来减少音频时钟与外部时钟之间的累积漂移的过程的更详细示例在下面参考图3-4描述。
视频
基于软件的视频解码器120从剖析器112接收视频内容并且对视频内容的各个帧进行解码。基于软件的视频解码器120在缓冲器122A中缓冲经解码的帧。基于软件的视频呈现引擎124访问缓冲器122A并且呈现由视频解码器120放在缓冲器122A中的经解码的帧。一旦呈现一个帧,基于软件的视频呈现引擎就输出所呈现的帧至图形硬件126。所呈现的帧也被存储在缓冲器122B中,其中视频解码器120可以用它来解码下游的帧。在这个特定的系统配置中,使用两个缓冲器。然而,在其它系统配置中,可使用两个以上缓冲器。而且,这个特定的系统配置使用两个FIFO(先进先出)缓冲器。
缓冲器122A、122B允许基于软件的视频呈现引擎124独立地并且与基于软件的视频解码器120异步地操作。视频解码器120可以用一种速率来处理和排队视频帧,同时视频呈现引擎124以不同的速率提取和处理这些帧。这允许视频解码器120用比视频帧显示速率快的速率来解码视频帧。因此,例如,如果显示速率是每秒30帧(fps),则解码器可在一段时间内解码40fps。通过允许解码器累积缓冲帧,该实现可以在基于软件的视频解码器不能得到足够的CPU周期来及时地解码视频帧(由于具有较高优先级活动的其它软件模块的突然猛增)的情况下令人满意地执行。额外缓冲的帧可以通过允许基于软件的视频解码器120提前解码再多几个视频帧以补偿这种情况来减少这种情况的发生。
基于软件的视频呈现引擎124呈现单独的视频帧至图形硬件126。图形硬件提供被呈现的帧至电视编码器128。电视编码器扫描视频帧并且以显示设备104用于生成图象的形式来提供数据。连续的图象系列创建用户能感知的运动视频。
兼容于NTSC标准,显示设备104和电视编码器128按照定义的显示周期在两个扫描或VBI周期中显示每个帧。在显示周期内,第一扫描周期涉及偶半帧,而第二扫描周期涉及奇半帧。每个扫描周期持续由标准指定的持续时间。在第一扫描周期中,从帧的偶半帧创建图象,并在第二扫描周期中,从与偶半帧隔行交织的奇半帧创建图象。在偶半帧中,电视编码器128扫描帧的偶数行,并在奇半帧中,电视编码器128扫描帧的奇数行。
对于每个半帧,电视编码器128扫描在屏幕左上角开始的行,并且水平地依次地每隔一行进行扫描,直到它到达屏幕的右下角。在到达右下角时,当电视编码器128从显示屏的右下角返回到左上角时,经历非扫描的垂直消隐期(VBI)事件。每个半帧显示一个扫描或VBI周期,其中VBI周期被定义为从一个VBI事件到下一个VBI事件的跨度。按照NTSC标准,每个VBI周期持续16.67毫秒(ms)。由于每个帧显示两个VBI周期,所以帧的显示周期是33.34ms。
为用户同步音频与视频输出
基于软件的音频呈现引擎114和基于软件的视频呈现引擎124允许系统100为用户同步相应的音频与视频。例如,基于软件的视频呈现引擎可以确定单独视频帧进入显示周期的实际时间,在此时扫描它以在显示设备上显示。基于软件的视频呈现引擎可以将该时间传送给基于软件的音频呈现引擎,后者随后可以在适当的时间呈现相应的音频样本,使得声音产生对应于可视图象。这样的过程在下面至少参考图8-9来描述。
示例性操作环境
图2示出可以用于实现上述基于软件的视频呈现过程的示例性计算设备。计算设备242包括一个或多个处理器或处理单元244、系统存储器246和总线246,总线246将包括系统存储器246在内的各种系统组件耦合到处理器244。可以在一个或多个处理器上使用多线程技术,以允许多任务的并行处理。
总线248表示任意若干类型的总线结构的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口和使用各种各样总线体系结构的任一种的处理器或局部总线。系统存储器246包括只读存储器(ROM)250和随机存取存储器(RAM)252。基本输入/输出系统(BIOS)254包含诸如在启动时帮助在计算设备242内的元件之间传送信息的基本例程,存储在ROM 250中。
计算设备242还可以包括读写硬盘(未示出)的硬盘驱动器256,读写可移动磁盘260的磁盘驱动器258,以及读写可移动光盘264,诸如CD ROM或其它光学介质的光盘驱动器262。硬盘驱动器256、磁盘驱动器258和光盘驱动器262通过SCSI接口266或一些其它合适的接口连接到总线248。驱动器及其相关联的计算机可读介质为计算机242提供计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管在此描述的示例性环境使用硬盘、可移动磁盘260和可移动光盘264,但本领域的技术人员应该意识到,在示例性操作环境中,也可以使用能存储由计算机访问的数据的其它类型的计算机可读介质,诸如磁带盒、闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等。
多个程序模块可存储在硬盘256、磁盘260、光盘264、ROM 250或RAM 252上,包括操作系统270、一个或多个应用程序272(诸如用户代理或浏览器)、其它程序模块274和程序数据276。用户可通过输入设备,诸如键盘278和定点设备280将命令和信息输入到计算机242中。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、卫星天线、扫描仪等等。这些和其它输入设备通过耦合到总线248的接口282连接到处理单元244。监示器284或其它类型的显示设备也通过接口,诸如视频硬件286连接到总线248。除了监示器外,个人计算机一般包括其它外围输出设备(未示出),诸如扬声器和打印机。
计算机242通常使用至一个或多个远程计算机,诸如远程计算机288的逻辑连接在网络化环境中运行。远程计算机288可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且一般包括上面相对于计算机242所描述的许多或全部元素。图4所示的逻辑连接包括局域网(LAN)290和广域网(WAN)292。这样的网络环境在办公室、企业级计算机网络、企业内部互联网和因特网中是很常见的。
当在LAN网络环境中使用时,计算机242通过网络接口或适配器294连接到局域网。当在WAN网络环境中使用时,计算机242一般包括调制解调器296或用于通过广域网292,诸如因特网建立通信的其它装置。调制解调器296可以是内置或外置的,它通过串行端口接口268连接到总线248。在网络化环境中,相对于个人计算机242描绘的程序模块或者其部分可存储在远程存储器存储设备中。将意识到,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
计算机还可包含模拟或数字调谐器组件298。调谐器组件可以通过诸如PCI等内部或扩展的总线或者通过诸如USB总线、IEEE-1394总线等外部总线链接到系统。调谐器组件允许系统通过标准电视广播媒体,诸如陆地、电缆和卫星来接收广播电视。
通常,计算机242的数据处理器是通过在不同时间刻储在计算机的各种计算机可读存储介质上的指令来编程的。程序和操作系统一般分布在例如软盘或CD-ROM上。从软盘或CD-ROM中,将它们安装或加载到计算机的次级存储器中。在执行时,至少部分地将它们加载到计算机的主电子存储器中。当这些和其它各种类型的计算机可读存储介质包含用于结合微处理器或其它数据处理器实现所述的模块的指令或程序时,在此描述的系统包括这些介质。当按照在此描述的方法和技术编程时,所述系统还可以包括计算机本身。
为了说明,程序和诸如操作系统等其它可执行程序组件在此被示出为离散的块,尽管可以认识到,这样的程序和组件在不同的时刻驻留在计算机的不同存储组件中,并且由计算机的数据处理器执行。
尽管有关基于软件的视频呈现引擎的实施例已经以专用于结构特征和/或方法的语言来描述,但是要理解,所附权利要求书的主题不必限于所述的具体特征或方法。相反,具体特征和方法是作为基于软件的视频呈现的示例性实现来揭示的。
示例性音频呈现实现
图3概括地在300处示出用于限制外部时钟与基于软件的音频呈现时钟之间累积的漂移的示例性基于软件的音频呈现过程。
在动作302处,基于软件的音频呈现过程查明源采样速率。源一般包含指示源采样速率的某种基准,配置源样本以该源采样速率提供。例如,常见的源采样速率是44.1千赫兹(KHz)。如果源采样速率是44.1kHz,则源应该相对于源或外部时钟以44.1KHz产生样本,并且音频硬件应该相对于音频硬件时钟以44.1KHz处理样本。
在动作304,基于软件的音频呈现过程选择外部时钟与基于软件的音频呈现过程使用的基于软件的音频呈现时钟之间的漂移阈值(在下文称为“阈值”)。阈值应该足够大,以提供对外部时钟与音频硬件时钟之间的时钟差的准确测量,但要足够小,而不产生值得注意的口型同步问题。例如,在一个且仅一个实例中,使用16ms的阈值。
在动作306,基于软件的音频呈现过程测量相对于外部时钟速率的基于软件的音频呈现时钟速率。开始源的回放,使得在源处产生样本、解码、呈现并且随后在音频硬件上处理样本。在一个实现中,基于软件的音频呈现过程跟踪相对于源产生样本的速率的、由音频硬件消耗样本的速率。使用测量到的差,该过程决定在该过程后面的动作操纵音频时钟速率时使用的速率调整。速率调整参考下面讨论的算法更详细地讨论。为了简单起见,在下面的讨论中,假设为本例决定的速率调整值为每秒1个样本。
在动作308,基于软件的音频呈现过程跟踪第一条件,直到基准时钟与音频时钟之间的漂移达到阈值。
为了说明起见,结合图3考虑图4。图4概括地在400示出示例性基于软件的音频呈现时钟同步过程的图形表示。外部时钟时间一般由线402指示。基于软件的音频呈现时钟时间一般由线404指示。为了示例的目的,假设响应于用户‘播放’命令,音频时钟和外部时钟在406指示的时间零处同时开始。
也为了说明的目的,假设源速率是1,000赫兹。在外部时钟的一秒的末尾,源已经提供了1,000个样本。同样,设置硬件消耗速率,使得音频硬件应该在一秒内处理1,000个样本。然而,假设在外部时钟的一秒的末尾,音频硬件已经消耗了1,002个样本。因此相对于基准时钟速率,测量到的速率是每秒比基准时钟快两个样本。因此,音频时钟以测量到的每秒两个样本的速率漂移离开外部时钟。这样的一个实例一般由第一条件408示出,它在5秒后达到阈值410的漂移中达到顶点。
响应于达到第一阈值,在动作308,基于软件的音频呈现过程可以采取一个响应动作,它在动作310过度纠正第一条件的漂移。例如,基于软件的音频呈现过程可以操纵音频时钟速率,引起在与第一条件相反的方向并且朝着第二阈值漂移,第二阈值具有与第一阈值相反的极性。为了便于说明,本例使用的相同的阈值大小10用于第一和第二阈值两者。其它实现将使用比第一阈值大小小的第二阈值大小。
在这个实例中,该过程操纵音频时钟速率,使它达到在动作306处确定的每秒一帧的速率调整值。在这个实例中,基于软件的音频呈现过程通过创建在412处概括地指示的第二条件来过度补偿第一条件的漂移,其中音频时钟速率比测量到的时钟速率慢。在第二条件中,基于软件的音频呈现时钟有效地以与第一条件相反的方向漂移,但以较慢的速率,直到漂移离开测量到的速率的大小再次等于预定值,但在相反的方向上。
因此,例如,在第六秒开始的时段中,基于软件的音频呈现过程通过呈现从源接收到的1,000个帧中的某一些两次来过度补偿,使得更多的样本在一秒跨度内被呈现到音频硬件。呈现样本多次可被称为‘插入’,因为影响是创建在采样时段内消耗的额外样本。如先前确定的,音频硬件可以在一秒内处理1,002个。因此,基于软件的呈现过程通过插入三个额外的样本,呈现这三个帧两次来操纵音频时钟。现在音频时钟具有有效的时钟速率,它比测量到的速率略微慢一点。在第二条件412中,基于软件的音频呈现时钟从5至15秒向后朝着外部时钟漂移,在该点处漂移将开始以在第一条件中发生的相反方向累积。在该过程的25秒处,漂移将再次达到具有大小10的阈值410,但该大小的值与第一条件的相反,指示以与第一条件相反的方向漂移。
在动作312并且响应于达到第二条件中的阈值,可以操纵音频时钟速率,使得漂移向后朝着第一条件振荡。在这个实例中,可以操纵音频时钟速率,使它比测量到的速率快与调整因子一致的量。例如,这样的操纵可能必需在随后几秒内抽取帧。抽取可以仅仅表示在要呈现的单位时间内丢弃许多帧。
如此,上述插入或抽取的动作可以用于使音频时钟速率围绕测量到的速率振荡。结果,音频时钟速率与测量到的速率之间累积的漂移被减少或消除。下面描述的算法提供一个改进的实现,其中漂移调整值可以调整到比在此所述的更精确的程度。
示例性算法
下面的算法可以由基于软件的音频呈现过程用于减少或消除外部时钟与基于软件的音频呈现时钟之间的漂移。该算法可以通过在音频时钟比外部时钟较慢的第一条件与音频时钟比外部时钟较快的第二条件之间交替,消除基于软件的音频呈现时钟与外部时钟之间的累积漂移。
基于硬件时钟的软件时钟实现可能是不完美的,因为它受到分辨率、准确性和误差累积及其它因素的限制。认识到这一点,下面的软件时钟同步算法允许音频时钟相对于外部时钟在预定大小的正/负值(相反的极性)之间漂移。这样一个实现可以提供对上述有害因素的免疫性。在某些情况下,软件时钟同步算法可提供对所有这类因素的完全的免疫性。这类实现与先前的尝试相反,用直接的纠正响应来对任何漂移作出反应。这些先前的技术不能很好地工作,因为漂移值是在非常短的时间段内测量的,并且因此是很不可靠的。现有解决方案的至少一个重要缺点是,软件时钟实现具有抖动,它一般是比在非常短的时间段内测量的漂移大一点的大小。这常常导致错误和不均衡的较大反应,它显著降低音频呈现质量。
为了提供对时钟漂移成比例且接近对称的纠正,应该对照外部时钟与适当长的时段内之比来测量音频呈现速率,以产生测量到的漂移速率(测得速率)。测得速率随后可以通过调整音频硬件播放速率,或者通过调整音频采样速率(使用音频重采样技术)在后续的漂移纠正中使用。后一技术几乎等同于前一技术。然而音频重采样与底层音频硬件无关,并且因此减少或避免可能的音频硬件限制,诸如速率调整分辨率和最大硬件速率。在下面的讨论中,讨论音频采样速率调整技术。然而,描述了一种算法,它适用于调整硬件播放速率,其中音频硬件不强加诸如上面所述的那些限制。
如上所述,在回放时,基于软件的音频呈现过程测量相对于外部时钟的基于软件的音频呈现时钟,直到漂移达到第一阈值。该过程随后使用下列公式:
ΔS×T=ΔT×Sa (1)
在公式(1)中,ΔS是音频源速率乘以基于软件的音频呈现时钟与外部时钟之间在时钟速率上的差,T是漂移超过阈值的时间,ΔT是阈值,而Sa是音频源速率。应该选择一个阈值,它足够大以提供对两个时钟之间的任何差的良好测量,但足够小以不会产生口型同步问题。
因此,按照外部时钟,音频硬件以速率Sm提供音频,其中:
Sm=Sa+ΔS (2)
该公式是在音频硬件播放速率的上下文中。如果音频硬件播放速率被设置为源音频速率,则经调整的播放速率是ΔR=ΔT/T。
为了说明起见,假设基于软件的音频呈现时钟比外部时钟慢,尽管下面的数学方程与该假设无关。基于此假设,则ΔS<0。由于ΔS可以非常小,所以下面的算法被配置成使用整数和定点数学用于计算。因此,该过程用右移来按比例缩放值。在本例中,使用右移值8,它等价于将这些值乘以256。该右移允许将原始音频的速率重新采样成与0.004Hz一样小的速率。从这一点直到该示例的末尾,所有S值被认为是按256比例缩放的。
在一个实例中,其中基于软件的音频呈现时钟比外部时钟慢,示例性基于软件的音频呈现过程重新采样音频数据至比原始采样速率低的速率。因而,它使音频硬件显得用较高速率播放以反转音频时钟漂移的方向。当重新采样音频样本至较低速率时,该过程在采样时段内丢弃或抽取某个数量的样本。
音频硬件仍以相同速率消耗样本。然而,音频硬件消耗少于与采样时段相关联的总内容。例如,假设音频源速率为1kHz。因此,一秒包含1,000个样本。音频硬件应该按照音频硬件时钟在一秒内处理1,000个样本。但假设相对于外部时钟,音频硬件只能在一秒内处理999个样本。如果该过程从价值一秒的内容中丢弃一个样本,则音频硬件只需要消耗在外部时钟的一秒时间段中相应内容的999个样本,并且它在消耗这999个样本时花费的时间刚好是1秒。
采取这个动作有效地使音频硬件按照外部时钟在一秒内播放一秒内容。当然,内容并不完全相同,因为这一千个样本之中的一个样本没有为用户处理。也可以使用其它算法,尽管这类算法可比在本例中描述的插入重新采样算法使用更多的处理资源。例如,一维信号速率重新采样算法使用3至5个抽头的低通滤波器,诸如有限冲激响应(FIR)滤波器,它能够使速率重新采样的音频提供令人满意的用户体验。
人耳只能听到具有大约30Hz到大约20,000Hz之间的频率分量的声音。大多数人类语音基本上低于3,000Hz。人耳在频率接近20,000Hz时对声音更不敏感。大多数消费者质量的数字音频是以44,100赫兹(Hz)或者更高来采样的,而不是这里主要为便于说明而选择的1,000Hz。这是几乎不是偶然的,因为奈奎斯特(Nyquist)原理规定被采样的声音信号可以再现任何频率小于采样速率一半的声音。这意味着44,100Hz采样的音频可以准确地再现直至22,050Hz的频率分量,这很好地超过了人类可听见的频率范围。
在使音频呈现与外部源同步的情况下,音频呈现硬件与外部源之间的时钟差至多是几赫兹,并且常常是一赫兹的很小一部分。因此,使用对几千或几万音频样本中的单个音频样本的简单的复制或抽取比使用低通滤波器有效得多,并且将达到几乎等同于消费者质量的音频的质量。作为说明,对于44,100Hz的数字采样的音频,音频样本持续略小于23微秒。假设该过程丢弃几千样本中的一个样本,则或者这个音频样本在一个其毗邻邻值接近于它的值的区域中,或者它的两个毗邻邻值之一或两个都与它非常不同。在前一种情况下,丢弃该样本很难产生人能感觉得到的任何波形失真。而在后一种情况下,被丢弃的样本是这样的一个高频信号的样本,该信号在非常短的时间显著地改变,即该样本在第一位置对于人类几乎是听不见的。
在某些配置中,音频硬件可能没有易于可读的时间。相反,音频时间可以从它的直接存储器存取(DMA)指针位置导出。DMA指针指向音频硬件正在获得由诸如由音频驱动程序软件提供的音频软件等音频软件提供的DMA缓冲器中的音频样本之处。这允许音频驱动程序确定当读取DMA指针时音频硬件处理了多少音频样本。音频时间增量是从由音频硬件以音频采样速率消耗的音频样本的数量中导出的。在时段j内,其中音频硬件在此时段内以音频采样速率Sj消耗的音频样本量ΔAj从下式计算得到:
δtj=ΔAj/Sj (3)
因此,基于软件的音频呈现过程自从进入运行状态以来的总音频时间是:
因此公式4是对每个j的公式3的和。
这个特定的算法以与使用速率重新采样相似的方式操纵音频硬件播放速率来减少基于软件的音频呈现时钟与外部时钟之间的漂移。然而,用这个特定的算法,当硬件音频播放速率改变时,音频硬件消耗音频样本的速率在物理上改变。为此,就在音频速率改变之前,读取已经消耗直至该点处的音频样本来确定消耗的音频样本量(ΔAj)。与用软件速率重新采样一样,公式4用于计算音频时间。
然而,测量到的速率仍可具有某种较小程度的误差。音频速率重新采样,尤其使用不超过32位的定点数学,具有有限的精度。结果,计算舍入误差可累积。同样,由于软件执行延迟等因素,外部时钟具有一定量的抖动,它可以是与2微秒一样大。这种软件延迟可能是由操作系统和/或适用的应用程序接口等引起的延迟所致。通过配置该算法以缓慢地围绕音频时钟与外部时钟之间的完美同步点摇摆,该算法减少或者免去这些误差。换言之,音频速率是:
Sc=Sm±δSc (5)
其中δSc是保证当使用Sm±δSc时音频时钟比外部时钟略快,而在使用Sm-δSc时音频时钟比外部时钟略慢,且符合下面条件的最小正值。配置这个特定算法,使得音频时钟在预定义的阈值的正和负值之间漂移。在前向或正漂移中累积的误差将消除在后向或负漂移中累积的误差。因此,该算法减少或消除了累积误差。因此,可以选择值,使得正负阈值之间的漂移时间没有长到足以使任何定点误差累积变得显著的程度。
在该过程获得Sm之后的音频时钟时间是由δS0=sign(ΔS)×ΔS/2来计算的。其中除以2等同于整数值的左移。由此:
Sj=Sm+(-1)j+1×sign(ΔS)×δSj (6)
以及
δSj+1=δSj/2 (7)
其中j<c以及
δSj =δSc (8)
其中j>=c。
在j=0,(-1)j+1×sign(ΔS)×δSj>0,等价的播放速率比外部时钟速率快。因此,音频时钟从负值朝着正值漂移。音频重采样时间间隔是λj并且从下式计算:
λj=Sa/|Sa-Sj| (9)
以及当Sj>Sa时一次抽取剩余的和当Sj<Sa时插入的是:
γj=1.0×Sa/|Sa-δSj|-λj (10)
重采样过程使用定点计算来找出在哪里插入或抽取样本。假设A在j增加时设置为零,在该点处音频呈现过程设置重新采样速率以倒转漂移方向。只要音频呈现过程接收到包含L个样本的新音频样本缓冲区时,A=A+L。如果A大于或等于音频重采样时间间隔(λj),则该过程从A中减去λj,使得A=A-λj。假设ρ是累积的剩余,并且当A设置为零时将它设置为零,则该过程将γj添加到ρ。如果在该点处ρ大于或等于比例缩放后(在此为256)的1时,则该过程在第(A+1)个样本处插入/抽取一个样本,并且设置ρ=ρ-256。否则,该过程插入/抽取第A个样本。这个过程继续,直到A<λj。随后,基于软件的音频呈现过程等待下一个音频样本缓冲区从音频解码器到来。重复这个过程,直到音频呈现过程决定再次倒转漂移方向,例如再次增加j。
在某些实现中,用公式6,该过程在j=0开始,其中音频时钟速率从负值漂移到0。在该点处,该过程设置最大漂移值为阈值。该过程还给阈值一个余量,使得当该过程开始倒转漂移方向时,它允许音频继续漂移一点儿超过阈值。这是因为以先前的速率(j-1)重新采样的数据此时可能不是完全由音频硬件消耗的。一旦音频漂移至大于或等于新的且最后设置的最大漂移值的正值,该过程就将j增加至值1。在这点处,音频播放速率显得比Sm慢。音频开始朝着负值漂移。由于δS1值是δS0值的一半,所以漂移所用的时间大约是朝负阈值漂移的时间的两倍。这个过程将重复,直到j的增加不再倒转漂移方向,这意味着增加的值不足以补偿由音频时钟的软件实现引入的误差。在上述过程未能倒转漂移方向的这样一个时间,那么c=j-1是该过程试图减少δS和到达收敛值δSc的时间。
如最初提到的,该过程还在正阈值与负阈值之间(或反之亦然)的音频时钟漂移上设置限制,将其限制于某个时间跨度,即例如15分钟,以使该算法更能免于积累来自各种源的效应。这可有效地在达到前面段落中描述的δSc之前在某些情况下设置δSc的最小值。由此,它意味着该过程将在时间跨度超过15分钟时设置c=j,使得δSj不再平分。有可能的是,如果ΔS特别小,δSc必须比δS0大,诸如2n×δS0。另一个条件是,最大采样时间间隔限于231≥Sa/|Sa-Sj|,使得32位的定点数学始终可以用于音频速率重采样。基于公式2和6,也可在δSc的最小值上设置限制。有可能的是,δSc必须在于δS0,诸如2n×δS0。
为随后的总结,对于这个实现,或者来自测得速率的经调整的速率改变或速率调整增量应该是允许音频时钟在阈值的正负值之间相对于外部时钟连续地漂移的最小值,同时音频时钟用于在负阈值到正阈值漂移的时间大但不太大。例如,大约一分钟到一小时或更长的时间段等的值可以提供合适的实现。收敛速率调整增量的准则用于针对音频时钟好象是与外部时钟很好地同步但情况实际上是从软件时钟实现的非理想性所致的情况进行保护。上面提到的接近对称的纠正意味着,当确定最终的速率调整增量时,音频时钟从负阈值到正阈值漂移所用的时间与音频时钟从正阈值到负值漂移所用的时间大约是相同的。
示例性视频呈现实现
为了解释显示周期,一起考虑图1和5。图5表示分别一般由505、504和506处的基于软件的视频呈现引擎124跟踪的三个连续的视频帧AA、BB和CC的显示周期的时间线500。在时间线500中,时间从左至右前进。如在时间线500的最左区域描绘的,当前帧AA的显示周期一般是在502处指示的。如上提到的,显示周期包括两个扫描或VBI周期;在第一VBI中扫描偶半帧并且随后在第二VBI周期中扫描奇半帧。每个VBI周期在不促进图象生成的VBI事件中达到顶点。
VBI事件508A划分显示周期502的末尾与帧BB的显示周期的开始的分界线。显示周期504包括第一或偶VBI周期510,以及第二或奇VBI周期512。为了显示周期504正确地显示来自帧BB的图象,该帧应该可用于图形硬件就在VBI事件508A之前呈现。
这个呈现过程有时被称为表面翻转(surface flipping)或触发(flip-flopping),其中新的帧BB从后缓冲器表面翻转到前缓冲器表面以让图形硬件访问,同时当前帧AA相应地从前向后翻转。
帧BB的显示周期504由在VBI事件508B中达到顶点的偶VBI周期510与在VBI事件508C中达到顶点的奇VBI周期512组成。响应于VBI事件508B,呈现随后的帧CC,使得它在显示周期506中被扫描,在图5中只表示了它的偶VBI周期。
兼容于标准,电视编码器128遵循定义的16.67ms的扫描周期或VBI周期。电视编码器没有故意偏离这个周期或者考虑到其它系统组件的操作。例如,电视编码器没有任何判断力来缩短或延长单独VBI周期。每个显示周期包括两个VBI周期或33.34ms。图形硬件126和电视编码器128的VBI周期保持与电视编码器时钟或者与图形硬件的图形时钟(未明确指定)有关。
基于软件的呈现引擎124可以包括基于软件的呈现时钟(未明确指定)。通过监控电视编码器128和/或图形硬件126的显示周期,呈现引擎124的呈现时钟可以相对于电视编码器的显示周期来调度事件。用于监控显示周期的过程的一个示例在下面参考图5A-5B描述。
如图1所示,基于软件的视频呈现引擎124从一个源接收视频帧,该源可以在计算设备102的内部或外部。视频帧可以包括由诸如源时钟等外部时钟或基准时钟确定的提供时间或时间标记。创建时间标记的外部时钟不知道电视编码器或者甚至图形硬件的时钟的显示周期。基于软件的视频呈现引擎124监控图形硬件126的显示周期,以预测该帧可以相对于图形硬件的显示周期显示的实际时间。视频呈现引擎124随后基于这个预测确定何时呈现视频帧至视频硬件。而且,尽管基于软件的视频呈现引擎可以基于预测来调度呈现,但基于软件的视频呈现引擎继续监控显示周期以保证视频帧在适当的时间呈现。
图6示出一个示例,其中呈现引擎124确定单独视频帧的实际提供时间。时间线600描绘了100ms的持续时间。时间线用与单个VBI周期相关联的16.67ms的增量来划分界线。一组连续的两个VBI周期(或33.34ms)定义了一个显示周期,而在本例中示出三个显示周期604、606和608。第一显示周期604显示视频帧DD。第二显示周期606显示视频帧EE,而第三显示周期608显示第三视频帧FF。
视频帧EE具有20ms的提供时间标记610。为了说明的目的,假设确定时间标记的时钟与显示周期同步。通过监控电视编码器的显示周期,基于软件的呈现引擎124知道正在从0.0ms起直到33.34ms扫描视频帧DD,并且因此视频帧EE的实际提供只能在此时之后才能开始。因此,基于软件的呈现引擎知道视频帧EE的实际提供时间应该是下一个显示周期606,它在33.35ms开始并运行到66.67ms。
同样,视频帧FF具有40ms的提供时间612。基于软件的呈现引擎知道下一个可用的显示周期608在66.68ms开始,因此实际的提供时间随后将开始。呈现引擎可以调度以在显示周期606的后半段中呈现视频帧FF。基于软件的呈现引擎没有调度以在显示周期606的前半段中呈现帧FF,即使它可能更接近于时间标记提供时间612,因为可能产生不希望的结果。这样的不希望结果在下面参考图5A-5B更详细地描述。
图6示出基于软件的视频呈现引擎如何能够确定单独视频帧的实际提供时间并相应地呈现它们。各种系统配置在呈现侧和/或图形硬件侧可具有某种程度的延迟。某些实现可以将这种延迟计算在内来计算更准确的实际提供时间和/或来调度呈现时间。基于软件的视频呈现引擎也可将单独视频帧的实际呈现时间传送给音频解码器114和/或音频呈现引擎116,使得音频呈现时间可相应地调整。
如上所述,如有所需,基于软件的视频呈现引擎可以监控显示周期以确定单独视频帧的呈现和/或提供时间。基于软件的视频呈现引擎不需要依赖于这些预定值,因为它从显示周期刚开始继续取得诸如VBI信号等实时信号,直到它呈现视频帧。某些实现可以基于实时信号而不是预定的时间最后呈现视频帧。
通过按照视频硬件的显示周期呈现视频帧,所得的运动视频的用户体验可以得到增强。用于监控显示周期以确定何时呈现视频帧的示例性过程在下面参考图7A-7B描述。
示例性视频呈现过程
图7A-7B表示用于呈现视频数据的基于软件的过程。这个特定的实现基于在美国等国家使用的由国家电视标准委员会(NTSC)建立的标准。下面描述的概念适于其它标准,诸如在欧洲、数字多功能盘(DVD)和480p等中使用的逐行倒相(PAL)等等。在仅一个配置中,该过程可以使用诸如参考图1和2描述的系统等系统来实现。所述的基于软件的视频呈现过程包括动作702-734。动作702-724一般涉及视频呈现过程,而动作726-734一般涉及解决外部时钟与呈现过程时钟之间可能的时钟漂移。基于软件的视频呈现过程在动作702开始启动过程。
在动作702,基于软件的视频呈现过程响应于正在由用户打开的媒体播放器应用创建呈现引擎线程。该过程随后等待运行事件信号,诸如来自用户的播放命令。图形硬件在VBI循环期间遇到特定的中断行时生成一个中断信号。中断信号中断CPU。作为响应,CPU通知中断信号的出现和生成它的中断行。CPU将中断信号传送给驱动程序中断处理程序。CPU检查等待线程队列,并且如果CPU标识正在等待中断信号的线程,则CPU将所标识的线程从等待线程队列移动到就绪线程队列。在这一情况下,呈现引擎线程正在等待中断信号,并且被移到就绪线程队列。CPU随后将检查视频呈现引擎线程相对于任何当前运行的线程的优先级,并且如果视频呈现引擎线程具有优先级,则CPU将运行视频呈现引擎线程并将当前的线程移动到就绪队列。该过程随后等待来自视频解码过程的第一视频样本或帧的到达。
在动作704,在可用于基于软件的视频呈现过程的缓冲器处视频帧到达后,该过程查询系统是否为新帧准备好。这个动作允许该过程检查系统的运行状态以保证视频帧是实际想要的。这个动作减少浪费处理能力和/或其它资源的机会。例如,用户可按下‘播放’,但在该过程到达这个点时,用户可能已经按下‘暂停’或者用户可能已经改变了频道,从而消除了呈现视频帧的需求。在本例中,如果用户按下暂停,则系统没有为新帧准备好。如果视频帧不是想要的,则该过程返回到动作702。
如果视频帧是想要的,则基于软件的视频呈现过程获得VBI周期的VBI极性(动作706)。VBI周期在与显示设备合作以从给定的视频帧产生图象的硬件子系统上发生。每个视频帧显示一个显示周期,它包括两个VBI周期。第一或偶VBI周期扫描视频帧的偶半帧。第二或奇数VBI周期扫描视频帧的奇半帧。通过获得VBI极性,该过程知道一个单独帧的显示周期是在第一VBI周期中还是在第二VBI周期中。显示周期和VBI周期的示例在上面参考2-3描述。
为了说明的目的,假设该过程获得奇VBI极性。通过获得奇VBI极性,该过程知道当前帧的第二半帧正在由电视编码器128扫描。
在动作708,基于软件的视频呈现过程等待下一个VBI信号。如上所述,VBI事件在VBI周期的末尾发生,并且指示VBI周期的垂直消隐阶段的开始。图形硬件在每个VBI事件创建VBI信号,并且该VBI信号由基于软件的视频呈现引擎检测。在扫描偶半帧的末尾接收到VBI信号,指示下一个VBI周期将具有奇极性。同样,在扫描了奇半帧之后接收到VBI信号,指示下一个VBI周期将具有偶极性。因此,在收到将偶VBI周期与奇VBI周期分开的VBI信号之后,指示当前帧的显示周期就在下一个VBI信号之前完成。通过获得VBI极性并且等待VBI信号,基于软件的视频呈现过程可以调度以在接近的奇VBI周期中呈现下一帧。
在动作710,基于软件的视频呈现过程跟踪VBI周期。通过跟踪VBI周期,该过程不需要重新查明VBI极性(这将比获得单个VBI周期占用更多的时间)。通过最初获得VBI极性并且随后跟踪VBI周期,基于软件的视频呈现引擎知道每个显示周期相对于视频呈现引擎的视频呈现时钟的点。除了其它优点,该特征可以允许基于软件的视频呈现引擎避免在只有扫描了当前帧的偶周期之后才呈现新的帧。缺少这样一种技术,某些现有的过程能导致这样的场景,其中调度新的帧在偶半帧VBI周期内呈现,使得当前帧的第二或奇周期被省略,而在它的位置扫描新的帧。这样一个场景可以导致令人不太愉快的用户体验。在这样一个情况下,新帧可以用相反的时间顺序扫描。例如,奇半帧然后偶半帧,而不偶半帧然后奇半帧,这可以进一步减少用户满意度。
此外,通过跟踪VBI周期,基于软件的视频呈现引擎可以相应地更新视频呈现时钟,因为每个VBI周期基于图形时钟精确地占用16.67ms。因此,例如,每当检测到VBI信号时,视频呈现时钟可以相应地上移。这允许呈现过程更准确地用显示周期来定时它的活动。例如,可以有软件呈现引擎在某些VBI周期内完成的其它任务。
可供替换地或除此之外,在图形时钟与基准时钟之间的时钟漂移也可以通过在检测到每个VBI事件时更新视频呈现时钟并且将视频呈现时钟与基准时钟的时间进行比较来推断。
如将在下面更详细地讨论的,动作710的时钟同步过程可以允许基于软件的视频呈现过程从属于来自诸如陆地、电缆和卫星源等标准电视广播媒体的直播视频源时钟。
而且,如下面将更详细地讨论的,保持准确的视频呈现时钟允许基于软件的视频呈现过程同步其它组件和/或提供。例如,基于软件的视频呈现过程可确定从给定的视频帧生成图象的实际时间。
基于软件的视频呈现过程随后可使用实际提供时间来减少音视频不一致性。例如,基于软件的视频呈现过程可将一个视频帧的实际显示时间传送给音频解码器和/或音频呈现引擎,使得音频和视觉方面可以同步。
例如,在当前帧的奇半帧的开始处接收到VBI信号时,基于软件的视频呈现过程知道它将在大约16.67ms内接收到下一个VBI信号时呈现下一帧。基于软件的视频呈现过程还知道对下一帧的扫描将及时在该点处开始。因此,基于软件的视频呈现过程可指示音频呈现引擎在16.67ms后呈现相关联的音频包。这样一个同步过程可以在明确的上限内产生音视频同步,该上限远低于人类的感觉。
在动作712,基于软件的视频呈现过程再次检查系统是否为新的帧准备好。这个步骤检查系统的运行状态,以保证资源不浪费在不需要的呈现上。如果系统没有为下一帧准备好(即“否”分支),则该过程等待直到系统准备好。一旦系统准备好(即,“是”分支),则确定基于软件的视频呈现过程是否在呈现周期内(动作714)。例如,基于软件的视频呈现过程可检查以查看它是否被调度为在下一个33.34ms内呈现帧。这样的调度的一个示例在上面参考图3描述。
除了其它属性,这个动作可以允许改进的资源分配。如果基于软件的视频呈现过程预知保留一定量的资源的愿望,最值得注意的是图形硬件资源,则随后在视频呈现周期中,基于软件的视频呈现过程保持为它保留的资源。如果基于软件的视频呈现过程完成在给定呈现周期中的视频呈现,则基于软件的视频呈现过程可让其它过程使用它保留的部分处理资源。通过跟踪显示周期和/或VBI周期,可以有将为基于软件的视频呈现过程保留的处理资源重新分配给其它处理任务的时候。跟踪VBI周期并且更新视频呈现时钟允许基于软件的视频呈现过程知道何时应该为基于软件的视频呈现过程保留资源以及它们何时可用于其它处理任务。
例如,假设在基于软件的视频呈现过程可以调度呈现VBI周期中的表面翻转之前,基于软件的视频呈现过程需要一个特定图形硬件单元来执行特定的操作任务。表面翻转在上面参考图2描述。而且,假设诸如用户界面(UI)模块等其它模块使用相同的图形硬件单元。基于软件的视频呈现过程将优先级给予呈现过程,使得呈现过程可以及时地完成它的任务。一旦呈现过程已经完成其调度的任务,就可允许诸如UI模块等其它组件使用处理资源。
用于保证基于软件的视频呈现过程能够及时完成它的处理任务的一种技术是,允许基于软件的视频呈现过程准予或拒绝希望对图形单元发出任何任务的其它软件模块对图形单元的访问。例如,基于软件的视频呈现过程可测量基于软件的视频呈现过程应该保留的图形单元资源的百分比。在一种极端情况下,如果基于软件的视频呈现过程需要100%的图形单元资源,则基于软件的视频呈现过程可以确定最后的时间跨度,在该时间跨度内,基于软件的视频呈现过程应该具有100%的图形单元资源,以在呈现VBI周期期满之前成功调度表面翻转。因此,基于软件的视频呈现过程可以相应地限制或门控其它软件模块对图形单元的使用。例如,基于软件的视频呈现过程可以就在基于软件的视频呈现过程调度表面翻转之后接通资源门,但只允许UI模块使用某个百分比的图形单元直至将来的某个时间。随后基于软件的视频呈现过程关断呈现门至其它软件模块,使得调度的所有任务将在进入呈现VBI周期的某个时间之前完成,使得基于软件的视频呈现过程可调度的这些任务将在呈现VBI周期期满之前具有足够安全的余量来允许基于软件的视频呈现过程调度表面翻转。
如果基于软件的视频呈现过程不在呈现周期中,则该过程前进至动作716。如果该过程在呈现周期中,则该该过程前进至动作718。
在动作716,基于软件的视频呈现过程释放翻转的表面,即先前被扫描的帧。注意,如先前讨论的,附着于后表面的存储器缓冲器已经与前表面的交换过了。因此该过程可以释放当前的后表面以及它附着的缓冲器来缓冲队列。视频解码器可以获得释放的缓冲器,以便按照提供时间标记的顺序用新解码的视频帧来填充缓冲器。这样一个缓冲器在图1中指示为视频缓冲器122B。在这点上,该过程前进至动作708。
在动作718,其中基于软件的视频呈现过程在呈现VBI周期中,该过程检查下一帧是否可用。在某些配置中,下一视频帧应该可用于基于软件的视频呈现过程从缓冲器FIFO队列,诸如从参考图1所述的缓冲器122A中获得和消耗。这个特定的FIFO缓冲器队列是由基于软件的视频解码过程按照帧提供时间标记的时间顺序来填充的。在一种情况下,基于软件的视频解码过程已经解码了一个或多个帧,并且已经将它们填充到从如参考图1描述的视频缓冲器122B获得的缓冲器中,并且将视频帧放到图1的视频缓冲器122A中以供基于软件的视频呈现引擎接收。在另一种情况下,假信号可阻止基于软件的视频解码过程及时传送下一个视频帧。如果这后一种情况发生,并且下一个视频帧在VBI呈现周期内不可用,则基于软件的视频呈现过程前进到动作720。如果下一帧可用,则基于软件的视频呈现过程将它取出队列并且前进到动作724。
在动作720,由于基于软件的解码过程没有及时传送视频帧,则基于软件的视频呈现过程将当前显示的视频帧的显示延长一个或多个VBI周期。一种方法是将当前帧延长另外两个VBI周期或大约34ms。该过程随后前进至动作722。
在动作722,为了允许基于软件的视频解码过程补足损失并且允许解码过程赶上,基于软件的视频呈现过程指示解码过程丢弃后续的视频帧。
通过允许基于软件的视频解码过程选择要丢弃的后续帧来补偿新近帧,可节省处理资源。例如,假设压缩的视频流包含基准帧和非基准帧。基于软件的视频解码过程必须解码将用于解码其它帧的所有基准帧。因此,解码过程可以选择不解码非基准帧。通常,非基准帧用几倍的系统资源来解码。一个或多个非基准帧通常在两个基准帧之间出现。因此,通过不解码非基准帧,基于软件的视频解码过程可以赶上不超过两帧的时间。例如,如果要解码的下一帧是非基准帧,则视频解码器可以丢弃该帧。如果下一帧是基准帧,则随后的帧应该是非基准帧,且视频解码器可以丢弃该帧。这允许被显示的视频帧的提供时间标记与相应呈现的音频样本的提供时间标记偏差34ms或小于两个显示周期或更少,并且随后可重新同步音频和视频。
作为一个具体示例,诸如MPEG-2/4/10或WMV9视频等基于标准的视频压缩的主要概况包含B(双向预测)帧,它们不必解码,因为B帧不用作用于构建其它帧的基准帧。B帧还在与其它帧类型比较时占用更多的系统资源来解码。因此,基于软件的视频解码过程可选择不解码它在接收到动作722的丢弃帧命令之后遇到的第一个B帧。
图7A中未示出的一种可供替换的方法是延长当前帧以只多显示一个VBI周期并且将下一个VBI周期指定为呈现周期。如果新视频帧在下一个VBI周期中可用,则新帧就只显示一个VBI周期。这个方案可限于在下4个VBI周期内每次动作720发生时一次。在单个发生之后,当前帧可以显示另外两个VBI周期,如在动作720所述,以允许视频解码过程赶上来。
在动作722的可替换情况中,如果基于软件的视频呈现过程在调度的呈现时间之后接收到下一个视频帧,使得下一个显示周期已经再次在当前帧上开始,则基于软件的视频呈现过程确定显示周期是否在显示周期的前半段中。如果下一个视频帧是在显示周期的前半段中接收的,即在第一或偶VBI周期中接收的,则该过程呈现新近到达的帧并且前进到动作730,好象视频帧被及时呈现一样。这个过程步骤允许从解码器新近到达的帧显示其显示周期的后一半。在动作722指示视频解码器丢弃帧的情况下,基于软件的视频呈现过程前进至动作708。
在动作724,基于软件的视频呈现过程获得下一视频帧。
在动作725,基于软件的视频呈现过程检查下一视频帧是否继续前一帧。基于软件的视频呈现过程参考正在处理的帧的提供时间标记,检查由动作724获得的视频帧的提供时间标记的连续性。这个检查排除了由动作722引起的任何不连续性。如果不连续性存在,则基于软件的视频呈现过程前进至动作726。如果这些帧是连续的,则基于软件的视频呈现过程前进至动作728。
在动作726,由于不连续性存在,所以基于软件的视频呈现过程将当前帧显示延长至前一帧的提供时间标记与下一帧的提供时间标记之间的差。
可以引起下一帧与前一帧之间这样的不连续性的一个示例可以在用基于软件的视频呈现过程播放诸如DVD电影等DVD的上下文中发生。在这样一个示例中,DVD菜单可在电影的视频流内向用户显示。在一个这样的情况下,由用户命令调用和/或移除菜单。例如,如果用户选择‘暂停’回放,则可插入表示菜单并且指示暂停条件的帧作为视频流中的视频帧。因此,DVD菜单不是电影的视频流的一部分。而且,电影的视频帧具有由源插入的时间标记。菜单可以包括或可以不包括时间标记。如果菜单具有时间标记,则它有可能与电影帧的时间标记有很少相关性或没有相关性。因此,每当从视频流插入或移除菜单时,它产生不连续性。注意,如果用户调用,DVD菜单可以在任何时候出现。而且,还难以精确地决定一个静止帧显示多久,因为用户可在任何时间作出选择。如果用户恢复先前的播放条件,则菜单帧随后被移除,在视频流中造成另一个不连续性。在延长下一帧的显示时间之后,基于软件的视频呈现过程随后返回至动作708。
在动作728,基于软件的视频呈现过程调度下一视频帧的呈现。呈现下一帧的动作可以通过翻转包含下一帧缓冲器来完成。
上述基于软件的视频呈现过程步骤通过过程步骤704-708监控显示周期。基于软件的视频呈现过程在接收到在扫描当前帧的偶半帧的顶点处生成的实时VBI信号后,随后呈现下一帧(如果可用)。呈现过程不必是这个精度。其它示例性过程可监控显示周期,并且在当前帧的显示周期超过一半完成之后的任何时候呈现下一帧。如上面参考图2所述,一旦当前帧的半帧被翻转用于扫描,则可以呈现下一帧,并且视频硬件将直到下一个显示周期才扫描它。因此,例如,某些基于软件的视频呈现过程一查明下游组件正在开始当前显示周期的后半段,就可呈现下一帧。
在动作728之后,基于软件的视频呈现过程前进至时钟同步子例程,该子例程在返回至动作708之前在动作730开始,以重复呈现过程。在动作730,基于软件的视频呈现过程计算视频呈现时钟时间和基准时钟之间的任何差。比较基准时钟与视频呈现时钟是在上面参考动作710描述的。如果视频呈现时钟时间与基准时钟时间之间的差的绝对值比帧显示周期持续时间小,则基于软件的视频呈现过程前进至步骤708。
如果视频呈现时钟时间与基准时钟时间之间的差是比视频帧显示周期大的正值,它指示视频呈现时钟或图形硬件时钟比基准时钟快,则基于软件的视频呈现过程前进至动作732。
如果视频呈现时钟时间与基准时钟时间之间的差视频是比视频帧显示周期大的负值,它指示视频呈现时钟或图形硬件时钟比基准时钟慢,则基于软件的视频呈现过程前进至动作734。
在动作732,基于软件的视频呈现过程显示下一帧四个VBI周期而不是正常的两个VBI周期。换言之,基于软件的视频呈现过程通过指定第四个VBI周期作为下一个呈现VBI周期而不是第二个VBI周期,加倍下一视频帧的显示时间。基于软件的视频呈现过程还从视频时钟时间推断一个视频帧的时间量。基于软件的视频呈现过程随后返回动作708以重复呈现过程。
在动作734,基于软件的视频呈现过程指示视频解码器丢弃帧,并且将视频时钟时间增加一个视频帧的时间量。一个非常相似的原则可以在晚了任何数量的显示周期时接收到下一帧时应用。基于软件的视频呈现过程随后返回至动作708以重复呈现过程。
作为在动作732和/或动作734完成的视频时钟调整的结果,将视频时钟漂移时间恢复到一个视频帧时间内,或者基准时钟的33ms,并且基于软件的视频呈现过程可以前进回到动作708。
上述过程步骤可应用于和/或可以适合于符合NTSC以外的其它标准的视频。例如,对于逐行标准,基于软件的视频呈现过程不使用VBI极性,因为这只与隔行内容有关。
同样,基于软件的视频呈现过程可应用于具有其它周期持续时间的标准。在某些这样的实现中,基于软件的视频呈现过程可以进行相反的电视电影。例如,这意味着该过程通过呈现视频帧,好象帧速率是30fps一样,可以有效地达到每秒24帧(fps)的速率。基于软件的视频呈现过程随后可以设置每个第四帧翻转时间间隔为4而不是标准的2,这意味着每个第四帧将显示前三帧的两倍长。这些只是应用于上述基于软件的视频呈现过程的一些可能的示例。
示例性音频和视频提供时间调度
在某些实现中,基于软件的音频呈现过程和基于软件的视频呈现过程可以在同步过程中彼此通信,以在回放时减少延迟,同时最小化丢弃初始帧的发生。而且,同步过程可以动态地自适应到基于软件的音频呈现过程和基于软件的视频呈现过程遇到的各种音频和视频格式以及相关联的压缩与解压技术。这样的音视频同步的示例下面在接收到播放命令时启动和响应于暂停命令时暂停的上下文中描述。
图8表示一般在800的一个这样的音视频同步启动过程,其中时间从页上部到页下部前进。音频解码器802、音频呈现器804、视频呈现器806和视频解码器808在810接收到运行命令。假设运行命令是播放电影。在812,来自电影的第一个音频样本从音频解码器802传送到音频呈现器804。音频呈现器确定可以呈现该音频样本的最早的可能时间。在814,音频呈现器804向视频呈现器806通知该音频样本的最早可能的音频呈现时间。在某些实现中,通信信道和/或相关联的通信协议可以预先建立,以促进启动过程而减少延迟。
在816,视频解码器808将电影的第一视频帧传送给视频呈现器806。视频呈现器查明第一视频帧的最早可能的视频呈现时间。在818,视频呈现器806向音频呈现器804通知该帧的最早视频呈现时间。音频呈现器804和视频呈现器806被配置成在可能的音频呈现时间与可能的视频呈现时间中的较后者呈现。因此在对应于较后的可能呈现时间的时间820,音频呈现器在822开始音频呈现,而视频呈现器开始视频呈现824。在这个特定的示例中,音频和视频呈现器作出有关最早呈现时间的决定。诸如解码器等其它组件可替换地或另外涉及决策制定过程。
在另一个实现中,为促进同步过程,一旦音频呈现器804已经接收到一个样本并且确定最早可能的呈现时间,则音频呈现器就可查询视频呈现器806,以确定视频呈现器是否已经接收到相应的视频帧。在肯定条件下,音频呈现器804可向视频呈现器806查询有关视频呈现的最早可能的呈现时间。同样,视频呈现器可查询音频呈现器。
图9表示一般在900的另一个视频同步过程,其中时间从页上部至页下部前进。在这个实例中,同步过程涉及用户暂停命令。音频解码器902、音频呈现器904、视频解码器906和视频呈现器908在910接收到暂停命令。假设暂停命令是在播放电影的过程期间接收的,并且音频呈现器904比视频呈现器908较早地接收到暂停命令。当音频解码器器902和视频解码器906接收暂停命令时,它们还可将解码的样本分别传送给音频呈现器和视频呈现器,直到用于传送媒体样本的缓冲器用完(动作912,914)。
在动作922,音频呈现器暂停音频硬件,使得音频硬件不再消耗音频样本。在该点处,音频呈现器完成它从运行状态到暂停状态的转移。然而,在音频驱动程序中有排队的音频样本。DMA指针位置指示在音频硬件恢复到运行或播放状态时将消耗的音频样本。在动作924,视频呈现器停止呈现视频帧。在该点处,视频呈现器完成从运行状态至暂停状态的转移。然而,在等待呈现的FIFO队列中有一些解码的视频帧。
由于音频呈现器和视频呈现器在暂停状态中不再消耗媒体样本,所以将不释放保存解码的样本的缓冲器。解码器一旦用完缓冲器,那么它们也将进入暂停状态(动作926和928)。在动作930,当用户恢复播放媒体时,运行命令被发送到每个模块,包括音频解码器902、音频呈现器904、视频解码器906和视频呈现器908。
响应于动作930,音频呈现器904在932开始按照帧提供时间标记(PTS)查询有关视频呈现器可以为视频硬件产生下一视频帧的精确时间。如先前讨论的,视频呈现器跟踪由视频硬件的显示周期生成的VBI信号,使得视频呈现器可以确定相对于基准时钟的将显示视频帧的精确时间。该时间可以表示为以微秒为单位的tn=t0+n×33.34,其中t0从当前基准时钟时间延长到下一个VBI周期时间的结束时间,并且n是整数(细节见有关图6的讨论)。
同样,在动作934,音频呈现器可以查询暂停的音频样本PTS和具有与动作932的第一视频帧相同的PTS的音频样本。通过读取在暂停音频硬件之后的DMA指针位置,音频呈现器可以告诉音频硬件将呈现的下一个样本的PTS。下一视频帧PTS与下一音频样本PTS的差指示为Δt,它是音频呈现在视频呈现开始之前应该开始的时间。
由于下一视频帧只可以在tn开始,并且基于基准时钟的当前时间是t,因此n是Δt/33.34加1的整数部分,并且音频硬件应该在tn-Δt恢复播放。换言之,调整音频硬件恢复的时间,使得在动作942价值Δt的音频样本在动作944显示下一视频帧时已经被消耗。因此,音频硬件开始呈现具有非常接近视频帧PTS的PTS的音频样本。在这个事件之后,音频和视频呈现器开始释放媒体样本缓冲器。一旦消耗了那些样本,解码器就可以将新的媒体样本传送到呈现器(动作952和954)。这也适用于音频呈现器比视频呈现器晚Δt<0接收到暂停命令的情况,这意味着音频硬件将比视频呈现器晚|Δt|恢复。
结论
上面描述了有关基于软件的音频和视频呈现的各种概念。各种实现可以在大量配置中组合这些概念。例如,视频时钟从属概念可以用于提供实时视频呈现,同时使视频时钟与诸如源等外部时钟同步。音频时钟可使用插入和抽取概念与视频时钟同步。音频和视频启动同步可以促进音频呈现过程与视频呈现过程之间的通信,以减少回放时的延迟,同时最小化丢弃初始帧的发生。
Claims (20)
1.一种包括计算机可执行指令的计算机可读介质,当执行所述计算机可执行指令时,执行下列动作:
测量外部时钟与音频时钟之间的第一漂移速率,直到所述漂移达到一阈值;以及
响应于所述漂移达到所述阈值并且基于所述第一漂移速率,操纵所述音频时钟,使它达到第二漂移速率,所述第二漂移速率具有较小的值以及与所述第一漂移速率相反的极性。
2.如权利要求1所述的计算机可读介质,其特征在于,还包括查明源音频采样速率。
3.如权利要求2所述的计算机可读介质,其特征在于,所述测量包括确定所述外部时钟与音频硬件时钟之间的速率差,以及将所述差添加到所述源音频采样速率。
4.如权利要求1所述的计算机可读介质,其特征在于,所述阈值包括第一阈值,且还包括进一步操纵所述音频时钟,使得所述音频时钟围绕所测得的速率在具有比所述第一阈值小的大小的第二阈值的相反极性之间以所述第二漂移速率振荡。
5.如权利要求4所述的计算机可读介质,其特征在于,所述进一步操纵包括确定比所述第二漂移速率小的第三漂移速率,并且所述第三漂移速率足够大,使得所述音频时钟在预定的时间段内越过所测得的速率。
6.如权利要求5所述的计算机可读介质,其特征在于,所述预定的时间段等于15分钟。
7.如权利要求5所述的计算机可读介质,其特征在于,还包括计算逐渐变小的漂移速率,直到确定一最小值,在所述最小值内,所述音频时钟漂移将在所述预定的时间段内围绕所测得的速率在第二阈值的相反极性之间振荡。
8.如权利要求4所述的计算机可读介质,其特征在于,所述第二阈值至少为所述音频时钟固有的抖动量的二倍大,并且所述第二阈值还足够小,使得所述音频时钟以所述第二漂移速率在小于一小时的时间内在所述第二阈值的相反极性之间漂移。
9.如权利要求4所述的计算机可读介质,其特征在于,所述音频时钟以所述第二漂移速率从所述第二阈值的正极性漂移到所述第二阈值的负极性所用的时间大约与所述音频时钟从所述第二阈值的负极性漂移到所述第二阈值的正极性所用的时间相同。
10.一种包括计算机可执行指令的计算机可读介质,当执行所述可执行指令时,执行下列动作:
测量相对于外部时钟速率的音频时钟速率;以及
操纵所述音频时钟,使得所述音频时钟速率围绕所测得的速率振荡。
11.如权利要求10所述的计算机可读介质,其特征在于,还包括选择第一阈值,并且其中,当所述音频时钟速率与所测得的速率之间的漂移等于所述第一阈值时,调整所述音频时钟速率以达到相对于所测得的速率减少的漂移速率。
12.如权利要求11所述的计算机可读介质,其特征在于,所述调整包括在给定单位时间内呈现至少一个音频样本两次。
13.如权利要求11所述的计算机可读介质,其特征在于,还包括选择具有与所述第一阈值相反极性的第二阈值,以及当所述漂移达到所述第二阈值时,进一步操纵所述音频时钟速率,使得所述音频时钟速率跨所测得的速率漂移回去。
14.如权利要求13所述的计算机可读介质,其特征在于,所述进一步操纵包括抽取将被呈现的至少一个音频样本。
15.一种包括计算机可执行指令的计算机可读介质,当执行所述计算机可执行指令时,执行下列动作:
确定第一音频样本的可能音频呈现时间;
查明第一视频帧的可能视频呈现时间;以及
在所述可能音频呈现时间与所述可能视频呈现时间中的较后者呈现所述第一音频样本和所述第一视频帧。
16.如权利要求15所述的计算机可读介质,其特征在于,所述确定包括确定最早的可能音频呈现时间,以及其中,所述查明可能视频呈现时间包括查明最早的可能视频呈现时间。
17.如权利要求15所述的计算机可读介质,其特征在于,所述确定是由基于软件的音频呈现引擎响应于用户命令在接收到第一音频样本后完成的。
18.如权利要求15所述的计算机可读介质,其特征在于,所述查明是由基于软件的视频呈现引擎响应于用户命令在接收到第一视频帧后完成的。
19.如权利要求15所述的计算机可读介质,其特征在于,所述确定是由基于软件的音频呈现引擎完成的,所述基于软件的音频呈现引擎将所述可能音频呈现时间传送给基于软件的视频呈现引擎,并且其中,所述查明是由基于软件的视频呈现引擎完成的,所述基于软件的视频呈现引擎将所述可能视频呈现时间传送给基于软件的音频呈现引擎,并且其中,所述基于软件的音频呈现引擎与所述基于软件的视频呈现引擎按照所述时间中的较后者来调度各自的音频和视频呈现。
20.如权利要求19所述的计算机可读介质,其特征在于,在收到第一音频样本后且在所述确定后,所述基于软件的音频呈现引擎向所述基于软件的视频呈现引擎查询所述基于软件的视频呈现引擎是否已经接收到第一相应视频帧,以及如果是,则查询所述视频帧的可能视频呈现时间,并且其中,在接收到第一视频帧后且在所述查明后,所述基于软件的视频呈现引擎向所述基于软件的音频呈现引擎查询所述基于软件的音频呈现引擎是否已经接收到第一相应音频样本,以及如果是,则查询所述音频样本的可能音频呈现时间。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/029,912 US7519845B2 (en) | 2005-01-05 | 2005-01-05 | Software-based audio rendering |
US11/029,912 | 2005-01-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1812589A true CN1812589A (zh) | 2006-08-02 |
CN1812589B CN1812589B (zh) | 2011-02-23 |
Family
ID=36575997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100025112A Active CN1812589B (zh) | 2005-01-05 | 2006-01-05 | 基于软件的音频呈现 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7519845B2 (zh) |
EP (1) | EP1684516B1 (zh) |
JP (1) | JP5147180B2 (zh) |
KR (1) | KR101183337B1 (zh) |
CN (1) | CN1812589B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112821973A (zh) * | 2016-12-13 | 2021-05-18 | B & W集团有限公司 | 音频回放的无线协调 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8127242B1 (en) * | 2010-08-12 | 2012-02-28 | The United States Of America As Represented By The Secretary Of The Army | Graphic user interface and software for processing large size signal data samples in a small buffer using automatically adjusted decimation ratio |
EP2750312B1 (en) | 2004-10-29 | 2018-04-04 | Sharp Kabushiki Kaisha | Communication method and radio transmitter |
EP2555464B1 (en) | 2005-01-18 | 2019-03-06 | Sharp Kabushiki Kaisha | Wireless communication apparatus and wireless communication method |
GB0508946D0 (en) * | 2005-04-30 | 2005-06-08 | Ibm | Method and apparatus for streaming data |
TWI321752B (en) * | 2005-10-06 | 2010-03-11 | Quanta Comp Inc | Audio/video playing system |
US9420332B2 (en) * | 2006-07-06 | 2016-08-16 | Qualcomm Incorporated | Clock compensation techniques for audio decoding |
US7765315B2 (en) * | 2007-01-08 | 2010-07-27 | Apple Inc. | Time synchronization of multiple time-based data streams with independent clocks |
GB2451828A (en) * | 2007-08-13 | 2009-02-18 | Snell & Wilcox Ltd | Digital audio processing method for identifying periods in which samples may be deleted or repeated unobtrusively |
US9571901B2 (en) * | 2007-12-28 | 2017-02-14 | Intel Corporation | Synchronizing audio and video frames |
US8655953B2 (en) | 2008-07-18 | 2014-02-18 | Porto Technology, Llc | System and method for playback positioning of distributed media co-viewers |
US8754904B2 (en) * | 2011-04-03 | 2014-06-17 | Lucidlogix Software Solutions, Ltd. | Virtualization method of vertical-synchronization in graphics systems |
US8909667B2 (en) | 2011-11-01 | 2014-12-09 | Lemi Technology, Llc | Systems, methods, and computer readable media for generating recommendations in a media recommendation system |
US8762815B2 (en) * | 2012-04-30 | 2014-06-24 | Lsi Corporation | Systems and methods for data decoder state preservation during extended delay processing |
JP2013243626A (ja) * | 2012-05-23 | 2013-12-05 | Sony Corp | 信号処理装置、信号処理方法、およびプログラム |
TWI557727B (zh) | 2013-04-05 | 2016-11-11 | 杜比國際公司 | 音訊處理系統、多媒體處理系統、處理音訊位元流的方法以及電腦程式產品 |
KR20150045349A (ko) * | 2013-10-18 | 2015-04-28 | 명지대학교 산학협력단 | 실감 효과 미디어 데이터 파일 구성 방법 및 장치, 실감 효과 미디어 데이터 파일 재생 방법 및 장치 및 실감 효과 미디어 데이터 파일 구조 |
EP2871848A1 (en) * | 2013-11-12 | 2015-05-13 | Koninklijke KPN N.V. | Providing correction information for media synchronization |
US9621948B2 (en) * | 2015-01-29 | 2017-04-11 | Universal Electronics Inc. | System and method for prioritizing and filtering CEC commands |
US10176644B2 (en) * | 2015-06-07 | 2019-01-08 | Apple Inc. | Automatic rendering of 3D sound |
US10229540B2 (en) * | 2015-12-22 | 2019-03-12 | Google Llc | Adjusting video rendering rate of virtual reality content and processing of a stereoscopic image |
US10510317B2 (en) | 2016-06-03 | 2019-12-17 | Apple Inc. | Controlling display performance with target presentation times |
US10706604B2 (en) | 2016-06-03 | 2020-07-07 | Apple Inc. | Controlling display performance using display system hints |
US10353424B2 (en) | 2016-07-01 | 2019-07-16 | Imagination Technologies Limited | Clock synchronisation |
US11403106B2 (en) * | 2019-09-28 | 2022-08-02 | Tencent America LLC | Method and apparatus for stateless parallel processing of tasks and workflows |
US20230073736A1 (en) * | 2020-02-21 | 2023-03-09 | Qualcomm Incorporated | Reduced display processing unit transfer time to compensate for delayed graphics processing unit render time |
US11336935B1 (en) * | 2020-11-25 | 2022-05-17 | Amazon Technologies, Inc. | Detecting audio-video desyncrhonization |
US11659217B1 (en) | 2021-03-29 | 2023-05-23 | Amazon Technologies, Inc. | Event based audio-video sync detection |
CN116543777A (zh) * | 2022-01-26 | 2023-08-04 | 瑞昱半导体股份有限公司 | 动态调整音频时钟的音频处理设备及音频处理方法 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9405914D0 (en) | 1994-03-24 | 1994-05-11 | Discovision Ass | Video decompression |
US4642794A (en) | 1983-09-27 | 1987-02-10 | Motorola Computer Systems, Inc. | Video update FIFO buffer |
JPH0697899A (ja) * | 1992-09-16 | 1994-04-08 | Hitachi Ltd | 再生クロック周波数の調整方法 |
DE69405388T2 (de) * | 1993-05-10 | 1998-03-19 | Taligent Inc | Multimedia synchronisationssystem |
FR2731864B1 (fr) | 1995-03-14 | 1997-06-06 | Sgs Thomson Microelectronics | Decodeur mpeg a capacite memoire reduite |
JPH09238362A (ja) | 1996-02-29 | 1997-09-09 | Fujitsu Ltd | テレビジョン表示機能をもつ情報処理装置 |
US5661665A (en) | 1996-06-26 | 1997-08-26 | Microsoft Corporation | Multi-media synchronization |
JP3472667B2 (ja) | 1996-08-30 | 2003-12-02 | 株式会社日立製作所 | ビデオデータ処理装置およびビデオデータ表示装置 |
US5764965A (en) * | 1996-09-23 | 1998-06-09 | Silicon Graphics, Inc. | Synchronization infrastructure for use in a computer system |
US6262776B1 (en) | 1996-12-13 | 2001-07-17 | Microsoft Corporation | System and method for maintaining synchronization between audio and video |
US6606410B2 (en) | 1997-01-17 | 2003-08-12 | Samsung Electronics Co., Ltd. | Method and apparatus for detecting a synchronous signal |
US5761434A (en) * | 1997-03-06 | 1998-06-02 | Advanced Micro Devices, Inc. | Digital audio system including a software controlled phase lock loop for synchronizing audio sources to a common clock source |
US6100906A (en) | 1998-04-22 | 2000-08-08 | Ati Technologies, Inc. | Method and apparatus for improved double buffering |
US6279058B1 (en) * | 1998-07-02 | 2001-08-21 | Advanced Micro Devices, Inc. | Master isochronous clock structure having a clock controller coupling to a CPU and two data buses |
US6304297B1 (en) | 1998-07-21 | 2001-10-16 | Ati Technologies, Inc. | Method and apparatus for manipulating display of update rate |
US6661846B1 (en) | 1998-10-14 | 2003-12-09 | Sony Corporation | Adaptive clocking mechanism for digital video decoder |
JP2000122681A (ja) | 1998-10-20 | 2000-04-28 | Victor Co Of Japan Ltd | 音声データ同期再生装置 |
US6144323A (en) | 1998-12-09 | 2000-11-07 | Lsi Logic Corporation | Method and apparatus for decoding video data |
US6762761B2 (en) | 1999-03-31 | 2004-07-13 | International Business Machines Corporation | Method and system for graphics rendering using hardware-event-triggered execution of captured graphics hardware instructions |
US6598172B1 (en) * | 1999-10-29 | 2003-07-22 | Intel Corporation | System and method for clock skew compensation between encoder and decoder clocks by calculating drift metric, and using it to modify time-stamps of data packets |
US6594773B1 (en) | 1999-11-12 | 2003-07-15 | Microsoft Corporation | Adaptive control of streaming data in a graph |
US6429902B1 (en) | 1999-12-07 | 2002-08-06 | Lsi Logic Corporation | Method and apparatus for audio and video end-to-end synchronization |
JP4612171B2 (ja) | 2000-10-27 | 2011-01-12 | 株式会社東芝 | 動画像復号再生モジュールと再生時刻管理プログラムとマルチメディア情報受信装置 |
GB2373121A (en) | 2001-03-10 | 2002-09-11 | Sharp Kk | Frame rate controller |
US6943844B2 (en) * | 2001-06-13 | 2005-09-13 | Intel Corporation | Adjusting pixel clock |
US6880098B1 (en) * | 2001-09-07 | 2005-04-12 | Sprint Communications Company L.P. | Timing recovery in a packet network using a buffer |
AU2002361767A1 (en) | 2001-12-17 | 2003-07-09 | Becomm Corporation | Method and system for synchronization of content rendering |
US9948977B2 (en) | 2003-01-09 | 2018-04-17 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System, method, and apparatus for determining presentation time for picture without presentation time stamp |
CN100477802C (zh) | 2002-10-24 | 2009-04-08 | 汤姆森许可贸易公司 | 用于保持声像吻合的方法和系统 |
JP4649210B2 (ja) | 2002-12-16 | 2011-03-09 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ビデオ信号の時間軸を修正するシステム |
EP1584198A1 (en) | 2003-01-06 | 2005-10-12 | Koninklijke Philips Electronics N.V. | Method and apparatus for improving audio/video signal sync stability in digital recording devices |
FI114882B (fi) | 2003-04-30 | 2005-01-14 | Nokia Corp | Kuvakehysten päivityksen synkronointi |
US8995536B2 (en) | 2003-07-23 | 2015-03-31 | Broadcom Corporation | System and method for audio/video synchronization |
US6768433B1 (en) * | 2003-09-25 | 2004-07-27 | Lsi Logic Corporation | Method and system for decoding biphase-mark encoded data |
US7574274B2 (en) * | 2004-04-14 | 2009-08-11 | Nvidia Corporation | Method and system for synchronizing audio processing modules |
US20060007200A1 (en) | 2004-07-08 | 2006-01-12 | David Young | Method and system for displaying a sequence of image frames |
US7786998B2 (en) | 2004-11-12 | 2010-08-31 | Ati Technologies Ulc | Methods and apparatus for controlling video playback |
US8692838B2 (en) | 2004-11-24 | 2014-04-08 | Qualcomm Incorporated | Methods and systems for updating a buffer |
-
2005
- 2005-01-05 US US11/029,912 patent/US7519845B2/en active Active
- 2005-12-28 EP EP05113032.6A patent/EP1684516B1/en active Active
-
2006
- 2006-01-04 KR KR1020060000974A patent/KR101183337B1/ko active IP Right Grant
- 2006-01-05 CN CN2006100025112A patent/CN1812589B/zh active Active
- 2006-01-05 JP JP2006000680A patent/JP5147180B2/ja active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112821973A (zh) * | 2016-12-13 | 2021-05-18 | B & W集团有限公司 | 音频回放的无线协调 |
CN112821973B (zh) * | 2016-12-13 | 2024-03-12 | B & W集团有限公司 | 音频回放的无线协调装置和方法、计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20060146185A1 (en) | 2006-07-06 |
CN1812589B (zh) | 2011-02-23 |
KR20060080550A (ko) | 2006-07-10 |
JP5147180B2 (ja) | 2013-02-20 |
KR101183337B1 (ko) | 2012-09-14 |
EP1684516B1 (en) | 2018-05-16 |
JP2006215540A (ja) | 2006-08-17 |
EP1684516A3 (en) | 2007-02-28 |
EP1684516A2 (en) | 2006-07-26 |
US7519845B2 (en) | 2009-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1812589A (zh) | 基于软件的音频呈现 | |
CN1293763C (zh) | 图像重放装置 | |
CN1271813C (zh) | 网络系统和在该系统中使用的输出设备 | |
US9489980B2 (en) | Video/audio synchronization apparatus and video/audio synchronization method | |
CN1901656A (zh) | 视频和音频重放设备及方法、输出时刻改变设备及方法 | |
CN1249998C (zh) | 图像信号的记录重放方法 | |
CN1949880A (zh) | 数字广播接收机中的同步装置和同步方法 | |
CN1465177A (zh) | 内容喜好程度计算方法和内容接收装置 | |
CN1336764A (zh) | 图像编码装置和方法、图像解码装置和方法、记录载体 | |
WO2007017970A1 (ja) | 映像記録装置、シーンチェンジ抽出方法、及び映像音声記録装置 | |
CN1606302A (zh) | 存在网络阻塞点时用于免打嗝快速信道改变的媒体流调度 | |
CN1595985A (zh) | 内容提供装置和方法以及记录介质 | |
CN1801949A (zh) | 图像声音同步装置 | |
CN1829333A (zh) | 产生要记录的信息信号的方法 | |
CN1713701A (zh) | 信息处理装置、信息处理方法及计算机程序 | |
CN1520181A (zh) | 视频数据和辅助数据的同步读取的设备和方法及相关产品 | |
CN1225120C (zh) | 图像处理设备,图像处理方法,记录介质及程序 | |
CN1645924A (zh) | 图像记录再生装置和图像再生方法 | |
CN1501703A (zh) | 数据流重放设备和方法、数字广播接收器和相关的计算机程序 | |
CN1195949A (zh) | 图像编辑装置和图像编辑方法 | |
CN1925595A (zh) | 数据再现系统和方法 | |
CN1703083A (zh) | 移动图像处理装置和方法 | |
CN1255988C (zh) | 多通道图象处理装置及其方法 | |
CN101031056A (zh) | 图像处理装置及方法、程序记录介质、以及程序 | |
CN1287554C (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: ROVI TECHNOLOGIES CORPORATION Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150724 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150724 Address after: American California Patentee after: ROVI technology company Address before: Washington State Patentee before: Microsoft Corp. |