JP2010532536A - デジタルメディア処理用インターフェース - Google Patents

デジタルメディア処理用インターフェース Download PDF

Info

Publication number
JP2010532536A
JP2010532536A JP2010515037A JP2010515037A JP2010532536A JP 2010532536 A JP2010532536 A JP 2010532536A JP 2010515037 A JP2010515037 A JP 2010515037A JP 2010515037 A JP2010515037 A JP 2010515037A JP 2010532536 A JP2010532536 A JP 2010532536A
Authority
JP
Japan
Prior art keywords
media
memory
media content
readable medium
presentation
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
JP2010515037A
Other languages
English (en)
Other versions
JP5394375B2 (ja
Inventor
ランガラジャン,ラジャセカラン
レゲン,マーティン
ラッセル,リチャード・ダブリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010532536A publication Critical patent/JP2010532536A/ja
Application granted granted Critical
Publication of JP5394375B2 publication Critical patent/JP5394375B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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は、メディアコンテンツプレイヤーのメディア処理パイプライン内のハードウェアコンポーネントとソフトウェアコンポーネントとの間の効率的な且つ適時の相互運用性を促進する。PhysMemDataStructure APIは、ハードウェアコンポーネントが、プロセッサーサイクルを使用してコピーコマンドを実行するのではなく、ダイレクトメモリーアクセス技法を使用してメモリーのコンテンツを取得することを可能にするために、ソフトウェアコンポーネントにより使用されるメモリー内の情報へのハードウェアコンポーネントの直接アクセスを容易にする。PhysMemDataStructure APIは、ソフトウェアコンポーネントによって使用されるメモリーに記憶されたメディアコンテンツのユニットに関連付けられるデータ構造の1つ又は複数のフィールドを公開し、公開されたフィールドは、メディアコンテンツのユニットのメモリーロケーションの物理的特性についての情報を記憶する。SyncHelper APIは、ハードウェアコンポーネントから情報を取得し、ハードウェアコンポーネントに情報を渡すのに使用される。この情報は、同期してプレゼンテーション可能なメディアコンテンツストリームのメディアサンプルを準備するハードウェアコンポーネントのタイミングを調整するのに使用される。

Description

デジタルメディアプレゼンテーションは、ビデオ、オーディオ、画像、テキスト、及び/又はグラフィックス等のメディアコンテンツの順序付けられたセットから成る。メディアコンテンツプレイヤーが、このようなメディアコンテンツの順序付けられたセットをレンダリングし且つ/又はユーザーにプレゼンテーションするとき、これらのメディアコンテンツの順序付けられたセットは、メディアコンテンツのストリームと呼ばれる。いくつかのメディアコンテンツプレイヤーは、2つ以上の独立制御されるメディアコンテンツのストリーム(例えば、監督による解説、俳優の人物紹介、又は広告等の特徴を伴った映画本編)を同時にレンダリングしてプレゼンテーションするように構成される。また、このようなメディアコンテンツプレイヤーは、ユーザー選択可能な可視オブジェクト又は可聴オブジェクト(例えば、さまざまなメニュー、ゲーム、特殊効果、又は他のオプション)を1つ又は複数のメディアコンテンツのストリームと同時にレンダリングしてプレゼンテーションすることができる場合もある。
ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせの形態の任意のタイプのデバイスが、メディアコンテンツプレイヤーとなり得る。光学式メディアプレイヤー(例えば、DVDプレイヤー)、コンピューター、及び大量の比較的安価なポータブルデータストレージ又は別の方法でアクセス可能なデータストレージへのアクセスを提供する他の電子デバイス等のデバイスは、かなりの再生継続時間を有するデジタルメディアプレゼンテーションに対する消費者の要望を満たすように特に巧みに位置付けされている。
さまざまなエンティティが、メディアコンテンツプレイヤーの異なるソフトウェアコンポーネント及びハードウェアコンポーネントを供給することが一般的であり、このようなコンポーネントは、限られた処理資源及びメモリー資源を有する環境で相互運用することに成功するものと期待されている。したがって、すべてのタイプのメディアコンテンツプレイヤー及びそのアーキテクチャーに対して、同時にプレゼンテーション可能なメディアコンテンツのストリームの正確な同期を含めた、デジタルメディアプレゼンテーションの資源効率の良い比較的異常のない再生を保証する技法を提供することが望ましい。
本明細書で論述するデジタルメディア処理技法及びインターフェース(アプリケーションプログラミングインターフェース(「API」)等)は、メディアコンテンツプレイヤーに関連付けられるメディア処理パイプライン内のハードウェアコンポーネントとソフトウェアコンポーネントとの間の効率的で一貫した相互運用性を促進する。
一般に、メディア処理パイプラインは、光ディスク、ハードドライブ、ネットワークロケーション、及び他の可能なソース等のメディアソースからメディアコンテンツのセットを受信し、それらのメディアコンテンツのセットを、映画、テレビ番組、オーディオ番組、又は他のプレゼンテーション等のデジタルメディアプレゼンテーションの1つ又は複数のメディアコンテンツストリームとしてユーザーにプレゼンテーションすることに備えて準備する処理タスクを実行することを担当する。メディアコンテンツのセットは、「クリップ」と呼ばれ、1つのクリップは、一般に、1つのメディアソースから受信される。特定のメディアソースから読み出されたクリップの個々の部分は、本明細書ではメディアコンテンツユニットと呼ばれる。メディアコンテンツユニットは、一般に、多重分離、伸張、復号、及び/又は解読される。このようなメディアコンテンツユニットは、多重分離された後、本明細書では、メディアサンプルと呼ばれる。しかしながら、本明細書で使用されるネーミング規則(複数可)は単に例示の目的のためのものであること、及び任意の所望のネーミング規則を使用することができることが理解されよう。
メディア処理パイプラインは、メディアソースリーダー、デマルチプレクサー、復号器、解読器等のコンポーネントを含む。これらのコンポーネントは、ハードウェア若しくはソフトウェア又はそれらの組み合わせで実施される。Microsoft(登録商標)DirectShow(商標)マルチメディアフレームワーク等のフレームワークを使用して、メディア処理パイプラインを実施することができる。しかしながら、任意の現在既知の又は今後開発されるフレームワークを使用して、メディア処理パイプラインを実施することができることが理解されよう。
情報(メディアコンテンツ自体についての情報及び/又はメディアコンテンツのユーザーへのプレゼンテーションについての情報等)が、メディア処理パイプラインにおけるソフトウェアコンポーネントとハードウェアコンポーネントとの間の境界で交換される。或る情報交換シナリオでは、ソフトウェアコンポーネントによって使用されるメモリー(「メモリー」という用語は、任意のタイプのコンピューター可読記憶媒体を包含することができる)内の情報が、ハードウェアコンポーネントによって使用可能である。別の情報交換シナリオでは、ハードウェアコンポーネントが、ソフトウェアコンポーネントによって確認された情報に基づいて自身のオペレーションを変更するか、又は、その逆が行われる。
本明細書で論述する一例示の技法及びインターフェースは、論述のため「PhysMemDataStructure」インターフェースと呼ばれ、命令/プロセッサーサイクルを使用して情報をコピーするのではなく、メディア処理パイプラインのソフトウェアコンポーネントとハードウェアコンポーネントとの間の境界で動作して、ソフトウェアコンポーネントにより使用されるメモリーからの情報のハードウェアコンポーネントの直接アクセスを容易にするように構成される。PhysMemDataStructureインターフェースは、ソフトウェアコンポーネントによって使用されるメモリーに記憶された(ハードウェアコンポーネントによって処理される)メディアコンテンツのユニットに関連付けられるデータ構造の1つ又は複数のフィールドをハードウェアコンポーネントに公開する。これらのデータ構造のフィールドは、メディアコンテンツの個々のユニットが配置されるメモリーの物理的特性についての情報を記憶する。このような物理的特性の例には、メモリーのタイプ、メモリーブロックサイズ、メモリーロケーションへの読み出し/書き込みポインターのロケーション、及びこのようなメモリーポインターに対するメディアコンテンツユニットのオフセットロケーションが含まれるが、これらに限定されるものではない。メモリー資源の効率的使用をさらに高めるために、ソフトウェアコンポーネントは、リングバッファーにメディアコンテンツのユニットを記憶することができる。メモリー効率及び処理効率をさらにより高めるために、仮想メモリーを使用して、リングバッファーの先頭部分を物理メモリーリングバッファーの終端部分において複製することができる。
本明細書で論述する他の例示の技法及びインターフェースは、論述のため「SyncHelper」インターフェースと呼ばれ、ハードウェアコンポーネントとソフトウェアコンポーネントとの間の情報交換を容易にするように構成される。この情報交換は、(例えば、2つのメディアコンテンツストリーム間の知覚される同期を維持するために)タイミングを調整するか又はハードウェアコンポーネント若しくはソフトウェアコンポーネントの他の動作態様を調整するのに使用することができる。本明細書で論述する或るSyncHelperインターフェースは、「GetDecodeTimes」インターフェースと呼ばれ、特定の時点においてハードウェアコンポーネント(デマルチプレクサー、復号器、又はレンダラー等)によってレンダリングされている特定のメディアコンテンツユニット又はメディアサンプルについての情報を提供する。提供された情報は、その特定の時点におけるデジタルメディアプレゼンテーションの再生継続時間の経過量、及びメディアサンプルが導出された導出元のクリップの再生継続時間の経過量を含む。別のSynchHelperインターフェースは、「SyncToSTC」インターフェースと呼ばれ、同時にプレゼンテーション可能なさまざまなメディアコンテンツストリームの同期を容易にする。一例示のシナリオでは、SyncToSTCインターフェースは、GetDecodeTimesインターフェースによって返されたデジタルメディアプレゼンテーションの再生継続時間の経過量の2つの値の間の差を確認し(すなわち、要求/受信するか又は計算する)、確認された差に基づいてタイミングを調整する(例えば、タイミング信号のレートを調整するか若しくはいずれのメディアサンプルが復号されるのかを調整するか又はそれらの双方を行う)ように1つ又は複数のハードウェアコンポーネントに命令する。
この概要は、概念のうちの選択したものを簡略化した形態で紹介するために設けられている。これらの概念は、詳細な説明のセクションでさらに説明される。この概要で説明した要素又はステップ以外の要素又はステップも可能であり、要素又はステップは必ずしも必須であるとは限らない。この概要は、特許請求される主題の重要な特徴も本質的な特徴も特定することを意図するものではなく、また、特許請求される主題の範囲を決定することを助けるものとして使用されることを意図するものでもない。特許請求される主題は、この開示のいずれかの部分に記されたいずれかの不利な点又はすべての不利な点を解決する実施態様に限定されるものではない。
一例示のメディアコンテンツプレイヤーの簡略化した機能ブロック図である。 図1の例示のメディアタイムライン(複数可)をより詳細に示す模式図である。 図1のメディアコンテンツマネージャーブロックの態様をより詳細に示す簡略化した機能ブロック図である。 図3に示すメディア処理パイプラインの態様の一例示のアーキテクチャーを示す簡略化した機能ブロック図である。 図1に示すメディアコンテンツプレイヤー、図3に示すメディア処理パイプライン、及び/又は図4に示すアーキテクチャーの態様を使用してメディアコンテンツをプレゼンテーションに備えて準備する方法のフローチャートである。 図1に示すメディアコンテンツプレイヤー、図3に示すメディア処理パイプライン(複数可)、及び/又は図4に示すアーキテクチャーの態様を使用してメディアコンテンツの2つのクリップの一部を同期したプレゼンテーションに備えて準備する方法のフローチャートである。 図1に示すメディアコンテンツプレイヤー又は図5及び図6に示す方法のすべて又は一部を実施又は使用することができる動作環境の一例示の構成の簡略化したブロック図である。 図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内にメディアコンテンツストリーム(メディアコンテンツストリーム208及び228が、図2に関連して以下でさらに図示及び論述される)としてユーザーにプレゼンテーション可能なビデオ、オーディオ、画像、テキスト、及び/又はグラフィックスの(一般に時間順の)1つ又は複数のシーケンスを表す。2つ以上の独立制御されるメディアコンテンツストリームを同時にプレゼンテーションすることができる(例えば、監督による解説、俳優の人物紹介、又は広告等の特徴を伴った映画本編)。
映画は、一般に、1つ又は複数のバージョン(例えば、成人観客向けバージョン及び若年観客向けバージョン);各タイトルに関連付けられる1つ又は複数のチャプタ(図示せず)を有する1つ又は複数のタイトル131(タイトルはプレゼンテーションマネージャー106に関連して以下でさらに論述される);1つ又は複数のオーディオトラック(例えば、映画は、サブタイトルを有しようと有しまいと、1つ又は複数の言語で再生することができる);及び監督による解説、付加的な映像、俳優の人物紹介、広告、予告編等の特典的な(extra)特徴を有する。タイトルとチャプタとの区別は、単に論理的な区別にすぎないことが理解されよう。例えば、知覚される単一のメディアセグメントは、単一のタイトル/チャプタの一部であることもあるし、複数のタイトル/チャプタで構成されることもある。これは、適用可能な論理的区別を決定するコンテンツオーサリングソース次第である。
メディアコンポーネント122の態様を形成するビデオ、オーディオ、画像、テキスト、及び/又はグラフィックスのシーケンスのセットは、一般に、クリップ123と呼ばれる(クリップ123は、メディアコンポーネント122及び再生リスト128内に示され、図2においても参照され、以下でさらに論述される)。しかしながら、メディアコンポーネント122を形成するデータシーケンスのセットを任意の望ましい方法でグループ化及び/又は参照することができ、実際のデータを、例えばビット、フレーム、サンプル、データパケット、映像群、エンハンストビデオオブジェクトユニット等の任意の所望のユニットに配列して表すことができることが理解されよう。特定のデータユニットのデジタルコンテンツ(及びデータユニットのサイズも)は、そのユニットを含むビデオ、オーディオ、若しくはデータコンテンツの特徴等のいくつかの因子、又はサンプルが導出される導出元のメディアソースに関連付けられる1つ又は複数のパラメーター(例えば、メディアソースの識別情報及び/若しくはロケーション、符号化器/復号器のパラメーター若しくは設定、又は暗号化のパラメーター若しくは設定)に基づくことができる。メディアソースは、図2に関連して、以下でさらに論述される。
メディアデータ132は、メディアコンテンツマネージャー102によるレンダリングに備えて準備されたメディアコンポーネント122に関連付けられるデータであり、ミキサ/レンダラー110へ送信されるデータである。メディアデータ132は、一般に、各アクティブクリップ123について、そのクリップの一部をレンダリングしたものを含む。
プレゼンテーションコンテンツ120を再び参照すると、ICコンポーネント124は、可視オブジェクト又は可聴オブジェクトをプレゼンテーションするための(アプリケーション155として示された)任意の命令と共に、インタラクティブオブジェクト125を含む。インタラクティブオブジェクト125は、ユーザー選択可能な可視オブジェクト又は可聴オブジェクトであり、オプションとして、メディアコンポーネント122と同時にプレゼンテーション可能である。インタラクティブオブジェクトの例には、特に、ビデオサンプル又はビデオクリップ、オーディオサンプル又はオーディオクリップ、画像、グラフィックス、テキスト、及びそれらの組み合わせが含まれる。
アプリケーション155は、プレゼンテーションシステム100がインタラクティブオブジェクト125をユーザーにプレゼンテーションするメカニズムを提供する。アプリケーション155は、任意の信号処理方法又はデータに対する所定のオペレーションを電子制御する任意の記憶されている命令(複数可)を表す。
ICマネージャー104は、1つ又は複数の命令ハンドリングエンジン181を含む。これらの1つ又は複数の命令ハンドリングエンジン181は、アプリケーション155に関連付けられるコマンドを受信して解釈し、コマンドの実行の準備をする。アプリケーション155の実行が進行し、ユーザー入力150が受信されると、再生プレゼンテーション127内の挙動をトリガすることができる。「ICMからの入力」190としてラベル付けされたアプリケーション155の一定の命令の実行によって、プレゼンテーションシステム100内の他の機能又はコンポーネントとの通信又は相互運用を容易にすることができる。図示するように、入力190は、メディアコンテンツマネージャー102(図2に関連して以下でさらに論述される)によって受信されるが、プレゼンテーションシステム100内の他のコンポーネント又は機能も入力190に応答することができる。
インタラクティブコンテンツデータ(「ICデータ」)134は、ICマネージャー104によるレンダリングに備えて準備されたICコンポーネント124に関連付けられるデータであり、ミキサ/レンダラー110へ送信されるデータである。
タイミング信号管理ブロック108(図3に関連して以下でさらに論述される)は、さまざまなタイミング信号158を生成する。これらのタイミング信号158は、メディアコンテンツマネージャー102によるメディアデータ132の準備及び生成のタイミング並びにICマネージャー104による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は、1つ又は複数のタイトル131を形成するように配列することができる。上記で論述したように、2つ以上の独立制御されるタイトル/メディアコンテンツストリームをユーザーに同時に再生することが可能である。このような同時再生されるストリームは再生リスト128上に示すこともできるし、予期しないユーザー入力がメディアコンテンツストリームの同時再生を引き起こすこともできる。
プレゼンテーションマネージャー106は、再生リスト128を使用して、特定のメディアプレゼンテーション(映画の場合にはタイトル131)のプレゼンテーションタイムライン130を確認する。プレゼンテーションタイムライン130は、一般に、タイトルがユーザーにプレゼンテーション可能な特定の時間量を表す所定の再生継続時間を有する。再生継続時間内の特定の経過時間量を表すものは、多くの場合、「タイトル時間」と呼ばれる。タイトルは、1回又は(例えば、ループ形式で)2回以上再生される場合があるので、再生継続時間は、タイトルの1回の繰り返しに基づいて求められる。概念的には、プレゼンテーションタイムライン130は、特定のクリップ123及びアプリケーション155がユーザーにプレゼンテーション可能であるときのタイトル時間を示す(ただし、示すように、或る特定のクリップの再生を開始及び停止するユーザー入力がいつ発生し得るかは通常分からない)。特定のクリップ123は、一般に、そのクリップをプレゼンテーションするための特定の時間量を表す所定の再生継続時間も有する。クリップ再生継続時間内の特定の経過時間量を表すものは、多くの場合、「プレゼンテーション時間」と呼ばれる。クリップの個々にプレゼンテーション可能な各部分(論述のため「メディアサンプル」と呼ばれる場合があるが、任意の所望のネーミング規則を使用することができる)は、クリップの再生継続時間内の、関連付けられる所定のプレゼンテーション時間を有する。メディアコンテンツのプレゼンテーションにおいてユーザーが知覚可能な異常を回避するために、1つ又は複数の次に来るメディアサンプルが、スケジューリングされた/所定のプレゼンテーション時間よりも前にプレゼンテーションに備えて準備される。
特定のクリップの再生及びその特定のクリップに関連付けられるタイミング/時間をより良く示すために、再生リスト128及び/又はプレゼンテーションタイムライン130を使用して1つ又は複数のメディアコンテンツタイムライン(「メディアタイムライン(複数可)」)142を確認することが有用である。図1及び図2の参照を続けて、図3は、特定のクリップ123の一例示のメディアタイムライン142である。さまざまなメディアサンプルプレゼンテーション時間202が、メディアタイムライン142上に示されている。メディアサンプルプレゼンテーション時間202は、1つ又は複数のメディアサンプルがメディアデータ132としてプレゼンテーション可能である特定のクリップの再生継続時間内の時間を表す。図示するように、メディアサンプルプレゼンテーション時間202は、所定のメディアデータプレゼンテーションレート207に基づくレートで発生する。この所定のメディアデータプレゼンテーションレート207は、クリップごとに変化し得る。メディアデータプレゼンテーションレート207は、特定のクリップ123が符号化されるレートと同じである必要はないが、メディアデータプレゼンテーションレートは、特定のクリップの符号化レートに基づいて変化し得ることに留意されたい。一定のユーザー入力150は、メディアソースからのメディアサンプル取り出しの速度に影響を与える可能性もあり、したがって、メディアサンプルプレゼンテーション時間202が発生するレートに影響を与える可能性もある。例えば、再生プレゼンテーション127は、標準速度で順方向に進行することができ、また、順方向及び逆方向の双方に標準速度よりも高速又は低速で進行することもできる。標準速度は、相対的な用語であり、プレゼンテーションごと及びクリップごとに変化し得ることが理解されよう。高速巻き戻しオペレーション及び早送りオペレーション中、一定のメディアコンテンツ(図示するように、メディアサンプル230)の再生は、多くの場合、スキップされる。ユーザーが映画の或る部分から別の部分へジャンプするとき等は、他のユーザー入力によって、一定のメディアコンテンツの再生がスキップされる場合がある。
現在の経過再生時間209(すなわち、クリップが関連付けられているデジタルメディアプレゼンテーションのタイトル時間)が、メディアタイムライン142に示されている。メディアサンプル250は、現在の経過再生時間209においてユーザーにプレゼンテーションされている。図示するように、現在の経過再生時間209は、特定のメディアサンプルプレゼンテーション時間202と一致するが、このような一致は必須ではない。次にプレゼンテーション可能なメディアサンプルプレゼンテーション時間214も示されている。次にプレゼンテーション可能なメディアサンプルプレゼンテーション時間314は、次にユーザーへのプレゼンテーションに備えて準備されるべき次のメディアサンプル及び/又は次のメディアサンプルプレゼンテーション時間を決定するのに使用される(図示するように、次にプレゼンテーション可能なメディアサンプル270がプレゼンテーションに備えて準備されることになる)。次にプレゼンテーション可能なメディアサンプル/プレゼンテーション時間は、再生リスト128に基づく次の連続したメディアサンプル/プレゼンテーション時間とすることもできるし、現在の経過再生時間209に関連付けられるメディアサンプル/プレゼンテーション時間から離れたメディアサンプル/プレゼンテーション時間1つ又は複数のメディアサンプル/プレゼンテーション時間202とすることもできることが理解されよう。次にプレゼンテーション可能なメディアサンプル/メディアサンプルプレゼンテーション時間を確認するにはさまざまな方法があり、これらの方法は、本明細書で詳細には論述されない。しかしながら、一般に、予測経過再生時間220(すなわち、デジタルメディアプレゼンテーションの再生継続時間の予測タイトル時間)及び対応する次にプレゼンテーション可能なメディアサンプル/プレゼンテーション時間が確認される。再生速度、メディアフレームレート207等の情報及び他の情報は、予測経過再生時間を求め且つ/又は特定のメディアサンプルプレゼンテーション時間/メディアサンプルを突き止めるのに使用することができる。
図1を再び参照すると、動作中、プレゼンテーションマネージャー106は、情報をメディアコンテンツマネージャー102及びICマネージャー104に提供する。この情報は、プレゼンテーションタイムライン130についての情報及び/又はメディアタイムライン142についての情報を含むが、これらに限定されるものではない。プレゼンテーションマネージャー106からの入力に基づいて、ICマネージャー104は、ICデータ134をレンダリングに備えて準備し、メディアコンテンツマネージャー102は、メディアデータ132をレンダリングに備えて準備する。
図1及び図2の参照を続けて、図3は、メディアコンテンツマネージャー102の態様をより詳細に示す簡略化した機能ブロック図である。メディアコンテンツマネージャー102は、1つ又は複数のメディア処理パイプラインを含む。メディア処理パイプライン1 302及びメディア処理パイプライン2 320の2つのメディア処理パイプラインが示されているが、任意の個数のメディア処理パイプラインが可能である。一般に、メディア処理パイプライン1 302及びメディア処理パイプライン2 320は、独立制御されるメディアコンテンツストリーム308及び328をユーザーへのプレゼンテーションに備えてそれぞれ準備するのに使用される。一方のメディア処理パイプラインは、通例、第1のタイミング信号1 350を基準にして、映画等の1次メディアコンテンツストリームの準備を担当し、他方のメディア処理パイプラインは、第2のタイミング信号370を基準にして、監督による解説、俳優の人物紹介、広告等の1つ又は複数の2次メディアコンテンツストリームの準備を担当する。タイミング信号は、メディアコンテンツのサンプルがメディアソースから取り出され且つ/又はユーザーへのプレゼンテーションに備えて準備されるレート(複数可)を表し(このようなレート(複数可)は動的に変化し得るが、ユーザー入力、符号化/暗号化/圧縮フォーマット、及び他の因子に基づいて変化し得る)、プレゼンテーションシステム100及び/又はメディア処理パイプライン内のハードウェアコンポーネント等の専用デバイスに関連付けられるクロック源等のクロック源(図示せず)から一般に導出される。
メディアコンテンツマネージャー102は、図2に示す次の処理可能なメディアサンプル(複数可)270等、クリップの個々にプレゼンテーション可能な次に来る部分をプレゼンテーションに備えて準備することを担当する。このような準備は、多くの場合、複数のステップを伴う。これらの複数のステップは、特定のメディアソース(メディアコンテンツの導出元又は取得元である任意のデバイス、ロケーション、又はデータである、図示されたメディアソース304及び324)からのクリップの次に来る部分を読み出すこと、及び、リーダー、デマルチプレクサー、復号器、レンダラー、及び/又は解読器等のハードウェアベース及びソフトウェアベースのメディア処理コンポーネント(メディア処理コンポーネント306及び326は、図4に関連して以下でさらに図示及び論述される)を使用して、メディアソース(複数可)から読み出された情報から再生可能なメディアコンテンツストリーム308、328を取得することを含むが、これらに限定されるものではない。
メディアコンテンツマネージャー102は、メディアコンポーネント122及び/又はICコンポーネント124を含むさまざまなクリップ123の識別情報及び(所定の又は予期しないユーザー入力150に基づく)スケジューリングに基づく動的な処理負荷を有する場合があることが理解されよう。一般に、メディア処理パイプラインは、プレゼンテーションシステム100の処理資源(例えば、CPUサイクル)の僅か10%〜15%しか消費しないことが望ましい。
メモリー間コピー等の従来のコピートランザクションを使用して情報がメモリーロケーション間で転送されるとき、大量の処理資源が消費される可能性があり、コピートランザクションに処理資源を使用し過ぎると、デジタルメディアプレゼンテーションの再生に異常を引き起こす可能性がある。しかし、多くの場合、メディア処理パイプラインの異なるコンポーネントによって使用されるメモリー間、特にソフトウェアコンポーネントによって使用されるメモリーとハードウェアコンポーネントによって使用されるメモリーとの間で情報を転送することが望ましい。ハードウェアコンポーネントは、特に、メディアコンテンツ処理を高速化する理由で使用される。
2つ以上のクリップの次に来る部分をプレゼンテーションに備えて同時に準備することも、容易に予測することができない方法でメモリー及びプロセッサーサイクル等のコンピューティング資源を大量に消費する可能性があり、デジタルメディアコンテンツの再生に異常をきたす可能性をさらに悪化させる可能性がある。その上、クリップの特定の部分をプレゼンテーションに備えて準備するのに必要とされるメモリー資源及び/又は処理資源(したがって、このような準備の時間)は、サンプルごと又はクリップごとに常に一定であるとは限らない。必要とされる資源及び準備時間に影響を与えるいくつかの因子は、メディアコンテンツ自体(メディアユニット/サンプルサイズ、メディアソース/ロケーション、符号化パラメーター又は復号パラメーター、及び暗号化パラメーター等の因子が含まれるが、これらに限定されるものではない)に関連付けられている。必要とされる資源に影響を与える他の因子は、メディアコンテンツプレイヤー(例えば、メディア処理パイプラインアーキテクチャー、動的な処理負荷、及びメディアコンテンツプレイヤーキテクチャの他の特徴)に関連付けられている一方、必要とされる資源に影響を与えるさらに他の因子は、ユーザー入力(例えば、ユーザーが選択したメディアコンテンツ、コンテンツフォーマット、又は再生速度)に関連付けられている。
図1〜図3の参照を続けて、図4は、メディア処理コンポーネントブロック306及び326のアーキテクチャー態様及び動作態様をより詳細に示す簡略化された機能ブロック図である。一可能な実施態様では、Microsoft(登録商標)DirectShow(商標)マルチメディアフレームワークが使用されて、メディア処理タスクが、フィルターとして知られているステップ群に分割される。各フィルターは、フィルターを相互に接続する複数の入力ピン及び複数の出力ピンを有する。しかしながら、任意の現在既知のフレームワーク又は今後開発されるフレームワークを使用してメディア処理パイプラインを実施することができることが理解されよう。
図示するように、ソフトウェア−ハードウェア境界403が、破線によって示されている。境界403の左側のコンポーネントは、主として、ソフトウェアベースのコンポーネント(又はソフトウェアを使用して実施されるコンポーネントの一部)であり、境界403の右側のコンポーネントは、主として、ハードウェアベースのコンポーネント(又はハードウェア若しくはファームウェア若しくはそれらの組み合わせを使用して実施されるコンポーネントの一部)である。一例示のアーキテクチャーは、ハードウェアベースのコンポーネントが直接読み出すことができる読み出し元の第1のメモリーにアクセスするソフトウェアベースのメディアソースリーダー402;一般に1つ又は複数のメモリーブロック(論述のため、第2のメモリー433として図示され、第2のメモリー433と呼ばれる)にアクセスするハードウェアベースのデマルチプレクサー(「demux」)404;同様に、一般に1つ又は複数のメモリーブロック(論述のため、第2のメモリー433として図示され、及び第2のメモリー433と呼ばれる)にアクセスする1つ又は複数のハードウェアベースの復号器/レンダラー490;並びにアプリケーションプログラミングインターフェース408を含む。アプリケーションプログラミングインターフェース408は、PhysMemDataStructure API410、Sniffer/Callback API422、並びにGetDecodeTimes API420及びSyncToSTC API420を含むSyncHelper API416を含む。
メディアソースリーダー402は、特定のメディアソースからクリップの個々にプレゼンテーション可能な部分(論述のためメディアユニット407と呼ばれる)を(データプッシュ技法又はデータプル技法を介して)受信すること、受信されたメディアユニット407をメモリー430に記憶すること、及び記憶されたメディアユニット407に関するデータを下流側に(例えば、demux404又は復号器/レンダラー490へ)渡すことを担当する。一つの可能な実施態様では、データは、データ構造を使用して下流側のdemux404へ渡される。例えば、Microsoft(登録商標)DirectShow(商標)フレームワークのコンテキストでは、メディアユニット407は、IMediaSampleオブジェクト(IMediaSampleは、オブジェクトが実施するインターフェースを参照し、オブジェクトは、メディアサンプルと呼ばれる場合がある)と呼ばれるデータ構造にラッピングされる。多くの場合、IMediaSampleオブジェクトは、初期化時に固定サイズの割り当てに制約され、メディアコンテンツユニットのサイズに応じて、その全範囲に使用されない場合がある。リングバッファー420を以下で論述するように使用することによって、メディアのより効率的な使用が可能になる。
メモリー430は、プレゼンテーションシステム100のオペレーティングシステムを介してアクセス可能な任意のコンピューター可読媒体(コンピューター可読媒体は、図7に関連して以下でさらに論述される)を表す。この任意のコンピューター可読媒体には、物理的に連続したスキャッターギャザーされたメモリー、仮想的にキャッシュ及びキャッシュ解除されるメモリー、(スキャッターギャザータイプ用に)物理的にロック及びロック解除されるメモリー、並びにリングバッファー420(以下でさらに論述される)による使用に最適化された仮想メモリーマッピングが含まれるが、これらに限定されるものではない。ハードウェア割り当てされたメモリーブロック432は、一定のアルゴリズム(一例示のアルゴリズムが、図5に関連して以下で図示及び論述される)に従ってdemux404(又はメディア処理パイプライン302又は320の他のコンポーネント)によるアクセス用にメディアソースリーダー402を介して及びPhysMemDataStructure API410等の一定のAPI408の使用を介して、別個に割り当てることができるブロックを有するとみなすことができるメモリー430の(任意のサイズ又は構成の)量又はエリアの抽象表現である。一例示の実施態様では、ハードウェア割り当てされたメモリーブロック432は、メディアソースリーダー402から取得された個々のメディアコンテンツユニット407が記憶されるブロックを有するリングバッファー420である。リングバッファー420を使用する利点は、データがトラックを介して読み出されるとき、特に、リングバッファー420が(例えば、光学式デバイスからの)読み出しオペレーションに対してパケット制約を一切課さないとき、いくつかのコンピューター可読媒体をより効率的に読み出すことができるということである。リングバッファー420を使用する別の利点は、トリックモードの場合に、データが通常よりも高速に(例えば、光学式デバイスから)読み出されるときである。フル復号を行うには必要とされないメディアコンテンツユニットのスキップ部分は、リングバッファーリーダーに組み込まれたチャンク機構(chunking mechanism)でより容易に達成される。リングバッファー420の他の詳細並びにその利点及びオペレーションは、図5に関連して以下でさらに論述される。
demux404は、入力ピン411においてメディアソースリーダー402の出力ピン401からメディアユニット407(図2に示す次の処理可能なメディアサンプル(複数可)270)及び/又はメディアユニット407に関連付けられるデータ構造を受信し、互換性のあるマルチプレクサーによって事前に結合された2つ以上の信号(メディアコンテンツの復号されたストリーム等)を分離するように応答する。メモリー(複数可)433は、demux404又は他のハードウェアコンポーネントによって使用可能なバッファー又はレジスター等の1つ又は複数のコンピューター可読媒体(コンピューター可読媒体は、図7に関連して以下でさらに論述される)を表す。demux404は、個々のメディアコンテンツストリーム(メディアコンテンツストリーム308又は328等)に関連付けられる、多重分離されたメディアサンプル409を出力ピン421において復号器/レンダラー490の入力ピン491に提供する。
復号器/レンダラー490は、論述のためメディアサンプル409と呼ばれる多重分離されたメディアユニット(例えば、MPEG−2サンプル)を受信し、多重分離されたメディアサンプルをスクランブル解除/暗号化解除するための一般に既知の技法を使用して、特定のメディアコンテンツストリーム308、328に関連付けられるメディアデータ132を生成することを担当する。メディアソース、デマルチプレクサー、及び復号器/レンダラーの間の1対1の関係が示されているが、任意の個数のこのようなコンポーネントを(付加的なコンポーネントと共に)任意に配列することが可能であること、及びこのようなコンポーネントは、メディア処理パイプライン1 302とメディア処理パイプライン2 320との間で共有することができることが理解されよう。
API408は、メディア処理パイプライン内のソフトウェアコンポーネント及びハードウェアコンポーネントの相互運用性を高め、プレゼンテーションシステム100のメモリー資源及び処理資源の効率的な使用を促進するために設けられる。一可能な実施態様では、API408は、プレゼンテーションシステム100の動作中に実行することができ且つ/又はメディア処理パイプライン306及び326の命令の作成者がアクセスすることができるコンピューター可読記憶媒体上に符号化されたコンピューター実行可能命令のセットである。一般に、API408は、図5及び図6に関連して以下でさらに図示及び論述される方法(複数可)の態様を実行するように構成されている。
PhysMemDataStructure API410は、demux404及び復号器/レンダラー490等のハードウェアコンポーネントが直接消費することができるメモリー430のサポートを一般化するように構成されている。(例えば、DirectShow(商標)フレームワークを有するメディア処理パイプラインのコンテキストでの)一可能な実施態様では、IMediaSampleオブジェクトにラッピングされたメディアユニット407が、(例えば、demux404の入力ピン411を使用して(出力ピン401は入力ピン411に問い合わせを行い、その結果、demux404は、ハードウェアによって使用可能な/必要とされる特性を有するメモリーを提供することができる))IMemAllocatorオブジェクトの一実施態様により、ハードウェア割り当てされたメモリーブロック432内の記憶ロケーションに割り当てられ、このような記憶ロケーションについての情報(メモリーのタイプ;メモリーブロックのサイズ;メモリーへのポインターのロケーション;及びメモリーへのポインターに対する特定のメディアユニットの記憶ロケーションのオフセットロケーション)が、PhysMemDataStructureAPI410によって、demux404及び復号器/レンダラー490等のハードウェアコンポーネントに公開される。ハードウェアコンポーネントは、それによって、命令及びプロセッサーサイクルを使用して情報をコピーするのではなく、(例えば、ダイレクトメモリーアクセス技法を介して)ハードウェア割り当てされたメモリーブロック432内の情報に直接アクセス/情報を直接取り出すことができる。
メディア処理パイプライン302、322及び/又はメディア処理コンポーネント3006、326のコンテキストにおいてPhysMemDataStructureAPI410を実施するために使用可能な例示の疑似コードが以下に示される。
――――――――――――――――――――――――――――――――――――――
interface IPhysMemMediaSample : IUnknown
{
// S_OK==連続的な物理メモリー、S_FALSE スキャッター/ギャザー方法が必要とされる
HRESULT IsContigous();

// S_OK==キャッシュされたメモリー、S_FALSE キャッシュ解除
HRESULT IsCached();

// S_OK==メモリーがdmaオペレーションに備えて準備されている
//S_FALSE==メモリーはDMAに備えてPageLock/Unlockを必要とする
HRESULT IsPageLocked();

// S_OK==仮想メモリーポインターは、リングバッファーサイズを超えるとき、物理バッファーの始点に折り返す。
// S_FALSE==折り返し無し
HRESULT IsAutoWrap();

// スキャッター/ギャザーテーブルのページサイズ
HRESULT PageSize(
[out] DWORD *pPageLength
);

// メモリーがロックされた後、スキャッター/ギャザーテーブルの構築を可能にする
HRESULT GetPhysicalPointer(
[in] DWORD offset,
[out] DWORD *pPhysAddress,
[out] DWORD *pLength
);

// メモリーがロックされた後、スキャッター/ギャザーテーブルの構築を可能にする
//
HRESULT GetScatterGatherTable(
[in] DWORD size,
[out, size_is(size)] DWORD *pTable,
[out] DWORD *pEntries
);

// スキャッターギャザーテーブルを構築するのに必要とされるDWORDアレイのバイトサイズ
HRESULT GetScatterGatherTableSize(
[out] DWORD *pSize
);

// バッファーの物理ページをロック/ロック解除する
HRESULT PageLock();
HRESULT PageUnlock();

// キャッシュライトバック&廃棄
// メディアサンプルバッファーからハードウェアへのdmaの前に使用する
HRESULT CacheSyncWriteback(
[in] DWORD offset,
[in] DWORD length
);

// キャッシュ廃棄/無効
//ハードウェアからメディアサンプルバッファーへのdmaの前に使用する
HRESULT CacheSyncDiscard(
[in] DWORD offset,
[in] DWORD length
);

};
――――――――――――――――――――――――――――――――――――――
Sniffer/Callback API422は、demux404によってパースされた一定のメディアサンプル409(例えば、高精細DVD番組ストリームに多重化された「HLI」パケット、「ADV」パケット、及び「NAV」パケット)並びに/又は復号器/レンダラー490によって復号/レンダリングされたメディアデータ132に対する、プレゼンテーションシステム100のソフトウェアベースの要素によるアクセスを提供するのに使用される。一可能な実施態様では、DirectShow(商標)フレームワークフィルターが、demux404の出力ピン421又は復号器/レンダラー490の出力ピン(図示せず)に接続され、このフィルターは、Sniffer/Callback API422をサポートするのに使用される。
メディア処理パイプライン302、322及び/又はメディア処理コンポーネント306、326のコンテキストにおいて一定のタイプのメディアサンプル409又はメディアデータ132を検出するSniffer/Callback APIを実施するために使用可能な例示の疑似コードが以下に示される。
――――――――――――――――――――――――――――――――――――――
HRESULT RegisterCallback(
[in] IRendererDataCallBack* pCallBack
);
――――――――――――――――――――――――――――――――――――――
リターンの際、コールバックレンダラーは、
――――――――――――――――――――――――――――――――――――――
HRESULT Callback(
[in] IMediaSample* pMediaSample
);
――――――――――――――――――――――――――――――――――――――
をコールする。
SyncHelper API416は、メディアコンテンツストリーム308と328との間で知覚される同期を維持するために使用可能な情報交換を容易にするように構成されている。GetDecodeTimes API418は、一定のメディアサンプル(例えば、次にプレゼンテーション可能なメディアサンプル270と考えられるメディアユニット407又はメディアサンプル409)がハードウェアコンポーネント(demux404又は1つ若しくは複数の復号器/レンダラー490等)によるプレゼンテーションに備えて準備されている時間に関連付けられる一定の時間(タイトル時間209及びメディアサンプルプレゼンテーション時間202等)についてのステータス通知を提供するように構成されている。特に、同期してプレゼンテーション可能なメディアサンプルを処理する異なった復号器/レンダラー(又は他のハードウェアコンポーネント)からGetDecodeTimes API418によって返されたタイトル時間209の差に基づいてタイミング信号350及び/又は370を調整するのに、SyncToSTC API420を介して提供された情報を使用することができる。
SyncHelper API416を実施するために使用可能な例示の疑似コードが以下に示される。
――――――――――――――――――――――――――――――――――――――
/*++
レンダラー上で実施される

ストリームを同期させ、PTS時間及びSTC時間についての情報を提供するHelper関数

--*/
interface ISyncHelper : IUnknown
{
// 現在のSTC時間及びPTS_TIME_BASEチックで現在復号されているサンプルのPTSを返す
//
HRESULT
GetDecodeTimes(
[out] PTS_TIME* ptSTC, // 現在のSTC時間(グローバル)
[out] PTS_TIME* ptPTS // 現在のPTS時間
);

//
// 2つのセッションを同期させる。サンプルをレンダリングするSTC時間からのずれのデルタを提供する。
//
HRESULT
SyncToSTC(
[in] STC_IDENTIFIER stcToSyncTo, // 同期するクロック
[in] PTS_TIME tDelta // サンプルをレンダリングするSTCからのずれのデルタ
);
};
――――――――――――――――――――――――――――――――――――――
図1〜図4の参照を続けて、図5及び図6は、1つ又は複数のAPI408によって提供される機能を使用して、1つ又は複数のメディア処理パイプライン(メディア処理パイプライン1 302又はメディア処理パイプライン2 320等)によるプレゼンテーションに備えてメディアコンテンツ(1つ又は複数のクリップ123の一部等)を準備する方法のフローチャートである。図5に示す方法は、情報が、ソフトウェアコンポーネント(メディアソースリーダー402又は別のソフトウェアコンポーネント等)によって使用されるメモリー(メモリー430等)と、ハードウェアコンポーネント(demux404若しくは復号器/レンダラー490又は他のハードウェアコンポーネント等)によって使用されるメモリー(メモリー433等)との間で転送されるときに使用される処理資源及び/又はメモリー資源を最小にするのに有用である。図6に示す方法は、同時に再生可能な複数のメディアコンテンツストリームの一部が、別個のハードウェアコンポーネントによるプレゼンテーションに備えて準備されるときに知覚される同期を維持するのに有用である。
図5及び図6に示すプロセスは、図7に関連して以下で論述するプロセッサー702等、1つ又は複数の一般的な多目的プロセッサー又は単一目的プロセッサーで実施することができる。特に指定のない限り、本明細書で説明する方法は、特定の順序にも特定のシーケンスにも制約されない。加えて、説明する方法又はその要素のいくつかは、同時に生起するか又は実行される可能性がある。
図5のフローチャートに示す方法を参照する。この方法は、ブロック500において開始し、ブロック502に続く。ブロック502において、ハードウェア割り当てされたメモリーブロック432等の第1のメモリーの一部が、クリップ123の個々に再生可能な部分等のメディアコンテンツユニット(特定のメディアソース304から受信されたメディアユニット407等)を記憶するために識別される。特定のメディアコンテンツユニット及びそのメディアコンテンツユニットの第1のメモリーにおける記憶ロケーションを、ブロック504及び506においてそれぞれ識別する。
メディア処理パイプライン302、320のそれぞれのメディア処理コンポーネント306、326のコンテキストでは、ハードウェア割り当てされたメモリーブロック432は、メモリー資源及び処理資源の効率的な使用を高めるためにリングバッファー420として実施することができる。リングバッファー420は、メディアソースリーダー402(又はメディア処理パイプライン302又は320の他のコンポーネント)を介して別個に割り当てることができる、メディアユニット407を記憶するためのブロックを有するものとみなすことができる。リングバッファー420に記憶される各メディアユニット407のオフセットは判明しており、メモリー先頭(「BOM」)ポインター435、メモリー終端(「EOM」)ポインター437、使用済みメモリー先頭ポインター(「BUMP」)453、及び/又は使用済みメモリー終端ポインター(「EUMP」)455等、リングバッファー420内のロケーションへの1つ又は複数のポインターの値を基準として相対的に表すことができる。demux404又は別のハードウェアコンポーネントが、リングバッファー420からメディアユニット407を表すものを取得すると、BUMP453及び/又はEUMP455は、それに応じて移動される場合がある。メディアユニット407は、バラバラの順序で取得及び解放される場合があるので、リングバッファー420内のメディアユニット407のオフセットのリストは、BUMP453及びEUMPが互いにバイパスすることが認められないことを確実にするように維持することができる。
メモリー使用効率及び処理効率をさらに高めるために、仮想メモリーを使用して、リングバッファー420の先頭からの1つ又は複数のメモリーブロックをリングバッファー420の終端に複製することができる。図示するように、複製BOMブロック450(メモリー先頭「BOM」ブロックの複製450である)は、仮想メモリーを使用して実施され、論理的には、メモリー終端「EOM」ブロック441の後に配置される。仮想メモリーのこの使用は、読み出しポインター及び書き込みポインターを有するリングバッファー形式で使用されるメモリーのより大きなブロックを分割するときに特に有用であるので、「オートラップ(auto-wrap)」機能と呼ばれる。オートラップ機能の使用はオプションである。一般に、demux404のプロバイダーは、2倍マッピングを行わないメモリーを提供する方を選ぶ可能性があり、メディア処理パイプラインは、それでも動作するが、メモリーの使用効率が悪くなるおそれがある。このようなリングバッファーの実施態様では、バッファーの先頭に「折り返す」メモリーの部分が特別な取り扱いを必要とし得る特殊な場合がある。例えば、折り返すメモリーの部分の情報をコピー又は別の方法で取得するには、2つのトランザクションが必要とされる場合がある。1つのトランザクションは、バッファーの終端の情報を取り出すことであり、もう1つのトランザクションは、バッファーの先頭の情報を取り出すことである。したがって、リングバッファーサイズをフルに活用することは、通例難しい。上述したような仮想メモリーを使用することによって、情報サイズが大きすぎてリングバッファーの終端に適合することができないときに、余分なメモリーを割り当てる必要性又はリングバッファーの終端にスキップする必要性(共に、その結果、メモリーの使用が非効率になる)のいずれかが回避される。
物理メモリー部分をダブルサイズの仮想メモリー領域に2倍マッピングする「オートラップ」機能を実施するために使用可能な例示のコード(Microsoft(登録商標)Windows(登録商標) CE 6.0オペレーティングシステムソフトウェア用ではあるが、仮想メモリーを使用する任意のオペレーティングシステムを使用することができる)を以下に示す。
――――――――――――――――――――――――――――――――――――
// 物理メモリーをダブルサイズの仮想メモリー領域に2倍マッピングする

CallerProc = GetCallerProcess();
VirtualAddress = VirtualAllocEx(CallerProc, 0, Size*2, MEM_RESERVE,
PAGE_NOACCESS);
VirtualCopyEx(CallerProc, VirtualAddress,
GetCurrentProcess(), (PVOID)(PhysicalAddress>>8), Size,
PAGE_PHYSICAL | PAGE_READWRITE | (Cached ? 0: PAGE_NOCACHE)))
VirtualCopyEx(CallerProc, (PBYTE) VirtualAddress+Size,
GetCurrentProcess(), (PVOID)(PhysicalAddress>>8), Size,
PAGE_PHYSICAL | PAGE_READWRITE | (Cached ? 0: PAGE_NOCACHE))
――――――――――――――――――――――――――――――――――――
図5のフローチャートを再び参照すると、ブロック508は、特定のメディアコンテンツユニットに関連付けられるデータ構造を形成するステップを示す。このデータ構造は、第1のメモリーにおけるメディアコンテンツユニットの記憶ロケーションについての情報を記憶するためのフィールドを有する。次に、ブロック510において、データ構造を、第2のメモリーを有するハードウェアコンポーネント(demux404又は復号器/レンダラー490等)に公開する。ブロック512において、ハードウェアコンポーネントは、メディアコンテンツユニットの記憶ロケーションについてのデータ構造の情報を使用して、中央処理装置なしで、第1のメモリーから第2のメモリーへメディアコンテンツユニットを直接転送することができることが分かる。
DirectShow(商標)フレームワークを使用して実施されるメディア処理コンポーネント306、326のコンテキストでは、メディアソースリーダー402は、IMediaSampleObjects等のデータ構造を使用して、次の情報、すなわち、メモリー430及び/又はハードウェア割り当てされたメモリーブロック432へのポインター;メモリー430及び/又はハードウェア割り当てされたメモリーブロック432のサイズ;メディアユニット407の開始時間及び停止時間;フラグ(複数可);並びに他の任意の所望の情報、のすべて又はいくつかを下流側のハードウェアコンポーネントに提供する。有利には、demux404(及び他のハードウェアコンポーネント)によるアクセスのためにメディアソースリーダー402によって割り当てられたリングバッファー420のメモリーブロックの特性に関する情報が、PhysMemDataStructure API410を介して公開される。この情報も、IMediaSampleObject等のデータ構造(又はそのフィールド)によって提供することができる。PhysMemDataStructure API410からdemux404及び他のハードウェアコンポーネントによって導出された物理メモリー情報は、リングバッファー420内の個々のメディアコンテンツユニット407の記憶ロケーションに直接アクセスするのに使用され、「memcopy」トランザクション等のプロセッサー集中型コピートランザクションの必要性が大幅に取り除かれる。PhysMemDataStructure API410を介して公開されるハードウェア割り当てされたメモリーブロック432の特性に関する情報は、メモリー432のタイプ;そのメモリーのメモリーブロックのサイズ;そのメモリーへの1つ又は複数のポインター437、435、453、又は455のロケーション;及びそのメモリーへの1つ又は複数のポインターに対する特定のメディアユニット407のオフセットロケーションを含むが、これらに限定されるものではない)。
図6のフローチャートに示す方法を参照する。この方法は、ブロック600で開始し、ブロック602及び604に続く。ブロック602において、マルチメディアプレゼンテーションの再生継続時間が識別され、ブロック604において、メディアコンテンツストリーム308及びメディアコンテンツストリーム328等の別個のメディアコンテンツストリームとして再生可能な2つのクリップ(各クリップはそれ自身の再生継続時間を有する)が識別される。次に、第1のクリップからのメディアサンプル及び第2のクリップからのメディアサンプルの、同期してプレゼンテーション可能な2つのメディアサンプルを、ブロック606及び608においてそれぞれ識別する。
一般に、プレゼンテーションシステムのソフトウェアベースのコンポーネント(プレゼンテーションマネージャー106の態様等)は、現在再生可能なクリップ123に気付いている。メディア処理パイプライン302、320のそれぞれのメディア処理コンポーネント306、326のコンテキストでは、Sniffer/Callback API422を使用して、demux404及び/又は復号器/レンダラー490によって処理されている特定のメディアユニット407及び/又はメディアサンプル409を識別することが可能である。
ブロック610に示すように、一定の情報が第1の時間に確認される。この第1の時間は、第1のクリップからのメディアサンプルが、メディア処理パイプライン1 302内でdemux404又は復号器/レンダラー490等の第1のハードウェアコンポーネントによるプレゼンテーションに備えた準備を受けているときに関連付けられるものである。次の情報、すなわち、デジタルメディアプレゼンテーションの再生継続時間の経過量、及び第1のクリップの再生継続時間の経過量を、ブロック610において確認する。
ブロック612に示すように、一定の情報が第2の時間に確認される。この第2の時間は、第2のクリップからのメディアサンプルが、メディア処理パイプライン2 320内でdemux404又は復号器/レンダラー490等の第2のハードウェアコンポーネントによるプレゼンテーションに備えた準備を受けているときに関連付けられるものである。次の情報、すなわち、デジタルメディアプレゼンテーションの再生継続時間の経過量、及び第2のクリップの再生継続時間の経過量を、ブロック612において確認する。
図2に示すメディア例示メディアタイムラインに関連して上記で論述したように、再生継続時間の経過量は、多くの場合、タイトル時間(又はグローバルシステム時間)と呼ばれ、特定のクリップの再生継続時間の経過量は、一般に、特定のメディアサンプルに関連付けられる特定の所定のメディアサンプルプレゼンテーション時間202に対応する。GetDecodeTimes API418は、第1のクリップ及び第2のクリップの双方のメディアサンプル及び/又はメディアタイムライン142を検査し、ブロック610及び612において示された情報を返すように構成されている。
ブロック614において、ブロック610において計算されたデジタルメディアプレゼンテーションの再生継続時間の経過量とブロック612において計算されたデジタルメディアプレゼンテーションの再生継続時間の経過量との間の差を確認し、この差は、ブロック616に示すように、メディアサンプルを準備及び/又はプレゼンテーションするためのハードウェアコンポーネントのタイミングを調整するのに使用可能である。
メディア処理パイプライン302、320のそれぞれのメディア処理コンポーネント306、326のコンテキストでは、SyncToSTC API420は、GetDecodeTimes API418を介して取得された情報を使用して、処理時間並びに/又はタイミング信号350及び370等のタイミング信号に(ブロック614において確認された再生継続時間の経過量間の差に基づく)デルタを適用することにより、異なるハードウェアコンポーネントからのさまざまなメディアコンテンツストリームを同期させるように構成されている。SyncToSTC API420を使用して、(例えば、再生リストによって定義されたような)他のプレイバック制約を有するメディアコンテンツストリームを同期させることもできることが理解されよう。
図1〜図6の参照に続けて、図7は、プレゼンテーションシステム100のすべて又は一部を実施又は使用することができる動作環境700の一例示の構成のブロック図である。動作環境700は、一般に、多種多様な汎用コンピューティング環境又は専用コンピューティング環境を示す。動作環境700は、適した動作環境の一例にすぎず、本明細書で説明するシステム(複数可)及び方法の使用又は機能範囲に関して一切の制限を示唆することを意図するものではない。例えば、動作環境700は、パーソナルコンピューター、ワークステーション、サーバー、ポータブルデバイス、ラップトップ、タブレット、若しくは現在既知の若しくは今後開発される光学式メディアプレイヤー若しくは別のタイプのメディアプレイヤー等の他の任意のタイプの電子デバイス、又はそれらの任意の態様等の或るタイプのコンピューターとすることができる。動作環境700は、例えば、分散コンピューティングネットワーク又はウェブサービスとすることもできる。動作環境700の特定の例は、DVDプレイヤー又はDVDプレイヤーに関連付けられるオペレーティングシステム等の環境である。この環境によって、高精細DVD映画の再生が容易になる。
図示するように、動作環境700は、1つ又は複数のプロセッサー702、コンピューター可読媒体704、及びコンピュータープログラム706を含むコンピューティングユニットのコンポーネントを含むか又はこれらのコンポーネントにアクセスする。プロセッサー(複数可)702は、コンピューター可読媒体704及びコンピュータープログラム706に応答する。プロセッサー(複数可)702は、物理プロセッサー又は仮想プロセッサーとすることができ、アセンブリレベル、コンパイルされたレベル、又はマシンレベルの命令を実行して、特定のプロセスを実行することができる。このような命令は、ソースコード又は他の任意の既知のコンピュータープログラム設計ツールを使用して作成することができる。
コンピューター可読媒体704は、プロセッサー702によって実行可能な命令等、コンピューター可読データを記録、記憶、又は送信することができる、現在既知の又は今後開発される任意の形態の任意の個数のローカル又はリモートのデバイス及びそれらの組み合わせを表す。詳細には、コンピューター可読媒体704は、半導体メモリー(例えば、読み出し専用メモリー(「ROM」)、任意のタイプのプログラマブルROM(「PROM」)、ランダムアクセスメモリー(「RAM」)、又はフラッシュメモリー);磁気記憶デバイス(フロッピー(登録商標)ディスクドライブ、ハードディスクドライブ、磁気ドラム、磁気テープ、又は光磁気ディスク等);光学式記憶デバイス(任意のタイプのコンパクトディスク又はデジタル多用途ディスク等);バブルメモリー;キャッシュメモリー;コアメモリー;ホログラフィックメモリー;メモリースティック;紙テープ;パンチカード;又はそれらの任意の組み合わせとすることもできるし、それらを含むこともできる。また、コンピューター可読媒体704は、伝送媒体及びそれに関連付けられるデータも含むことができる。伝送媒体/データの例には、変調された搬送波信号によって搬送されるパケット化データ又は非パケット化データ等、任意の形態の有線伝送又は無線伝送で具現化されたデータが含まれるが、これに限定されるものではない。
コンピュータープログラム706は、データに対する所定のオペレーションを電子制御する任意の信号処理方法又は記憶されている命令を表す。一般に、コンピュータープログラム706は、コンポーネントベースのソフトウェア開発の既知の慣行に従ってソフトウェアコンポーネントとして実施され且つコンピューター可読媒体(コンピューター可読媒体704等)に符号化されたコンピューター実行可能命令である。コンピュータープログラムは、さまざまな方法で結合することもできるし、分散させることもできる。
記憶装置714は、光ディスク又は他のポータブル(光ディスクは、オプションの光ディスクドライブ716によってハンドリングされる)等、特に動作環境700に関連付けられる付加的な又は異なるコンピューター可読媒体を含む。1つ又は複数の内部バス720を使用して、動作環境700若しくはその要素内で、動作環境700若しくはその要素へ、又は動作環境700若しくはその要素から、データ、アドレス、制御信号、及び他の情報を搬送することができる。内部バスは、既知であり且つ広く入手可能な要素である。
入力インターフェース(複数可)708は、コンピューティング環境700に入力を提供する。入力は、ユーザーインターフェース等、任意のタイプの現在既知の又は今後開発されるインターフェースを使用して収集することができる。ユーザーインターフェースは、リモコン等のタッチ入力デバイス、ディスプレイ、マウス、ペン、スタイラス、トラックボール、キーボード、マイクロホン、スキャンデバイス、及びデータを入力するのに使用されるすべてのタイプのデバイスとすることができる。
出力インターフェース(複数可)710は、動作環境700からの出力を提供する。出力インターフェース(複数可)710の例には、ディスプレイ、プリンター、スピーカー、ドライブ(光ディスクドライブ716及び他のディスクドライブ又は記憶媒体等)等が含まれる。
外部通信インターフェース(複数可)712は、動作環境700が、チャネル信号、データ信号、又はコンピューター可読媒体等の通信媒体を介して、別のエンティティから情報を受信するか又は別のエンティティへ情報を送信する能力を高めるのに利用可能である。外部通信インターフェース(複数可)712は、関連付けられるネットワークサポートデバイス及び/若しくはソフトウェア又はインターフェースを伴った、ケーブルモデム、データ端末機器、メディアプレイヤー、データ記憶デバイス、携帯情報端末、又は他の任意のデバイス若しくはコンポーネント/それらの組み合わせ等の要素とすることもできるし、そのような要素を含むこともできる。
図8は、クライアント−サーバーアーキテクチャー800の簡略化した機能図である。プレゼンテーションシステム100又は動作環境700は、このクライアント−サーバーアーキテクチャー800に関連して使用することができる。プレゼンテーションシステム100及び/又は動作環境700の1つ又は複数の態様は、アーキテクチャー800のクライアント側802又はアーキテクチャー800のサーバー側804に表すことができる。図示するように、通信フレームワーク803(例えば、有線又は無線の任意のタイプの任意の公衆ネットワーク又はプライベートネットワークとすることができる)は、クライアント側802とサーバー側804との間の通信を容易にする。
クライアント側802において、1つ又は複数のクライアント806は、クライアントデータストア808に応答する。1つ又は複数のクライアント806は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実施することができる。クライアントデータストア808は、クライアント806にローカルな情報を記憶するのに用いられるコンピューター可読媒体704とすることができる。サーバー側804において、1つ又は複数のサーバー810は、サーバーデータストア812に応答する。クライアントデータストア808と同様に、サーバーデータストア812は、サーバー810にローカルな情報を記憶するのに用いられる1つ又は複数のコンピューター可読媒体704を含むことができる。
メディアコンテンツと同期してユーザーにインタラクティブコンテンツをプレゼンテーションするのに使用されるプレゼンテーションシステムのさまざまな態様を説明してきた。しかしながら、プレゼンテーションシステムの説明したコンポーネントのすべてを使用する必要はなく、また、複数のコンポーネントが、使用されるときに同時に存在しなければならないものでもないことが理解されよう。プレゼンテーションシステム100のコンテキストでコンピュータープログラムであるとして説明した機能/コンポーネントは、コンピュータープログラムのいずれの特定の実施形態による実施にも限定されるものではない。それどころか、機能は、データを伝達又は変換するプロセスであり、一般に、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実施することもできるし、それらのハードウェア等で実行することもできる。
また、本明細書の主題を、構造的特徴及び/又は方法論的動作に特有の文言で説明してきたが、特許請求の範囲で定義される主題は、必ずしも、上述した特定の特徴にも動作にも限定されないことも理解されるであろう。それどころか、上述した特定の特徴及び動作は、特許請求の範囲を実施する例示の形態として開示されている。
さらに、或る要素が別の要素に応答するものとして示されているとき、これらの要素を直接又は間接的に結合することができることも理解されよう。本明細書で示した接続は、要素間の結合又は通信インターフェースを達成するために実際には論理的なものとすることもできるし、物理的なものとすることもできる。接続は、特に、ソフトウェアプロセス間のプロセス間通信又はネットワーク接続されたコンピューター間のマシン間通信として実施することができる。
「例示」という言葉は、本明細書では、一例、一インスタンス、又は一例証として機能することを意味するために使用される。本明細書で「例示」として説明した本発明の任意の実施態様又は態様は、必ずしも、本発明の他の実施態様又は態様よりも好ましいもの又は有利なものとして構成されているとは限らない。
添付の特許請求の範囲の精神及び範囲から逸脱することなく、上述した特定の実施形態以外の実施形態を考案することができることが理解されるので、本明細書の主題の範囲は添付の特許請求の範囲によって決定されることが意図されている。

Claims (20)

  1. プロセッサー(702)によって実行されると、プレゼンテーションに備えてメディアコンテンツ(122)を準備する方法(500)を実行するコンピューター実行可能命令(706)で符号化されたコンピューター可読媒体(704)であって、前記メディアコンテンツは、複数のメディアコンテンツユニット(407)としてメディアソース(304/324)から受信可能であり、該方法は、
    前記メディアソースから受信されたメディアコンテンツユニットを記憶するために割り当てられた第1のメモリー(430)の一部(432)を識別するステップ(502)と、
    前記メディアソースから受信された第1のメディアコンテンツユニットを識別するステップ(504)と、
    前記第1のメモリーの前記割り当てられた一部における前記第1のメディアコンテンツユニットの第1の記憶ロケーションを識別するステップ(506)と、
    前記第1のメディアコンテンツユニットに関連付けられる第1のデータ構造を形成するステップ(508)であって、該第1のデータ構造は、前記第1の記憶ロケーションについての情報を記憶するためのフィールドを有する、形成するステップ(508)と、
    第2のメモリー(433)を有するハードウェアコンポーネント(404/490)に前記第1のデータ構造を公開すること(510)を準備するステップと
    を含み、
    前記第1のデータ構造から取得される前記第1の記憶ロケーションについての前記情報は、前記ハードウェアコンポーネントが、中央処理装置を使用することなく、前記第1のメモリーから前記第1のメディアコンテンツユニットに直接アクセスするのに使用可能である(512)、コンピューター可読媒体。
  2. コンピューター可読媒体(704)であって、前記メディアソースから受信されたメディアコンテンツユニットを記憶するために割り当てられた前記第1のメモリーの前記一部は、連続的な物理メモリー、ロックされたスキャッターギャザーされた物理メモリー、ロック解除されたスキャッターギャザーされた物理メモリー、キャッシュされた仮想メモリー、及びキャッシュ解除された仮想メモリーから成る群から選択され、前記第1のデータ構造によって公開された前記第1の記憶ロケーションについての前記情報は、前記第1のメモリーのタイプ、前記第1のメモリーのメモリーブロックのサイズ、前記第1のメモリーへのポインターのロケーション、及び前記第1のメモリーへのポインターに対する前記第1の記憶ロケーションのオフセットロケーションから成る群から選択される、請求項1に記載のコンピューター可読媒体。
  3. コンピューター可読媒体(704)であって、前記メディアソースから受信されたメディアコンテンツユニットを記憶するために割り当てられた前記第1のメモリーの前記一部は、リングバッファー(420)として配列され、該リンクバッファーは、先頭メモリーブロック(439)及び終端メモリーブロック(441)を有する、請求項1に記載のコンピューター可読媒体。
  4. コンピューター可読媒体(704)であって、前記先頭メモリーブロックは、前記終端メモリーブロックの後に、仮想メモリー(450)を使用して複製される、請求項3に記載のコンピューター可読媒体。
  5. コンピューター可読媒体(704)であって、前記方法は、
    前記第1の記憶ロケーションが、前記先頭メモリーブロック及び前記終端メモリーブロックを含むとき、前記第1のメディアコンテンツユニットの第1の部分を前記終端メモリーブロックに記憶し、前記第1のメディアコンテンツユニットの第2の部分を、仮想メモリーを使用して複製された前記先頭メモリーブロックに記憶するステップ
    をさらに含む、請求項4に記載のコンピューター可読媒体。
  6. コンピューター可読媒体(704)であって、前記リングバッファー(420)は、該リングバッファーにおける使用されるメモリーの先頭を参照するための先頭ポインター(453)及び前記リングバッファーにおける使用されるメモリーの終端を参照するための終端ポインター(455)を使用して実施され、前記第1のメモリーの前記割り当てられた一部における前記第1のメディアコンテンツユニットの第1の記憶ロケーションを識別する前記ステップは、前記リングバッファー内の前記第1のメディアコンテンツユニットのオフセットを識別するステップを含み、該オフセットは、前記先頭ポインター若しくは前記終端ポインター又はそれらの双方に対して相対的に指定される、請求項3に記載のコンピューター可読媒体。
  7. コンピューター可読媒体(704)であって、前記方法は、
    前記第1のメディアコンテンツユニットが送信された後、前記先頭ポインター若しくは前記終端ポインター又はそれらの双方を移動させることによって、前記第1の記憶ロケーションから前記第1のメディアコンテンツユニットを解放するステップ
    をさらに含む、請求項6に記載のコンピューター可読媒体。
  8. コンピューター可読媒体(704)であって、
    前記メディアソースから受信された複数のメディアコンテンツユニットを識別すること、
    前記複数のメディアコンテンツユニットのそれぞれについて、前記リングバッファー内の記憶ロケーション及びオフセットを識別するステップと、
    前記複数のメディアコンテンツユニットのそれぞれに関連付けられるデータ構造を形成するステップであって、該データ構造は、それぞれ、特定のメディアコンテンツユニットの前記記憶ロケーションについての情報を記憶するためのフィールドを有する、形成するステップと、
    第2のメモリーを有するハードウェアコンポーネントへの前記データ構造の公開を準備するステップであって、前記データ構造から取得される前記特定のメディアコンテンツユニットの前記記憶ロケーションについての前記情報は、前記ハードウェアコンポーネントが、中央処理装置を使用することなく、前記第1のメモリーから前記特定のメディアコンテンツユニットに直接アクセスするのに使用可能である、準備するステップと、並びに
    特定のメディアコンテンツユニットがアクセスされた後、前記先頭ポインター若しくは前記終端ポインター又はそれらの双方を移動させることによって、該特定のメディアコンテンツユニットを前記記憶ロケーションから解放するステップと
    をさらに含む、請求項6に記載のコンピューター可読媒体。
  9. コンピューター可読媒体(704)であって、
    前記リングバッファーに記憶されたすべてのメディアコンテンツユニットの記憶ロケーションを含むオフセット位置のリストを維持するステップと、
    前記オフセット位置のリストを使用するステップであって、メディアコンテンツユニットが前記記憶ロケーションから解放されるとき、前記先頭ポインター及び前記終端ポインターが互いにバイパスしないことを確実にする、使用するステップと
    をさらに含む、請求項8に記載のコンピューター可読媒体。
  10. コンピューター可読媒体(704)であって、前記方法は、複数のフィルターを有するフィルターグラフを備えるメディア処理パイプライン内で実行され、各フィルターは、1つ又は複数の入力ピン(411、491)及び1つ又は複数の出力ピン(401、421)を有する、請求項1に記載のコンピューター可読媒体。
  11. コンピューター可読媒体(704)であって、前記ハードウェアコンポーネントは、前記複数のフィルターの1つを備え、該ハードウェアコンポーネントは、デマルチプレクサー(404)、復号器(490)、及びレンダラー(490)から成る群から選択される、請求項10に記載のコンピューター可読媒体。
  12. コンピューター可読媒体(704)であって、前記方法は、前記複数のフィルターの1つを備えるソフトウェアコンポーネント(402)によって実行され、該ソフトウェアコンポーネントは、メディアコンテンツユニットを受信するように構成されている入力ピン及び前記ハードウェアコンポーネントと通信するように構成されている出力ピンを有する、請求項10に記載のコンピューター可読媒体。
  13. コンピューター可読媒体(704)であって、前記第1のメディアコンテンツユニットに関連付けられる第1のデータ構造を形成する前記ステップであって、該第1のデータ構造は、前記第1の記憶ロケーションについての情報を記憶するためのフィールドを有する、形成する前記ステップは、
    前記第1の記憶ロケーションについての情報を受信し、前記第1のデータ構造の前記フィールドを前記第1の記憶ロケーションについての前記情報でポピュレートするように構成されているアプリケーションプログラミングインターフェース(「API」)(410)のコールを前記ソフトウェアコンポーネントによって発行するステップと、
    前記第1の記憶ロケーションについての前記情報を有する前記第1のデータ構造の前記フィールドを公開する前記アプリケーションプログラミングインターフェースからの応答を前記ソフトウェアコンポーネントによって受信するステップと
    を含む、請求項12に記載のコンピューター可読媒体。
  14. コンピューター可読媒体(704)であって、ハードウェアコンポーネントに前記第1のデータ構造を公開することを準備する前記ステップは、前記ハードウェアコンポーネントと通信するように構成されている前記出力ピンにおいて、公開される前記第1のデータ構造の前記フィールドを有する前記第1のデータ構造を送信するステップを含む、請求項13に記載のコンピューター可読媒体。
  15. メディアプレゼンテーションシステムで使用するメディア処理パイプラインのアーキテクチャー(306、326)であって、該アーキテクチャーは、
    メディアコンテンツユニットを受信し、該受信されたメディアコンテンツユニットの第1のメモリーへの記憶を準備するように構成されているソフトウェアコンポーネント(402)と、
    第2のメモリーを有するハードウェアコンポーネント(404、490)であって、該ハードウェアコンポーネントは、前記ソフトウェアコンポーネントに応答し、前記第1のメモリーに記憶されたメディアコンテンツユニットを表すものを前記第2のメモリーへ転送するように構成されている、ハードウェアコンポーネント(404、490)と、
    前記ソフトウェアコンポーネントと前記ハードウェアコンポーネントとの間の境界で動作可能なAPI(410)であって、該APIは、前記第1のソフトウェアコンポーネントの要求により、前記第1のメモリー内の特定のメディアコンテンツユニットの前記記憶ロケーションについての情報を有する少なくとも1つのデータ構造フィールドを第1のハードウェアコンポーネントに公開するように構成されており、該公開されたデータ構造フィールドは、前記第1のハードウェアコンポーネントが、中央処理装置を使用することなく、前記第1のメモリーに記憶されたメディアコンテンツユニットを表すものを前記第2のメモリーへ直接転送することを可能にする、API(410)と、
    を備える、アーキテクチャー。
  16. アーキテクチャー(306、326)であって、前記ソフトウェアコンポーネント及び前記ハードウェアコンポーネントは、フィルターグラフのフィルターを備え、前記ソフトウェアコンポーネントは、前記ハードウェアコンポーネントの入力ピンに接続する出力ピンを有し、前記APIは、前記ソフトウェアコンポーネントの前記出力ピンからのコールに応答して、前記ハードウェアコンポーネントの前記入力ピンに前記データ構造フィールドを公開する、請求項15に記載のアーキテクチャー。
  17. プロセッサー(702)によって実行されると、再生継続時間及びメディアコンテンツコンポーネント(122)を有するデジタルメディアプレゼンテーションを再生する方法を実行するコンピューター実行可能命令(706)で符号化されたコンピューター可読媒体(704)であって、前記メディアコンテンツコンポーネントは、
    第1の複数のメディアサンプルに配列された第1のクリップ(123)であって、該第1のクリップは、第1の再生継続時間を有し、第1のメディアコンテンツストリームとして再生可能である、第1のクリップ(123)と、
    第2の複数のメディアサンプルに配列された第2のクリップ(123)であって、該第2のクリップは、第2の再生継続時間を有し、第2のメディアコンテンツストリームとして再生可能である、第2のクリップ(123)と、
    を備え、前記方法(600)は、
    前記第1のクリップから第1のメディアサンプルを識別するステップ(606)と、
    前記第2のクリップから第2のメディアサンプルを識別するステップ(608)であって、該第2のメディアサンプルは、前記第1のメディアサンプルと同期して再生可能である、前記第2のクリップから第2のメディアサンプルを識別するステップ(608)と、
    第1のタイミング信号に基づくレートで第1のハードウェアコンポーネントを使用して前記第1のメディアサンプルをプレゼンテーションに備えて準備することに関連付けられる第1の時間において、
    前記デジタルメディアプレゼンテーションの前記再生継続時間の第1の経過量を確認するステップ(610)、及び
    前記第1の再生継続時間の経過量を確認するステップ(610)と、
    第2のタイミング信号に基づくレートで第2のハードウェアコンポーネントを使用して前記第2のメディアサンプルをプレゼンテーションに備えて準備することに関連付けられる第2の時間において、
    前記デジタルメディアプレゼンテーションの前記再生継続時間の第2の経過量を確認するステップ(612)、及び
    前記第2の再生継続時間の経過量を確認するステップ(612)と、
    前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第1の経過量と前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第2の経過量との間の差を確認するステップと、
    前記差に基づいて、前記第1の時間若しくは前記第2の時間又はそれらの双方のいずれかを調整するステップ(616)と
    を含む、コンピューター可読媒体。
  18. コンピューター可読媒体(704)であって、前記第1のハードウェアコンポーネント及び前記第2のハードウェアコンポーネントは、デマルチプレクサー(404)、復号器(490)、及びレンダラー(490)から成る群から選択される、請求項17に記載のコンピューター可読媒体。
  19. コンピューター可読媒体(704)であって、前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第1の経過量を確認する前記ステップ及び前記第1の再生継続時間の前記経過量を確認する前記ステップは、
    第1のコールを第1のAPI(418)に発行するステップであって、該第1のコールは、前記第1のメディアサンプルについての情報を含む、発行するステップと、
    前記第1のコールに基づいて、前記第1のAPIから第1の応答を受信するステップであって、該第1の応答は、前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第1の経過量及び前記第1の再生継続時間の前記経過量についての情報を含む、受信するステップと
    をさらに含み、
    前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第2の経過量を確認する前記ステップ及び前記第2の再生継続時間の前記経過量を確認する前記ステップは、
    第2のコールを前記第1のAPIに発行するステップであって、該第2のコールは、前記第2のメディアサンプルについての情報を含む、発行するステップと、並びに
    前記第2のコールに基づいて、前記第1のAPIから第2の応答を受信するステップであって、該第2の応答は、前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第2の経過量及び前記第2の再生継続時間の前記経過量についての情報を含む、受信するステップと
    をさらに含む、
    請求項17に記載のコンピューター可読媒体。
  20. コンピューター可読媒体(704)であって、前記第1の時間若しくは前記第2の時間又はそれらの双方のいずれかを調整する前記ステップは、
    第2のAPI(420)にコールを発行するステップであって、該コールは、前記第1の応答、前記第2の応答、及び前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第1の経過量と前記デジタルメディアプレゼンテーションの前記再生継続時間の前記第2の経過量との間の前記差から成る群から選択される情報を含む、第2のAPI(420)にコールを発行するステップと、
    前記第2のAPIへの前記コールに基づいて、該第2のAPIから応答を受信するステップと、
    前記第2のAPIからの前記応答に基づいて、前記第1の再生継続時間の前記経過量、前記第2の再生継続時間の前記経過量、前記第1のタイミング信号、及び前記第2のタイミング信号から成る群の1つ又は複数を調整するステップと
    をさらに含む、請求項19に記載のコンピューター可読媒体。
JP2010515037A 2007-06-30 2008-06-24 デジタルメディア処理用インターフェース Expired - Fee Related JP5394375B2 (ja)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
JP2010532536A true JP2010532536A (ja) 2010-10-07
JP5394375B2 JP5394375B2 (ja) 2014-01-22

Family

ID=40162404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010515037A Expired - Fee Related JP5394375B2 (ja) 2007-06-30 2008-06-24 デジタルメディア処理用インターフェース

Country Status (13)

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

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
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
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
WO2010127268A1 (en) 2009-05-01 2010-11-04 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 ソニー株式会社 情報処理装置、情報処理方法および情報処理システム
EP2513774A4 (en) * 2009-12-18 2013-09-04 Nokia Corp METHOD AND APPARATUS FOR PROJECTING USER INTERFACE WITH A CONTINUOUS FLOW OF SHEET MUSIC
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
JP6610555B2 (ja) 2014-10-20 2019-11-27 ソニー株式会社 受信装置、送信装置、およびデータ処理方法
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 (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
JP2005018842A (ja) * 2003-06-24 2005-01-20 Sony Corp 再生装置および方法
JP2005032379A (ja) * 2003-07-10 2005-02-03 Sony Corp 記録装置および方法
JP2005235171A (ja) * 2003-12-09 2005-09-02 Emc Corp 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置
JP2006050648A (ja) * 2001-06-14 2006-02-16 Samsung Electronics Co Ltd メモリ管理方法
WO2006039174A1 (en) * 2004-09-30 2006-04-13 Intel Corporation Hybrid hardware and software implementation of transactional memory access
WO2006061316A2 (en) * 2004-12-10 2006-06-15 International Business Machines Corporation Transferring data between system and storage in a shared buffer

Family Cites Families (20)

* 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
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 デジタル多重伝送装置
US6816909B1 (en) * 1998-09-16 2004-11-09 International Business Machines Corporation Streaming media player with synchronous events from multiple sources
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 ザ トラスティース オブ コロンビア ユニバーシティ イン ザ シティ オブ ニューヨーク マルチメディア・アーカイブの記述スキーム
JP4362906B2 (ja) * 1999-09-21 2009-11-11 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US7897865B2 (en) * 2002-01-15 2011-03-01 Yamaha Corporation Multimedia platform for recording and/or reproducing music synchronously with visual images
US7013468B2 (en) * 2002-02-26 2006-03-14 Parametric Technology Corporation Method and apparatus for design and manufacturing application associative interoperability
CA2439737A1 (en) * 2002-10-07 2004-04-07 Microsoft Corporation Extented time-code for multimedia presentations
US7120626B2 (en) * 2002-11-15 2006-10-10 Koninklijke Philips Electronics N.V. Content retrieval based on semantic association
US7627227B2 (en) * 2004-05-17 2009-12-01 Microsoft Corporation Reverse presentation of digital media streams
JP4562505B2 (ja) 2004-12-02 2010-10-13 ソニー株式会社 多重化分離装置および多重化分離方法
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 (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
JP2006050648A (ja) * 2001-06-14 2006-02-16 Samsung Electronics Co Ltd メモリ管理方法
JP2005018842A (ja) * 2003-06-24 2005-01-20 Sony Corp 再生装置および方法
JP2005032379A (ja) * 2003-07-10 2005-02-03 Sony Corp 記録装置および方法
JP2005235171A (ja) * 2003-12-09 2005-09-02 Emc Corp 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置
WO2006039174A1 (en) * 2004-09-30 2006-04-13 Intel Corporation Hybrid hardware and software implementation of transactional memory access
WO2006061316A2 (en) * 2004-12-10 2006-06-15 International Business Machines Corporation Transferring data between system and storage in a shared buffer

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5394375B2 (ja) デジタルメディア処理用インターフェース
JP5513381B2 (ja) 共有メモリー・プールを利用したデジタル・データ管理
KR101365829B1 (ko) 대화형 멀티미디어 프리젠테이션을 재생하는 방법을 수행하는 컴퓨터 실행가능 명령어들이 인코딩된 컴퓨터 판독가능 매체, 및 대화형 멀티미디어 프리젠테이션을 재생하는 프리젠테이션 시스템 및 장치
WO2007005268A2 (en) Synchronization aspects of interactive multimedia presentation management
WO2012106272A1 (en) System and method for custom segmentation for streaming
KR20080044872A (ko) 컴퓨터 상에서 정보 또는 데이터를 처리하기 위한 시스템및 방법
US11558646B2 (en) Time shift buffer via flash memory
US20150088943A1 (en) Media-Aware File System and Method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131016

R150 Certificate of patent or registration of utility model

Ref document number: 5394375

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees