[go: up one dir, main page]

JP2014531142A - スクリプトをベースとするビデオ・レンダリング - Google Patents

スクリプトをベースとするビデオ・レンダリング Download PDF

Info

Publication number
JP2014531142A
JP2014531142A JP2014525268A JP2014525268A JP2014531142A JP 2014531142 A JP2014531142 A JP 2014531142A JP 2014525268 A JP2014525268 A JP 2014525268A JP 2014525268 A JP2014525268 A JP 2014525268A JP 2014531142 A JP2014531142 A JP 2014531142A
Authority
JP
Japan
Prior art keywords
script
video data
user computing
computing platform
frame image
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.)
Pending
Application number
JP2014525268A
Other languages
English (en)
Other versions
JP2014531142A5 (ja
Inventor
ヴェスタゴー スティーブンエリック
エリック ヴェスタゴー スティーブン
ツイ チェ−ワイ
ツイ チェ−ワイ
トゥ シャオニー
トゥ シャオニー
Original Assignee
デスティニーソフトウェアプロダクションズ インク
デスティニー ソフトウェア プロダクションズ インク
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 デスティニーソフトウェアプロダクションズ インク, デスティニー ソフトウェア プロダクションズ インク filed Critical デスティニーソフトウェアプロダクションズ インク
Publication of JP2014531142A publication Critical patent/JP2014531142A/ja
Publication of JP2014531142A5 publication Critical patent/JP2014531142A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • G11B27/034Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234381Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising 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/43072Synchronising 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
    • 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/434Disassembling 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/4341Demultiplexing of audio and video streams
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440281Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8543Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/272Means for inserting a foreground image in a background image, i.e. inlay, outlay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをクロスプラットフォーム・レンダリングするためのシステムおよび方法が提供される。スクリプトがユーザ・コンピューティング・プラットフォームに送信され、複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するようにコンパイルされたアプリケーション・プログラムによって解釈される。スクリプトを送信することが、ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによってスクリプトを解釈させ、送信された、または別の方法でユーザ・コンピューティング・プラットフォームにとってアクセス可能な符号化されたビデオ・データを復号済みビデオ・データに直接復号させ、さらに復号済みビデオ・データをレンダリングさせる。

Description

本発明は、解釈されたスクリプトを使用するユーザ・コンピューティング・デバイス上でのビデオコンテンツのクロスプラットフォーム・レンダリングのための方法およびシステムに関する。特定の実施形態は、インターネットブラウザのスクリプト・インタプリタによって解釈されたとき、解釈されたスクリプトに、ビデオ・データをフレーム画像に直接復号させ、インターネットブラウザに、それらのフレーム画像をネイティブにレンダリングさせる、HTMLドキュメント内に埋め込まれたスクリプトを使用するビデオコンテンツのクロスプラットフォーム・レンダリングのための方法およびシステムを提供する。特定の実施形態は、ビデオコンテンツを符号化するための方法およびシステムを提供する。
デジタル・ビデオは、ビデオコンテンツ、ビデオ・メディア、オーディオビジュアル・メディア、オーディオビジュアル・コンテンツ、マルチメディア、および/またはリッチメディアなど、しばしばいくつかの用語を使用して述べられる。この説明では、ビデオコンテンツは、ビデオ・データ、オーディオ・データ、またはオーディオ・データと組み合わされたビデオ・データによって具現化され得る、または別の形でそれらを含み得る任意のコンテンツおよび/またはメディアを含むと理解されたい。場合によっては、ビデオ・データおよび/またはオーディオ・データは、画像データ、および/またはメタデータなど他のデータとグループ化されてもよい。別段文脈によって示されていない限り、ビデオコンテンツは、そのような画像データ、および/またはメタデータなどを潜在的に含むと理解されたい。非限定的な例として、ビデオコンテンツは、インターネットまたは何らかの他のタイプのデータ・ネットワークを介して(たとえば、ホスト・サーバまたはピア・デバイスを介して)ストリームされ、または別の方法で送信されても、キャッシュされても(たとえば、ISP、プロキシ・サーバ、または何らかの他の仲介者によってキャッシュされる)、ローカルでキャッシュされても(たとえば、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってキャッシュされる)、ローカルで記憶され、または別の方法でユーザ・コンピューティング・デバイスにとってローカルでアクセス可能であってもよい。
現在、インターネット(など)で使用可能なデジタル・ビデオ・コンテンツは、多種多様な技法および方式を使用して符号化、送信、およびレンダリングされる。現在使用可能なビデオ・レンダリング技術には、いくつかの欠点が伴う。
典型的な従来技術のデジタル・ビデオ技術を使用してビデオコンテンツを配信しユーザ・コンピューティング・デバイス上で実行することに伴う1つの欠点は、専用のアプリケーション・プログラム(一般に、メディア・プレーヤと呼ばれる)をユーザ・コンピューティング・デバイス上にダウンロードしインストールしなければならず、またはユーザ・コンピューティング・デバイス・プラットフォームのプロバイダによってプリインストールされていなければならない(ユーザ・コンピューティング・デバイス・プラットフォームは、ユーザ・コンピューティング・デバイスのハードウェアおよびオペレーティングシステム・ソフトウェアを含む)ことである。この説明では、アプリケーション・プログラムは、アプリケーション、機能、または演算を、それ自体で、かつ別のアプリケーション・プログラムの支援なしに独立して実行することが可能なコンパイル済みプログラム(実行可能オブジェクト・コード・モジュール、および/または他のコンパイル済みコード・セグメント)をいう。アプリケーション・プログラムは、下記でさらに述べるアドオンとは対照的なものである。なぜなら、アドオンは、ホスト・アプリケーションに依存してその機能を提供し、一方、アプリケーション・プログラムは、その機能を独立して実行することが可能であるからである。また、すべての独立のプログラムが必ずしもアプリケーション・プログラムではない。たとえば、Java仮想マシンなど仮想マシンはアプリケーション・プログラムではない。なぜなら、そのような仮想マシンは、(仮想オペレーティングシステムおよび仮想ハードウェアなど)仮想環境を提供するにすぎず、独立のアプリケーション、機能、または演算を実行しないからである。そのような仮想マシンは、どのようなアプリケーション、機能、または演算を実行するためにも(コンパイル済みJavaバイトコード・アプリケーション・プログラムなど)アプリケーション・プログラムを必要とする。ユーザによっては、別個のメディア・プレーヤをダウンロードしインストールすることができないことがある。ユーザによっては、一般的にファイル、特に実行可能アプリケーション・プログラムをダウンロードすることに伴うセキュリティおよび/またはプライバシの脅威(たとえば、ウィルス、マルウェア、および/またはローカル共有オブジェクトなど)を考えると、別個のメディア・プレーヤをダウンロードするのを嫌がることがある。
さらに、メディア・プレーヤ・アプリケーション・プログラムは、一般に、コンパイル済みオブジェクト・コード・モジュールとしてダウンロードおよびインストールされ、したがって市場に存在し得るユーザ・コンピューティング・デバイス・プラットフォームのバージョン毎に、異なるコンパイル・ターゲットが必要とされる。モバイル・スマートフォン・プラットフォームの成長および多様性、ならびに多種多様なパーソナルコンピュータ・プラットフォームを考えると、サポートされなければならないターゲット・プラットフォームの数が負担となる。なぜなら、メディア・プレーヤの1つのコンパイル済みバージョンが、標的とされていなかったハードウェアおよび/またはオペレーティングシステム・プラットフォーム上で動作しない可能性が高いからである。メディア・プレーヤの、プラットフォームとの互換性が、そのメディア・プレーヤと競合する可能性がある他のインストール済みアプリケーション・プログラムによって損なわれるおそれがあると、複雑さが増大する。
一部のユーザ・コンピューティング・デバイスのハードウェアおよび/またはソフトウェア・プラットフォームは、一部のメディア・プレーヤ・アプリケーションをサポートせず(逆も同様である)、メディア・プレーヤ・アプリケーションは、そのようなハードウェアおよびソフトウェア・プラットフォームにとって使用可能でない。さらに、メディア・プレーヤをダウンロードしインストールしようと望む可能性があるユーザは、一般に、正しいプレーヤをダウンロードするために、それらのユーザ・コンピューティング・デバイスのハードウェアおよび/またはソフトウェア・プラットフォームの何らかの知識を必要とすることになる。メディア・プレーヤをダウンロードおよびインストールすることに伴う問題に加えて、ビデオコンテンツをレンダリングすることは、特定のプレーヤがすでにダウンロードおよびインストールされている場合でさえ、メディア・プレーヤ・アプリケーションの実行を必要とし、これは一般に、かなりのコンピューティング・リソース(たとえば、RAM、CPU時間など)を消費する。
一部のビデオ・コンテンツ・レンダリング技術は、「隠しプレーヤ(hidden player)」を使用し、これは、ユーザ・コンピューティング・デバイス上で動作するホスト・アプリケーション・プログラム(インターネット・ブラウザなど)がメディア・プレーヤ・アドオンを自動的にダウンロードしインストールする場合をいう。この説明では、アドオンという用語は、アドオン、プラグイン、スナップイン、拡張機能、および/またはアプレットなどを含むと理解されたい。アドオンは、特定の機能(たとえば、ビデオ・コンテンツ・レンダリング)を「ホスト」アプリケーション・プログラムに追加するコンパイル済みプログラム(すなわち、実行可能オブジェクト・コード・モジュール、他のコンパイル済みコード・セグメントなど)である。アドオンは、いくつかの機能を実行することができるが、それらが動作可能であるためにそれらのホスト・アプリケーション・プログラムに依存する。ホスト・インターネット・ブラウザ・アプリケーション・プログラムと共に使用することができるアドオンの例は、メディア・プレーヤ・アドオン、PDFリーダ・アドオン、Java仮想マシン(JVM)アドオンなどを含む。
場合によっては、メディア・プレーヤ・アドオン(または、ユーザ・コンピューティング・デバイスにメディア・プレーヤ・アドオンをダウンロードおよびインストールさせる命令)は、ビデオ・コンテンツ・ファイルとバンドルされることがある。他の場合には、ビデオ配信技法により、ユーザ・コンピューティング・デバイスのインターネットブラウザが、メディア・プレーヤ・アドオンとビデオ・コンテンツ・ファイルを別々にダウンロードする。そのようなメディア・プレーヤ・アドオンは、実行前に実際にダウンロードおよびインストールされなければならないので、そのようなメディア・プレーヤ・アドオンには、それらの公開メディア・プレーヤ同等物と同様の欠点がある。一部のアプリケーション・プログラム(たとえば、インターネットブラウザ、および/またはアンチウィルス・プログラムなど)またはオペレーティングシステム・ソフトウェアは、そのようなメディア・プレーヤ・アドオンの自動ダウンロードを阻止するセキュリティおよび/またはプライバシ設定(それらのユーザ、それらのネットワーク管理者などによって設定される)を有することがある。メディア・プレーヤ・アドオンのダウンロードおよびインストールの後で、メディア・プレーヤ・アドオンを実行することは、かなりの処理リソースを消費する。コンパイル済みモジュールであるため、アドオンを実行させることができるプラットフォームの各可能な行き先ごとに、異なるバージョンのアドオンを作成しテストしなければならない。
ユーザ・コンピューティング・デバイス上で別個のメディア・プレーヤまたはメディア・プレーヤ・アドオンをダウンロードしインストールすること、プリインストールしておくこと、またはコンパイルすることを回避するようにしてビデオコンテンツをレンダリングすることが広く望まれている。プラットフォームに依存せず、または比較的高い度合いのクロスプラットフォーム動作可能性を有するようにしてビデオコンテンツを配信および実施することが広く望まれている。
コンテンツを配信しユーザ・コンピューティング・デバイス上で実行するための現在の技術の使用に伴う別の欠点は、ストリーミング・ビデオの状況で発生し、現在の技術は、一般に、ユーザ・コンピューティング・デバイスがビデオ・コンテンツ・ストリームを要求するたびにユーザ・コンピューティング・デバイスと何らかの「ハンドシェーク」プロトコルを実行するストリーミング・コンテンツサーバを使用する。コンテンツサーバ、および関連のハンドシェークプロトコルの使用に伴う欠点は、ビデオコンテンツのローカル(またはダウンストリーム)キャッシングを妨げる可能性があることである。そのようなローカルまたはダウンストリーム・キャッシングは、帯域幅(および関連のコスト)を削減し、ストリームの信頼性を改善する(それにより、ビデオ品質を高める)ことができる。
ビデオコンテンツを配信しユーザ・コンピューティング・デバイス上で実行するための現在の技術の使用に伴う別の欠点は、1つまたは複数のCODECを更新することが望ましいときに発生する。CODECは、オーディオまたはビデオ・データを、その送信に必要な帯域幅を削減するために符号化し、次いで、送信の他方の側でデータを復号するための方式である。典型的には、CODECを使用することは、送信側でデータを圧縮し、受信側でデータを解凍することを必要とする。また、復号することは、データが受信用コンピューティング・デバイスに到着したときデータをパースおよびアンパックすること、および/または受信用コンピューティング・デバイスによって使用することができるフォーマットにデータを再編成することを必要とする可能性がある。従来技術のビデオ・レンダリング技術は、一般に、実行されたとき復号プロセスを実行するコンパイル済みコンピュータ・プログラム・モジュールの使用を必要とする。ビデオコンテンツが送信側にて更新済みCODECを用いて符号化される場合には、一般に、そのCODEC用の新しい更新済み復号用プログラムがユーザ・コンピューティング・デバイスにてダウンロードされインストールされるまで、そのビデオコンテンツをユーザ・コンピューティング・デバイスにて復号することができないことになる。
様々な、より新しいインターネット・ブラウザ・アプリケーション・プログラムは、HTML5の<video>タグを使用してウェブページ内に埋め込まれたビデオをネイティブにレンダリングすることが可能である。残念ながら、CODECサポートは、現時点では、必ずしもすべてのブラウザにわたって均一ではない。HTML5の進行中の開発では、ビデオ・フォーマットがあればどれをHTML5コンプライアント・ブラウザによってネイティブにレンダリング可能とするべきかについて論争が続いている。ビデオコンテンツの複数のコピーを異なるCODECで使用するために提供することができるが、これは一般に、ビデオコンテンツをあるCODECから別のCODECにトランスコードすることを必要とする。異なるCODECに従って符号化されるようにビデオコンテンツをトランスコードすることが可能であるが、これには欠点がある。たとえば、
・ トランスコーディングは時間と労力がかかる。
・ トランスコーディングは、一般に、計算集約的なプロセスであり、その結果、現時点では、リアルタイム・トランスコーディングを提供することは技術的に困難であり、かつ/または比較的計算コストがかかる。
・ ビデオコンテンツを事前に異なるCODECに従って符号化されるようにトランスコードする場合、一般に、そのビデオコンテンツの複数のコピーを(各異なるCODECごとに1つ)記憶しなければならず、これは、大量のビデオコンテンツにとって煩わしいものとなり得る。
・ 一部のCODECは知的所有権のあるものであり、それらの合法的な使用は、制限されているか、ライセンス料の支払いを必要とする。
・ 異なるCODECに従って符号化されたビデオコンテンツを保存することは、異なるストリーミングサーバの使用を必要とする。
したがって、既存のビデオ・コンテンツ・レンダリング技術に伴うこれらの、または他の欠点のいくつかを克服する、または改善する、ビデオコンテンツをレンダリングするための方法およびシステムが広く望まれている。
関連技術の前述の例、およびそれらに関連する制限は、例示的なものであり、排他的なものではない。関連技術の他の制限は、本明細書を読み、図面を検討すれば、当業者には明らかになろう。
例示的な実施形態が、図面の参照される図に示されている。本明細書に開示されている実施形態および図は、制限的なものではなく例示的なものとみなすべきであることが意図されている。
本発明の非限定的な実施形態を示す図面において、各図は以下の通りである。
HTMLドキュメント内に埋め込むことができる、またビデオコンテンツをレンダリングするためにインターネットブラウザなどアプリケーション・プログラムによって解釈させることができる、特定の実施形態によるスクリプトの機能コンポーネントを示す概略ブロック図である。 例示的な実施形態によるビデオ・レンダリング・システムの概略ブロック図である。 例示的な実施形態によるオーディオ・レンダリング・システムの概略ブロック図である。 例示的な実施形態によるビデオ・データ・キューイングおよび復号方法のフローチャートである。 例示的な実施形態によるビデオ・データ・レンダリング方法のフローチャートである。 例示的な実施形態によるオーディオ・データ・キューイングおよび復号方法のフローチャートである。 特定の実施形態によるオーディオ・レンダラ・インターフェースを実行するための方法のフローチャートである。 別の実施形態による、オーディオおよびビデオ・データをキューイングおよび復号し、ビデオ・データをレンダリングし、オーディオ・レンダラ・インターフェースを実行するための方法のフローチャートである。 特定の例示的な実施形態による、ビデオ・データをフェッチするための方法のフローチャートである。 特定の例示的な実施形態による、フレーム補間をダウンサンプリングするための技法の概略図である。 特定の例示的な実施形態による、フレーム補間をダウンサンプリングするための技法の概略図である。 図9Aおよび図9Bによるフレーム補間で使用するのに適した特定の実施形態によるアルファブレンドされた画像を作成するための方法のブロック図である。 スクリプトが、解釈されたとき、ユーザ・コンピューティング・デバイスの1つまたは複数の特性、および/またはサーバとユーザ・コンピューティング・デバイスとの間のネットワーク接続に基づいてビデオコンテンツのレンダリングを調整する、ビデオコンテンツをレンダリングするための方法のブロック図である。
以下の説明を通して、当業者に、より完全に理解してもらうために、特定の詳細が記載されている。しかし、本開示を不必要にわかりにくくすることを避けるために、周知の要素は詳細に示されても述べられてもいないことがある。したがって、この説明および図面は、制限的ではなく例示的な意味で考えられるべきである。
本開示および特許請求の範囲では、以下の技術用語は、以下に記載の対応する定義を有する。
・ アプリケーション・プログラムは、アプリケーション、機能、または演算を、それ自体で、かつ別のアプリケーション・プログラムの支援なしに独立して実行することが可能なコンパイル済みプログラム(実行可能オブジェクト・コード・モジュール、および/または他のコンパイル済みコード・セグメント)を意味する。
・ アドオンは、特定の機能(たとえば、ビデオ・コンテンツ・レンダリング)を「ホスト」アプリケーション・プログラムに追加するコンパイル済みプログラム(すなわち、実行可能オブジェクト・コード・モジュール、および/または他のコンパイル済みコード・セグメントなど)を意味する。
・ スクリプトは、一般に、しかし必ずしもそうではないが人間が読めるものであり、コンパイルされることなしにアプリケーション・プログラムのスクリプト・インタプリタによって解釈される非コンパイル型の一連のクロスプラットフォーム命令を意味する。
・ スクリプトがアプリケーション・プログラムによって解釈され、ある機能を「直接」実行するとき、それは、その機能の表現を含むスクリプトが、その機能を実行するためにアプリケーション・プログラム(または、何らかの他のアプリケーション・プログラムまたはアドオン)によって提供される予めコンパイルされたモジュールに依拠することなしに、それ自体で機能を実現するように解釈されることを意味する。
・ アプリケーション・プログラム(インターネット・ブラウザなど)がある機能を「ネイティブに」実行するとき、それは、アプリケーション・プログラムがそれ自体で(コンピューティング・デバイスのハードウェアおよび/またはオペレーティングシステムの可能な支援と共に)その機能を実行し、しかしアドオンに依拠する必要がないことを意味する。アプリケーション・プログラムは、アドオンの予めコンパイルされたコード・モジュールではなく、それ自体の予めコンパイルされたコード・モジュールを要求することによって機能をネイティブに実行することができる。アプリケーション・プログラムは、スクリプトの指示の元で機能をネイティブに実行することができる。
本発明の特定の実施形態は、アプリケーション・プログラム(インターネット・ブラウザなど)によって解釈されるクロスプラットフォーム・スクリプトを使用して、ユーザ・コンピューティング・デバイス上でビデオコンテンツをレンダリングし、ビデオコンテンツを実行するビデオおよび/またはオーディオ・データをネイティブにレンダリングするための方法およびシステムを提供する。ビデオ・レンダリング・プロセスの特定の機能は、スクリプトが解釈されるとき、スクリプトによって直接実行することができる。この説明では、スクリプトという用語は、一般に、しかし必ずしもそうではないが人間が読めるものであり、コンパイルされることなしにアプリケーション・プログラムのスクリプト・インタプリタによって解釈される非コンパイル型の一連のクロスプラットフォーム命令を意味する。典型的なアプリケーション・プログラムおよびアドオンは、実行前にマシン・コードにコンパイルされる。スクリプトは、従来のコンパイル済みコード・アプリケーション・プログラムやアドオンとは対照的なものである。なぜなら、スクリプトはコンパイルされないからである。また、スクリプトはJavaバイトコードとも異なる。バイトコードは、解釈される前に一部が予めコンパイルされ、解釈されるときマシン・コードにコンパイルされる。対照的に、スクリプトは、解釈されるときマシン・コードにコンパイルされない。この説明では、スクリプトが解釈されるとき、アプリケーション・プログラムのスクリプト・インタプリタがスクリプト化された命令を読み取り、そのスクリプト化された命令をマシン・コードにコンパイルすることなしにそのスクリプト化された命令を実行することを意味する。
非限定的な例として、いくつかの実施形態では、スクリプトは、ハイパーテキスト・マークアップ言語(HTML)ドキュメント内に埋め込まれてもよく、インターネット・ブラウザ・アプリケーション・プログラムがHTMLドキュメントをレンダリングし、それによりHTMLページを表示するとき、ユーザ・コンピューティング・デバイス上で動作するインターネット・ブラウザ・アプリケーション・プログラムによって解釈されてもよい。ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザは、ブラウザに入力されるユニバーサル・リソース・ロケータ(URL)によって指定されるインターネット上のロケーションからHTMLドキュメントを受け取ることができる。大部分のインターネット・ブラウザ・アプリケーション・プログラムは、スクリプトをネイティブに解釈する1つまたは複数のネイティブ・スクリプト・インタプリタを含む。非限定的な例として、スクリプトは、ECMAScript、JavaScript(登録商標)、Jscript、ActionScript、および/またはHTML標準(たとえば、HTML5)に固有のスクリプティング構文など、クロスプラットフォーム・スクリプティング構文で書かれてもよい。この説明では、アプリケーション・プログラム(インターネット・ブラウザなど)がある機能または演算をネイティブに実行ずるとき、それは、アプリケーション・プログラムそれ自体が(コンピューティング・デバイスのハードウェアおよび/またはオペレーティングシステムの可能な支援と共に)その機能を実行し、しかしアドオンに依拠する必要がないことを意味する。アプリケーション・プログラムは、アドオンの予めコンパイルされたコード・モジュールではなく、それ自体の予めコンパイルされたコード・モジュールを要求することによって機能をネイティブに実行することができる。
本発明の特定の態様は、アプリケーション・プログラム(インターネット・ブラウザなど)によって解釈され、ブラウザにユーザ・コンピューティング・デバイス上でビデオ・データをネイティブにレンダリングさせることができるスクリプトを提供する。いくつかの実施形態では、ユーザ・コンピューティング・デバイスは、ネイティブ・スクリプト・インタプリタを含むことができる、または別の方法でスクリプトを解釈することが可能である異なるアプリケーション・プログラム(たとえば、インターネットブラウザ以外)を使用してもよい。そのような実施形態では、スクリプトは、そのような他のアプリケーション・プログラムによって解釈されてもよく、そのように解釈されるとき、そのような他のアプリケーション・プログラムにユーザ・コンピューティング・デバイス上でビデオ・データをネイティブにレンダリングさせてもよい。話を簡単にするために、また一般性を失わずに、本願の残りの部分は、インターネットブラウザによって解釈され、インターネットブラウザにビデオ・データをネイティブにレンダリングさせるスクリプトを参照することがある。インターネットブラウザに言及することは、インターネットブラウザではなく、1つまたは複数のスクリプト・インタプリタを含む、または別の方法でスクリプトをネイティブに解釈することが可能であり得る他のアプリケーション・プログラムを含むと理解されたい。非限定的な例として、そのようなスクリプトは、必ずしもそうである必要はないが、ハイパーテキスト転送プロトコル(HTTP)を使用して通信されるドキュメント内で提供されてもよい。
いくつかの実施形態では、アプリケーション・プログラムは、スクリプトを解釈し、それにより、解釈されたスクリプトに(ビデオおよび/またはオーディオ・レンダリングに関連する)1つまたは複数の機能を直接実行させることができる。この説明では、スクリプトがアプリケーション・プログラムによって解釈され、ある機能を直接実行するとき、それは、スクリプトがその機能それ自体を実行するように解釈されることを意味する。スクリプトがアプリケーション・プログラムによって解釈され、ある機能を直接実行するとき、解釈されたスクリプトは、その機能の表現を含み、その機能を実行するためにアプリケーション・プログラム(または、何らかの他のアプリケーション・プログラムまたはアドオン)によって提供される予めコンパイルされたモジュールに依拠しない。たとえば、いくつかの実施形態では、インターネットブラウザは、スクリプトを解釈し、解釈されたスクリプトに直接、ビデオコンテンツをその符号化されたフォーマットからフレーム画像に復号する復号機能を実行させ、フレーム画像を、インターネットブラウザによってネイティブにレンダリングすることができるフォーマットに再フォーマット化させ、かつ/またはビデオおよびオーディオ・レンダリングのタイミングを制御もしくは同期させることができる。
特定の実施形態は、インターネットブラウザによって解釈され、解釈されたスクリプトに直接、ビデオ・データを一連の個々のフレーム画像に復号させ、その一連のフレーム画像を一連のビットマップとしてユーザ・コンピューティング・デバイスのディスプレイ上にネイティブに表示させる、HTMLドキュメント内に埋め込まれたスクリプトを使用することを含む。同様に、いくつかの実施形態は、インターネットブラウザによって解釈され、解釈されたスクリプトにオーディオ・データを直接復号させ、その復号済みオーディオ・データをユーザ・コンピューティング・デバイス上でネイティブに再生させるスクリプトをさらに使用することを含む。ビデオコンテンツがビデオ・データとオーディオ・データを共に含む場合、スクリプトは、インターネットブラウザによって解釈され、フレーム画像の表示を、復号済みオーディオ・データの再生と同期し、それによりオーディオビジュアル・ビデオ・コンテンツ(たとえば、映画)を、ユーザが体験したいと期待するようにレンダリングしてもよい。
特定の実施形態は、前述のスクリプトをベースとするビデオ・レンダリング技法と共に使用するのに適したビデオコンテンツを符号化するための方法およびシステムを提供する。
コンピュータ、および同様のユーザ・コンピューティング・デバイスは、一般に、マイクロプロセッサのタイプ間で変わる可能性があるマシンまたはオブジェクトコードを理解する。ソフトウェア・エンジニアは、通常、Cのようないわゆる「上位」言語でプログラムし、次いで、上位コード(一般に、ソースコードと呼ばれる)を前もってマシンまたはオブジェクトコードを理解に変換することになるコンパイラを使用する。上位言語でプログラムし、次いで人間が読めるソースコードをコンパイル済みの実行可能なバージョンにコンパイルすることに伴う欠点は、プログラムのコンパイル済みバージョンがポータブルまたは「クロスプラットフォーム」でないことである。コンパイル済みコードは、ターゲット・ユーザ・コンピューティング・プラットフォーム(ユーザ・コンピューティング・デバイスのハードウェアおよびオペレーティングシステム)のために特に作成される。これは、上述のように状況によって問題になり得る。
この問題に対処するために、クロスプラットフォーム・コンピュータ言語、たとえばJava(登録商標)が提案されている。このコンピュータ言語は、ユーザ・コンピューティング・デバイスにて受け取られる前にいわゆるバイトコードに一部が予めコンパイルされ、バイトコードを理解することになる追加の予めコンパイルされたプログラム(Java仮想マシン(JVM))をユーザ・コンピューティング・デバイスが呼び出すことができることを期待する。コンパイル済みコードであるため、バイトコードをユーザ・コンピューティング・デバイスにて解釈するJVMは、ユーザ・コンピューティング・プラットフォーム特有のものである。JVMは、特定のユーザ・コンピューティング・デバイスのプラットフォームにとって使用可能でない可能性があり、または、特定のプラットフォームについて機能が制限される可能性がある。したがって、Java(登録商標)(および、仮想マシンに依拠する同様のコンピュータ言語)の使用は、クロスプラットフォーム動作可能性問題を個々の問題からJVMにシフトするにすぎない。すなわち、予めコンパイルされたプログラムが様々な特定のユーザ・コンピューティング・プラットフォームを標的とする必要があることの代わりに、JVMは、特定の様々なユーザ・コンピューティング・プラットフォームを標的とする必要がある。
コンパイル済み言語、およびJava(登録商標)のような一部がコンパイルされた言語とは異なり、スクリプトはコンパイルされない。スクリプトは、様々なスクリプティング構文(たとえば、ECMAScript、JavaScript(登録商標)、Jscript、ActionScript、および/またはHTML標準に固有のスクリプティング構文など)に従って書かれた一連の命令(たとえば、スクリプト・タグ)を含む。スクリプト化された命令はコンパイルされず、ユーザ・コンピューティング・デバイス上でアプリケーション・プログラムによって(コンパイルされることなしに)解釈され、アプリケーション・プログラムにある種のアクションを実行させる。特にプロセッサ集約的なタスクについてスクリプトを使用することに伴う難点は、解釈が実行時に行われるため、スクリプトの解釈が(たとえば、コンパイル済みプログラムに比べたとき)比較的遅いことである。したがって、本発明者らの知る限り、一連のスクリプト・タグを含むスクリプトは、これまで、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザにビデオコンテンツをネイティブにレンダリングさせるために使用されていない。上述のように、従来技術のビデオ・レンダリング技術は、特定のハードウェアおよびソフトウェア・プラットフォームのためにコンパイルされた、予めコンパイルされたメディア・プレーヤ、アドオン、および/またはJVMなどに依拠する。
図1は、特定の実施形態によるユーザ・コンピューティング・デバイス(図1には明確に示されていない)上でビデオコンテンツをレンダリングするためのスクリプト10の機能コンポーネントを示す概略ブロック図である。スクリプト10は、非限定的な例として、ECMAScript、JavaScript(登録商標)、Jscript、ActionScriptなど、クロスプラットフォーム・スクリプト構文で書かれた一連のスクリプティング・タグを含むことができる。レンダリング・エンジン・スクリプト10が書かれているスクリプティング構文は、好ましくは、主要なオペレーティングシステム、インターネットブラウザ、および/または他のアプリケーション・プログラムによって広くサポートされ、その結果、スクリプト10は、プラットフォームに依存せず、それにより多種多様なユーザ・コンピューティング・デバイス(非限定的な例として、デスクトップ、ラップトップ、タブレット、スマートフォン、パーソナル・コンピューティング・デバイス、および/または特定用途向けデバイスなど)上で動作する。上述のように、ユーザ・コンピューティング・デバイスは、多種多様なプラットフォームを有することができ、スクリプト10は、多種多様なプラットフォームを有する多種多様なユーザ・コンピューティング・デバイス上で解釈されることが可能である。スクリプト10は、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってスクリプト10が解釈されたときスクリプト10がインターネットブラウザに図1に示されている機能コンポーネントをネイティブに提供させるように、HTMLドキュメント内に埋め込まれてもよい。いくつかの実施形態では、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザは、スクリプト10をネイティブに解釈することができ、スクリプト10は、ユーザ・コンピューティング・デバイスがどのようなCODEC用の追加の予めコンパイルされたデコーダ、メディア・プレーヤ・アドオン、または他のメディア・プレーヤ・アプリケーションをも、インターネットブラウザと並行に、またはそれと共に動作させるためにダウンロード、インストール、または実行することを必要とせずに、インターネットブラウザにビデオ・データをネイティブにレンダリングさせることができる。
特定の一実施形態では、HTMLドキュメントは、スクリプト10、およびビデオ・コンテンツ・ファイルに対する参照を含む。スクリプト10は、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによって解釈され、インターネットブラウザにビデオコンテンツをレンダリングさせることができる。スクリプト10の解釈の結果としてレンダリングされるビデオコンテンツは、ネットワーク通信リンクを介して(たとえば、インターネットから、または、ユーザ・コンピューティング・デバイスがホスト・サーバまたはピア・デバイスを介して通信することが可能な何らかの他のネットワークから)ストリーミング(または別の方法で送信)されても(12)、好適なネットワーク通信リンクを介してダウンストリーム・ネットワーク・キャッシュからアクセスされても(たとえば、ISP、プロキシ・サーバ、または何らかの他の仲介者によってキャッシュされる)(14)、ローカルでキャッシュされても(たとえば、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってローカル・キャッシュにキャッシュされる、または別の方法でユーザ・コンピューティング・デバイスにとってアクセス可能なローカル・キャッシュにキャッシュされる)(15)、かつ/またはローカル・ファイル(たとえば、ユーザ・コンピューティング・デバイスにとってアクセス可能なローカル・メモリ内に記憶されたファイル)に含まれてもよい(16)、などである。
スクリプト10は、解釈されたとき、インターネットブラウザにデータ受信要素20を提供させることができ、データ受信要素20は、(ストリーミングまたは別の方法でダウンロードされた(12)、1つまたは複数のダウンストリーム・キャッシュからアクセスされた(14)、ローカルでキャッシュされた(15)、ローカルで記憶された(16)、および/またはその他(17))ビデオコンテンツを受信し、符号化されたビデオコンテンツにアクセスし、当初、単一のデータ・ソースに含まれていた可能性がある様々なタイプのデータ(たとえば、ビデオ・データ22および任意選択でオーディオ・データ24、画像データ26、ならびにメタデータ(図示せず))を逆多重化(または別の方法で分離)する。
典型的には、データ受信ブロック20によってアクセスされたビデオ・データ22は、何らかのCODEC方式を使用して符号化されることになる。したがって、図の実施形態のスクリプト10は、ブラウザによって解釈されるとき、インターネットブラウザに復号要素30を提供させる。復号要素30は、ビデオ・データ22を復号し、それにより復号済み(また典型的には解凍された)ビデオ・データ42を得るようにネイティブに動作する。いくつかの実施形態では、ブロック30の復号機能は、スクリプトによって直接実行されてもよい。復号要素30によって実行される特定の復号および解凍方式は、当然ながらビデオ・データ22を符号化および圧縮するために使用された符号化方式、またはCODECに依存することになる。したがって、符号化方式の仕様、および対応する復号方式は、スクリプト10の開発者にとって既知とすることができる。これらの符号化方式および復号方式(また、特に復号要素30によって実行される復号方式)は、オープンソース、または別の形で公然と使用可能な標準を含むことができるが、これは必須ではない。
ビデオ・データ22と同様に、データ受信ブロック20によってアクセスされるオーディオ・データ24も、何らかのCODEC方式を使用して符号化されることになる。したがって、図の実施形態のスクリプト10は、実行されたとき、インターネットブラウザに復号要素32を提供させる。復号要素32は、オーディオ・データ24を復号し、それにより復号済み(また典型的には解凍された)オーディオ・データ44を得るようにネイティブに動作する。いくつかの実施形態では、ブロック32の復号機能は、スクリプトによって直接実行されてもよい。復号要素32によって実行される特定の復号および解凍方式は、当然ながらオーディオ・データ24を符号化および圧縮するために使用されたCODECに依存することになる。したがって、符号化方式の仕様、および対応する復号方式は、スクリプト10の開発者にとって既知とすることができる。これらの符号化方式および復号方式(また、特に復号要素32によって実行される復号方式)は、オープンソース、または別の形で公然と使用可能な標準を含むことができるが、これは必須ではない。上述のビデオ・データ22のものと同様に、知的所有権のあるフォーマットで符号化された圧縮済みオーディオ・データは、オーディオ・データ24を提供するために公然と使用可能なフォーマットに復号されてもよく、その結果、復号要素32は、公然と見ることができるスクリプト10を実行することによって実現されてもよい。
また、スクリプト10は、解釈されたとき、インターネットブラウザにビデオ表示要素50を提供させ、ビデオ表示要素50は、ユーザ・コンピューティング・デバイスのディスプレイ70上で、復号済みビデオ・データ・ストリーム42からフレーム画像をネイティブに表示する。符号化されたビデオ・データ22が復号ブロック30において復号され、(たとえば、一連のフレーム画像を含む)復号済みビデオ・ストリーム42を提供した後で、復号済みビデオ・ストリーム42は、表示要素50によってユーザ・コンピューティング・デバイスのディスプレイ上で表示される。いくつかの実施形態では、表示要素50は、いわゆるcanvas要素またはcanvasタグを使用することを必要とする。canvasタグは、ユーザ・コンピューティング・デバイスのディスプレイ(たとえば、ディスプレイ70)上で(指定された画素高さおよび幅の)2D形状およびビットマップ画像の動的、スクリプト可能なレンダリングを可能にするHTML5タグである。canvasタグを使用し、人間にビデオであると知覚される十分に速いフレームレートでビットマップ画像を表示することができる。
いくつかの実施形態では、表示要素50は、canvasタグを使用し、復号済みビデオ・データ・ストリーム42のフレーム画像のサブセットを表示することを必要とする。たとえば、復号済みビデオ・ストリーム42のビットマップ・フレームは、オーディオ・データ44の再生より遅れつつあるレートで表示要素50がビットマップ画像を表示していることを任意選択の同期ブロック60(下記でより詳細に述べる)が示す状況で、および/または使用可能な処理リソースにより、復号済みビデオ・ストリーム42のフレーム画像のサブセットを表示することが望ましいものになる可能性がある他の状況で、落とされる可能性がある。いくつかの実施形態では、フレーム画像は、たとえばオーディオ・データ44の再生より進みつつあるレートで表示要素50が画像を表示していることを同期機能60が示すとき、ユーザ・コンピューティング・デバイスのディスプレイ上で持続させられてもよい。表示要素50が、canvasタグを使用し、復号済みビデオ・ストリーム42のフレーム画像のサブセットを表示することを必要とする場合、表示要素50および/または同期ブロック60は、復号済みビデオ・ストリーム42内から表示するために特定のフレーム画像を選択することを必要とする可能性がある。
いくつかの実施形態では、スクリプト10を実行することにより、インターネットブラウザは、任意の追加の予めコンパイルされたアプリケーション・プログラムまたはアドオンを呼び出す、または他の方法で実行することを必要とせずにその機能(たとえば、復号済みビデオ・ストリーム42内からフレーム画像(たとえば、ビットマップ・フレーム画像)を表示すること、および/または任意選択で、復号済みビデオ・ストリーム42内から表示するためにフレーム画像を選択すること)がインターネットブラウザによってネイティブに実行される表示ブロック50を提供する。
デジタル・デバイスの処理力が絶えず増大しているので、スクリプト10の実行によって提供される表示要素50は、カスタマイズされたビデオ再生アプリケーションを使用する従来のビデオ再生のフレームレートに迫るフレームレートでビットマップ画像を表示することが可能である。いくつかの実施形態では、表示要素50は、640×480画素のビットマップ画像を40フレーム/秒を超えるフレームレートで表示することが可能である。いくつかの実施形態では、640×480画素のビットマップ画像を50フレーム/秒を超えるフレームレートで表示することが可能である。
図の実施形態では、ビデオコンテンツは、任意選択の画像データ26を含む。表示要素50は、やはり画像データ26をユーザ・コンピューティング・デバイス70上でネイティブに表示させることができる。大部分のインターネットブラウザは、表示要素50の提供に関連するスクリプト10の一部分からの命令を受けてブラウザによって呼び出すことができる、JPEG画像データを表示するためのネイティブ機能を含む。
スクリプト10は、実行されたとき、復号済みオーディオ・ストリーム44をネイティブに再生するためのオーディオ再生要素52をも提供する。いくつかの実施形態では、復号済みオーディオ・ストリーム44は、WAVフォーマットのオーディオ・ストリームを含む。大部分のインターネットブラウザは、オーディオ再生要素52に関連するスクリプト10の一部分からの命令を受けてブラウザによって呼び出すことができる、WAVフォーマットのオーディオ・ストリームを再生するためのネイティブ機能を含む。このネイティブ・オーディオ再生機能は、復号済みオーディオ・ストリーム44の再生に関連する時間基準情報をも含む、またはそれにアクセスすることができる。この再生時間基準情報は、下記で述べる同期ブロック60にフィードバックされてもよい。
スクリプト10は、実行されたとき、任意選択で、インターネットブラウザに同期ブロック60を提供させることができ、同期ブロック60は、オーディオ再生要素52による復号済みオーディオ・データ44の再生と、表示要素50による復号済みビデオ・データ42からのフレーム画像の表示との間で許容公差内に同期を維持する。いくつかの実施形態では、同期ブロック60は、基準タイミング点(たとえば、オーディオ・データ44の再生の開始)、および/またはオーディオ再生ブロック52から得たタイムスタンプ情報(オーディオ再生時間基準という)を利用する。いくつかの実施形態では、同期ブロック60は、表示要素50に、フレーム画像を表示するために選択する前に、オーディオ再生ブロック52からのオーディオ再生時間基準をチェックさせることができる。次いで、同期ブロック60は、表示要素50に、オーディオ再生基準時間に対応するフレーム画像を選択させ、選択されたフレーム画像をcanvasタグを使用してビットマップとして表示させることができる。復号済みオーディオ・データ44の再生が、解凍されたビデオ・データ42内からのフレーム画像の表示より進みつつあることをオーディオ再生要素52からのオーディオ再生基準時間が示す場合には、同期ブロック60は、表示要素50に1つまたは複数のフレーム画像をスキップさせることができる。復号済みオーディオ・データ44の再生が、解凍されたビデオ・データ42内からのフレーム画像の表示より遅れつつあることをオーディオ再生要素52からのオーディオ再生基準時間が示す場合には、同期ブロック60は、表示要素50に、フレーム画像の更新時に遅延を引き起こさせる(たとえば、一部のフレーム画像を持続させる)ことができる。このようにして、表示要素50によって表示されるビデオ・データを、オーディオ再生要素52のオーディオ再生と同期させることができる。
制御パネル80の機能を、たとえばグラフィカル・ユーザ・インターフェースを介してユーザ(図示せず)に提供することができる。制御パネル80により、ユーザは、スクリプト10によってビデオ・データ42および/またはオーディオ・データ44の再生を制御することができる。非限定的な例として、制御パネル80により、ユーザは、データを再生すること、データの再生を休止すること、データ内であるロケーションを適時に探すこと、再生のボリュームを調整すること、再生の速度を調整することなどを制御することができる。図の実施形態では、制御パネル80は、スクリプト10の外側に設けられているが、これは必須ではない。いくつかの実施形態では、スクリプト10は、インターネットブラウザに制御パネル80を提供させることができる。
図2Aは、例示的な実施形態によるビデオ・レンダリング・システム100の概略ブロック図である。いくつかの実施形態では、ビデオ・レンダリング・システム100は、少なくとも一部には、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザ(または他のアプリケーション・プログラム)により具現化されるスクリプト・インタプリタによって解釈されるクロスプラットフォーム・スクリプトを使用して実行される。いくつかの実施形態では、ビデオ・レンダリング・システム100の一部が、スクリプトを解釈するインターネットブラウザによってネイティブに実行される。いくつかの実施形態では、スクリプトは、ビデオ・レンダリング・システム100の機能の一部を直接実行または実行する。
図の実施形態では、ビデオ・レンダリング・システム100は、ビデオコンテンツ116を入手する。いくつかの実施形態では、ビデオコンテンツ116は、ネットワークアクセス可能なホスト・サーバ、ネットワークアクセス可能なキャッシュ、またはネットワークアクセス可能なピア・デバイス上に存在する。他の実施形態では、ビデオコンテンツ116は、ユーザ・コンピューティング・デバイスにとってローカルで使用可能なものであってもよい。この説明の残りの部分では、ビデオコンテンツ116は、(一般性を失わずに)ホスト・サーバ上に存在すると仮定される。特定の実施形態では、ビデオ・レンダリング・システム100は、サーバにてホストされている特定のビデオコンテンツ116を識別するURLを含むHTTP要求をサーバに送信することによって(たとえば、サーバからビデオコンテンツ116の「ダウンロード」または「ストリーム」を開始することによって)、ビデオコンテンツ116を取り出す。上述のように、ビデオコンテンツ116は、ビデオ・データ114、ならびにオーディオ・データ164、画像データ(図示せず)、および/またはメタデータ(図示せず)など他のデータを含むことができる。図の実施形態では、ビデオ・レンダリング・システム100に送られるビデオコンテンツ116は、一般に、任意のそのようなデータを含むことができ、そこに含まれるビデオ・データ114にアクセスするためにビデオ・レンダリング・システム100によって逆多重化される。他の実施形態では、ビデオコンテンツ116は、好適なデマルチプレクサ(図示せず)によってビデオ・レンダリング・システム100にて受け取られる前に逆多重化し、ビデオ・データ114をビデオコンテンツ116から分離し、ビデオ・レンダリング・システム100が逆多重化されたビデオ・データ114に直接アクセスできるようにしてもよい。そのようなデマルチプレクサは、少なくとも一部には、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによって解釈されるクロスプラットフォーム・スクリプトを使用して実現されてもよい。
図の実施形態では、ビデオ・レンダリング・システム100は、ビデオコンテンツ116からのビデオ・データ114を、ビデオ・データ・キュー112を具現化するデータ構造内に格納させるように、またビデオ・データ・キュー112を監視するように構成されたビデオ・データ・キュー・モニタ110を備える。いくつかの実施形態では、ビデオ・キュー・モニタ110は、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザ内で実現される。いくつかの実施形態では、ビデオ・データ114をビデオ・データ・キュー112内に格納することは、ビデオ・データ114をオーディオ・データ164、およびビデオコンテンツ116の一部を形成することができる他のデータ(たとえば、画像、および/またはメタデータなど)から逆多重化することを含む。この逆多重化機能は、ビデオ・データ・キュー・モニタ110によって実現されてもよい。他の実施形態では、ビデオ・データ・キュー・モニタ110は、この逆多重化機能を実行する必要がない。上述のように、いくつかの実施形態では、ビデオ・データ114は、ビデオ・レンダリング・システム100によって受け取られる前に別のデマルチプレクサ(図示せず)によって逆多重化されてもよい。他の実施形態では、ビデオ・データ・キュー112内に格納されたデータは、(依然として逆多重化されていない)ビデオコンテンツ116を含み、ビデオ・データ114は、デコーダ122によって復号されている間にオーディオ・データ164および/または他のデータから逆多重化されてもよい。
システム100は、ビデオ・デコーダ122を備える。ビデオ・デコーダ122は、ビデオ・データ114を復号し、フレーム画像を提供する。特定の実施形態では、ビデオ・デコーダ122は、スクリプトがインターネットブラウザによって解釈されるときスクリプトによって直接実行される。システム100は、フレームバッファ・モニタ120を備える。図の実施形態では、フレームバッファ・モニタ120は、デコーダ122にビデオ・データ・キュー112内に含まれるビデオ・データ114を復号させるように、またフレーム画像プロセッサ136にこれらのフレーム画像を処理させ、それによりフレーム画像124を生成するように構成され、フレーム画像124は、フレーム画像バッファ126を具現化するデータ構造内に格納され、フレーム画像レンダラ132によって表示するのに適したフォーマットにある。フレームバッファ・モニタ120は、インターネットブラウザによってネイティブに実行されてもよい。いくつかの実施形態では、フレームバッファ・モニタ120の機能は、スクリプトがインターネットブラウザによって解釈されるときにスクリプトによって直接実行される。フレーム画像124は、順次(たとえば、ビデオ・データ114のフレームレートとすることができる好適なフレームレートで)レンダリングされたとき、人間にビデオであると知覚される画像のシーケンスを含む。フレームバッファ・モニタ120は、デコーダ122および/またはフレーム画像プロセッサ136に、少なくともある閾値数のフレーム画像124がフレーム画像バッファ126内にあるようになるまで(たとえば、フレーム画像バッファ126が一杯になるまで)、ビデオ・データ114からフレーム画像124を絶えず復号および処理させるように構成されてもよい。
図の実施形態では、任意選択のフレーム画像プロセッサ136は、ビデオ・デコーダ122によってフレーム画像140(たとえば、ビデオ・データ114から復号されたフレーム画像140)を受け取り、そのようなフレーム画像140を処理し、フレーム画像レンダラ132によって使用するのに適したフォーマットでフレーム画像124を生成する。特定の実施形態では、フレーム画像プロセッサ136の機能の一部が、スクリプトがインターネットブラウザによって解釈されるとき、スクリプトによって直接実行される。デコーダ122から出力されるフレーム画像140は、非限定的な例としてJPEG、GIF、PNG、TIFF、RAW、および/またはBMPなどを含めて、任意の好適なグラフィック・ファイル・フォーマットの画像ファイルを含むことができる。いくつかのインターネットブラウザは、可能な画像ファイル・フォーマットの制限されたサブセットをネイティブに表示することが可能である。たとえば、ほとんどのインターネットブラウザは、JPEGおよびGIF画像ファイル・フォーマットをネイティブに表示することが可能であるが、多数のインターネットブラウザは、TIFFファイル・フォーマットを有する画像をネイティブに表示することができない。そのような場合、フレーム画像プロセッサ136は、フレーム画像140を、インターネットブラウザによってネイティブに表示可能な1つまたは複数の画像ファイル・フォーマット(たとえば、GIFおよび/またはJPEG)を有する、ブラウザによってレンダリング可能なフレーム画像144に変換するフレーム画像コンバータ142を備えてもよい。フレーム画像コンバータ142の機能は、スクリプトがインターネットブラウザによって解釈されるときスクリプトによって直接実行されてもよい。フレーム画像140が、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに表示することができるファイル・フォーマットにすでにある状況では、フレーム画像コンバータ142は必要とされない、またはバイパスしてもよいことを理解されたい。
フレーム画像144は、典型的には、いわゆるバイナリ・データ・フォーマットで表される。いくつかのインターネットブラウザは、バイナリ・データ・フォーマットの画像がスクリプト・インタプリタから転送された、または別の方法で渡されたとき、そのような画像を受け入れることが可能である。そのような状況では、フレーム画像144は、フレーム画像プロセッサ136によって、スクリプト・インタプリタからインターネットブラウザに渡されるのに適したフォーマットにさらに処理されてもよい。図の実施形態では、この処理機能は、フレーム画像144を処理しコンテンツ転送符号化済みフレーム画像146を生成するコンテンツ転送エンコーダ145によって実現される。コンテンツ転送エンコーダ145の機能は、スクリプトがインターネットブラウザによって解釈されるときスクリプトによって直接実行されてもよい。特定の一実施形態では、コンテンツ転送エンコーダ145は、フレーム画像144を処理し、ベース64符号化済みフレーム画像146を生成するベース64エンコーダを含む。これは必須ではない。他の実施形態では、ベース64符号化の代わりに、他のコンテンツ転送符号化技法が使用されてもよく、フレーム画像146は、何らかの他の好適なコンテンツ転送符号化フォーマットに従って符号化されてもよい。
次いで、フレーム画像プロセッサ136は、コンテンツ転送符号化済みフレーム画像146を使用し、画像オブジェクト・クリエータ148を使用して画像オブジェクトを作成することができる。いくつかの実施形態では、画像オブジェクト・クリエータ148は、コンテンツ転送符号化済みフレーム画像146を使用し、それぞれがRGB画素値を含むCanvasPixelArray画像オブジェクトの形態のフレーム画像124を作成するために、インターネットブラウザによってネイティブに実行されるCanvas要素などをスクリプト・インタプリタに呼び出させることを必要とする。他の実施形態では、画像オブジェクト・クリエータ148は、コンテンツ転送符号化済みフレーム画像146を使用し、他の画像オブジェクト・フォーマットでフレーム画像124を作成することができる。いくつかの実施形態では、コンテンツ転送符号化済みフレーム画像146は、画像オブジェクト・クリエータ148(など)によって、以下の形態を有するスクリプト命令を使用してブラウザに渡されてもよい。
Figure 2014531142
上述のように、フレーム画像124は、フレーム画像レンダラ132によって表示するのに適したフォーマットにあるものとすることができ、フレーム画像バッファ126を具現化するデータ構造内に格納されてもよい。
図の実施形態では、復号済みフレーム画像140、ブラウザによってレンダリング可能なフレーム画像144、およびコンテンツ転送符号化済みフレーム画像146は、それぞれ復号済みフレーム画像バッファ138、ブラウザによってレンダリング可能なフレーム画像バッファ141、およびコンテンツ転送符号化済みフレーム画像バッファ143内に格納されて示されている。そのようなバッファ138、141、143は、いくつかの実施形態において、特に(しかし限定しないが)ビデオ・デコーダ122、フレーム画像コンバータ142、コンテンツ転送エンコーダ145、および/または画像オブジェクト・クリエータ148の機能が、(下記でより詳細に述べる)離散的な反復で互いに独立して実行されるときに有用である。他の実施形態では、そのようなバッファ138、141、143は、必須ではない−すなわち、各反復において、ビデオ・デコーダ122は、単一の復号済みフレーム画像140を作成することができ、そのフレーム画像コンバータ142は、単一の対応する、ブラウザによってレンダリング可能なフレーム画像144に変換することができ、そのベース64エンコーダは、単一の対応するコンテンツ転送符号化済みフレーム画像146に符号化することができ、その画像オブジェクト・クリエータ148は、それを使用し、フレーム画像バッファ126に追加されることになる単一のフレーム画像オブジェクト124を作成することができる。
図の実施形態のフレーム画像プロセッサ136は、任意選択である。他の実施形態では、フレーム画像プロセッサ136の機能のどれでも、デコーダ122および/またはビデオ再生インターフェース130(下記でさらに述べる)に組み込むことができる。非限定的な例として、フレーム画像コンバータ142の機能をデコーダ122に組み込むことができ、画像オブジェクト・クリエータの機能をビデオ再生インターフェース130に組み込むことができる。別の非限定的な例では、フレーム画像プロセッサ136の全部の機能がデコーダ122に組み込まれてもよい。
ビデオ・データ・キュー・モニタ110は、ビデオ・データ114がデコーダ122によって復号された後で、ビデオ・データ・キュー112からビデオ・データ114(またはビデオ・コンテンツ116)をクリアするように構成されてもよい。いくつかの実施形態では、ビデオ・データ・キュー・モニタ110は、デコーダ122によってこれから復号されなければならないビデオ・データ・キュー112内のビデオ・データ114の量に基づいてビデオコンテンツ・ソース(たとえば、遠隔サーバ)にビデオコンテンツ116(および/またはそこに含まれるビデオ・データ114)を要求するように構成される。たとえば、ビデオ・データ・キュー・モニタ110は、ビデオ・データ・キュー112が含むものが、デコーダ122によってこれから復号されなければならないビデオ・データの閾値量−たとえば、フレーム画像124の好適な閾値数に対応するビデオ・データ114の閾値量より少ないときはいつでもビデオコンテンツ116および/またはビデオ・データ114を要求するように構成されてもよい。ビデオ・データ114が既知の長さのビデオ・セグメント(たとえば、予め記録され番組、ファイル・クリップ、映画など)の一部分を含むとき、またはビデオ・データ114の終点が別の方法で認識可能であるとき、ビデオ・データ・キュー・モニタ110は、ビデオ・データ114の終点を構成するビデオ・データ114の一部分がビデオ・データ・キュー112内に配置された後で、ビデオコンテンツ116および/またはビデオ・データ114を要求するのを停止するように構成されてもよい。
システム100は、ビデオ再生インターフェース130を備える。ビデオ再生インターフェース130の機能は、スクリプトがインターネットブラウザによって解釈されるときスクリプトによって直接実行されてもよい。ビデオ再生インターフェース130は、フレーム画像124の表示をフレーム・レンダラ132によって(たとえば、オーディオ・データの再生に)同期するように、または別の方法でフレーム・レンダラ132に適切な時点でフレーム画像124を表示させるように構成される。フレーム・レンダラ132は、全体または一部が、たとえば、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザ上でネイティブに提供される画像レンダリング・エンジンによって実行されてもよい。フレーム・レンダラ132は、drawImage()メソッド、および/またはフレーム画像124を含むImageDataオブジェクトをその引数の(うちの1つの)引数として有するputImageDataメソッドを呼び出すことを含むことができる。
いくつかの実施形態では、ビデオ再生インターフェース130は、フレーム・レンダラ132に、ビデオ・データ114のフレームレートにほぼ等しいレートでフレーム画像124を表示させるように構成される。いくつかの実施形態では、ビデオ再生インターフェース130は、フレーム・レンダラ132に、ビデオ・データ114のフレームレートより低いレートでフレーム画像124を表示させるように、また任意選択で、補間画像をフレーム画像124の表示間に表示させるように構成される。いくつかの実施形態では、ビデオ再生インターフェース130は、フレーム・レンダラ132に、ユーザ構成可能なレートでフレーム画像124を表示させてもよい。ビデオ再生インターフェース130は、フレーム・レンダラ132に、ビデオコンテンツ116内のビデオ・データ114に伴うオーディオ・データ164のレンダリングと何らかの好適な公差内で少なくともほぼ同期してフレーム画像124をレンダリングさせるように構成されてもよい。ビデオ再生インターフェース130はフレーム・レンダラ132によってフレーム画像124のレンダリングのタイミングを制御することができるので、ビデオ再生インターフェース130は、再生タイミング・モニタ130と呼ばれることがある。
図2Bは、例示的な実施形態によるオーディオ・レンダリング・システム150の概略ブロック図である。いくつかの実施形態では、少なくとも一部にはユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによって解釈されるクロスプラットフォーム・スクリプトを使用して、オーディオ・レンダリング・システム150が実行される。いくつかの実施形態では、オーディオ・レンダリング・システム150の一部が、スクリプトを解釈するインターネットブラウザによってネイティブに実行される。いくつかの実施形態では、スクリプトは、オーディオ・レンダリング・システム150の機能の一部を直接実行または実行する。いくつかの実施形態では、ビデオ・レンダリング・システム100(図2A)およびオーディオ・レンダリング・システム150(図2B)のすべて、または一部分が互いに一体化されてもよい。図2Aおよび図2Bに示されている例示的な実施形態などいくつかの実施形態では、ビデオ・レンダリング・システム100(図2A)およびオーディオ・レンダリング・システム150(図2B)は、別々に実行されてもよい。いくつかの態様では、オーディオ・レンダリング・システム150は、上述のビデオ・レンダリング・システム100と同様である。オーディオ・レンダリング・システム150は、ビデオ・レンダリング・システム100と同じようにしてビデオコンテンツ116を取り出すことができる。ビデオ・レンダリング・システム100によって取り出されたビデオコンテンツ116は、オーディオ・レンダリング・システム150にとってアクセス可能であってもよく、逆も同様である。
上述のように、オーディオ・レンダリング・システム100に送られるビデオコンテンツ116は、一般に、ビデオ・データ114、オーディオ・データ164、画像データ(図示せず)、および/またはメタデータ(図示せず)などを含むことができる。図の実施形態のオーディオ・レンダリング・システム150は、ビデオコンテンツ116からのビデオ・データ114を、オーディオ・データ・キュー162を具現化するデータ構造内に格納させるように、またオーディオ・データ・キュー162を監視するように構成されたオーディオ・データ・キュー・モニタ160を備える。オーディオ・データ・キュー・モニタ160は、ビデオ・レンダリング・システム100のビデオ・データ・キュー・モニタ110と同様のものであってもよい。いくつかの実施形態では、オーディオ・データ・キュー・モニタ160は、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザ内で実行される。いくつかの実施形態では、オーディオ・データ164をオーディオ・データ・キュー162内に格納することは、オーディオ・データ164をビデオ・データ114、およびビデオコンテンツ116の一部を形成することができる他のデータ(たとえば、画像、および/またはメタデータなど)から逆多重化することを含む。この逆多重化機能は、オーディオ・データ・キュー・モニタ160によって実行されてもよい。しかし、一般に、オーディオ・データ・キュー・モニタ160は、この逆多重化機能を実行する必要がない。上述のように、いくつかの実施形態では、オーディオ・データ164は、オーディオ・レンダリング・システム150によって受け取られる前に別のデマルチプレクサ(図示せず)によって逆多重化されてもよい。他の実施形態では、オーディオ・データ・キュー162内に格納されたデータは、依然として逆多重化されておらず、オーディオ・データ164は、デコーダ172によって復号されている間にビデオ・データ114および/または他のデータから逆多重化されてもよい。そのような実施形態では、ビデオ・データ・キュー112とオーディオ・データ・キュー162は共に、ビデオコンテンツ116を格納することができる同じビデオコンテンツ・キュー(図示せず)によって実行されてもよい。
オーディオ・レンダリング・システム150は、オーディオ・デコーダ172を備える。オーディオ・デコーダ172は、オーディオ・データ164を復号し、復号済みオーディオ・データ174を提供する。特定の実施形態では、オーディオ・デコーダ172は、スクリプトがインターネットブラウザによって解釈されるときスクリプトによって直接実行される。図の実施形態のオーディオ・レンダリング・システム150は、復号済みオーディオ・バッファ・モニタ170を備える。復号済みオーディオ・バッファ・モニタ170は、デコーダ172にオーディオ・データ・キュー162内に含まれるオーディオ・データ164を復号させ、復号済みオーディオ・データ174を生成するように構成され、復号済みオーディオ・データ174は、復号済みオーディオ・バッファ176を具現化するデータ構造内に格納される。復号済みオーディオ・バッファ・モニタ170は、インターネットブラウザによってネイティブで実行されてもよい。いくつかの実施形態では、復号済みオーディオ・バッファ・モニタ170の機能は、スクリプトがインターネットブラウザによって解釈されるときスクリプトによって直接実行される。復号済みオーディオ・バッファ・モニタ170は、デコーダ172に、オーディオ・データ164を絶えず復号させ、少なくともある閾値量の復号済みオーディオ・データ174が復号済みオーディオ・バッファ176内にあるようになるまで(たとえば、復号済みオーディオ・バッファ176が一杯になるまで)復号済みオーディオ・データ174を生成させるように構成されてもよい。復号済みオーディオ・データ174は、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによって(たとえば、ブラウザの(1つまたは複数の)ネイティブ・オーディオ再生機能を使用して)ネイティブにレンダリングすることができるフォーマットでオーディオ・データを含むことができる。いくつかの実施形態では、オーディオ・レンダリング・システム150は、ネイティブ・オーディオ再生機能を使用してユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによって使用するのに適した復号済みフォーマット174に、オーディオ・データ164を変換するための1つまたは複数の機能を含むオーディオ・データ・プロセッサ(図示せず)を備えることができる。いくつかの実施形態では、そのような機能は、デコーダ172および/またはオーディオ・レンダラ・インターフェース180によって実現することができる。
オーディオ・データ・キュー・モニタ160は、オーディオ・データ164がデコーダ172によって復号された後で、オーディオ・データ・キュー162からオーディオ・データ164(またはビデオ・コンテンツ・データ116)をクリアするように構成されてもよい。いくつかの実施形態では、オーディオ・データ・キュー・モニタ160は、デコーダ172によってこれから復号されなければならないオーディオ・データ・キュー162内のオーディオ・データ164の量に基づいてビデオコンテンツ・ソース(たとえば、遠隔サーバ)にビデオコンテンツ116(および/またはそこに含まれるオーディオ・データ164)を要求するように構成される。たとえば、オーディオ・データ・キュー・モニタ160は、オーディオ・データ・キュー162が含むものが、デコーダ172によってこれから復号されなければならないオーディオ・データ164の閾値量より少ないときはいつでもビデオコンテンツ116および/またはオーディオ・データ164を要求するように構成されてもよい。オーディオ・データ164の終点が検出可能であるとき、オーディオ・データ・キュー・モニタ160は、オーディオ・データ164の終点を構成するオーディオ・データ164の一部分がオーディオ・データ・キュー162内に配置された後で、ビデオコンテンツ116および/またはオーディオ・データ164を要求するのを停止するように構成されてもよい。
オーディオ・レンダリング・システム150は、オーディオ・レンダラ・インターフェース180を備える。オーディオ・レンダラ・インターフェース180は、オーディオ・レンダラ182によって使用するのに適したフォーマットで復号済みオーディオ・データ174をオーディオ・レンダラ182に送る(たとえば、ロードする)ように構成される。オーディオ・レンダラ182は、たとえば、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザ内でネイティブに提供されるオーディオ再生エンジンを備えることができる。いくつかの実施形態では、オーディオ・レンダラ182は、専用オーディオ・レンダリング・ハードウェアを使用することができ、主ユーザ・コンピューティング・デバイス・プロセッサ上で動作する(1つまたは複数の)プロセスに並列の1つまたは複数のプロセスでオーディオ・データをレンダリング(たとえば、再生)することができる。いくつかの実施形態では、オーディオ・レンダラ182は、(少なくとも一部には)主ユーザ・コンピューティング・デバイス・プロセッサを使用して実行されてもよいが、ビデオ・レンダリング・システム100およびオーディオ・レンダリング・システム150に対して責任を担うスレッドのものに並列で動作する1つまたは複数の処理スレッドでさらに実行されてもよい。いくつかの実施形態では、オーディオ・レンダラ・インターフェース180は、任意選択で、オーディオ・レンダラ182による復号済みオーディオ・データ174のレンダリングに関連する再生タイミング情報(たとえば、オーディオ再生時間基準)を確かめるように構成されてもよい。オーディオ・レンダラ・インターフェース180によって得られる再生タイミング情報は、インターネットブラウザによってネイティブに得ることができる。オーディオ・レンダラ・インターフェース180の他の機能は、解釈されたスクリプトによって直接実行することができる。この再生タイミング情報をフレーム画像レンダラ132および/またはビデオ再生インターフェース130(図2A)によって使用し、フレーム・レンダラ132によってフレーム画像124を、オーディオ・レンダラ182による復号済みオーディオ・データ174のレンダリングとほぼ同期したレートでレンダリングさせることができる。
いくつかの実施形態では、オーディオ・データ164のストリーム全体をビデオコンテンツ116から逆多重すること、およびオーディオ・データ164のストリーム全体をオーディオ・データ・キュー162内にバッファすることが可能となり得る。そのような実施形態では、オーディオ・データ・キュー・モニタ160は、より多くのオーディオ・データ164をいつ取り出すか判定するためにオーディオ・データ・キュー162の状況を積極的に監視する必要はない。その代わりに、オーディオ・データ・キュー・モニタ160は、オーディオ・データ164を求める単一の要求をすることができる。同様に、そのような実施形態では、オーディオ・データ164のストリーム全体をデコーダ172によって復号し、復号済みオーディオ・データ174として復号済みオーディオ・バッファ176内に格納することができる。そのような実施形態では、復号済みオーディオ・バッファ・モニタ170は、復号済みオーディオ・バッファ176の状況を積極的に監視する必要はなく、オーディオ・データ164のストリームをデコーダ172によって復号し、復号済みオーディオ・バッファ176内に配置するための単一の要求をすることができる。
いくつかのインターネットブラウザは、それらのブラウザが符号化されたオーディオ・データ164をネイティブにレンダリングすることを可能にするネイティブ機能を含む。非限定的な例として、Firefox(登録商標)は、Vorbis符号化済みオーディオ・フォーマットをネイティブに処理することができ、Safari(登録商標)およびInternet Explorer(登録商標)は、mp3符号化済みオーディオ・フォーマットをネイティブに処理することができる。そのような実施形態では、デコーダ172、復号済みオーディオ・バッファ176、および復号済みオーディオ・バッファ・モニタ170は、必要とされないことがあり、オーディオ・レンダラ・インターフェース180が、符号化されたオーディオ・データ164をオーディオ・データ・キュー162からオーディオ・レンダラ182に直接送ることができる。
いくつかの実施形態では、ビデオ・レンダリング・システム100および/またはオーディオ・レンダリング・システム150の機能は、少なくとも一部にはHTMLドキュメント内に埋め込まれたクロスプラットフォーム・スクリプトを使用して実行される1つまたは複数の方法によって達成される。そのようなスクリプトは、ユーザ・コンピューティング・デバイス上で動作するアプリケーション・プログラムの一部として提供および具現化されるスクリプト・インタプリタによって解釈することができる。たとえば、そのようなスクリプト・インタプリタは、インターネットブラウザの一部であってもよい。スクリプト・インタプリタによってそのようなスクリプトを解釈すると、論理演算および/または算術演算の実行、ならびにデータ構造のインスタンス化および/または操作を引き起こすことができ、これは、ビデオ・レンダリング・システム100および/またはオーディオ・レンダリング・システム150の機能をもたらす。
いくつかの実施形態では、ビデオ・レンダリング・システム100の機能は、少なくとも一部には2つの方法を実行するスクリプト・インタプリタによって達成される。すなわち、1つの方法は、(たとえば、ビデオ・データ・キュー・モニタ110、フレームバッファ・モニタ120、デコーダ122、およびフレーム画像プロセッサ136を実行することによって)システム100のビデオ・データ・キューイング、復号および準備機能を提供し、別の方法は、(たとえば、ビデオ再生インターフェース130、および任意選択でフレーム画像レンダラ132を実行することによって)システム100のフレーム画像同期およびレンダリング機能を提供する。図3は、特定の実施形態によるビデオ・データをキューイングし、復号し、準備するためのこの第1の方法の実行を概略的に示す。図4は、特定の実施形態によるビデオ・データのフレーム画像を同期し、レンダリングするためのこの第2の方法の実行を概略的に示す。スクリプト・インタプリタに、これらの2つの方法を同期した状態で繰返し実行させ、ビデオ・データを増加的にキューイング、復号、準備、同期、およびレンダリングすることができる。そのようなビデオ・データの増加的なキューイング、復号、準備、同期、およびレンダリングは、これらの方法が、シングルスレッド型インタプリタによって解釈されるスクリプトで実行される場合、有利となり得る。
図3は、例示的な実施形態によるビデオ・データを得て復号するための方法200のフローチャートである。方法200は、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。たとえば、方法200は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行されてもよい。方法200の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。図の実施形態では、方法200は、少なくとも閾値量のビデオ・データが復号するためにキューイングされているかどうかについての問い合わせを含むブロック204で始まる。いくつかの実施形態では、ブロック204は、ビデオ・データ・キュー(たとえば、システム100のビデオ・データ・キュー112(図2A))が、これから復号されなければならないビデオ・データの少なくとも1つのフレームを含むかどうか判定することを含む。
ブロック204の問い合わせによって、閾値量より少ないビデオ・データがキューイングされていると判定された場合(ブロック204、「いいえ」分岐)、方法200はブロック206に進む。ブロック206は、使用可能なビデオ・データすべてがキューイングされたかどうかを調査することを含む。ブロック206は、たとえば、ビデオ・セグメントの終点部分(たとえば、既知の長さのビデオ・セグメントの終点部分、または別の方法で認識可能なビデオ・セグメントの終点部分)がビデオ・データ・キュー内に配置されたかどうか判定することを含むことができる。ブロック206の問い合わせによって、使用可能なビデオ・データすべてがキューイングされたと判定された場合(ブロック206、「はい」分岐)、方法200は終了する。
ブロック206の問い合わせによって、依然としてキューイングされていない使用可能なビデオ・データがあると判定された場合(ブロック206、「いいえ」分岐)、方法200はブロック208に進む。ブロック208は、より多くのビデオ・データをビデオ・データ・キュー内に配置させることを含む。非限定的な例として、特定の例示的な実施形態では、方法200は、Javaスクリプト命令のセットとして実行され、ブロック208は、サーバ上でホストされるビデオ・データに対応するAJAX XMLHttpRequestオブジェクトのopen()メソッドを呼び出すことを含む。このブロック208の機能は、インターネットブラウザが、Javaスクリプト(登録商標)によって解釈することができるフォーマットで何らかのビデオ・データを取り出すことを要求する。ユーザ・コンピューティング・デバイスにおいて可能な場合、ビデオ・データを取り出すこのブロック208の機能は、インターネットブラウザによって、方法200の残りのものに対して(マルチスレッド環境における)並列スレッドとして、または(マルチプロセッシング環境における)並列プロセスとして実行することができる。たとえば、インターネットブラウザのスクリプト・インタプリタは、方法200を実行するために1つの並列スレッド/プロセスを実行することができ、一方、インターネットブラウザは、ブロック208を実現するために第2の並列スレッド/プロセスを実行する。
いくつかの実施形態では、ブロック208は、(たとえばHTTP要求のRangeヘッダ・フィールド内でバイト・レンジを示すことによってなど、ビデオ・データ・キュー内に配置すべきビデオ・データの特定の一部分または特定の量を指定することによって)ビデオ・データの増加量だけを得ることを含む。そのような実施形態では、ブロック208は、どのビデオ・データが要求された、および/またはビデオ・データ・キュー内に配置されたか追跡するインデックス、レンジなどを更新することを含むことができる。
ブロック208の後で、方法200は、下記で述べるブロック216に進む。いくつかの実施形態では、方法200は、ブロック208の後でブロック212に進んでもよい。いくつかの実施形態では、ブロック206は省略される(たとえば、ブロック204で、ビデオ・データの少なくとも1つのフレームもキューイングされていないと判定された場合(ブロック204、「いいえ」分岐)、方法200は、キューイングすべき使用可能なビデオ・データがあるかどうか判定することなしにビデオ・データをキューイングさせようと試みてもよい(たとえば、ブロック208を実行する))。
ブロック204に戻ると、ブロック204の問い合わせによって、ビデオ・データの少なくとも1つのフレームがキューイングされていると判定された場合(ブロック204、「はい」分岐)、方法200はブロック212に進む。ブロック212は、フレーム画像バッファ(たとえば、システム100のフレーム画像バッファ126(図2A))内に十分な自由空間(たとえば、復号済みフレーム画像を格納するための十分な自由空間)があるかどうか判定することを含む。ブロック212の問い合わせによって、フレーム画像バッファ内に自由空間がないと判定された場合(ブロック212、「いいえ」分岐)、方法200はブロック216に進む。ブロック212の問い合わせによって、フレーム画像バッファ内に自由空間があると判定された場合(ブロック212、「はい」分岐)、方法200はブロック214に進む。
図の実施形態では、ブロック214は、キューイングされたビデオ・データの1つのフレームを、レンダリングするのに適したフレーム画像(たとえば、フレーム画像124(図2A))の形に準備すること、および準備されたフレーム画像をフレーム画像バッファ(たとえば、フレーム画像バッファ126(図2A))内に配置することを含む。ブロック214は、たとえば、フレーム画像のシーケンス内の次の未復号フレーム画像に対応する(またはそれを含む)ビデオ・データを準備することを含むことができる。いくつかの実施形態では、ブロック214で準備されたフレーム画像は、方法200の全部または一部を実装するスクリプトを解釈中であるユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブにレンダリングすることができるフォーマットの画像を含む。非限定的な例として、特定の例示的な実施形態では、方法200は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、ブロック214は、ビデオ・データをImageDataオブジェクトの形に準備することを含み、ImageDataオブジェクトは、RGB画素値のアレイを含むCanvasPixelArrayオブジェクトを含むことができる。別の例示的な実施形態では、ブロック214は、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに表示することができるフォーマット(たとえば、PNG、JPEG、GIFなど)のフレーム画像の形にビデオ・データを準備することを含む。
ブロック214は、概して、以下の例示的な動作のいずれか、または任意の組合せを含むことができる。
・ 算術演算および/または論理演算を実行すること
・ データ構造および/またはその中に格納されたデータを作成、削除、および/または修正すること
・ スクリプト化された命令の1つまたは複数のセットを実行すること、スクリプト・インタプリタにとってネイティブに使用可能な実行可能ライブラリにアクセスすること、など
・ ブラウザにネイティブ・ブラウザ機能を呼び出させること(たとえば、キューイングされたビデオ・データがJPEG画像データを含む(またはキューイングされたビデオ・データをJPEG画像データに変換することができる)場合、ブロック214は、RGB画素値のアレイを得るためにユーザ・コンピューティング・デバイス上で動作するインターネットブラウザのネイティブJPEGレンダリング機能をブラウザに呼び出せることを含むことができる)、および/または
・ その他
図の実施形態の特定の場合には、ブロック214でのフレーム画像の準備は、
・ ブロック214Aで、ビデオ・データ(たとえば、ビデオ・データ・バッファ112からのビデオ・データ114)を復号し、復号済みフレーム画像(たとえば、復号済みフレーム画像140)を生成すること、
・ 任意選択で、ブロック214Bにおいて、復号済みフレーム画像を、インターネットブラウザによってネイティブにレンダリング可能なファイル・フォーマットに変換し、ブラウザによってレンダリング可能なフレーム画像(たとえば、ブラウザによってレンダリング可能なフレーム画像144)を生成すること、
・ 任意選択で、ブロック214Cにおいて、ブラウザによってレンダリング可能なフレーム画像をコンテンツ転送フォーマットに符号化し、コンテンツ転送符号化済みフレーム画像(たとえば、コンテンツ転送符号化済みフレーム画像146)を生成すること、および
・ 任意選択で、ブロック214Dにおいて、フレーム画像からフレーム画像オブジェクト(フレーム画像オブジェクト124)を作成することを含む。
また、ブロック214は、任意選択で、コントラスト、輝度、鮮鋭度などを調整することなど、復号済みフレーム画像の画像関連の処理を含むことができる。
ブロック214の後で、方法200は、将来のある時点のために方法200の後続の反復をスケジューリングすること含むブロック216に進む。非限定的な例として、特定の例示的な実施形態では、方法200は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、ブロック216は、setTimeout()メソッドを呼び出し、指定された時間量が経過した後で方法200を実行するJavaスクリプト命令のセットをスケジューリングすることを含む。別の特定の例示的な実施形態では、方法200は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、setInterval()メソッドを使用し、指定された時間量が経過した後で方法200を実行するJavaスクリプト命令のセットをスケジューリングしてもよい。そのような実施形態では、ブロック216は、方法200の反復毎に明確に必須ではない可能性がある。特定の実施形態では、方法200の連続する反復は、レンダリングされるビデオ・データのフレーム間隔(すなわち、(フレームレート)−1)より短い間隔でスケジューリングされてもよい。いくつかの実施形態では、スケジューリングされる方法200の間隔は、レンダリングされるビデオ・データのフレーム間隔の50%未満である。いくつかの実施形態では、スケジューリングされる方法200の間隔は、レンダリングされるビデオ・データのフレーム間隔の20%未満である。いくつかの実施形態では、スケジューリングされる方法200の間隔は、レンダリングされるビデオ・データのフレーム間隔の10%未満である。ブロック216でキューイングおよび復号方法200の次の反復がスケジューリングされた後で、方法200は終了し、制御がインターネットブラウザ、およびそのスクリプト・インタプリタに返される。
図の実施形態では、ブロック214を含む方法200の各反復において、ブロック214は、ビデオ・データのフレームを、ビデオ・データ・バッファ(たとえば、ビデオ・データ・バッファ112)内のその符号化されたフォーマットからレンダリングに適したフォーマット(たとえば、フレーム画像バッファ126内のフレーム画像オブジェクト124)に準備することを含む。このフレーム画像処理は、復号(ブロック214A)、画像フォーマット変換(ブロック214B)、コンテンツ転送符号化(ブロック214C)、および画像オブジェクト準備(ブロック214D)を含めて、複数のステップを含むことができる。(ユーザ・コンピューティング・デバイスの処理リソースが比較的限られている、または遅い場合など)状況によっては、これらのステップの全部を実行する際に必要とされる処理量が大きくなり望ましくない。したがって、いくつかの実施形態では、方法200は、ブロック214A、214B、214C、214Dのステップの一部のサブセットが、ブロック214に到達する方法200の反復毎に実行されるように修正されてもよい。たとえば、ブロック214Aに到達する方法200の各反復は、ブロック214A、214B、214C、214Dの1つだけを実行することを含んでもよい。これは、方法200の各反復に伴う処理時間を短縮することになる。適切な論理を定義し、各反復においてブロック214A、214B、214C、214D間で選択してもよい。非限定的な例として、そのような論理は、(たとえば、キュー138、141、143、126(図2A)のうちから)どのキューのフレーム数が最も少ないか確かめることができ、それに基づいて214A、214B、214C、214Dのどれを実行するか選択することができる。
上述のように、方法200は、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。方法200の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。たとえば、特定の実施形態では、ブロック204、206、212、214A、214B、214Cのいずれかの機能を、スクリプトによってそれが解釈されるとき直接実行してもよい。
図4は、例示的な実施形態によるキューイングされたフレーム画像を同期およびレンダリングするための方法220のフローチャートである。方法220は、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。たとえば、方法200は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)によって実行されてもよい。方法220の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。
方法220のブロック224は、レンダリングすべき現在のフレーム画像を決定することを含む。ブロック224は、たとえば、レンダリングされるビデオ・データのフレームレートおよび現在の時間値に基づいて現在のビデオ・フレーム・インデックスを決定することを含むことができる。ブロック224で使用するのに適した、現在のビデオ・フレーム・インデックスを決定するための方法の特定の非限定的な実施形態が、任意選択のブロック224Aおよび224Bに示されている。ブロック224Aは、好適なソースからの現在の時間値を入手することを含む。図の実施形態では、ブロック224Aの現在の時間値は、ビデオコンテンツ内のビデオ・データに伴うオーディオ・データのレンダリングから得られる。非限定的な一実施形態では、ブロック224Aの現在の時間値は、ビデオコンテンツ116内からのオーディオ・データのレンダリングから得られる。上述のように、特定の実施形態では、オーディオ・レンダリング・システム150のオーディオ・レンダラ・インターフェース180(図2B)は、オーディオ・レンダラ182によるオーディオ再生のタイミングを(たとえば、オーディオ再生の開始など基準点に対して)監視することができ、ブロック224Aにおいて、現在のオーディオ再生時間基準について照会を受けることができる。いくつかのそのような実施形態では、オーディオ・レンダラ・インターフェース180は、スクリプトによって直接実行され、オーディオ再生時間基準を入手することができる。他の実施形態では、オーディオ・レンダラ・インターフェース180は、ネイティブ・ブラウザ機能を利用し、オーディオ再生時間基準を入手してもよい。別の非限定的な、例示的な実施形態では、方法220は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、ブロック224Aは、ブラウザに、関連のオーディオ・オブジェクトに対してaudio.buffered.endメソッドを呼び出させ、その関連のオーディオ・データの最後にレンダリングされた(またはレンダリングしようとしている)セグメントの時間を示す値を得ることができる。この例示的な実施形態は、ブラウザによってネイティブに実行することができ、オーディオ・レンダラ・インターフェース180に依拠する必要はない。
図の例示的な実施形態では、スクリプトによって直接実行されてもよいブロック224Bが、ブロック224の現在の時間値(たとえば、現在のオーディオ再生時間基準)をビデオ・データのフレームレートで乗算し、所望のブロック224の現在のビデオ・フレーム・インデックスを得ることを含む。いくつかの実行では、ブロック224Aの現在の時間値とビデオ・データのフレームレートの積を最も近い整数に丸め、所望のブロック224の現在のビデオ・フレーム・インデックスをもたらすことができる。Javaスクリプト(登録商標)をベースとする実行では、丸めるのが可能でない場合、このブロック224Bの丸め演算は、積に0.5を加算し、最も近い整数に切り捨てることによって実行されてもよい。
いくつかのインターネットブラウザでは、オーディオ・バッファリング情報が、レンダリングされるビデオ・データのフレームレートほど頻繁に更新されない(たとえば、オーディオ・バッファリング情報の連続する更新間で2フレーム期間以上が経過する可能性がある)場合があり得る。これにより生じ得る同期問題を改善するために、ブロック224は、ブロック224(または方法200の別のブロック)が実行された最後の時間以来経過した時間の量を決定すること、および、この経過時間と、ブロック224が実行された最後の時間に決定されたブロック224のビデオ・フレーム・インデックスとの組合せに基づいて、現在のブロック224のビデオ・フレーム・インデックスを決定することを含むことができる。この経過時間は、システム・クロックなどから測定する、または別の方法で決定することができる。
スクリプトによって直接実行されてもよいブロック226は、現在のブロック224のビデオ・フレーム・インデックスによって参照されるフレーム画像がすでにレンダリングされたかどうか判定することを含む。ブロック226は、方法220が単一のビデオ・フレームの期間内で2回実行される状況において、同じフレームの2重レンダリングを回避することができる。いくつかの実施形態では、ブロック226は、現在のブロック224のビデオ・フレーム・インデックスを、方法220の以前の反復(たとえば、直前の反復)で決定されたブロック224のビデオ・フレーム・インデックスに比較することを含む。
ブロック226の問い合わせによって、現在のブロック224のビデオ・フレーム・インデックスに対応するビデオ・フレームがすでにレンダリングされたと判定された場合(ブロック226、「はい」分岐)、方法220はブロック228に進む。スクリプトによって直接実行されてもよいブロック228は、現在のブロック224のビデオ・フレーム・インデックスが、レンダリングされるビデオ・データの最後のフレーム(たとえば、既知の長さのビデオ・セグメントの最後のフレーム)を参照するかどうか判定することを含む。ブロック228で、現在のブロック224のビデオ・フレーム・インデックスが、レンダリングされるビデオ・データの最後のフレームを参照すると判定された場合(ブロック228、「はい」分岐)、方法220は終了する。ブロック228の問い合わせによって、現在のブロック224のビデオ・フレーム・インデックスが、レンダリングされるビデオ・データの最後のフレームを参照しないと判定された場合(ブロック228、「いいえ」分岐)、方法220は、下記で述べるブロック230に進む。
ブロック226に戻ると、ブロック226の問い合わせによって、現在のブロック224のビデオ・フレーム・インデックスに対応するビデオ・フレームがまだレンダリングされていないと判定された場合(ブロック226、「いいえ」分岐)、方法220はブロック232に進む。スクリプトによって直接実行されてもよいブロック232は、現在のブロック224のビデオ・フレーム・インデックスに対応するビデオ・フレーム(便宜上、「現在のフレーム画像」)がレンダリングのためにキューイングされているかどうかを調査することを含む。ブロック232は、現在のフレーム画像が、たとえば方法200(図3)によってポピュレートされたフレーム画像バッファ内にあるかどうか判定することを含むことができる。ブロック232の問い合わせによって、現在のフレーム画像がレンダリングのためにキューイングされていないと判定された場合(ブロック232、「いいえ」分岐)、方法220はブロック230に進む。ブロック230に進む前に、方法220は、ブロック234で1つまたは複数の任意選択の、落とされたフレーム・アクションを開始および/または実現してもよい。非限定的な例として、ブロック234の落とされたフレーム・アクションは、現在のフレーム画像がレンダリングのために使用可能でなかったことを(たとえば、統計および/または解析目的で)記録すること、関連のオーディオ・トラックの再生を(たとえば、キューイングされたフレームがオーディオ再生によって決定された現在のフレームに追いつくことができるように)休止すること、フレーム画像を(ビデオ・データをより速いレートで得ること、フレームをより頻繁に復号すること、より低いビットレートまたはより低いフレームレートのビデオ・ソースに切り替えることなど、によるなどして)より迅速にキューイングすべきであることを(たとえば、別のプロセス、方法などに)示すこと、および/またはその他を含むことができる。ブロック234のドロップ・フレーム・アクションは、スクリプトによって直接開始されてもよい。可能なブロック234のドロップ・フレーム・アクションのいくつかを実現することもまた、スクリプトによって直接実行することができる。可能なブロック234のドロップ・フレーム・アクションの他のものを実行することは、1つまたは複数のネイティブ・ブラウザ機能の使用を含むことができる。いくつかの実施形態では、任意選択のブロック234は、ドロップ・フレーム・アクションを開始すべきか否か判定するために使用することができる何らかの論理を含むことができる。いくつかの実施形態では、フレームが落とされたことが既知である他の状況−たとえば、ブロック224の現在のフレーム・インデックスが(方法220の以前の反復からの)最後のブロック224のフレーム・インデックスより2カウント以上多く、1つまたは複数のフレームが方法220の連続する反復間で落とされたことを示す状況において、ブロック234のドロップ・フレーム・アクションと同様のアクションをとることができる。
ブロック232の問い合わせによって、現在のフレーム画像がレンダリングのためにキューイングされていると判定された場合(ブロック232、「はい」分岐)、方法220はブロック236に進む。ブロック236は、現在のフレーム画像をレンダリングすることを含む。方法220がユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによって解釈されるスクリプトを使用して実行される実施形態では、ブロック236は、たとえば、インターネットブラウザのネイティブ画像レンダリング機能を使用して現在のフレーム画像をレンダリングすることを含むことができる。非限定的な例として、特定の例示的な実施形態では、方法220は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、ブロック236は、ImageDataオブジェクトをその引数の(うちの1つの)引数として有するputImageDataメソッドを呼び出すことを含み、ImageDataオブジェクトは、レンダリングすべきフレーム画像(たとえば、フレーム画像124(図2A))を表すRGB画素値のアレイを含むCanvasPixelArrayオブジェクトを含む。別の例示的な実施形態では、ブロック236は、画像オブジェクト(たとえば、フレーム画像124(図2A))をその引数の(うちの1つの)引数として有するdrawImage()メソッドを呼び出すことを含む。
ブロック236の後で、方法220はブロック230に進む。ブロック230は、将来のある時点のために方法220の後続の反復をスケジューリングすること含む。いくつかの実施形態では、ブロック230は、1つまたは複数のネイティブ・ブラウザ機能の使用を含むことができる。非限定的な例として、特定の例示的な実施形態では、方法220は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、ブロック230は、setTimeout()メソッドを呼び出し、指定された時間量が経過した後で方法220を実行するJavaスクリプト命令のセットをスケジューリングすることを含む。別の特定の例示的な実施形態では、方法220は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、setInterval()メソッドを使用し、指定された時間量が経過した後で方法220を実行するJavaスクリプト命令のセットをスケジューリングしてもよい。そのような実施形態では、ブロック230は、方法220の反復毎に明確に必須ではない可能性がある。特定の実施形態では、方法220の連続する反復は、レンダリングされるビデオ・データのフレーム間隔(すなわち、(フレームレート)−1)より短い間隔でスケジューリングされてもよい。いくつかの実施形態では、スケジューリングされる方法220の間隔は、レンダリングされるビデオ・データのフレーム間隔の50%未満である。いくつかの実施形態では、スケジューリングされる方法220の間隔は、レンダリングされるビデオ・データのフレーム間隔の20%未満である。いくつかの実施形態では、スケジューリングされる方法220の間隔は、レンダリングされるビデオ・データのフレーム間隔の10%未満である。ブロック230でビデオ・レンダリング方法220の次の反復がスケジューリングされた後で、方法220は終了し、制御がスクリプト・インタプリタに返される。
上述のように、方法220は、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。方法220の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。たとえば、特定の実施形態では、ブロック224B、226、228、232、234のいずれかの機能を、スクリプトによってそれが解釈されるとき直接実行してもよい。
図の実施形態では、方法200は、実行されるたびに、ビデオ・データの1つ以下のフレームを準備し、方法220は、実行されるたびに、1つ以下のフレーム画像をレンダリングする。この実現は、方法200および方法220が、単一の実行スレッドを実行するアプリケーション・プログラムの同じスクリプト・インタプリタ(たとえば、いくつかの典型的なインターネットブラウザのJavaスクリプト・インタプリタ)によって反復して実行され、非同期で解釈される場合、有利なものとなり得る。たとえば、そのような一実現は、方法200の連続する反復間で方法200によって復号されるフレーム画像を、方法220がレンダリングすることを可能にすることができる。他の実施形態では、ビデオ・データの複数のフレームを、方法200の各反復において入手および/または準備することができ、および/または複数のフレーム画像を、方法220の各反復においてレンダリングすることができる。また、上述のように、いくつかの実施形態では、ビデオ・データの1つのフレーム画像が、方法200の各反復において部分的に(たとえば、ブロック214A、214B、214C、214Dのサブセット)準備されてもよい。
いくつかの実施形態では、方法200および方法220は、それ自体の後続の反復を規則的な間隔でスケジューリングするように構成される(たとえば、連続する反復間のスケジューリングされる期間は、反復を挟んで一定とすることができる)。これらのスケジューリングされた間隔は、経過してもなおビデオ・データがそのビデオ・データのフレームレートでキューイング、準備、同期、およびレンダリングされることを可能にし得る、方法200および方法220の連続する反復間の最大時間より短いものとすることができる。これは、方法200および方法220の将来の反復が(たとえば、インタプリタの動作がそのインタプリタと同じ実行スレッド上で動作する他のプロセスによってプリエンプトされるため、方法200および方法220の将来の反復がインタプリタの他のスケジューリングされた、および/または継続中の動作によってプリエンプトされるため、など)それらのスケジューリングされた時間で行われることを保証することができないアプリケーション・プログラムのスクリプト・インタプリタによって解釈されるスクリプトによって方法200および方法220が実行される場合、有利なものとなり得る。方法200および方法220が専用のスレッド上で動作している場合には厳密に必要とされるはずの頻度より多く、連続する反復をスケジューリングすることは、確実に方法200および方法220が適時に実行され、見る人にとって満足のゆくものであるビデオ表示を提供する助けとなるように余裕をもたらすことができる。
方法200および方法220は、同じ反復間期間、または異なる反復間期間を有するように構成されてもよい。いくつかの実施形態では、方法200は、方法220より頻繁に実行されるように構成される。非限定的な例として、特定の例示的な実施形態では、方法200は、連続する反復を、1msと10msの間の所定の反復間期間でスケジューリングするように構成され、方法220は、連続する反復を、5msと25msの間の所定の反復間期間でスケジューリングするように構成される。他の実施形態では、方法220は、連続する反復を、1msと10msの間の所定の反復間期間でスケジューリングするように構成されてもよい。
方法200および/または方法220の反復間期間は、動的に決定されてもよい。たとえば、方法200および/または方法220は、連続する反復間で実際に経過した時間に基づいてそれらの反復間期間を動的に決定してもよい。別の例として、方法200および方法220の反復間期間は、調和させてもよい(たとえば、方法220が方法200の反復間期間を決定することができ、逆も同様である)。いくつかの実施形態では、方法200および方法220の一方または両方を多インスタンス化し、複数の一方または両方の方法が(たとえば、同じ反復間期間で、または異なる反復間期間で)それ自体の連続する反復を絶えずスケジューリングするようにしてもよい。
次にオーディオ・レンダリング・システム150(図2B)に戻ると、いくつかの実施形態では、オーディオ・レンダリング・システム150の機能は、少なくとも一部には2つの方法を実行するアプリケーション・プログラムのスクリプト・インタプリタによって達成される。すなわち、1つの方法は、(たとえば、オーディオ・データ・キュー・モニタ160、復号済みオーディオ・バッファ・モニタ170、およびデコーダ172を実行することによって)システム150のオーディオ・データ・キューイングおよび復号機能を提供し、別の方法は、オーディオ・レンダラ182とインターフェースするためのオーディオ・レンダラ・インターフェース(たとえば、オーディオ・レンダラ・インターフェース180)を提供する。図5は、特定の実施形態によるオーディオ・データをキューイングおよび復号する(または別の方法で準備する)ためのこの第1の方法の実行を概略的に示す。図6は、特定の実施形態によるオーディオ・レンダラ・インターフェースを実現するためのこの第2の方法の実行を概略的に示す。スクリプト・インタプリタに、これらの2つの方法を同期した状態で繰返し実行させ、オーディオ・データを増加的にキューイング、復号、および別の方法で準備すること、ならびにオーディオ・レンダラ182とインターフェースすることができる。そのような増加的なキューイング、復号、およびオーディオ・レンダラ182とのオーディオ・データのインターフェースは、シングルスレッド型インタプリタによって解釈されるスクリプトで実行される場合、有利となり得る。
図5は、例示的な実施形態による、オーディオ・データを得て復号し、別の方法で準備するための方法250のフローチャートである。方法250は、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。たとえば、方法250は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行されてもよい。方法250の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。多くの面で、方法205は、図3のビデオ・データのキューイング、復号、および準備方法200と同様のものであってもよい。図の実施形態では、方法250は、少なくとも閾値量のオーディオ・データが復号するためにキューイングされているかどうかについての問い合わせを含むブロック254で始まる。いくつかの実施形態では、ブロック254は、オーディオ・データ・キュー(たとえば、システム150のオーディオ・データ・キュー162(図2B))が、これから復号されなければならないオーディオ・データの少なくとも1つのセグメントを含むかどうか判定することを含む。方法250で(また、下記で述べる方法270で)使用されるオーディオ・セグメントの長さは、構成可能な定数(たとえば、ユーザ・コンピューティング・デバイスにおいて使用可能な処理リソースによって決まり得るもの)を含むことも、オーディオ・データのセグメントが使用されるたびに、またはオーディオ・データ164の一片がレンダリングされるたびに決定される、動的に決定される変数を含むこともできる。いくつかの実施形態では、方法250、270で使用される各オーディオ・セグメントは、オーディオ・データの好適な数(たとえば、1つ)のフレームを含むことができるが、これは必須ではない。いくつかの実施形態では、方法250、270で使用される各オーディオ・セグメントは、好適な長さ(たとえば、1秒)の再生時間を含むことができる。いくつかの実施形態では、方法250、270で使用される各オーディオ・セグメントは、好適な数(たとえば、44,000)のオーディオ・サンプルを含むことができる。
ブロック254の問い合わせによって、閾値量より少ないオーディオ・データがキューイングされていると判定された場合(ブロック254、「いいえ」分岐)、方法250は、使用可能なオーディオ・データすべてがキューイングされたかどうかを調査することを含むブロック256に進む。ブロック256は、たとえば、オーディオ・データの終点部分がオーディオ・データ・キュー内に格納されたかどうか判定することを含むことができる。ブロック256の問い合わせによって、使用可能なオーディオ・データすべてがキューイングされたと判定された場合(ブロック256、「はい」分岐)、方法200は終了する。ブロック256の問い合わせによって、依然としてキューイングされていない使用可能なオーディオ・データがあると判定された場合(ブロック256、「いいえ」分岐)、方法250は、より多くのオーディオ・データをオーディオ・データ・キュー内に配置させることを含むブロック258に進む。ブロック258は、(ビデオ・データではなく)オーディオ・データが入手されること、およびオーディオ・データが(ビデオ・データ・キューではなく)オーディオ・データ・キューに追加されることを除いて、方法200(図3)のブロック208と同様のものであってもよい。
ブロック258の後で、方法250は、下記で述べるブロック266に進む。いくつかの実施形態では、方法250は、ブロック258の後でブロック258に進んでもよい。いくつかの実施形態では、ブロック256は省略される(たとえば、ブロック254で、オーディオ・データの少なくとも1つのセグメントもキューイングされていないと判定された場合(ブロック254、「いいえ」分岐)、方法250は、キューイングすべき使用可能なオーディオ・データがあるかどうか判定することなしにオーディオ・データをキューイングさせようと試みてもよい(たとえば、ブロック258を実行する))。
ブロック254に戻ると、ブロック254の問い合わせによって、オーディオ・データの少なくとも1つのセグメントがキューイングされていると判定された場合(ブロック254、「はい」分岐)、方法250は、復号済みオーディオ・バッファ(たとえば、システム150の復号済みオーディオ・バッファ176(図2B))内に十分な自由空間(たとえば、オーディオ・データの復号済みセグメントを格納するための十分な自由空間)があるかどうか判定することを含むブロック262に進む。ブロック262の問い合わせによって、復号済みオーディオ・バッファ内に自由空間がないと判定された場合(ブロック262、「いいえ」分岐)、方法250はブロック266に進む。ブロック262の問い合わせによって、復号済みオーディオ・バッファ内に自由空間があると判定された場合(ブロック262、「はい」分岐)、方法250はブロック264に進む。
ブロック264は、キューイングされているオーディオ・データの1つのセグメントを(たとえば、オーディオ・データ・キュー162から)復号すること、および復号済みオーディオ・セグメントを復号済みオーディオ・バッファ(たとえば、復号済みオーディオ・バッファ176)内に格納することを含む。ブロック264は、たとえば、オーディオ・トラック内の次の未復号セグメントに対応する(またはそれを含む)オーディオ・データを復号することを含むことができる。いくつかの実施形態では、ブロック264で復号されたオーディオ・データは、ネイティブ・オーディオ・レンダラ182を実行する、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブにレンダリングすることができるフォーマットで提供される。非限定的な例として、特定の例示的な実施形態では、ブロック264は、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブにレンダリング可能である、WAVファイル・フォーマットなどにオーディオ・データを復号することを含む。ブロック264は、(限定しないが)ブロック214に関連して上述した機能を含めて、任意の好適な復号アルゴリズムのステップを実行することを含むことができる。上述のように、オーディオ・レンダリング・システム150(図2B)は、復号済みオーディオ・データをレンダリングするのに適したフォーマットにするために使用することができる、フレーム画像プロセッサ136(図2A)のものと同様のオーディオ処理機能を含むことができる。そのような実施形態では、ブロック264は、ブロック214の任意選択のブロック214A、214B、214C、214Dと同様にしてそのような機能を提供するように、任意選択で分解されてもよい(図3)。方法250、復号ブロック264、およびデコーダ172(図2B)においてオーディオ・データを復号することに言及することは、任意選択で、オーディオ・データをレンダリングするのに適したフォーマットの形に準備することに関連する機能の任意の1つまたは複数を含むと理解されたい。ブロック264は、任意選択で、フィルタリング、ボリューム調整、圧縮など、復号済みオーディオ・データのオーディオ関連の処理を含むことができる。
ブロック264の後で、方法250は、将来のある時点のために方法250の後続の反復をスケジューリングすること含むブロック266に進む。ブロック266は、上述のブロック216と同様のものであってもよい。方法250の連続する反復は、方法250、270で使用されるオーディオ・セグメントの再生期間より短い間隔でスケジューリングされてもよい。たとえば、方法250、270で使用されるオーディオ・セグメントがτの再生期間を有する場合には、ブロック266は、0.5τ未満の間隔で、方法250の連続する反復をスケジューリングすることを含むことができる。いくつかの実施形態では、スケジューリングされる方法250の間隔は、0.2τ未満である。いくつかの実施形態では、スケジューリングされる方法250の間隔は、0.1τ未満である。ブロック266でキューイングおよび復号方法250の次の反復がスケジューリングされた後で、方法250は終了し、制御がスクリプト・インタプリタに返される。
上述のように、方法250は、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。方法250の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。たとえば、特定の実施形態では、ブロック254、256、262、264のいずれかの機能を、スクリプトによってそれが解釈されるとき直接実行してもよい。
図6は、特定の実施形態によるオーディオ・レンダラ・インターフェースを実現するための方法のための方法270のフローチャートである。方法270は、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。たとえば、方法270は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行されてもよい。方法270の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。方法270は、オーディオ・データの最後のセグメントが復号済みオーディオ・バッファ(たとえば、復号済みオーディオ・バッファ176(図2B))からオーディオ・レンダラ(たとえば、オーディオ・レンダラ182(図2B))にロードされたかどうかを調査することを含むブロック272で始まる。ブロック272の問い合わせが肯定的である(すなわち、復号済みオーディオ・データすべてがオーディオ・レンダラに送られた(ブロック272、「はい」分岐))場合、方法270は、下記で述べる任意選択のブロック274を介してブロック276に進む。一方、ブロック272の問い合わせによって、復号済みオーディオ・バッファ内に、オーディオ・レンダラに送るべき復号済みオーディオ・データが依然としてあると判定された場合(ブロック272、「いいえ」分岐)には、方法270はブロック280に進む。
ブロック280は、オーディオ・レンダラがより多くのオーディオ・データを受け入れることができるかどうか(たとえば、オーディオ・データの別のセグメントを受け入れるために、オーディオ・レンダラの内部バッファ内に空間があるかどうか)を調査することを含む。ブロック280の問い合わせによって、オーディオ・レンダラがより多くのオーディオ・データを受け入れることができないと判定された場合(ブロック280、「いいえ」分岐)、方法270は、下記で述べる任意選択のブロック274を介してブロック276に進む。そうでなければ、オーディオ・レンダラがより多くのオーディオ・データを受け入れることができる場合(ブロック280、「はい」分岐)、方法270はブロック282に進む。ブロック282は、復号済みオーディオ・バッファ内に、オーディオ・レンダラにロードすべき復号済みオーディオ・データが使用可能であるかどうかを調査することを含む。ブロック282の問い合わせによって、復号済みオーディオ・バッファ内で十分な復号済みオーディオ・データが使用可能であると判定された場合(ブロック282、「はい」分岐)には、方法270は、復号済みオーディオ・データのセグメントを復号済みオーディオ・バッファからオーディオ・レンダラに転送することを含むブロック284に進む。このブロック284のデータ転送は、オーディオ・レンダラによって使用するのに適したフォーマットにオーディオ・データをフォーマットすることを含むことができる。ブロック284においてオーディオ・データをオーディオ・レンダラにロードした後で、方法270は、任意選択のブロック274を介してブロック276に進む。
ブロック282に戻ると、ブロック282の問い合わせによって、復号済みオーディオ・バッファ内で十分な復号済みオーディオ・データが使用可能でないと判定された場合(ブロック282、「いいえ」分岐)には、方法270は、任意選択のブロック286およびブロック274を介してブロック276に進む。任意選択のブロック286は、オーディオ・レンダラにはより多くの復号済みオーディオ・データを受け入れるための容量があったが、そのような復号済みオーディオ・データが復号済みオーディオ・バッファ内で使用可能でなかったことを記録すること、オーディオ・データの再生を(たとえば、オーディオ・データの復号および/またはキューイングオーディオ・レンダラに追いつくことができるように)オーディオ・レンダラによって休止する、または速度を落とすこと、オーディオ・データを(オーディオ・データをより速いレートで得ること、オーディオ・データをより頻繁に復号すること、より低いビットレートのオーディオ・ソースに切り替えることなど、によるなどして)より迅速に復号および/またはキューイングすべきであることを(たとえば、別のプロセス、方法などに)示すこと、および/またはその他など、1つまたは複数のドロップ・オーディオ・アクションを含むことができる。
方法270は、様々な経路を介して任意選択のブロック274で終わることができる。任意選択のブロック274は、現在の時間値をオーディオ・レンダラから入手することを含む。この現在の時間値は、オーディオ・データの現在のセグメントの再生に関連する時間基準を含むことができる。非限定的な例として、特定の例示的な実施形態では、方法270は、スクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行され、任意選択のブロック274は、関連のオーディオ・オブジェクトに対してaudio.buffered.endメソッドを呼び出し、その関連のオーディオ・データの最後にレンダリングされた(またはレンダリングしようとしている)セグメントの時間を示す値を得ることを含むことができる。任意選択のブロック274で得られた時間値は、方法220(図4)のブロック224Aにとって使用可能なものとしてもよい。いくつかの実施形態では、時間値が方法220のブロック224Aで得られるので、ブロック274は必要とされない。
最終的に、方法270は、オーディオ・レンダラによるオーディオ・データの再生が完了したかどうかを調査することを含むブロック276に進む。ブロック276の問い合わせが肯定的である(すなわち、オーディオ再生が完了している)場合には、方法270は終了する。一方、オーディオ再生が未完了である(ブロック276、「いいえ」分岐)場合、方法270は、将来のある時点のために方法270の後続の反復をスケジューリングすること含むブロック278に進む。ブロック278は、上述のブロック230(図4)と同様のものであってもよい。方法270の連続する反復は、方法250、270で使用されるオーディオ・セグメントの再生期間より短い間隔でスケジューリングされてもよい。たとえば、方法250、270で使用されるオーディオ・セグメントがτの再生期間を有する場合には、ブロック278は、0.5τ未満の間隔で、方法270の連続する反復をスケジューリングすることを含むことができる。いくつかの実施形態では、スケジューリングされる方法270の間隔は、0.2τ未満である。いくつかの実施形態では、スケジューリングされる方法270の間隔は、0.1τ未満である。ブロック230でビデオ・レンダリング方法220の次の反復がスケジューリングされた後で、方法220は終了し、制御がスクリプト・インタプリタに返される。
上述のように、ブラウザがクロスプラットフォーム・スクリプト(またはスクリプトの一部)を解釈するとき、ユーザ・コンピューティング・デバイス上で動作するインターネットブラウザによってネイティブに実行されてもよい。特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。たとえば、特定の実施形態では、ブロック272、280、282、286、276のいずれかの機能を、スクリプトによってそれが解釈されるとき直接実行してもよい。
図の実施形態では、方法250は、実行されるたびに、オーディオ・データの1つ以下のセグメントを入手および復号(または別の方法で準備)し、方法270は、実行されるたびに、オーディオ・データの1つ以下のセグメントをオーディオ・レンダラにロードする。上述のように、そのようなセグメントの長さは、たとえばユーザ・コンピューティング・デバイスにて使用可能な処理リソースによって決まり得る構成可能なパラメータであってもよい。いくつかの実施形態では、各オーディオ・セグメントは、オーディオ・データのフレームを含む。この実行は、方法250および方法270が、単一の実行スレッドを実行するアプリケーション・プログラムの同じスクリプト・インタプリタ(たとえば、いくつかの主要なインターネットブラウザのJavaスクリプト・インタプリタ)によって反復して実行され、非同期で解釈される場合、有利なものとなり得る。たとえば、そのような一実施は、方法250の連続する反復間で、方法270が(方法250によって復号された)オーディオ・データをオーディオ・レンダラにロードすることを可能にすることができる。他の実施形態では、オーディオ・データの複数のセグメントを、方法250の各反復において入手および/または復号(または別の方法で準備)することができ、および/または複数のセグメントを、方法270の各反復においてレンダリングすることができる。上述のように、いくつかの実施形態では、オーディオ・データの1つのセグメントが、方法250の各反復において部分的に(たとえば、ブロック214A、214B、214C、214Dと同様のブロックのサブセット)準備されてもよい。
方法250、270のスケジューリングは、上述の方法200、220のスケジューリングのものと同様の特性を有することがある。スケジュール間隔は、一定、動的、調和されたものであり、オーディオ・データのサンプリングレートで、または聴取者に適したレートでオーディオ・データをキューイング、復号、およびレンダリングすることを可能にするのに十分短いものとすることができる。方法250、270は、同じ、または異なる反復間期間を有するように構成されてもよい。いくつかの実施形態では、方法250は、方法270より頻繁に実行されるように構成される。いくつかの実施形態では、方法250、270の一方または両方を多インスタンス化し、複数の一方または両方の方法が(たとえば、同じ反復間期間で、または異なる反復間期間で)それ自体の連続する反復を絶えずスケジューリングするようにしてもよい。
上述のように、いくつかの実施形態では、インターネットブラウザが符号化されたオーディオ・データをネイティブにレンダリングすることができる。そのような実施形態では、オーディオ・データを復号すること、および復号済みオーディオ・データをキューイングすることに伴うステップが必要とされないように、方法250、270に適切な修正を加えることができる。
図3〜6に関連して上述した実施形態では、シングルスレッド型インタプリタによって順に実行される方法200、220、250、270の連続する反復をスケジューリングすることによって、マルチスレッド型処理がシミュレートされている。図7は、オーディオおよびビデオ・データをキューイング、復号、および準備するために、ビデオ・データをレンダリングするために、また他の実施形態によるオーディオ・レンダラ・インターフェースを実現するために使用することができる方法300のフローチャートである。方法300を使用することは、単一の方法300のコード・セグメントの連続する反復を反復してスケジューリングおよび解釈すること、しかし、どの手順が各反復において実行されるか判定するために論理を方法300のコード・セグメントに組み込むことを含む。
方法300は、図の実施形態ではいくつかの論理問い合わせ304、308、312、136を含む論理ブロック302を含む。いくつかの実施形態では、論理ブロック302、または論理ブロック302の特定の機能は、スクリプトが解釈されるときスクリプトによって直接実行されてもよい。論理ブロック302は、どの手順が方法300において実行されるか決定することができる。たとえば、図の実施形態では、論理ブロック302は、オーディオ・レンダラ・インターフェース手順を実行するのに条件が適切かどうかを調査することを含むブロック304で始まる。ブロック304の条件は、一般に、スクリプトにとってネイティブに、または直接使用可能とすることができる任意の情報に基づく情報を含むことができる。たとえば、ブロック304の条件は、オーディオ・レンダラのバッファ内のオーディオ・データの量を何らかの閾値に比較することに基づいてもよい。オーディオ・レンダラのバッファ内のオーディオ・データの量が何らかの閾値量より少ないと判定された場合には、オーディオ・レンダラ・インターフェース手順を実行し、より多くのオーディオ・データをオーディオ・レンダラにロードすることが望ましいものとなり得る。ブロック304の条件は、オーディオ・レンダラ・インターフェースに、または一般的にオーディオ・レンダリングに直接関連する条件に限定されない。いくつかの実施形態では、ブロック304の条件は、何らかの他の機能がより早く必要とされ得るかどうか評価することを含むことができる。たとえば、ブロック304の条件は、オーディオ・レンダラのバッファ内のオーディオ・データの量が閾値量より少ない場合でさえ(方法300の現在の反復において)ビデオ復号手順を実行することがより重要であるかどうか評価することを含むことができる。ブロック304の条件は、ドロップ・オーディオのブロック286(図6)および/またはドロップ・フレームのブロック234(図4)において生成される情報に基づいてもよい。
ブロック304の条件の評価により、オーディオ・レンダラ・インターフェース手順を実行するのに条件が適切であると判定された場合(ブロック304、「はい」分岐)には、方法300はブロック306に進む。ブロック306は、オーディオ・レンダラ・インターフェース手順を実行することを含む。そのようなオーディオ・レンダラ・インターフェース手順は、ブロック278の将来の反復のスケジューリングが必要とされないことを除いて、方法270(図6)のものと同様の方法を含むことができる。オーディオ・レンダラ・インターフェース手順から戻った後で、方法300は、将来のある時点のために方法300の別の反復をスケジューリングすること含むブロック320に進む。ブロック320のスケジューリングは、方法200、220、250、270のスケジューリングのブロックについて上述したものと同様のものであってもよい。たとえば、方法300がスクリプト化された命令のセット(たとえば、Javaスクリプト命令のセット)として実行される場合、ブロック320は、setTimeout()メソッドおよび/またはsetInterval()メソッドを使用することを含むことができる。ブロック320でスケジューリングされる間隔は、静的でも動的でもよい。ブロック320でスケジューリングされる間隔は、経過してもなおビデオおよびオーディオ・データが好適なレートでキューイング、復号、および/または別の方法で準備されることを可能にし得る最大時間より短いものとすることができる。いくつかの実施形態では、ブロック320でスケジューリングされる間隔は、0.25ms〜25msの範囲内である。いくつかの実施形態では、ブロック320でスケジューリングされる間隔は、方法300の現在の反復が完了した後、可能な限りすぐにスケジューリングされる。
ブロック304の条件の評価により、オーディオ・レンダラ・インターフェース手順を実行するのに条件が適切でないと判定された場合(ブロック304、「いいえ」分岐)には、方法300はブロック308に進む。ブロック308は、オーディオ・レンダラ手順を実行するのに条件が適切かどうかを調査することを含む。ブロック308の問い合わせは、ブロック304の問い合わせと同様のものであってもよく、スクリプトにとってネイティブに、または直接使用可能とすることができる任意の情報に基づくことができる。非限定的な例として、ブロック308の問い合わせは、(たとえば、ブロック224(図4)で上述したものと同様にして得られた)現在のフレーム・インデックスを評価すること、および現在のフレーム・インデックスが、レンダリングされた最後のビデオ・フレームのフレーム・インデックスより大きいかどうか判定することに基づいてもよい。現在のフレーム・インデックスが、レンダリングされた最後のビデオ・フレームより大きい場合には、ビデオ・レンダラ手順を実行し、ビデオ・データの別のフレームをレンダリングすることが望ましいものとなり得る。上述のブロック308の条件と同様に、ブロック308の条件は、何らかの他の機能がより早く必要とされ得るかどうか評価することを含むことができる。ブロック304の条件は、ドロップ・オーディオのブロック286(図6)および/またはドロップ・フレームのブロック234(図4)において生成される情報に基づいてもよい。ブロック308の条件の評価により、ビデオ・レンダリング手順を実行するのに条件が適切であると判定された場合(ブロック308、「はい」分岐)には、方法300はブロック310に進む。ブロック310は、ビデオ・レンダリング手順を実行することを含む。そのようなビデオ・レンダリング手順は、ブロック230の将来の反復のスケジューリングが必要とされないことを除いて、方法220(図4)のものと同様の方法を含むことができる。ビデオ・レンダラ手順から戻った後で、方法300は、続いてブロック320で別の反復をスケジューリングする。
ブロック308の条件の評価により、ビデオ・レンダラ手順を実行するのに条件が適切でないと判定された場合(ブロック308、「いいえ」分岐)には、方法300はブロック312に進む。ブロック312は、ビデオ・キューイング/復号手順を実行するのに条件が適切かどうかを調査することを含む。ブロック312の問い合わせは、ブロック304、308の問い合わせと同様のものであってもよく、スクリプトにとってネイティブに、または直接使用可能とすることができる任意の情報に基づくことができる。非限定的な例として、ブロック312の問い合わせは、フレーム画像バッファ(たとえば、フレーム画像バッファ126(図2A))内の準備されたビデオ・データの量を適切な閾値に比較すること、および/またはビデオ・データ・キュー(たとえば、ビデオ・データ・キュー112(図2A))内のビデオ・データの量を適切な閾値に比較することに基づいてもよい。ブロック304、308の条件と同様に、ブロック312の条件は、何らかの他の機能がより早く必要とされ得るかどうか評価することを含むことができる。ブロック312の条件は、ドロップ・オーディオのブロック286(図6)および/またはドロップ・フレームのブロック234(図4)において生成される情報に基づいてもよい。ブロック312の条件の評価により、ビデオ・キューイング/復号手順を実行するのに条件が適切であると判定された場合(ブロック312、「はい」分岐)には、方法300はブロック314に進む。ブロック314は、ビデオ・キューイング/復号手順を実行することを含む。そのようなビデオ・キューイング/復号手順は、ブロック216の将来の反復のスケジューリングが必要とされないことを除いて、方法200(図3)のものと同様の方法を含むことができる。ビデオ・キューイング/復号手順から戻った後で、方法300は、続いてブロック320で別の反復をスケジューリングする。
ブロック312の条件の評価により、ビデオ・キューイング/復号手順を実行するのに条件が適切でないと判定された場合(ブロック312、「いいえ」分岐)には、方法300はブロック316に進む。ブロック316は、オーディオ・キューイング/復号手順を実行するのに条件が適切かどうかを調査することを含む。ブロック316の問い合わせは、ブロック304、308、312の問い合わせと同様のものであってもよく、スクリプトにとってネイティブに、または直接使用可能とすることができる任意の情報に基づくことができる。非限定的な例として、ブロック316の問い合わせは、復号済みオーディオ・バッファ(たとえば、復号済みオーディオ・バッファ176(図2B))内の復号済みオーディオ・データの量を適切な閾値に比較すること、および/またはオーディオ・データ・キュー(たとえば、オーディオ・データ・キュー162(図2B))内のオーディオ・データの量を適切な閾値に比較することに基づいてもよい。ブロック304、308、312の条件と同様に、ブロック316の条件は、何らかの他の機能がより早く必要とされ得るかどうか評価することを含むことができる。ブロック316の条件は、ドロップ・オーディオのブロック286(図6)および/またはドロップ・フレームのブロック234(図4)において生成される情報に基づいてもよい。ブロック316の条件の評価により、オーディオ・キューイング/復号手順を実行するのに条件が適切であると判定された場合(ブロック316、「はい」分岐)には、方法300はブロック318に進む。ブロック318は、オーディオ・キューイング/復号手順を実行することを含む。そのようなオーディオ・キューイング/復号手順は、ブロック266の将来の反復のスケジューリングが必要とされないことを除いて、方法250(図5)のものと同様の方法を含むことができる。オーディオ・キューイング/復号手順から戻った後で、方法300は、続いてブロック320で別の反復をスケジューリングする。
図の実施形態では、ブロック316の条件の評価により、ビデオ・キューイング/復号手順を実行するのに条件が適切でないと判定された場合(ブロック316、「いいえ」分岐)には、方法300は、2つの任意選択の経路の1つに沿って進む。場合によっては、ブロック316の「いいえ」分岐は、方法300をブロック304にループバックさせることができる。他の場合には、ブロック316の「いいえ」分岐は、方法300に、続いてブロック320で別の反復をスケジューリングさせる。他の実施形態では、ブロック316の「いいえ」分岐は、手順(たとえば、ブロック306、310、314、318)の1つを選択することを含むことができる別の機能ブロック(図示せず)に方法300を導くことができる。そのような選択は、ブロック304、308、312、316の条件のどれが肯定的な結果に最も近いかに基づいてもよい。他の実施形態では、ブロック316は必要とされず、ブロック312の「いいえ」分岐が、ブロック318に直接導いてもよい。そのような実施形態では、ブロック318のオーディオ・キューイング/復号手順がデフォルト手順である。他の実施形態では、他の手順の1つ(たとえば、ブロック306、310、314の1つ)がデフォルト手順であるように、論理ブロック302の論理を構築することができる。
状況によっては、方法200、220、250、270、300の特定の機能ブロックは、過度に時間がかかることがあり、これはレンダリング・アーチファクトを引き起こすおそれがある。たとえば、方法200のプロセッサ集約的な機能ブロック(図3)は、ビデオ・データのフレームを準備することを含むブロック214である。ブロック214は、ブロック214A、214B、214C、214Dの機能のすべてがブロック214内にまとめられた場合、特にプロセッサ集約的なものとなり得る。状況によっては、特に比較的処理能力の小さいデバイス上で、ブロック214においてビデオ・データのフレームを準備するために必要とされる時間は、関連のビデオ・データのフレーム間間隔((フレームレート)−1)より長くなり得る。そのような状況では、プロセッサは、そうでない場合にはビデオ・データのフレームをレンダリングしていることができたときにブロック214におけるビデオ・データのフレームを復号することに掛かり切りであるため、ビデオ・フレームが飛ばされる、または失われる可能性があり、ビデオ・アーチファクトを引き起こす。
いくつかの実施形態では、方法200、220、250、270、300は、サブコンポーネント(たとえば、機能サブブロックまたはサブステップ)にパースまたは再分割されてもよく、ビデオおよび/またはオーディオ・レンダリングに関連する機能(たとえば、ビデオ・レンダリング方法220および/またはオーディオ・レンダリング方法270)を、そのようなサブコンポーネント間で実現してもよい。ビデオ準備のブロック214の例を続けると、ビデオ準備のブロック214は、いくつかのサブコンポーネントに再分割されてもよく、これらのサブコンポーネントは、サブコンポーネント214A、214B、214C、214Dを含むことも、他の(図示されている、または図示されていない)サブコンポーネントを含むこともできる。いくつかの実施形態では、サブコンポーネント214A、214B、214C、214Dは、それら自体がさらなるサブコンポーネントに再分割されてもよい。ブロック214の特定のサブコンポーネントの後で、条件を評価し、ビデオおよび/またはオーディオ・レンダリング(たとえば、ビデオ・レンダリング方法220および/またはオーディオ・レンダリング・インターフェース方法270)に関連する手順を実行するためにブロック214を解釈すべきかどうか判定することができる。そのような解釈条件は、ブロック306、310、314、318について上述した条件と同様のものであってもよく、概して、スクリプトにとってネイティブに、または直接使用可能とすることができる任意の情報に基づくことができる。たとえば、ビデオ・レンダリング手順を実行することに関連する解釈条件は、ブロック308のものと同様のものであってもよく、オーディオ・レンダラ・インターフェース手順を実行することに関連する解釈条件は、ブロック304のものと同様のものであってもよい。そのような解釈条件が肯定的なものであると評価された場合には、ビデオ復号ブロック214を解釈することができ、適切なビデオ・レンダリング手順および/またはオーディオ・レンダラ・インターフェース手順を実行することができる。この手順を実行した後で、ビデオ復号ブロックが再開されてもよい。そのような機能をビデオ復号ブロック214のサブコンポーネント間で実現することは、レンダリング・アーチファクトを低減する助けとなり得る。
方法200、220、250、270、300をサブコンポーネントに再分割すること、ならびにビデオおよび/またはオーディオ・レンダリングに関連する機能をそのようなサブコンポーネント間で実現することは、上述のブロック214の例に限定されない。方法200、220、250、270、300(および/または方法200、220、250、270、300の任意の好適な図示されている、または図示されていないブロックまたはステップ)を、任意の好適な方法で任意の好適なサブコンポーネントに再分割することができる。
上述のように、特定の非限定的な、例示的な実施形態では、方法200のブロック208(図3)および方法250のブロック258(図5)は、サーバ上でホストされるビデオコンテンツに対応するAJAX XMLHttpRequestオブジェクトのopen()メソッドを呼び出すことを含むことができる。このブロック258の機能は、インターネットブラウザが何らかのビデオおよび/またはオーディオ・データを、Javaスクリプトによって解釈することができるフォーマットで取り出すことを要求する。いくつかの実施形態では、ブロック208および/または258(およびそれらの対応する方法200、250)は、ブロック208および/または258の効率を高めるために反復して使用することができる複数のAJAX XMLHttpRequest(以下、AJAX)オブジェクトを利用することができる。
図8は、ブロック208のビデオ・データ・フェッチ機能を実現するために使用することができる方法350のフローチャートを示す。ブロック258は、同様にして実行されてもよい。図の実施形態では、方法350は、2つのAJAXオブジェクトの使用を含む。しかし、方法350は、3つ以上のAJAXオブジェクトを使用するように拡張されてもよい。方法350は、第1のAJAXオブジェクト(AJAX_1)が方法350の最後の反復で使用されたかどうかを調査することを含むブロック352で始まる。ブロック352の問い合わせが肯定的である(ブロック352、「はい」分岐)場合には、方法350はブロック354に進む。ブロック354では、第2のAJAXオブジェクト(AJAX_2)を使用し、データの次のセットをフェッチする。AJAX_2によって取り出されたデータは、AJAX_2オブジェクトを提供するインターネットブラウザ(または他のアプリケーション・プログラム)によってネイティブに管理されるデータ構造内に格納される。ブロック352の問い合わせが否定的である(ブロック352、「いいえ」分岐)場合には、方法350はブロック356に進む。ブロック356では、AJAX_1を使用し、データの次のセットをフェッチする。AJAX_1によって取り出されたデータは、AJAX_1オブジェクトを提供するインターネットブラウザ(または他のアプリケーション・プログラム)によってネイティブに管理されるデータ構造内に格納される。方法350は、ブロック354またはブロック356を実行した後で終了する。
いくつかの実施形態では、(方法350を含めて)ブロック208のデータ取り出し機能は、スクリプトの指示下でインターネットブラウザによってネイティブに実行されてもよい。いくつかの実施形態では、(方法350を含めて)ブロック208のデータ取り出し機能は、方法200の残りのものに対して(マルチスレッド環境における)並列スレッドとして、または(マルチプロセッシング環境における)並列プロセスとして実現されてもよい。たとえば、いくつかの実施形態では、インターネットブラウザは、方法200を実行するために1つの並列スレッド/プロセス(たとえば、スクリプト・インタプリタを含む)を実行することができ、方法350を実行するために第2の並列スレッド/プロセス(たとえば、AJAXオブジェクトを含む)を実行することができる。方法350において複数のAJAXオブジェクトを使用することは、複数のスレッドおよび/またはマルチプロセッシング環境を実行(実現)することが可能なユーザ・コンピューティング・デバイスを利用してもよい。たとえば、スレッドまたはプロセスを、複数のAJAXオブジェクトのそれぞれに割り当ててもよい。
インターネットブラウザのスクリプト・インタプリタがスクリプトを解釈しているとき、そのメモリ管理手順は、比較的非効率なものになり得る。これは特に、もはや使用されていない以前割り当てられたメモリを解放するために使用される、いわゆる「ガベージコレクション」の場合である。ガベージコレクションは、特に非効率なものになる可能性があり、処理リソースを消費する可能性があり、望ましくない時点−たとえばフレーム画像、またはオーディオの次のセグメントをレンダリングすることが望ましい時点で行われる可能性がある。方法350を使用して、符号化されたビデオ・データを中間バッファリングする必要を、インターネットブラウザのスクリプト・インタプリタによって割り振られるメモリを使用して回避することができる、あるタイプの「ラウンド・ロビン」バッファとしてAJAXオブジェクトを使用することができる。単一のAJAXオブジェクトしか使用されないときには、AJAXオブジェクトからフェッチされたデータ・ストリングを、インターネットブラウザのスクリプト・インタプリタによって管理される中間バッファ内にコピーすることが必要である、または望ましいものとなり得る。そのような中間バッファリングは、より多くのデータをフェッチするために使用することができるように単一のAJAXオブジェクトを解放するために必要となる、または望ましいものとなり得る。そのような中間バッファリングは、複数のAJAXオブジェクトを使用することによって回避することができる。なぜなら、それらのAJAXオブジェクトの1つを、データをフェッチするために使用することができ、一方、任意の他のAJAXオブジェクトからのデータを使用し、方法200の残りの部分を実現するスクリプトによって必要とされるデータを提供することができるからである。複数のAJAXオブジェクトから直接、フェッチされたデータを使用することに加えて、AJAXオブジェクトを実行する責任を担うブラウザの機能により、データの作成/破棄を管理することができ、これは、ブラウザのスクリプト・インタプリタによるデータの作成/破棄より効率的なものとなり得る。
また、状況によっては、インターネットを介して、または何らかの他のネットワークを介してアクセスされるデータには、接続ごとの帯域幅制限があり得る。そのような状況では、複数のAJAXオブジェクトの使用により、データをより速くストリーミングすることができる。
Javaスクリプト(登録商標)以外のスクリプトで実行される実施形態では、同様の方法および同様のオブジェクトを使用し、ビデオおよび/またはオーディオ・データをフェッチすることができる。そのような実施形態では、複数のデータ・フェッチ・オブジェクトを、本明細書に記載の複数のAJAXオブジェクトの使用と同様にして使用することができる。
いくつかの実施形態では、ビデオコンテンツは、好適なスクリプトを使用してそのビデオコンテンツを効率的にレンダリングする助けとすることができる技法を使用して符号化されてもよい。
いくつかのインターネットブラウザは、特定のデータ・フォーマット(コンテンツ転送フォーマットと呼ばれる)を有するデータがスクリプト・インタプリタから転送された、または別の方法で渡されたとき、そのようなデータを受け入れるにすぎない。たとえば、いくつかのブラウザは、そのようなデータがJavaスクリプト・インタプリタによってブラウザに転送された、または別の方法で渡されたとき、いわゆるベース64符号化データ・フォーマットを読み取るにすぎない。上述のように、ビデオ・レンダリング・システム100のコンテンツ転送エンコーダ145(図2A)は、任意選択で、方法200の任意選択のブロック214C(図3)でフレーム画像をベース64(または他のコンテンツ転送)符号化フォーマットに変換することができる。このコンテンツ転送符号化は、ユーザ・コンピューティング・デバイスでは計算コストがかかるプロセスとなり得る。たとえば、ベース64符号化の特定の場合には、そのようなコンテンツ転送符号化は、3バイトの各セットを検査すること、および3バイトの各セットを4文字に変換することを必要とする。そのような計算コストは、たとえば、そのようなコンテンツ転送符号化によりビデオ・フレームのレンダリングが、所望のフレームレートによって決まるフレーム間期間より長い期間、遅延を受ける可能性がある状況において、レンダリング・アーチファクトに通じる可能性がある。
いくつかの実施形態によれば、ビデオ・データのフレーム画像(および/またはオーディオ・データのセグメント(たとえば、フレーム))を、たとえばユーザ・コンピューティング・デバイスに送られる(またはユーザ・コンピューティング・デバイスによって取り出される)前に、ベース64(または他の好適なコンテンツ転送フォーマット)で予め符号化されてもよい。以下の説明は、ビデオ・データのフレーム画像をベース64または何らかの他の好適なコンテンツ転送フォーマットに予め符号化することをいい、そのような予め符号化することがオーディオ・データにも当てはまり得るという一般性を失わない。このフレーム画像をベース64(または何らかの他の好適なコンテンツ転送)フォーマットに予め符号化することは、下にあるビデオ・データのフレーム画像が、インターネットブラウザによってネイティブにレンダリングすることができるフォーマットで表される場合(たとえば、下にあるビデオ・データのフレーム画像がJPEGまたはGIFフォーマットで表されるとき)、特に有用である。そのような場合、フレーム画像変換およびコンテンツ転送符号化のプロセス(方法200のブロック214B、214C(図3))をスキップしてもよい。なぜなら、フレーム画像(ブロック214Aで復号された後)がすでに、インターネットブラウザに転送するのに、またインターネットブラウザによってレンダリングされるのに適したフォーマットになっているからである。そのような場合、ビデオ・レンダリング・システム100のフレーム画像コンバータ142およびコンテンツ転送エンコーダ145(図2A)も同様に省略されてもよい。いくつかの実施形態では、下にあるビデオコンテンツのフレーム画像が、インターネットブラウザによってネイティブにレンダリングすることができるフォーマット(たとえば、JPEGまたはGIFフォーマット)にトランスコードされてもよく、次いでトランスコードされたフレーム画像を、好適なコンテンツ転送フォーマットに予め符号化することができる。フレーム画像をベース64(または他のコンテンツ転送)フォーマットに予め符号化することは、符号化された(1つまたは複数の)ビデオ・コンテンツ・ファイルのサイズを増大することがあるが、ベース64(または他のコンテンツ転送)符号化データに圧縮性があるので、ファイル・サイズの増大があっても、符号化されたファイルをユーザ・コンピューティング・デバイスにストリーミングすることができる速度に対する影響は比較的小さい可能性がある。HTTP1.1によってサポートされる多数のデータ圧縮技法(たとえば、gzipおよび/またはデフレートなど)は、ベース64(または他のコンテンツ転送)符号化データが、限られた文字セット(たとえば、ベース64の場合、64文字、およびいくつかの制御文字)を使用することを利用することができる。
ビデオ・データのフレーム画像(および/またはオーディオ・データのフレーム)を予め符号化するこの技法は、ユーザ・コンピューティング・デバイスでのプロセッサ・リソースの消費を削減することができる。より具体的には、フレーム画像がベース64または他の好適なコンテンツ転送フォーマットに予め符号化される場合、それらは、ユーザ・コンピューティング・デバイスにてスクリプトによってベース64フォーマットに変換、または別の方法で符号化されることなしにユーザ・コンピューティング・デバイスにてインターネットブラウザに直接渡すことができる。
いくつかの実施形態では、ビデオコンテンツの下にあるフレーム画像がベース64フォーマットまたは何らかの他の好適なコンテンツ転送フォーマットに予め符号化される場合、各フレーム画像に対応するデータ・ストリングが同じ長さを有するように、その画像に対応するデータ・ストリングがパディングされる。たとえば、ベース64では、フレーム画像に対応するデータ・ストリングは、ラインフィード文字<LF>など適切な文字でパディングされてもよい。そのようなパディングは、パディングされたストリングに比較的圧縮性があるので、転送速度を著しく増大することがない。しかし、フレーム画像のこのパディングは、インターネットブラウザのスクリプト・インタプリタに、再振り分け、および対応する「ガベージコレクション」なしにメモリを再使用させる可能性がある。
より具体的には、パディングがなければ、各フレーム画像は、異なる長さを有することになる。ブラウザのスクリプト・インタプリタは、通常、ユーザ・コンピューティング・デバイスにおける何らかのメモリをフレーム画像の格納用に割り振ることになる。非限定的な例として、そのようなフレーム画像ストレージは、フレーム画像キュー(たとえば、キュー126、143、141、138(図2A))のいずれかを実行するために使用され得る。新しいフレームを処理するために、割り振られたメモリの一部を再使用することになったとき、新しいフレームのサイズが、上書きされることになる以前のフレームのサイズとは異なる場合、スクリプト・インタプリタは、以前の割振りを破棄し、新しいフレームを収容するためにメモリを再割振りする必要があると判断する可能性がある。以前割り振られたメモリの破棄および再割振りは、一般に「ガベージコレクション」と呼ばれる。そのような以前割り振られたメモリの破棄および再割振りは、プロセッサ・リソースを消費し、アーチファクトに通じる可能性がある。対照的に、フレームのすべてが同じサイズである場合には、スクリプトは、以前のメモリ割振りを破棄する、または別の方法でメモリ再割振りを引き起こすことなしに、以前割り振られたメモリ内で、以前のフレームを新しいフレームで上書きすることができる。これは、メモリ再割振りに関連するプロセッサ・リソースの消費を低減し、レンダリング・アーチファクトの発生を低減することができる。
現在、関心の高いインターネットブラウザすべてが、少なくとも2つの画像符号化ファイル・フォーマット、すなわちJPEGおよびGIFをネイティブにサポートする。特定の実施形態では、ビデオコンテンツは、複数の異なる符号化ファイル・フォーマットを有するビデオコンテンツのフレーム画像と共に符号化することができる。個々のフレーム画像が2つ以上の異なる画像符号化ファイル・フォーマット(たとえば、JPEGおよびGIF)で符号化されるビデオコンテンツが符号化されてもよい。より具体的には、符号化プロセス中に、各フレーム画像のための符号化ファイル・フォーマットが、フレーム画像の視覚的特性またはコンテンツに基づいて選択されてもよい。たとえば、GIFは、視覚的特性が鮮鋭な縁部および細部−たとえば、テクスチャ情報を表示する画像(クレジット画面、タイトル画面など)、および/または漫画画像などを含むフレーム画像を符号化するのに望ましいものとなり得る。JPEGは、より自然なビジュアル・コンテンツ(たとえば、そのような鮮鋭な縁部がない)を組み込むフレーム画像により適している可能性がある。
いくつかの実施形態では、特定のビデオコンテンツ要素内の個々のフレーム画像を処理し、JPEGファイル・フォーマットでよりよく符号化され得るか、それともGIFファイル・フォーマットか判定することができる。たとえば、各フレームの個々の画素に関連する値(たとえば、明るさ値および/または色度値)を、それらの隣接する画素に関連する値に比較し、1つまたは複数の階調度を決定することができる。一実施形態では、特定の非縁部の画素に対する隣接する画素のグループが、その8つの隣りの画素を含むことができるが、他の実施形態では、隣接する画素の他のグループを使用することができる。例示的な一実施形態では、階調度は、画素値の差に基づいてもよい。次いで、特定のフレーム画像内の画素のすべてに関する階調度を解析し、その特定のフレーム画像をJPEGファイル・フォーマットで符号化すべきか、それともGIFファイル・フォーマットか判定することができる。たとえば、比較的多数の比較的高い階調度がある場合には、これは、GIFフォーマットで符号化すべき鮮鋭な縁部を有するフレーム画像を示す可能性があり、一方、比較的多数の比較的低い階調度がある場合には、これは、JPEGファイル・フォーマットで符号化すべきフレーム画像を示す可能性がある。特定の一実施形態では、階調度のこの解析は、階調度をビニングし(概念的なヒストグラムなどを形成し)、次いで、各ビン内の階調度の数を1つまたは複数の適切な閾値に比較することによって行うことができる。
状況によっては、関心の高いユーザ・コンピューティング・デバイスの(1つまたは複数の)インターネットブラウザが追加の画像符号化ファイル・フォーマットをネイティブにレンダリングすることが可能であることを確かめることができる。そのような状況では、そのような追加の画像符号化ファイル・フォーマットが符号化プロセスに組み込まれてもよい。すなわち、特定のビデオコンテンツ要素内の個々のフレーム画像が3つ以上の異なる画像符号化ファイル・フォーマットで符号化されるビデオコンテンツを符号化することができる。
異なる符号化ファイル・フォーマットを有する個々のフレーム画像を有するビデオコンテンツを符号化することにより、(単一のファイル・フォーマットのフレーム画像を符号化することに対して)圧縮を改善することができ、これは、ビデオコンテンツをユーザ・コンピューティング・デバイスにてより効率的に入手および/または復号すること、および対応するより少ないアーチファクトに通じる可能性がある。
特定の実施形態では、フレーム画像をJPEGフォーマットに符号化するために使用される量子化テーブル(たとえば、明るさおよび色度量子化テーブル)を、各フレーム画像のビジュアル・コンテンツに従ってフレームごとにフレームに対して操作することができる。いくつかの実施形態では、各フレーム画像の画素値を、その時間的に隣接するフレーム画像のどちらか、または両方の画素値に(たとえば、画素ごとに)比較し、1つまたは複数の差メトリックを決定することができ、フレーム画像を符号化するために使用される(1つまたは複数の)量子化テーブルを、そのような(1つまたは複数の)差メトリックに基づいて決定することができる。たとえば、特定のフレーム画像の色度がその隣接するフレームの色度とは著しく異ならない(すなわち、色度の差メトリックが低い)と判定された場合には、これは比較的ゆっくりした動きのシーンを示す可能性があり、その特定のフレーム画像について比較的高いレベルの圧縮に対応する色度量子化テーブルの使用を可能にする。対照的に、特定の画素についての色度の差メトリックが比較的高い場合には、これは比較的速い動きのシーンを示す可能性があり、その特定のフレーム画像について比較的低いレベルの圧縮に対応する色度量子化テーブルの使用を示唆する。明るさ量子化テーブルについても、同様の調整が可能である。
符号化側でフレーム画像を符号化するためにJPEG量子化テーブルを操作することは、人間に知覚可能な細部を過度に犠牲にすることなしに高い圧縮を達成する助けとなり得る。フレーム画像のより高い圧縮により、ユーザ・コンピューティング・デバイスにて、より少ない計算リソースを使用し、フレーム画像を復号およびレンダリングすることができ、これにより、レンダリング・アーチファクトがより少なくなり得る。
いくつかのユーザ・コンピューティング・プラットフォームは、ビデオ・コンテンツ・ファイルの一部分のフェッチをサポートせず、完全なビデオ・コンテンツ・ファイルをダウンロード(または、別の方法で入手)することが可能であるにすぎない。非限定的な例として、Android(登録商標)オペレーティングシステムを動作させるいくつかの移動電話デバイスには、現在、この制限がある。いくつかの実施形態では、単一のビデオ・コンテンツ・ファイルが一連のチャンクにパースされてもよく、各チャンクを、まるで完全なビデオ・コンテンツ・ファイルであるかのように符号化してもよい。これは、ユーザ・コンピューティング・デバイスが各チャンクを別々にダウンロード(または、別の方法で入手)することを可能にし、スクリプトは、ユーザ・コンピューティング・デバイスにて解釈され、次いでユーザ・コンピューティング・デバイスにて、完全なビデオ・コンテンツ・ファイルをレンダリングするために、チャンクを一緒にして順番に編成するように構成することができる。より小さいビデオ・コンテンツ・ファイルを順番に編成するために、ユーザ・コンピューティング・デバイスにてリストが使用されてもよい。
一般に、しかし限定しないが、ビデオ・データは、24フレーム/秒または33フレーム/秒のフレームレートで符号化される。状況によっては、本明細書に記載のスクリプトがこれらの、または他の所望のフレームレートでのビデオ・データのレンダリングをサポートすることを可能にするためには、ユーザ・コンピューティング・デバイスにて使用可能な処理リソースが不足することになることが予想される。したがって、いくつかの実施形態では、ビデオ・データをより低いフレームレートでダウンサンプリングおよび再符号化することができ、ダウンサンプリングされたビデオ・データがユーザ・コンピューティング・デバイスにて復号されるとき、使用可能なフレーム画像は正常に表示することができ、使用可能なフレーム画像間の時点では、アルファブレンディング技法を使用して、補間フレーム画像を描画することができる。そのような補間技法は、ビデオ・データが符号化前にダウンサンプリングされる状況に限定されない。いくつかの実施形態では、ユーザ・コンピューティング・デバイスにて、所望のフレームレートでビデオ・データをレンダリングするためには処理リソースが不十分であると判定されてもよく、その場合には、使用可能なフレーム画像のサブセットを復号および表示することを選択することによって、ビデオ・データをユーザ・コンピューティング・デバイスにて事実上ダウンサンプリングすることができ、選択されたフレーム画像間の時点では、アルファブレンディング技法を使用して、補間フレーム画像を描画することができる。そのようなプロセスの例が、図9Aおよび図9Bに概略的に示されている。
図9Aおよび図9Bは、元のビデオ・データ400が、フレームレート1/tを有する例を示している。ここで、t0はフレーム間隔を表し、f、f、f、f...は、元のフレーム画像(たとえば、フレーム画像内の個々の画素の画素値)を表している。図9Aおよび図9Bのそれぞれにおいて、元のビデオ・データ400は、元のビデオ・データ400より低いフレームレートでダウンサンプリングされる。上述のように、そのようなダウンサンプリングは、ビデオ・データをユーザ・コンピューティング・デバイスに対して使用可能にする前に行うことができ、または、そのようなダウンサンプリングは、復号および処理するためにビデオ・データ内からフレーム画像の特定のサブセットを選択することによって、ユーザ・コンピューティング・デバイスにて行うことができる。図9Aの例では、元のビデオ・データ400は、1つ置きのフレーム(f、f、f、f...)を取ることによってダウンサンプリングされ、その結果、再符号化されたビデオ・データ402は、元のビデオ・データ400のフレームレート1/tの半分である1/tを有する。図9Bの例では、元のビデオ・データ400は、2つ置きのフレーム(f、f、f、f...)を取ることによってダウンサンプリングされ、その結果、再符号化されたビデオ・データ404は、元のビデオ・データ400のフレームレート1/tの1/3である1/tを有する。図9Aおよび図9Bの例は説明のためのものにすぎず、元のビデオ・データ400は、一般に、元のフレーム画像f、f、f、f...の任意の好適な整数分の一を取ることによってダウンサンプリングされてもよいことが当業者には理解されよう。
図9Aおよび図9Bの実施形態におけるダウンサンプリングされたデータ402、404の利点は、ユーザ・コンピューティング・デバイスがそれに応じて画像データのより少ないフレームを復号および準備すればよいことである。たとえば、図9Aのダウンサンプリングされたデータ402の場合には、ビデオ・デコーダ122およびフレーム画像プロセッサ136(図2A参照)は、ブロック214A、214B、214C、214D(図3参照)においてフレーム画像の数の半分を処理すればよい。フレーム画像復号および/または準備のそのように削減された量により、ユーザ・コンピューティング・デバイスの処理リソースに対する負担が低減され得る。しかし、いくつかの実施形態では、(たとえば、ブロック236(図4)においてフレーム画像レンダラ132(図2A)によって)元のフレームレート1/tでフレーム画像をレンダリングすることが望ましいものとなり得る。なぜなら、これは流れるように動くビデオの見え方をもたらすことになるからである。そのような実施形態では、補間フレーム画像を、ダウンサンプリングされたデータ402、404の画像フレーム間の時点でレンダリングすることが望ましい可能性がある。たとえば、図9Aのダウンサンプリングされたデータ402の場合、ダウンサンプリングされたデータ402はt、t、t...の時間に対応する復号済みフレーム画像を含まないが、これらの時点で補間フレーム画像をレンダリングすることが望ましい可能性がある。同様に、図9Bのダウンサンプリングされたデータ404の場合、ダウンサンプリングされたデータ404はt、t、t、t...の時間に対応する復号済みフレーム画像を含まないが、これらの時点で補間フレーム画像をレンダリングすることが望ましい可能性がある。
いくつかの実施形態では、そのような補間は、アルファブレンディングを使用して画像オブジェクトを作成することによって提供することができる。アルファブレンディングされたそのような画像オブジェクトは、たとえばブロック148(図2A)およびブロック214D(図3)で作成されてもよい。特定の一実施形態の場合には、作成された画像オブジェクトを、たとえばcanvasタグの引数とすることができる。図9Cは、特定の実施形態に従って、そのようなアルファブレンディングされた画像オブジェクトを作成するための方法420を示す。方法420は、現在のフレーム・インデックス(たとえば、ブロック224(図4)で決定されるフレーム・インデックス)について的確なフレームが使用可能であるかどうかを調査することを含むブロック422で始まる。使用可能な的確なフレームがある場合(ブロック422、「はい」分岐)には、方法420は、その的確なフレームに基づいて画像オブジェクトを作成することを含むブロック424に進む。ダウンサンプリングされたデータ402(図9A)の例示的な実施形態の場合、方法420は、t、t、t、t...の時点でフレームf、f、f、f...のための的確なフレームを使用して画像オブジェクトを作成することが可能であり、ダウンサンプリングされたデータ404(図9B)の例示的な実施形態の場合、方法420は、t、t、t...の時点でフレームf、f、f...のための的確なフレームを使用して画像オブジェクトを作成することが可能である。これは、描画すべきデータ406として図9Aに、また描画すべきデータ408として図9Bに概略的に示されている。方法420は、ブロック424で画像オブジェクトを作成した後で終了する。
ブロック422に戻ると、ブロック422の問い合わせによって、現在のフレーム・インデックスについて使用可能な的確なフレームがないと判定された場合(ブロック422、「いいえ」分岐)には、方法420は、アルファブレンディング係数を決定することを含むブロック426に進む。一般に、ブロック426のアルファブレンディング係数は、
α=[β+l−mod(f#,β)]−1
によって与えることができ、上式で、
・ αは、所望のアルファブレンディング係数であり、
・ βは、事実上のダウンサンプリング係数、または同等に、使用可能な画像フレーム間のレンダリング回数+1(たとえば、図9Aの場合β=2、および図9Bの場合β=3)であり、
・ f#は、現在のフレーム・インデックスであり、
・ mod(x,y)は、xをyで割った整数の余りを返すモジュロ演算子である。
この公式を図9Aの例について使用すると、f、f、f...の場合、α=0.5であり、図9Bの例については、f、f、f...の場合、α=0.33、f、f、f...の場合、α=0.5である。一般に、上記の式は、任意のダウンサンプリング係数βについてアルファブレンディング係数を求めるのに適している。ブロック426の後で、方法420は、次に使用可能な画像フレームの一部分を以前の画像フレームの画像オブジェクト上にアルファブレンディングすることによって画像オブジェクトを作成することを含むブロック428に進む。次に使用可能な画像フレームの一部分は、ブロック426のアルファブレンディング係数によって決定される。たとえば、図9Aの例におけるフレームfの場合、α=0.5、次に使用可能な画像フレームはfであり、以前のフレームについての画像オブジェクトはfであり、ブロック428は、0.5fを以前の画像オブジェクト(f)上にアルファブレンディングすることによって画像オブジェクトを作成することを含み、これによりf=0.5f+0.5fが生成される。同様に、図9Aの例におけるフレームfの場合、α=0.5、次に使用可能な画像フレームはfであり、以前のフレームについての画像オブジェクトはfであり、ブロック428は、0.5fを以前の画像オブジェクト(f)上にアルファブレンディングすることによって画像オブジェクトを作成することを含み、これによりf=0.5f+0.5fが生成される。これは、描画すべきデータ406として図9Aに概略的に示されている。
図9Bの例におけるフレームfの場合、α=0.33、次に使用可能な画像フレームはfであり、以前のフレームについての画像オブジェクトはfであり、ブロック428は、0.33fを以前の画像オブジェクト(f)上にアルファブレンディングすることによって画像オブジェクトを作成することを含み、これによりf=0.33f+0.67fが生成される。図9Bの例におけるフレームfの場合、α=0.5、次に使用可能な画像フレームはfであり、以前のフレームについての画像オブジェクトはf=0.33f+0.67fであり、ブロック428は、0.5fを以前の画像オブジェクト(f=0.33f+0.67f)上にアルファブレンディングすることによって画像オブジェクトを作成することを含み、これによりf=0.5f+0.5(0.33f+0.67f)=0.67f+0.33fが生成される。図9Bの例におけるフレームfの場合、α=0.33、次に使用可能な画像フレームはfであり、以前のフレームについての画像オブジェクトはfであり、ブロック428は、0.33fを以前の画像オブジェクト(f)上にアルファブレンディングすることによって画像オブジェクトを作成することを含み、これによりf=0.33f+0.67fが生成される。図9Bの例におけるフレームfの場合、α=0.5、次に使用可能な画像フレームはfであり、以前のフレームについての画像オブジェクトはf=0.33f+0.67fであり、ブロック428は、0.5fを以前の画像オブジェクト(f=0.33f+0.67f)上にアルファブレンディングすることによって画像オブジェクトを作成することを含み、これによりf=0.5f+0.5(0.33f+0.67f)=0.67f+0.33fが生成される。これは、描画すべきデータ408として図9Bに概略的に示されている。
方法420は、ブロック428で各画像オブジェクトを作成した後で終了する。方法420(図9C)のプロセスは、方法200(図3)の各反復、たとえばブロック214において実行し、エンコーダ側でのダウンサンプリングまたはユーザ・コンピューティング・デバイスでの事実上のダウンサンプリングのためにフレーム画像が使用可能でないところでフレーム画像を補間することができる。これは、ユーザ・コンピューティング・デバイスが望ましいフレームレートでフレーム画像をレンダリングすることを可能にすることができ、一方、ユーザ・コンピューティング・デバイスでのプロセッサ・リソースに対する負荷を低減し、おそらくはより少ないビデオ・アーチファクトに通じる。
特定の実施形態では、スクリプトは、解釈されたとき、ユーザ・コンピューティング・デバイスに、HTTPプロトコルを使用してサーバなどからのビデオコンテンツにアクセスさせる。比較的洗練されたプロトコルを利用し、ビデオコンテンツを特定のユーザ・コンピューティング・デバイス、特定のメディア・プレーヤ・アプリケーション、および/または特定のストリーミング・ネットワーク接続速度(ビットレート)に合わせて調整することができるストリーミング・メディアとは異なり、データを転送するためにHTTPプロトコルを使用するHTTPサーバは、一般に、ユーザ・コンピューティング・デバイスとインタラクションするための能力が比較的制限されている。いくつかの実施形態では、スクリプトは、解釈されたとき、ユーザ・コンピューティング・デバイス、インターネットブラウザ、および/またはサーバとユーザ・コンピューティング・デバイスとの間のネットワーク接続の特性を決定し、ビデオコンテンツのレンダリングを調整するために適切なアクションをとる。
図10は、スクリプトが、解釈されたとき、ユーザ・コンピューティング・デバイス、および/またはサーバとユーザ・コンピューティング・デバイスとの間のネットワーク接続の1つまたは複数の特性に基づいてビデオコンテンツのレンダリングを調整する、ビデオコンテンツをレンダリングするための方法450を示す。方法450、またはその一部分は、スクリプトによって直接実行されてもよい。方法450は、初期デバイス特性を照会することを含むブロック452で始まる。そのようなデバイス特性は、デバイスのハードウェアおよび/またはそのデバイス上で動作するソフトウェア(インターネットブラウザおよび/またはオペレーティングシステム・ソフトウェアを含む)の特性を含むことができる。デバイス特性の非限定的な例は、プロセッサ速度および/または処理能力、表示特性(たとえば、表示解像度、表示の向き、縦横比、および/または画面サイズなど)、専用ハードウェアがあること(たとえば、専用オーディオ・レンダリング・ハードウェアおよび/またはビデオ・レンダリング・ハードウェア)、インターネットブラウザ、またはスクリプトを解釈する他のアプリケーション・プログラムのソフトウェア特性(特定のオーディオ・フォーマットをネイティブにレンダリングする、および/または特定の画像ファイル・フォーマットをネイティブにレンダリングするためのインターネットブラウザの能力など)、デバイスのオペレーティングシステムのソフトウェア特性、および/またはファイル処理能力(デバイス、デバイスのオペレーティングシステム、および/またはデバイスのインターネットブラウザがビデオコンテンツの全体を単一のファイルとして対処することができるかどうか、あるいはビデオコンテンツを複数のより小さいファイルにパースしなければならないかどうかなど)などを含む。
デバイス特性が決定された後で、スクリプトは、解釈されたとき、ブロック454において、ブロック452で得られたデバイス特性を使用し、特定のデバイスについてレンダリング特性を初期化する。ブロック454における特定のレンダリング特性を初期化することは、サーバからダウンロードするために適切な(1つまたは複数の)ファイルを選択することを含むことができる。これは、たとえば、特定のユーザ・コンピューティング・デバイスがより小さなファイルにパースされたビデオコンテンツを有する必要があると決定された場合、ユーザ・コンピューティング・デバイスまたはそのブラウザのネイティブ・オーディオ・レンダリング能力により、(1つまたは複数の)特定のビデオ・コンテンツ・ファイルの使用が示唆される場合、ユーザ・コンピューティング・デバイスまたはそのブラウザのネイティブ画像レンダリング能力により、(1つまたは複数の)特定のビデオ・コンテンツ・ファイルの使用が示唆される場合、ユーザ・デバイスのディスプレイの解像度および/または画面サイズにより、(1つまたは複数の)特定のビデオ・コンテンツ・ファイルの使用が示唆される場合、および/またはユーザ・コンピューティング・デバイスのプロセッサの知識により、ダウンサンプリングされた(1つまたは複数の)ビデオコンテンツを使用すべきであると示される場合などがあり得る。ブロック454における他のレンダリング特性を初期化することは、後続のレンダリングのために特定の情報を追跡することを含むことができる。これは、たとえば、画面サイズおよび/または表示の向き(縦横比)などレンダリング特性の場合があり得る。
次いで、方法450は、先に述べた方法のいずれかによるレンダリング・プロセスを開始することを含むブロック456に進む。ブロック456では、スクリプトは、解釈されたとき、ブロック454の初期化されたレンダリング特性に基づいて(1つまたは複数の)適切なオーディオ・コンテンツ・ファイルを入手しようと試みることができる。それに加えて、または代替として、ブロック456では、スクリプトは、任意の入手された(1つまたは複数の)ビデオ・コンテンツ・ファイルのビデオコンテンツを、ブロック454の初期化されたレンダリング特性に基づいてレンダリングさせることになる。非限定的な例として、ユーザ・コンピューティングのディスプレイがある解像度または画面サイズを有する場合には、スクリプトは、ユーザ・コンピューティング・デバイスのディスプレイに最もよく合うように画像フレームを拡縮することになり、ビデオ・データが、ユーザ・コンピューティング・デバイスにて受信される前にダウンサンプリングされる場合には、スクリプトは、既知の画像フレーム間で補間することになり、および/またはビデオ・データが特定のフレームレートで受信されるが、ユーザ・コンピューティング・デバイスのプロセッサが画像フレームを十分速く復号および準備することができない場合には、スクリプトは、復号および準備するために画像フレームのサブセットを選択することによってユーザ・コンピューティング・デバイスにてビデオ・データを事実上ダウンサンプリングすることになり、選択された画像フレーム間で補間することになる、などがある。
時々、スクリプトは、解釈されたとき、ブロック458において、継続中のデバイス特性を照会することになる。このブロック458の照会は、ブロック452の初期照会から何かが変化したどうかについてブロック458が問い合わせることができることを除いて、方法452の初期照会と同様のものであってもよい。非限定的な例として、潜在的な変化は、デバイス・ディスプレイの向き、および対応する、表示すべき画像フレームの縦横比の変化を含むことができる。状況によっては、ブロック548は、ブロック234(図4)におけるドロップ・ビデオ・アクションおよび/またはブロック286(図5)におけるドロップ・オーディオ・アクションから情報を獲得することを含むことができる。たとえば、ブロック458の照会によって、画像フレームの閾値数を超えて落とされたと判定された場合には、ユーザ・コンピューティング・デバイスのプロセッサの能力が完全なフレームレートのビデオ・データを処理するのに不十分であり、適切な(1つまたは複数の)ビデオ・コンテンツ・ファイルをおそらくはダウンサンプリングされた(1つまたは複数の)ファイルに変更すべきであるか、または完全なレートのビデオ・フレームの適切なサブセットを選択することによって、ビデオ・データをユーザ・コンピューティング・デバイスにて事実上ダウンサンプリングすべきであると結論づけることができる。
また、時々、スクリプトは、解釈されたとき、ブロック460において、サーバとユーザ・コンピューティング・デバイスとの間の継続中のネットワーク特性を照会することになる。サーバとユーザ・コンピューティング・デバイスとの間の使用可能な帯域幅またはビットレートが低すぎ、ビデオコンテンツが、復号またはレンダリングされるように適時にユーザ・コンピューティング・デバイスに到着することを保証することができない場合には、ダウンサンプリングされたビデオ・データを有する(1つまたは複数の)ファイル、および/またはより低い解像度の(1つまたは複数の)ファイルなど、より低い品質の(1つまたは複数の)ビデオ・ファイルに切り替えることが望ましいものとなり得る。
ブロック462は、ブロック458およびブロック460から得られた情報に基づいてレンダリング特性を更新することを含む。たとえば、最初の反復では、ブロック462は、ブロック458およびブロック460から得られた情報に基づいてブロック454の初期化されたレンダリング特性を更新することを含むことができる。後続の反復では、ブロック462は、以前のブロック462のレンダリング特性を更新することを含むことができる。次いで、方法450は、引き続きビデオコンテンツをレンダリングすることを含むブロック464に進む。ブロック464は、ブロック464がブロック462で更新されたレンダリング特性を利用することを除いて、上述のブロック456と同様のものであってもよい。上述のように、(ブロック458およびブロック460の照会に基づく)更新されたブロック462のレンダリング特性は、レンダリングするために得られた(1つまたは複数の)ファイルの変化(たとえば、より高い、またはより低い品質のビデオ・ファイル)、またはビデオコンテンツのレンダリング一般の変化(たとえば、表示の向きに対処するように拡縮すること)に通じる可能性がある。これらの変化は、ブロック464で実行されてもよい。
次いで、方法450は、ビデオコンテンツのレンダリングが終わったかどうかについての問い合わせを含むブロック466に進む。終わった場合(ブロック466、「はい」分岐)には、方法450は終了する。さらに多くのビデオコンテンツをレンダリングすべき場合(ブロック466「いいえ」分岐)には、方法450は、ブロック458にループバックし、時々、デバイス特性を照会し、レンダリング特性を更新するプロセスを繰り返す。
本発明の実施形態は様々な動作を含み、それらは本明細書に記載されている。別段指定されていない限り、これらの動作は、ハードウェア・コンポーネント、ソフトウェア、ファームウェア、またはそれらの組合せによって実施することができる。
いくつかの実施形態は、マシン読取可能媒体上に記憶された命令を含むことができるコンピュータ・プログラム製品として実現されてもよい。これらの命令を使用し、記載の動作を実現するように汎用プロセッサまたは専用プロセッサをプログラムすることができる。マシン読取可能媒体は、マシン(たとえば、コンピュータ)によって読取り可能な形態(たとえば、ソフトウェア、処理アプリケーション)で情報を記憶するための任意の機構を含む。マシン読取可能媒体は、それだけには限らないが、磁気記憶媒体(たとえば、フロッピーディスケット)、光記憶媒体(たとえば、CD−ROM)、光磁気記憶媒体、読出し専用メモリ(ROM)、ランダムアクセス・メモリ(RAM)、消去可能なプログラマブル・メモリ(たとえば、EPROMおよび/またはEEPROM)、フラッシュ・メモリ、または電子命令を記憶するのに適した任意のタイプの媒体を含むことができる。
さらに、いくつかの実施形態は、マシン読取可能媒体が複数のコンピュータ・システム上に記憶される、および/またはそれらによって実行される分散コンピューティング環境で実現されてもよい。さらに、コンピュータ・システム間で転送される情報は、それらのコンピュータ・システムを接続する通信媒体を挟んでプルまたはプッシュされてもよい。単一の一続きのプロセス・ステップとして示されている方法が、対応する1つまたは複数のコンピュータ・プロセッサ上で実行されるステップの1つまたは複数のサブセットを有してもよく、次いでこれらのプロセッサは、たとえばプロセス間通信を使用してコンピュータ・プロセッサの間で中間結果、または結果の入手可能性を通信する。データ値は、CPUに近接して常駐するキャッシュ・メモリ内に、またはメモリ管理ハードウェアを介してコンピュータの主メモリにアドレスすることによって、さらにはそのようなメモリ管理ハードウェアが、外部記憶デバイス上に記憶すべきデータをコンピュータの主メモリにロードさせることによって格納されてもよい。
本発明の様々な実施形態を実現する際に使用されるコンピュータ処理コンポーネントは、マイクロプロセッサまたは中央処理装置、コントローラ、グラフィカル処理ユニット(GPU)、セル・コンピュータなど、1つまたは複数の汎用処理デバイスを含む。あるいは、そのようなデジタル処理コンポーネントは、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASCI)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、1つまたは複数の専用処理デバイスを含むことができる。特定の実施形態では、たとえば、デジタル処理デバイスは、コア・ユニットと複数のマイクロエンジンとを含む複数のプロセッサを有するネットワーク・プロセッサであってもよい。さらに、デジタル処理デバイスは、(1つまたは複数の)汎用処理デバイスと(1つまたは複数の)専用処理デバイスの任意の組合せを含むことができる。
本明細書には(1つまたは複数の)方法の動作が特定の順序で示され述べられているが、各方法の動作の順序は変えることができ、その結果、いくつかの動作は逆の順序で実行されてもよく、またはある動作が、少なくとも一部には他の動作と同時に実行されてもよい。他の実施形態では、異なる動作の命令または下位動作が、断続的なもの、および/または交互するようなものであってもよい。
上記であるコンポーネント(たとえば、ソフトウェア・モジュール、プロセッサ、アッセンブリ、デバイス、回路など)に言及が及ぶ場合、別段示されていない限り、そのコンポーネントに対する言及(「手段」に対する言及を含む)は、そのコンポーネントの等価物として、本発明の示されている例示的な実施形態における機能を実現する、開示されている構造に対して構造的に等価でないコンポーネントを含めて、記載のコンポーネントの機能を実現する(すなわち、機能的に等価である)任意のコンポーネントを含むものと解釈すべきである。
いくつかの例示的な態様および実施形態について上記で論じられているが、当業者なら、いくつかの修正、置換、追加、およびそれらのサブコンビネーションを理解するであろう。たとえば、
・ 方法300は、複数の方法がそれら自体の連続する反復を(たとえば、同じ反復間期間、または異なる反復間期間で)絶えずスケジューリングするように多インスタンス化されてもよい。
・ いくつかのユーザ・コンピューティング・デバイスは、複数および/または特定用途向けの画像/ビデオ・レンダリング・エンジンを有することが知られている。そのような画像/ビデオ・レンダリング・エンジンは、好適なハードウェアおよび/またはソフトウェアを含むことができる。非限定的な例として、AppleのiPhone(登録商標)およびiPad(登録商標)デバイスは、特定用途向けの3D画像/ビデオ・レンダリング・エンジンを含む。いくつかの実施形態は、ユーザ・コンピューティング・デバイスのインターネットブラウザをトリガし、そのような複数および/または特定用途向けのレンダリング・エンジンを活動化させることを含むことができる。たとえば、いくつかの実施形態は、iPhone(登録商標)およびiPad(登録商標)デバイスのSafari(登録商標)インターネットブラウザを、そのデバイスの3Dレンダリング・エンジンを使用するようにトリガし、ビデオコンテンツが3Dビデオ・データを含まない可能性があっても、ビデオコンテンツをレンダリングする助けとすることを含むことができる。特定の非限定的な一実施形態では、ウェブページ内の以下のCSSコードが、3Dレンダリング・エンジンを使用するようにSafari(登録商標)をトリガすることになる。
Figure 2014531142
・ いくつかの実施形態では、インターネットブラウザは、特定のユーザ・コンピューティング・デバイス・プラットフォーム用にコンパイルされるアプリケーション・プログラムである。他の実施形態では、ブラウザ機能は、オペレーティングシステムの一部であり、または場合によっては、デバイス・ハードウェアに内蔵された機能である。
したがって、以下の添付の特許請求の範囲、および以下導入される特許請求の範囲は、そのような修正、置換、追加、およびそれらのサブコンビネーションがそれらの真の精神および範囲内に入るので、それらすべてを含むように解釈されることが意図されている。

Claims (153)

  1. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするための、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信することを含み、前記スクリプトが、複数の前記ユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するようにコンパイルされたアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムが、前記ユーザ・コンピューティング・プラットフォーム上で動作し、
    前記スクリプトを送信することが、前記ユーザ・コンピューティング・プラットフォーム上で動作する前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記解釈されたスクリプトに、前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な符号化されたビデオ・データを、1つまたは複数のフレーム画像を含む復号済みビデオ・データに直接復号させる、方法。
  2. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記1つまたは複数のフレーム画像を前記ユーザ・コンピューティング・プラットフォーム上でネイティブに表示する、請求項1に記載の方法。
  3. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記解釈されたスクリプトに、前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な符号化されたオーディオ・データを、復号済みオーディオ・データに直接復号させる、請求項1に記載の方法。
  4. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記ユーザ・コンピューティング・プラットフォーム上で前記1つまたは複数のフレーム画像を表示することによって前記復号済みビデオ・データをレンダリングし、前記ユーザ・コンピューティング・プラットフォーム上で前記復号済みオーディオ・データを再生することによって前記復号済みオーディオ・データをレンダリングする、請求項3に記載の方法。
  5. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記ユーザ・コンピューティング・プラットフォーム上で前記1つまたは複数のフレーム画像を表示することによって前記復号済みビデオ・データをネイティブにレンダリングし、前記復号済みオーディオ・データを再生することによって前記復号済みオーディオ・データをネイティブにレンダリングする、請求項3に記載の方法。
  6. 前記ビデオ・データおよびオーディオ・データが、ビデオ・コンテンツ・アイテムの一部として互いに関連付けられており、前記1つまたは複数のフレーム画像が、複数のフレーム画像を含み、前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記解釈されたスクリプトに前記フレーム画像の表示を前記復号済みオーディオ・データの再生と直接同期させる、請求項4または5のいずれか一項に記載の方法。
  7. 前記ビデオ・データおよびオーディオ・データが、ビデオ・コンテンツ・アイテムの一部として互いに関連付けられており、前記1つまたは複数のフレーム画像が、複数のフレーム画像を含み、前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記復号済みオーディオ・データの再生に関連するオーディオ再生時間基準を確かめ、前記解釈されたスクリプトに、前記オーディオ再生時間基準に基づいて前記フレーム画像の表示を前記復号済みオーディオ・データの再生と直接同期させる、請求項4または5のいずれか一項に記載の方法。
  8. 前記フレーム画像の表示を前記復号済みオーディオ・データの再生と同期することが、前記ビデオ・データのレンダリングが時間の第1の閾値量だけ前記オーディオ再生時間基準より遅れていると判定されたことに基づいて1つまたは複数のフレーム画像の表示をスキップすることによって順序外れのフレーム画像の表示を進めること、および、前記ビデオ・データのレンダリングが時間の第2の閾値量だけ前記オーディオ再生時間基準より進んでいると判定されたことに基づいて1つまたは複数のフレーム画像を、前記ビデオ・データのフレームレートによって決まる期間より長い期間の間、表示させることのうちの少なくとも1つを含む、請求項7に記載の方法。
  9. 前記フレーム画像の表示を前記復号済みオーディオ・データの再生と同期することが、前記オーディオ再生時間基準を使用し、現在のフレーム・インデックスを決定すること、および、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像が表示される準備ができている場合、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像を表示することを含む、請求項7に記載の方法。
  10. 前記フレーム画像の表示を前記復号済みオーディオ・データの再生と同期することが、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像がフレーム画像キュー内の1つまたは複数の他のフレーム画像より遅れていると判定すること、および、遅れている場合、前記1つまたは複数の他のフレーム画像の表示をスキップすることを含む、請求項9に記載の方法。
  11. 前記フレーム画像の表示を前記復号済みオーディオ・データの再生と同期することが、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像が表示される準備ができていないと判定すること、および、そのような判定とは独立して、ドロップ・フレーム・アクションを開始することを含み、前記ドロップ・フレーム・アクションが、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像がレンダリングのための準備ができていなかったという指示を記録すること、復号済みオーディオ・データの再生を休止させる、または速度を落とさせること、符号化されたビデオ・データの復号のレートを増大させること、より低いフレームレートを有するビデオ・データへの切替えを引き起こすこと、前記画像フレームのサブセットを復号することによって前記ビデオ・データの事実上のダウンサンプリングへの切替えを引き起こすことのうちの1つまたは複数を含む、請求項9に記載の方法。
  12. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記符号化されたビデオ・データを前記フレーム画像に直接復号することを含む第1のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、前記フレーム画像を表示することによって前記ビデオ・データをレンダリングすることを含む第2のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートする、請求項4または5のいずれか一項に記載の方法。
  13. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記符号化されたオーディオ・データを前記復号済みオーディオ・データに直接復号することを含む第3のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、復号済みオーディオ・データをオーディオ・レンダラに供給するオーディオ・レンダラ・インターフェースを実行することを含む第4のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートする、請求項12に記載の方法。
  14. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、方法を反復してスケジューリングおよび実行することによってマルチスレッド型実行環境をシミュレートし、前記方法が、反復ごとに、1つまたは複数の対応する条件を論理的に調査し、前記対応する条件の前記1つまたは複数に応じて、
    前記符号化されたビデオ・データを前記フレーム画像に直接復号することを含む第1のシミュレートされたスレッド、
    前記フレーム画像を表示することによって前記ビデオ・データをレンダリングすることを含む第2のシミュレートされたスレッド、
    前記符号化されたオーディオ・データを前記復号済みオーディオ・データに直接復号することを含む第3のシミュレートされたスレッド、
    前記復号済みオーディオ・データをオーディオ・レンダラに送るオーディオ・レンダラ・インターフェースを実行することを含む第4のシミュレートされたスレッドのうちの1つを選択および実行する、請求項4に記載の方法。
  15. 前記第1のシミュレートされたスレッドを実行することが、前記第1のシミュレートされたスレッドを複数のサブコンポーネントに分割すること、サブコンポーネントの対の実行の間で、1つまたは複数の対応する条件に対する1または複数の論理的な調査を行い、前記1つまたは複数の対応する条件に応じて、前記第1のシミュレートされたスレッドに一時的に割り込み、第2のシミュレートされたスレッド、および復号済みオーディオ・データをオーディオ・レンダラに送るオーディオ・レンダラ・インターフェースを実行することを含む別のシミュレートされたスレッドのうちの1つの反復を選択および実行する、請求項12に記載の方法。
  16. 前記1つまたは複数のフレーム画像を表示することによって前記ビデオ・データをレンダリングすることが、少なくとも1対のフレーム画像を共にアルファブレンディングすることを含む、請求項4または5のいずれか一項に記載の方法。
  17. 前記1つまたは複数のフレーム画像を表示することによって前記ビデオ・データをレンダリングすることが、前記フレーム画像の第1のフレーム画像を表示することと前記フレーム画像の第2のフレーム画像を表示することとの間の1回または複数回のそれぞれにおいて、前記フレーム画像の前記第1のフレーム画像と前記フレーム画像の前記第2のフレーム画像のアルファブレンドを含むアルファブレンディング済み画像を表示することを含む、請求項4または5のいずれか一項に記載の方法。
  18. 前記フレーム画像の前記第1のフレーム画像を表示することと前記フレーム画像の前記第2のフレーム画像を表示することとの間の前記1回または複数回のそれぞれにおいて、前記アルファブレンディング済み画像を表示することが、
    α=[β+l−mod(f#,β)]−1
    によって与えられるアルファブレンディング係数を使用して前記フレーム画像の前記第2のフレーム画像を以前に表示された画像上にアルファブレンディングすることを含み、
    上式で、
    ・ βは、前記1回または複数回の数に等しいダウンサンプリング係数であり、
    ・ f#は、前記1回または複数回の現在の回の数を指すインデックスであり、
    ・ mod(x,y)は、xをyで割った整数の余りを返すモジュロ演算子である、請求項17に記載の方法。
  19. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、ビデオ・データ・キューを、その状況を判定するために直接監視するビデオ・データ・キュー・モニタの少なくとも一部分を、前記解釈されたスクリプトに直接実行させ、前記ビデオ・データ・キューの前記判定された状況に応じて、より多くの符号化されたビデオ・データをフェッチするかどうか判定する、請求項1から18のいずれか一項に記載の方法。
  20. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、AJAX XMLHttpRequestオブジェクトを使用してより多くの符号化されたビデオ・データをフェッチする前記ビデオ・キュー・モニタの第2の部分を実行する、請求項19に記載の方法。
  21. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、複数のAJAX XMLHttpRequestオブジェクトを交互に使用することによってより多くの符号化されたビデオ・データをフェッチする前記ビデオ・キュー・モニタの第2の部分を実行する、請求項19に記載の方法。
  22. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記オーディオ・データから前記ビデオ・データを直接逆多重化する、請求項4または5のいずれか一項に記載の方法。
  23. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、フレーム画像バッファを、その状況を判定するために監視するフレームバッファ・モニタを、前記解釈されたスクリプトに直接実行させ、前記フレーム画像バッファの前記判定された状況に応じて、前記符号化されたビデオ・データのより多くを復号するかどうか判定する、請求項1から22のいずれか一項に記載の方法。
  24. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記解釈されたスクリプトに、前記フレーム画像のうちの少なくとも1つの画像ファイル・フォーマットを第1の画像ファイル・フォーマットから第2の画像ファイル・フォーマットに直接変換させ、前記第2の画像ファイル・フォーマットが、前記アプリケーション・プログラムによってネイティブにレンダリングされることが可能である、請求項1から23のいずれか一項に記載の方法。
  25. 前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信することを含む、請求項1から24のいずれか一項に記載の方法。
  26. 前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信する前に前記ビデオコンテンツを前記符号化されたビデオ・データに符号化することを含み、前記ビデオコンテンツを符号化することが、前記フレーム画像のうちの少なくとも1つの画像ファイル・フォーマットを第1の画像ファイル・フォーマットから第2の画像ファイル・フォーマットに直接変換することを含み、前記第2の画像ファイル・フォーマットが、前記ユーザ・コンピューティング・プラットフォーム上で動作する前記アプリケーション・プログラムによってネイティブにレンダリングされることが可能である、請求項25に記載の方法。
  27. 前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信する前に前記ビデオコンテンツを前記符号化されたビデオ・データに符号化することを含み、前記ビデオコンテンツを符号化することが、
    第1のファイル・フォーマットで提供される前記フレーム画像の少なくとも第1のフレーム画像について、フレーム画像の前記第1のフレーム画像のコンテンツを解析すること、前記フレーム画像の前記第1のフレーム画像の前記コンテンツの前記解析に基づいて複数の2次画像ファイル・フォーマットの中から1つを選択すること、前記第1のファイル・フォーマットが前記2次画像ファイル・フォーマットの前記選択されたフォーマットと異なる場合、前記フレーム画像の前記第1のフレーム画像の前記画像ファイル・フォーマットを前記2次ファイル・フォーマットの前記選択されたものに変換すること、および
    第2のファイル・フォーマットで提供されるフレーム画像の少なくとも第2のフレーム画像について、フレーム画像の前記第2のフレーム画像のコンテンツを解析すること、前記フレーム画像の前記第2のフレーム画像の前記コンテンツの前記解析に基づいて前記複数の2次画像ファイル・フォーマットの中から異なる1つを選択すること、前記第2のファイル・フォーマットが前記2次画像ファイル・フォーマットの前記選択された異なるフォーマットと異なる場合、前記フレーム画像の前記第1のフレーム画像の前記画像ファイル・フォーマットを前記2次ファイル・フォーマットの前記選択されたものに変換することを含み、
    前記複数の2次画像ファイル・フォーマットのそれぞれが、前記アプリケーション・プログラムによってネイティブにレンダリングされることが可能である、請求項25に記載の方法。
  28. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記解釈されたスクリプトに、前記フレーム画像の少なくとも1つのフレーム画像をコンテンツ転送フォーマットに直接変換させ、前記コンテンツ転送フォーマットが、前記スクリプトを解釈するスクリプト・インタプリタによって前記アプリケーション・プログラムに渡されることが可能である、請求項1から27のいずれか一項に記載の方法。
  29. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記解釈されたスクリプトに、前記フレーム画像の少なくとも1つのフレーム画像をベース64コンテンツ転送フォーマットに直接変換させる、請求項1から27のいずれか一項に記載の方法。
  30. 前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信する前に前記ビデオコンテンツを前記符号化されたビデオ・データに符号化することを含み、前記ビデオコンテンツを符号化することが、前記フレーム画像の少なくとも1つのフレーム画像をコンテンツ転送フォーマットで符号化し、それにより、前記コンテンツ転送符号化済みフレーム画像を、前記スクリプトを解釈するスクリプト・インタプリタによって前記アプリケーション・プログラムに渡すことができることを含む、請求項25に記載の方法。
  31. 前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信する前に前記ビデオコンテンツを前記符号化されたビデオ・データに符号化することを含み、前記ビデオコンテンツを符号化することが、前記複数のフレーム画像のそれぞれについて、前記フレーム画像をコンテンツ転送フォーマットで符号化し、それにより、前記コンテンツ転送符号化済みフレーム画像を、前記スクリプトを解釈するスクリプト・インタプリタによって前記アプリケーション・プログラムに渡すことができること、および、前記コンテンツ転送符号化済みフレーム画像を前記フレーム画像に無関係のパディング・データで特定のサイズにパディングすることを含む、請求項25に記載の方法。
  32. 前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信する前にビデオコンテンツを前記符号化されたビデオ・データに符号化することを含み、前記符号化されたビデオ・データを符号化することが、前記フレーム画像の少なくとも1つのフレーム画像をベース64コンテンツ転送フォーマットで符号化することを含む、請求項25に記載の方法。
  33. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記フレーム画像の少なくとも1つのフレーム画像を、前記アプリケーション・プログラムによってネイティブにレンダリングされることが可能な、対応する画像オブジェクトにネイティブに変換する、請求項1から32のいずれか一項に記載の方法。
  34. 前記アプリケーション・プログラムがインターネットブラウザを含む、請求項1から33のいずれか一項に記載の方法。
  35. 前記スクリプトがHTMLドキュメント内に埋め込まれる、請求項1から34のいずれか一項に記載の方法。
  36. 前記1つまたは複数のフレーム画像が、複数のフレーム画像を含み、前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記復号済みオーディオ・データを再生することによって前記オーディオ・データをレンダリングし、前記複数のフレーム画像のサブセットを選択し前記複数のフレーム画像の前記選択されたサブセットを表示することによって前記ビデオ・データをレンダリングする、請求項3に記載の方法。
  37. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じて、前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な前記符号化されたビデオ・データを含むファイルを変更する、請求項4または5のいずれか一項に記載の方法。
  38. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じて、前記符号化されたビデオ・データの復号、および前記1つまたは複数のフレーム画像の再生のうちの1つまたは複数の少なくとも1つの特性を修正する、請求項4または5のいずれか一項に記載の方法。
  39. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームに送信されるデータ転送速度を決定し、前記決定に応じて前記ユーザ・コンピューティング・プラットフォームに転送される前記符号化されたビデオ・データを含むファイルを変更する、請求項4または5のいずれか一項に記載の方法。
  40. 前記スクリプトを送信することが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームに送信されるデータ転送速度を決定し、前記決定に応じて、前記符号化されたビデオ・データの復号、および前記フレーム画像の再生のうちの1つまたは複数の少なくとも1つの特性を修正する、請求項4または5のいずれか一項に記載の方法。
  41. ビデオコンテンツをレンダリングするために、ユーザ・コンピューティング・プラットフォーム上で実行される方法であって、
    前記ユーザ・コンピューティング・プラットフォームにてスクリプトを受信し、前記スクリプトが、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによって解釈されるように構成されることと、
    前記コンピューティング・プラットフォーム上で前記アプリケーション・プログラムを使用して前記スクリプトを解釈することとを含み、
    前記スクリプトを解釈することが、前記解釈されたスクリプトに、前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な符号化されたビデオ・データを、1つまたは複数のフレーム画像を含む復号済みビデオ・データに直接復号させる、方法。
  42. 前記スクリプトを解釈することが、前記アプリケーション・プログラムに、前記1つまたは複数のフレーム画像を前記ユーザ・コンピューティング・プラットフォーム上でネイティブに表示させる、請求項41に記載の方法。
  43. 前記スクリプトを解釈することが、前記解釈されたスクリプトに、前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な符号化されたオーディオ・データを、復号済みオーディオ・データに直接復号させる、請求項41に記載の方法。
  44. 前記スクリプトを解釈することが、前記ユーザ・コンピューティング・プラットフォーム上で前記1つまたは複数のフレーム画像を表示することによって前記復号済みビデオ・データをレンダリングし、前記ユーザ・コンピューティング・プラットフォーム上で前記復号済みオーディオ・データを再生することによって前記復号済みオーディオ・データをレンダリングする、請求項43に記載の方法。
  45. 前記スクリプトを解釈することが、前記アプリケーション・プログラムに、前記ユーザ・コンピューティング・プラットフォーム上で前記1つまたは複数のフレーム画像を表示することによって前記復号済みビデオ・データをネイティブにレンダリングさせ、前記復号済みオーディオ・データを再生することによって前記復号済みオーディオ・データをネイティブにレンダリングさせる、請求項43に記載の方法。
  46. 前記ビデオ・データおよびオーディオ・データが、ビデオ・コンテンツ・アイテムの一部として互いに関連付けられており、前記1つまたは複数のフレーム画像が、複数のフレーム画像を含み、前記スクリプトを解釈することが、前記解釈されたスクリプトに、前記フレーム画像の表示を前記復号済みオーディオ・データの再生と直接同期させる、請求項44または45のいずれか一項に記載の方法。
  47. 前記ビデオ・データおよびオーディオ・データが、ビデオ・コンテンツ・アイテムの一部として互いに関連付けられており、前記1つまたは複数のフレーム画像が、複数のフレーム画像を含み、前記スクリプトを解釈することが、前記復号済みオーディオ・データの再生に関連するオーディオ再生時間基準を確かめ、前記解釈されたスクリプトに、前記オーディオ再生時間基準に基づいて前記フレーム画像の表示を前記復号済みオーディオ・データの再生と直接同期させる、請求項44または45のいずれか一項に記載の方法。
  48. 前記フレーム画像の表示を前記復号済みオーディオ・データの再生と同期することが、前記ビデオ・データのレンダリングが時間の第1の閾値量だけ前記オーディオ再生時間基準より遅れていると判定されたことに基づいて1つまたは複数のフレーム画像の表示をスキップすることによって順序外れのフレーム画像の表示を進めること、および、前記ビデオ・データのレンダリングが時間の第2の閾値量だけ前記オーディオ再生時間基準より進んでいると判定されたことに基づいて1つまたは複数のフレーム画像を、前記ビデオ・データのフレームレートによって決まる期間より長い期間の間、表示させることのうちの少なくとも1つを含む、請求項47に記載の方法。
  49. 前記フレーム画像の表示を前記復号済みオーディオ・データの再生と同期することが、前記オーディオ再生時間基準を使用し、現在のフレーム・インデックスを決定すること、および、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像が表示される準備ができている場合、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像を表示することを含む、請求項47に記載の方法。
  50. 前記フレーム画像の表示を前記復号済みオーディオ・データの再生と同期することが、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像がフレーム画像キュー内の1つまたは複数の他のフレーム画像より遅れていると判定すること、および、遅れている場合、前記1つまたは複数の他のフレーム画像の表示をスキップすることを含む、請求項49に記載の方法。
  51. 前記フレーム画像の表示を前記オーディオ・データの再生と同期することが、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像が表示される準備ができていないと判定すること、および、そのような判定とは独立して、ドロップ・フレーム・アクションを開始することを含み、前記ドロップ・フレーム・アクションが、前記現在のフレーム・インデックスに関連付けられた前記フレーム画像がレンダリングのための準備ができていなかったという指示を記録すること、復号済みオーディオ・データの再生を休止させる、または速度を落とさせること、符号化されたビデオ・データの復号のレートを増大させること、より低いフレームレートを有するビデオ・データへの切替えを引き起こすこと、前記画像フレームのサブセットを復号することによって前記ビデオ・データの事実上のダウンサンプリングへの切替えを引き起こすことのうちの1つまたは複数を含む、請求項49に記載の方法。
  52. 前記スクリプトを解釈することが、前記符号化されたビデオ・データを前記フレーム画像に直接復号することを含む第1のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、前記フレーム画像を表示することによって前記ビデオ・データをレンダリングすることを含む第2のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートする、請求項44または45のいずれか一項に記載の方法。
  53. 前記スクリプトを解釈することが、前記符号化されたオーディオ・データを前記復号済みオーディオ・データに直接復号することを含む第3のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、復号済みオーディオ・データをオーディオ・レンダラに供給するオーディオ・レンダラ・インターフェースを実行することを含む第4のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートする、請求項52に記載の方法。
  54. 前記スクリプトを解釈することが、方法を反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートし、前記方法が、各反復ごとに、1つまたは複数の対応する条件に対する1または複数の論理的な調査を行い、前記1つまたは複数の対応する条件に応じて、
    前記符号化されたビデオ・データを前記フレーム画像に直接復号することを含む第1のシミュレートされたスレッド、
    前記フレーム画像を表示することによって前記ビデオ・データをレンダリングすることを含む第2のシミュレートされたスレッド、
    前記符号化されたオーディオ・データを前記復号済みオーディオ・データに直接復号することを含む第3のシミュレートされたスレッド、
    復号済みオーディオ・データをオーディオ・レンダラに送るオーディオ・レンダラ・インターフェースを実装することを含む第4のシミュレートされたスレッドのうちの1つを選択および実行する、請求項44または45のいずれか一項に記載の方法。
  55. 前記第1のシミュレートされたスレッドを実行することが、前記第1のシミュレートされたスレッドを複数のサブコンポーネントに分割すること、サブコンポーネントの対の実行の間で、1つまたは複数の対応する条件に対する1または複数の論理的な調査を行い、前記1つまたは複数の対応する条件に応じて、前記第1のシミュレートされたスレッドに一時的に割り込み、第2のシミュレートされたスレッド、および復号済みオーディオ・データをオーディオ・レンダラに送るオーディオ・レンダラ・インターフェースを実行することを含む別のシミュレートされたスレッドのうちの1つの反復を選択および実行する、請求項52に記載の方法。
  56. 前記1つまたは複数のフレーム画像を表示することによって前記ビデオ・データをレンダリングすることが、少なくとも1対のフレーム画像を共にアルファブレンディングすることを含む、請求項44または45のいずれか一項に記載の方法。
  57. 前記1つまたは複数のフレーム画像を表示することによって前記ビデオ・データをレンダリングすることが、前記フレーム画像の第1のフレーム画像を表示することと前記フレーム画像の第2のフレーム画像を表示することとの間の1回または複数回のそれぞれにおいて、前記フレーム画像の前記第1のフレーム画像と前記フレーム画像の前記第2のフレーム画像のアルファブレンドを含むアルファブレンディング済み画像を表示することを含む、請求項44または45のいずれか一項に記載の方法。
  58. 前記フレーム画像の前記第1のフレーム画像を表示することと前記フレーム画像の前記第2のフレーム画像を表示することとの間の前記1回または複数回のそれぞれにおいて、前記アルファブレンディング済み画像を表示することが、
    α=[β+l−mod(f#,β)]−1
    によって与えられるアルファブレンディング係数を使用して前記フレーム画像の前記第2のフレーム画像を以前に表示された画像上にアルファブレンディングすることを含み、
    上式で、
    ・ βは、前記1回または複数回の数に等しいダウンサンプリング係数であり、
    ・ f#は、前記1回または複数回の現在の回の数を指すインデックスであり、
    ・ mod(x,y)は、xをyで割った整数の余りを返すモジュロ演算子である、請求項57に記載の方法。
  59. 前記スクリプトを解釈することが、前記解釈されたスクリプトに、ビデオ・データ・キューを、その状況を判定するために直接監視するビデオ・データ・キュー・モニタの少なくとも一部分を、前記解釈されたスクリプトに直接実行させ、前記ビデオ・データ・キューの前記判定された状況に応じて、より多くの符号化されたビデオ・データをフェッチするかどうか判定する、請求項41から58のいずれか一項に記載の方法。
  60. 前記スクリプトを解釈することが、AJAX XMLHttpRequestオブジェクトを使用してより多くの符号化されたビデオ・データをフェッチする前記ビデオ・キュー・モニタの第2の部分を実行する、請求項59に記載の方法。
  61. 前記スクリプトを解釈することが、複数のAJAX XMLHttpRequestオブジェクトを交互に使用することによってより多くの符号化されたビデオ・データをフェッチする前記ビデオ・キュー・モニタの第2の部分を実行する、請求項59に記載の方法。
  62. 前記スクリプトを解釈することが、前記アプリケーション・プログラムに、前記オーディオ・データから前記ビデオ・データをネイティブに逆多重化させる、請求項44から45のいずれか一項に記載の方法。
  63. 前記スクリプトを解釈することが、前記解釈されたスクリプトに、フレーム画像バッファを、その状況を判定するために監視するフレームバッファ・モニタを、前記解釈されたスクリプトに直接実行させ、前記フレーム画像バッファの前記判定された状況に応じて、前記符号化されたビデオ・データのより多くを復号するかどうか判定する、請求項41から62のいずれか一項に記載の方法。
  64. 前記スクリプトを解釈することが、前記解釈されたスクリプトに、前記フレーム画像のうちの少なくとも1つの画像ファイル・フォーマットを第1の画像ファイル・フォーマットから第2の画像ファイル・フォーマットに直接変換させ、前記第2の画像ファイル・フォーマットが、前記アプリケーション・プログラムによってネイティブにレンダリングされることが可能である、請求項41から63のいずれか一項に記載の方法。
  65. 前記スクリプトを解釈することが、前記解釈されたスクリプトに、前記フレーム画像の少なくとも1つのフレーム画像をコンテンツ転送フォーマットに直接変換させ、前記コンテンツ転送フォーマットが、前記スクリプトを解釈するスクリプト・インタプリタによって前記アプリケーション・プログラムに渡されることが可能である、請求項41から64のいずれか一項に記載の方法。
  66. 前記スクリプトを解釈することが、前記解釈されたスクリプトに、前記フレーム画像の少なくとも1つのフレーム画像をベース64コンテンツ転送フォーマットに直接変換させる、請求項41から64のいずれか一項に記載の方法。
  67. 前記スクリプトを解釈することが、前記アプリケーション・プログラムに、前記フレーム画像の少なくとも1つのフレーム画像を、前記アプリケーション・プログラムによってネイティブにレンダリングされることが可能な、対応する画像オブジェクトにネイティブに変換させる、請求項41から66のいずれか一項に記載の方法。
  68. 前記アプリケーション・プログラムがインターネットブラウザを含む、請求項41から67のいずれか一項に記載の方法。
  69. 前記スクリプトがHTMLドキュメント内に埋め込まれる、請求項1から68のいずれか一項に記載の方法。
  70. 前記1つまたは複数のフレーム画像が、複数のフレーム画像を含み、前記スクリプトを解釈することが、前記復号済みオーディオ・データを再生することによって前記オーディオ・データをレンダリングし、前記複数のフレーム画像のサブセットを選択し前記複数のフレーム画像の前記選択されたサブセットを表示することによって前記ビデオ・データをレンダリングする、請求項43に記載の方法。
  71. 前記スクリプトを解釈することが、前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じて、前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な前記符号化されたビデオ・データを含むファイルを変更する、請求項44または45のいずれか一項に記載の方法。
  72. 前記スクリプトを解釈することが、前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じて、前記符号化されたビデオ・データの復号、および前記1つまたは複数のフレーム画像の再生のうちの1つまたは複数の少なくとも1つの特性を修正する、請求項44または45のいずれか一項に記載の方法。
  73. 前記スクリプトを解釈することが、前記符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームによって受信されるデータ転送速度を決定し、前記決定に応じて前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な前記符号化されたビデオ・データを含むファイルを変更する、請求項44または45のいずれか一項に記載の方法。
  74. 前記スクリプトを解釈することが、前記符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームによって受信されるデータ転送速度を決定し、前記決定に応じて、前記符号化されたビデオ・データの復号、および前記1つまたは複数のフレーム画像の再生のうちの1つまたは複数の少なくとも1つの特性を修正する、請求項44または45のいずれか一項に記載の方法。
  75. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信するためのサーバ・コンピューティング・デバイスであって、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するようにコンパイルされたアプリケーション・プログラムによって解釈されるように構成される、サーバ・コンピューティング・デバイスを備え、
    前記スクリプトを送信することが、前記ユーザ・コンピューティング・プラットフォーム上で動作する前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記解釈されたスクリプトに、前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な符号化されたビデオ・データを、1つまたは複数のフレーム画像を含む復号済みビデオ・データに直接復号させる、システム。
  76. 請求項2〜40の特徴のいずれか、または特徴の組合せを含む、請求項75に記載のシステム。
  77. ユーザ・コンピュータ・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、
    前記ユーザ・コンピューティング・プラットフォームにとってアクセス可能な前記符号化されたビデオ・データを、1つまたは複数のフレーム画像を含む復号済みビデオ・データに復号するための復号要素を提供するように構成されたプロセッサを備え、
    前記プロセッサが、前記ユーザ・コンピューティング・プラットフォーム上でアプリケーション・プログラムを実行することによって復号要素を提供するように構成され、前記アプリケーション・プログラムがクロスプラットフォーム・スクリプトを解釈し、それにより前記解釈されたスクリプトが前記ビデオ・データを直接復号する、システム。
  78. 請求項42〜74の特徴のいずれか、または特徴の組合せを含む、請求項77に記載のシステム。
  79. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォームによって受信されるビデオ・データおよび関連のオーディオ・データによって具体化されるビデオコンテンツをレンダリングするために、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信することを含み、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するようにコンパイルされたアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ビデオ・データを構成するフレーム画像を表示することによって前記ビデオ・データをレンダリングし、
    前記関連のオーディオ・データを再生し、
    前記関連のオーディオ・データの再生に関連するオーディオ再生時間基準を確かめ、
    前記解釈されたスクリプトに、前記オーディオ再生時間基準に基づいて前記フレーム画像の表示を前記関連のオーディオ・データの再生と直接同期させるようにさらに構成される、方法。
  80. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項79に記載の方法。
  81. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォームによって受信されるビデオ・データおよび関連のオーディオ・データによって具体化されるビデオコンテンツをレンダリングするためのシステムであって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信するためのサーバ・コンピューティング・デバイスを備え、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ビデオ・データを構成するフレーム画像を表示することによって前記ビデオ・データをレンダリングし、
    前記関連のオーディオ・データを再生し、
    前記関連のオーディオ・データの再生に関連するオーディオ再生時間基準を確かめ、
    前記解釈されたスクリプトに、前記オーディオ再生時間基準に基づいて前記フレーム画像の表示を前記関連のオーディオ・データの再生と直接同期させるようにさらに構成される、システム。
  82. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項81に記載のシステム。
  83. 前記ユーザ・コンピューティング・プラットフォームによって受信されるビデオ・データおよび関連のオーディオ・データによって具体化されるビデオコンテンツをレンダリングするためにユーザ・コンピューティング・プラットフォーム上で実行される方法であって、
    前記ユーザ・コンピューティング・プラットフォームにてスクリプトを受信し、前記スクリプトが、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによって解釈されるように構成されることと、
    前記コンピューティング・プラットフォーム上で前記アプリケーション・プログラムを使用して前記スクリプトを解釈し、前記アプリケーション・プログラムが、
    前記ビデオ・データを構成するフレーム画像を表示することによって前記ビデオ・データをレンダリングし、
    前記関連のオーディオ・データを再生し、
    前記関連のオーディオ・データの再生に関連するオーディオ再生時間基準を確かめ、
    前記解釈されたスクリプトに、前記オーディオ再生時間基準に基づいて前記フレーム画像の表示を前記関連のオーディオ・データの再生と直接同期させることとを含む方法。
  84. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む請求項83に記載の方法。
  85. ユーザ・コンピューティング・プラットフォームによって受信されるビデオ・データおよび関連のオーディオ・データによって具体化されるビデオコンテンツをレンダリングするためのシステムであって、前記ユーザ・コンピューティング・プラットフォーム上でアプリケーション・プログラムを実行するように構成されたプロセッサを備え、前記アプリケーション・プログラムがクロスプラットフォーム・スクリプトを解釈し、それにより、
    前記ビデオ・データを構成するフレーム画像を表示することによって前記ビデオ・データをレンダリングし、
    前記関連のオーディオ・データを再生し、
    前記関連のオーディオ・データの再生に関連するオーディオ再生時間基準を確かめ、
    前記解釈されたスクリプトに、前記オーディオ再生時間基準に基づいて前記フレーム画像の表示を前記関連のオーディオ・データの再生と直接同期させる、システム。
  86. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項85に記載のシステム。
  87. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするための、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信することを含み、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するようにコンパイルされたアプリケーション・プログラムによって解釈されるように構成され、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記符号化されたビデオ・データを1つまたは複数のフレーム画像を含む復号済みビデオ・データに復号することを含む第1のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、
    前記1つまたは複数のフレーム画像を表示することによって前記符号化されたビデオ・データをレンダリングすることを含む第2のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートする、方法。
  88. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項87に記載の方法。
  89. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするためのシステムであって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信するためのサーバ・コンピューティング・デバイスを備え、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成され、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記符号化されたビデオ・データを1つまたは複数のフレーム画像を含む復号済みビデオ・データに復号することを含む第1のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、
    前記1つまたは複数のフレーム画像を表示することによって前記符号化されたビデオ・データをレンダリングすることを含む第2のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートする、システム。
  90. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項89に記載のシステム。
  91. ユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするために前記ユーザ・コンピューティング・プラットフォーム上で実行される方法であって、
    前記ユーザ・コンピューティング・プラットフォームにてスクリプトを受信し、前記スクリプトが、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによって解釈されるように構成されることと、
    前記コンピューティング・プラットフォーム上で前記アプリケーション・プログラムを使用して前記スクリプトを解釈することとを含み、
    前記スクリプトを解釈することが、
    前記符号化されたビデオ・データを1つまたは複数のフレーム画像を含む復号済みビデオ・データに復号することを含む第1のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、
    前記1つまたは複数のフレーム画像を表示することによって前記符号化されたビデオ・データをレンダリングすることを含む第2のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、マルチスレッド型実行環境をシミュレートする、方法。
  92. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項91に記載の方法。
  93. ユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするためのシステムであって、プロセッサを備え、前記プロセッサが、前記ユーザ・コンピューティング・プラットフォーム上でアプリケーション・プログラムを実行するように構成され、前記アプリケーション・プログラムがクロスプラットフォーム・スクリプトを解釈し、
    前記符号化されたビデオ・データを1つまたは複数のフレーム画像を含む復号済みビデオ・データに復号する第1のシミュレートされたスレッドを反復してスケジューリングおよび実行すること、および、
    前記1つまたは複数のフレーム画像を表示することによって前記符号化されたビデオ・データをレンダリングする第2のシミュレートされたスレッドを反復してスケジューリングおよび実行することによって、シミュレートされたマルチスレッド型実行環境を提供する、システム。
  94. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項93に記載のシステム。
  95. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするための、コンピュータ・システムによって実行される方法であって、スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信することを含み、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記符号化されたビデオ・データを、複数のフレーム画像を含む復号済みビデオ・データに復号し、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングするようにさらに構成され、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングすることが、少なくとも1対のフレーム画像を共にアルファブレンディングすることを含む、方法。
  96. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項95に記載の方法。
  97. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするためのシステムであって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信するためのサーバ・コンピューティング・デバイスを備え、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記符号化されたビデオ・データを、複数のフレーム画像を含む復号済みビデオ・データに復号し、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングするようにさらに構成され、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングすることが、少なくとも1対のフレーム画像を共にアルファブレンディングすることを含む、システム。
  98. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項97に記載のシステム。
  99. ユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするために前記ユーザ・コンピューティング・プラットフォーム上で実行される方法であって、
    前記ユーザ・コンピューティング・プラットフォームにてスクリプトを受信し、前記スクリプトが、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによって解釈されるように構成されることと、
    前記アプリケーション・プログラムを使用して前記スクリプトを解釈すること
    とを含み、
    前記スクリプトを解釈することが、
    前記符号化されたビデオ・データを、複数のフレーム画像を含む復号済みビデオ・データに復号し、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングし、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングすることが、少なくとも1対のフレーム画像を共にアルファブレンディングすることを含む、方法。
  100. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項99に記載の方法。
  101. ユーザ・コンピューティング・プラットフォームによって受信される符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするためのシステムであって、前記ユーザ・コンピューティング・プラットフォーム上でアプリケーション・プログラムを実行するように構成されたプロセッサを備え、前記アプリケーション・プログラムがクロスプラットフォーム・スクリプトを解釈し、それにより、
    前記符号化されたビデオ・データを、複数のフレーム画像を含む復号済みビデオ・データに復号し、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングし、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングすることが、少なくとも1対のフレーム画像を共にアルファブレンディングすることを含む、システム。
  102. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項101に記載のシステム。
  103. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上の符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするための、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信することを含み、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムが、前記ユーザ・コンピューティング・プラットフォーム上で動作することと、
    符号化されたビデオ・データを提供するように一連のフレーム画像を符号化し、前記フレーム画像を符号化することが、前記フレーム画像をコンテンツ転送フォーマットに符号化し、それにより、前記コンテンツ転送符号化済みフレーム画像を、前記スクリプトを解釈するスクリプト・インタプリタによって前記アプリケーション・プログラムに渡すことができることを含むことと、
    前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信すること
    とを含み、
    前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記送信された、符号化されたビデオ・データを、前記コンテンツ転送符号化済みフレーム画像を含む復号済みビデオ・データに復号し、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングするようにさらに構成される、方法。
  104. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項103に記載の方法。
  105. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上の符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするためシステムであって、
    サーバ・コンピューティング・デバイスを備え、前記サーバ・コンピューティング・デバイスが、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信し、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されること、
    前記符号化されたビデオ・データを提供するように一連のフレーム画像を符号化し、前記フレーム画像を符号化することが、前記フレーム画像をコンテンツ転送フォーマットに符号化し、それにより、前記コンテンツ転送符号化済みフレーム画像を、前記スクリプトを解釈するスクリプト・インタプリタによって前記アプリケーション・プログラムに渡すことができることを含むこと、および、
    前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信することを行うように構成され、
    前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記送信された、符号化されたビデオ・データを、前記コンテンツ転送符号化済みフレーム画像を含む復号済みビデオ・データに復号し、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングする、システム。
  106. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項105に記載のシステム。
  107. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上の符号化されたビデオ・データによって具体化されるビデオコンテンツをレンダリングするために、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信し、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムが、前記ユーザ・コンピューティング・プラットフォーム上で動作することと、
    前記符号化されたビデオ・データを提供するように一連のフレーム画像を符号化し、前記フレーム画像を符号化することが、
    第1のファイル・フォーマットで提供される前記フレーム画像のうちの少なくとも1つについて、
    フレーム画像の前記第1のフレーム画像のコンテンツを解析すること、
    前記フレーム画像の前記第1のフレーム画像の前記コンテンツの前記解析に基づいて複数の2次画像ファイルの中の1つを選択すること、および、
    前記第1のファイル・フォーマットが前記2次画像ファイル・フォーマットの前記選択されたフォーマットと異なる場合、前記フレーム画像の前記第1のフレーム画像の前記画像ファイル・フォーマットを前記2次ファイル・フォーマットの前記選択されたものに変換すること、および
    第2のファイル・フォーマットで提供されるフレーム画像の少なくとも第2のフレーム画像について、
    フレーム画像の前記第2のフレーム画像のコンテンツを解析すること、
    前記フレーム画像の前記第2のフレーム画像の前記コンテンツの前記解析に基づいて前記複数の2次画像ファイル・フォーマットの中から異なる1つを選択すること、および、
    前記第2のファイル・フォーマットが前記2次画像ファイル・フォーマットの前記選択された異なるフォーマットと異なる場合、前記フレーム画像の前記第2のフレーム画像の前記画像ファイル・フォーマットを前記2次ファイル・フォーマットの前記選択された異なるフォーマットに変換することを含み、
    前記複数の2次画像ファイル・フォーマットのそれぞれが、前記アプリケーション・プログラムによってネイティブにレンダリングされることが可能であることと、
    前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信すること
    とを含み、
    前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記送信された、符号化されたビデオ・データを、前記フレーム画像を含む復号済みビデオ・データに復号し、
    前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングするようにさらに構成される、方法。
  108. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項107に記載の方法。
  109. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、請求項107〜108の特徴のいずれか、または特徴の組合せを含むシステム。
  110. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするために、コンピュータ・システムによって実行される方法であって、
    符号化されたビデオ・データを提供するように一連のフレーム画像を符号化し、前記フレーム画像を符号化することが、前記フレーム画像をコンテンツ転送フォーマットに変換することを含むことと、
    前記符号化されたビデオ・データを前記ユーザ・コンピューティング・プラットフォームに送信すること
    とを含み、
    前記符号化されたデータを送信することにより、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムのスクリプト・インタプリタがスクリプトを解釈し、前記送信された、符号化されたビデオ・データを、前記コンテンツ転送フォーマットの復号済みフレーム画像データに復号し、前記コンテンツ転送フォーマットの前記復号済みフレーム画像データを、前記復号済みフレーム画像データがレンダリングされる順序で前記アプリケーション・プログラムに渡す、方法。
  111. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項110に記載の方法。
  112. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、請求項110〜111の特徴のいずれか、または特徴の組合せを含むシステム。
  113. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするために、コンピュータ・システムによって実行される方法であって、
    符号化されたビデオ・データを提供するように一連のフレーム画像を符号化し、前記フレーム画像を符号化することが、前記フレーム画像をコンテンツ転送フォーマットに符号化し、それにより、前記コンテンツ転送符号化済みフレーム画像を、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムのスクリプト・インタプリタから前記アプリケーション・プログラムに渡すことができ、このとき、前記スクリプト・インタプリタは、スクリプトを解釈し、前記符号化されたビデオ・データを前記コンテンツ転送符号化済みフレーム画像を含む復号済みビデオ・データに復号し、前記フレーム画像を表示することによって前記復号済みビデオ・データをレンダリングする、方法。
  114. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項113に記載の方法。
  115. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、請求項113〜114の特徴のいずれか、または特徴の組合せを含むシステム。
  116. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするために、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信することを含み、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、
    前記ビデオコンテンツを実行する複数のタイプの符号化されたビデオ・データから選択された、前記ビデオコンテンツを実行する第1のタイプの符号化されたビデオ・データを受信するための要求を送信するようにさらに構成され、前記選択が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされる、方法。
  117. 前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ユーザ・コンピューティング・プラットフォームにて第1のタイプの符号化されたビデオ・データを受信したとき、前記第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングするようにさらに構成される、請求項116に記載の方法。
  118. 前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ユーザ・コンピューティング・プラットフォームにて受信された前記複数のタイプの符号化されたビデオ・データのうちから第2のタイプの符号化されたビデオ・データを、1つまたは複数の第2のフレーム画像を含む第2の復号済みビデオ・データに復号し、
    前記1つまたは複数の第2のフレーム画像を表示することによって前記第2の復号済みビデオ・データをレンダリングするようにさらに構成され、
    前記第2のタイプの符号化されたビデオ・データを復号すること、および前記第2の復号済みビデオ・データをレンダリングすることが、前記第1のタイプの符号化されたビデオ・データを受信するための前記要求を送信する前に行われる、請求項116に記載の方法。
  119. 前記第2のタイプの符号化されたビデオ・データが前記第1のタイプの符号化されたビデオ・データとは異なる、請求項118に記載の方法。
  120. 前記複数のタイプの符号化されたビデオ・データが、少なくとも2つのタイプの符号化されたビデオ・データを含み、前記少なくとも2つのタイプの符号化されたビデオ・データのそれぞれが、対応する画像フォーマットで表された、対応する符号化された一連のフレーム画像を含み、前記少なくとも2つのタイプの符号化されたビデオ・データの前記対応する画像フォーマットが互いに異なる、請求項117に記載の方法。
  121. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項116から120のいずれか一項に記載の方法。
  122. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信するためのサーバ・コンピューティング・デバイスを備え、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、
    前記ビデオコンテンツを実行する複数のタイプの符号化されたビデオ・データから選択された、前記ビデオコンテンツを実行する第1のタイプの符号化されたビデオ・データを受信するための要求を送信するようにさらに構成され、前記選択が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされる、システム。
  123. 前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ユーザ・コンピューティング・プラットフォームにて第1のタイプの符号化されたビデオ・データを受信したとき、前記第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングするようにさらに構成される、請求項122に記載のシステム。
  124. 前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ユーザ・コンピューティング・プラットフォームにて受信された前記複数のタイプの符号化されたビデオ・データのうちから第2のタイプの符号化されたビデオ・データを、1つまたは複数の第2のフレーム画像を含む第2の復号済みビデオ・データに復号し、
    前記1つまたは複数の第2のフレーム画像を表示することによって前記第2の復号済みビデオ・データをレンダリングするようにさらに構成され、
    前記第2のタイプの符号化されたビデオ・データを復号すること、および前記第2の復号済みビデオ・データをレンダリングすることが、前記第1のタイプの符号化されたビデオ・データを受信するための前記要求を送信する前に行われる、請求項122に記載のシステム。
  125. 前記第2のタイプの符号化されたビデオ・データが前記第1のタイプの符号化されたビデオ・データとは異なる、請求項124に記載のシステム。
  126. 前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記第1のタイプの符号化されたビデオ・データを復号する復号特性を構成し、前記復号特性の構成が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされること、および、
    前記1つまたは複数の第1のフレーム画像を表示する表示特性を構成し、前記表示特性の構成が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされることのうちの少なくとも1つを実行する、請求項123に記載のシステム。
  127. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項122から126のいずれか一項に記載の方法。
  128. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするために、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信し、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ビデオコンテンツを実行する、前記ユーザ・コンピューティング・プラットフォームにて受信された、符号化されたビデオ・データを、1つまたは複数のフレーム画像を含む復号済みビデオ・データに復号し、
    前記1つまたは複数のフレーム画像を表示することによって前記復号済みビデオ・データをレンダリングし、
    前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、
    前記符号化されたビデオ・データを復号する復号特性を構成し、前記復号特性の構成が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされること、および、
    前記1つまたは複数のフレーム画像を表示する表示特性を構成し、前記表示特性の構成が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされることのうちの少なくとも1つを実行するようにさらに構成される、方法。
  129. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項128に記載の方法。
  130. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、請求項128〜129の特徴のいずれか、または特徴の組合せを含むシステム。
  131. ビデオコンテンツをレンダリングするためにユーザ・コンピューティング・プラットフォーム上で実行される方法であって、
    前記ユーザ・コンピューティング・プラットフォームにてスクリプトを受信し、前記スクリプトが、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによって解釈されるように構成されることと、
    前記アプリケーション・プログラムを使用して前記スクリプトを解釈することとを含み、
    前記スクリプトを解釈することが、
    前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、
    前記ビデオコンテンツを実行する複数のタイプの符号化されたビデオ・データから選択された、前記ビデオコンテンツを実行する第1のタイプの符号化されたビデオ・データを受信するための要求を送信し、前記選択が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされる、方法。
  132. 前記スクリプトを解釈することが、
    前記ユーザ・コンピューティング・プラットフォームにて第1のタイプの符号化されたビデオ・データを受信したとき、前記第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングする、請求項131に記載の方法。
  133. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項131から132のいずれか一項に記載の方法。
  134. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、請求項131〜133の特徴のいずれか、または特徴の組合せを含むシステム。
  135. ユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするために前記ユーザ・コンピューティング・プラットフォーム上で実行される方法であって、
    前記ユーザ・コンピューティング・プラットフォームにてスクリプトを受信し、前記スクリプトが、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによって解釈されるように構成されることと、
    前記アプリケーション・プログラムを使用して前記スクリプトを解釈することとを含み、
    前記スクリプトを解釈することが、
    前記ビデオコンテンツを実行する、前記ユーザ・コンピューティング・プラットフォームにて受信された、符号化されたビデオ・データを、1つまたは複数のフレーム画像を含む復号済みビデオ・データに復号し、
    前記1つまたは複数のフレーム画像を表示することによって前記復号済みビデオ・データをレンダリングし、
    前記ユーザ・コンピューティング・プラットフォームの1つまたは複数の特性を照会し、
    前記符号化されたビデオ・データを復号する復号特性を構成し、前記復号特性の構成が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされること、および、
    前記1つまたは複数のフレーム画像を表示する表示特性を構成し、前記表示特性の構成が、前記ユーザ・コンピューティング・プラットフォームの前記1つまたは複数の照会された特性に応じてなされることのうちの少なくとも1つを実行する、方法。
  136. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項135に記載の方法。
  137. ユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、請求項135〜136の特徴のいずれか、または特徴の組合せを含むシステム。
  138. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするための、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信することを含み、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ビデオコンテンツを実行する、前記ユーザ・コンピューティング・プラットフォームにて受信された、第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングし、
    前記第1のタイプの符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームによって受信されているレートを決定し、
    前記決定されたレートに応じて、前記ビデオコンテンツを実行する第2のタイプの符号化されたビデオ・データを受信するための要求を送信すること、
    前記決定されたレートに応じて、前記第1のタイプの符号化されたビデオ・データの復号の特性を修正すること、および、
    前記決定されたレートに応じて、前記1つまたは複数の第1のフレーム画像の表示の特性を修正することのうちの少なくとも1つを実行する、方法。
  139. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項138に記載の方法。
  140. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信するためのサーバ・コンピューティング・デバイスを備え、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ビデオコンテンツを実行する、前記ユーザ・コンピューティング・プラットフォームにて受信された、第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングし、
    前記第1のタイプの符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームによって受信されているレートを決定し、
    前記決定されたレートに応じて、前記ビデオコンテンツを実行する第2のタイプの符号化されたビデオ・データを受信するための要求を送信すること、
    前記決定されたレートに応じて、前記第1のタイプの符号化されたビデオ・データの復号の特性を修正すること、および、
    前記決定されたレートに応じて、前記1つまたは複数の第1のフレーム画像の表示の特性を修正することのうちの少なくとも1つを実行するようにさらに構成される、システム。
  141. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項140に記載のシステム。
  142. ビデオコンテンツをレンダリングするために、ユーザ・コンピューティング・プラットフォーム上で実行される方法であって、
    前記ユーザ・コンピューティング・プラットフォームにてスクリプトを受信し、前記スクリプトが、前記ユーザ・コンピューティング・プラットフォーム上で動作するアプリケーション・プログラムによって解釈されるように構成されることと、
    前記アプリケーション・プログラムを使用して前記スクリプトを解釈することとを含み、前記スクリプトを解釈することが、
    前記ビデオコンテンツを実行する、前記ユーザ・コンピューティング・プラットフォームにて受信された、第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングし、
    前記第1のタイプの符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームによって受信されているレートを決定し、
    前記決定されたレートに応じて、前記ビデオコンテンツを実行する第2のタイプの符号化されたビデオ・データを受信するための要求を送信すること、
    前記決定されたレートに応じて、前記第1のタイプの符号化されたビデオ・データの復号の特性を修正すること、および、
    前記決定されたレートに応じて、前記1つまたは複数の第1のフレーム画像の表示の特性を修正することのうちの少なくとも1つを実行する、方法。
  143. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項142に記載の方法。
  144. ユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、プロセッサを備え、前記プロセッサが、前記ユーザ・コンピューティング・プラットフォーム上でアプリケーション・プログラムを実行するように構成され、前記アプリケーション・プログラムがクロスプラットフォーム・スクリプトを解釈し、
    前記ビデオコンテンツを実行する、前記ユーザ・コンピューティング・プラットフォームにて受信された、第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングし、
    前記第1のタイプの符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームによって受信されているレートを決定し、
    前記決定されたレートに応じて、前記ビデオコンテンツを実行する第2のタイプの符号化されたビデオ・データを受信するための要求を送信すること、
    前記決定されたレートに応じて、前記第1のタイプの符号化されたビデオ・データの復号の特性を修正すること、および、
    前記決定されたレートに応じて、前記1つまたは複数の第1のフレーム画像の表示の特性を修正することのうちの少なくとも1つを実行する、システム。
  145. 請求項41〜74の特徴のいずれか、または特徴の組合せを含む、請求項144に記載のシステム。
  146. 複数の異なるユーザ・コンピューティング・プラットフォーム・タイプのうちの1つのタイプであるユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするための、コンピュータ・システムによって実行される方法であって、
    スクリプトを前記ユーザ・コンピューティング・プラットフォームに送信し、前記スクリプトが、前記複数のユーザ・コンピューティング・プラットフォーム・タイプのいずれか1つで動作するアプリケーション・プログラムによって解釈されるように構成されており、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、
    前記ビデオコンテンツを実行する、前記ユーザ・コンピューティング・プラットフォームにて受信された、第1のタイプの符号化されたビデオ・データを、1つまたは複数の第1のフレーム画像を含む第1の復号済みビデオ・データに復号し、
    前記1つまたは複数の第1のフレーム画像を表示することによって前記第1の復号済みビデオ・データをレンダリングし、
    前記第1のタイプの符号化されたビデオ・データが前記ユーザ・コンピューティング・プラットフォームによって受信されているレートを決定するようにさらに構成されることと、
    前記決定されたレートに応じて、前記ビデオコンテンツを実行する第2のタイプの符号化されたビデオ・データを受信するための要求を送信することとを含む、方法。
  147. 前記スクリプトが、前記アプリケーション・プログラムによって前記スクリプトを解釈させ、前記レートを決定し前記第2のタイプの符号化されたビデオ・データを受信するための前記要求を送信した後で、
    前記第2のタイプの符号化されたビデオ・データを、1つまたは複数の第2のフレーム画像を含む第2の復号済みビデオ・データに復号し、
    前記1つまたは複数の第2のフレーム画像を表示することによって前記第2の復号済みビデオ・データをレンダリングするようにさらに構成される、請求項146に記載の方法。
  148. 前記第1のタイプの符号化されたビデオ・データが前記第2のタイプの符号化されたビデオ・データとは異なる、請求項147に記載の方法。
  149. 請求項1〜40の特徴のいずれか、または特徴の組合せを含む、請求項146から148のいずれか一項に記載の方法。
  150. ユーザ・コンピューティング・プラットフォーム上でビデオコンテンツをレンダリングするためのシステムであって、請求項146〜149の特徴のいずれか、または特徴の組合せを含むシステム。
  151. 請求項1から40、79、80、87、88、95、96、103、104、107、108、110、111、113、114、116〜121、128、および129の方法のいずれか1つを実行するように適合されたデータ通信ネットワークを使用して動作可能に接続された1つまたは複数のコンピュータを含むコンピュータ・システム。
  152. データ通信ネットワークを使用して動作可能に接続された1つまたは複数のコンピュータを含む請求項75、76、81、82、89、90、97、98、105、106、109、112、115、122〜127、および130のいずれか一項に記載のシステム。
  153. データ通信ネットワークを使用して動作可能に接続された1つのコンピュータまたは複数のコンピュータを含むコンピュータ・システムによって実行されたとき、前記コンピュータ・システムに、請求項1から40、79、80、87、88、95、96、103、104、107、108、110、111、113、114、116〜121、128、および129の方法のいずれか1つを実行させるコンピュータ実行可能コードを含むコンピュータ可読媒体。
JP2014525268A 2011-08-16 2012-05-25 スクリプトをベースとするビデオ・レンダリング Pending JP2014531142A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161524269P 2011-08-16 2011-08-16
US61/524,269 2011-08-16
US201161557856P 2011-11-09 2011-11-09
US61/557,856 2011-11-09

Publications (2)

Publication Number Publication Date
JP2014531142A true JP2014531142A (ja) 2014-11-20
JP2014531142A5 JP2014531142A5 (ja) 2015-07-16

Family

ID=47714647

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014525268A Pending JP2014531142A (ja) 2011-08-16 2012-05-25 スクリプトをベースとするビデオ・レンダリング

Country Status (12)

Country Link
US (8) US9143826B2 (ja)
EP (1) EP2745526A4 (ja)
JP (1) JP2014531142A (ja)
CN (1) CN103891303B (ja)
AU (1) AU2012297524B2 (ja)
CA (1) CA2843766A1 (ja)
HK (1) HK1199586A1 (ja)
IL (1) IL230898A0 (ja)
RU (1) RU2014110047A (ja)
SG (1) SG2014008775A (ja)
WO (1) WO2013023287A1 (ja)
ZA (1) ZA201401618B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018521550A (ja) * 2015-05-26 2018-08-02 テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド ビデオを再生するための方法、クライアント及びコンピュータ記憶媒体
WO2019111348A1 (ja) * 2017-12-06 2019-06-13 株式会社典雅 映像処理装置、映像処理方法、コンピュータプログラム、及び映像処理システム

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US9819984B1 (en) 2007-03-26 2017-11-14 CSC Holdings, LLC Digital video recording with remote storage
US9002974B1 (en) * 2007-10-16 2015-04-07 Sprint Communications Company L.P. Script server for efficiently providing multimedia services in a multimedia system
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
CA3089869C (en) 2011-04-11 2022-08-16 Evertz Microsystems Ltd. Methods and systems for network based video clip generation and management
US9270718B2 (en) * 2011-11-25 2016-02-23 Harry E Emerson, III Internet streaming and the presentation of dynamic content
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US9276989B2 (en) 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
US9223599B1 (en) * 2012-03-30 2015-12-29 Zynga Inc. Client-side server for client-side scripting languages
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
CN104412601B (zh) * 2012-06-29 2018-04-27 阿沃森特亨茨维尔有限责任公司 容纳多种不同视频压缩技术的单个kvm客户端的系统和方法
US20150109457A1 (en) * 2012-10-04 2015-04-23 Jigabot, Llc Multiple means of framing a subject
US9348580B2 (en) * 2012-10-26 2016-05-24 Hewlett Packard Enterprise Development Lp Processing streaming data with open executors
US9871842B2 (en) * 2012-12-08 2018-01-16 Evertz Microsystems Ltd. Methods and systems for network based video clip processing and management
US9380324B2 (en) * 2013-01-23 2016-06-28 Steven Schoenwald Video content distribution package
US9767854B2 (en) * 2013-01-23 2017-09-19 Steven Schoenwald Video content distribution package
US10701305B2 (en) * 2013-01-30 2020-06-30 Kebron G. Dejene Video signature system and method
US10275128B2 (en) 2013-03-15 2019-04-30 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
US20140298157A1 (en) * 2013-03-26 2014-10-02 Samsung Electronics Co., Ltd Apparatus and method for presenting html page
WO2014197879A1 (en) * 2013-06-06 2014-12-11 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
CN103399729B (zh) * 2013-06-28 2016-04-27 广州市动景计算机科技有限公司 一种HTML5 Canvas应用处理方法、装置及处理器
CN103347209B (zh) * 2013-07-01 2015-12-02 郑义 基于wifi的无线视频转发装置系统及其实现转发的方法
US10115174B2 (en) 2013-09-24 2018-10-30 2236008 Ontario Inc. System and method for forwarding an application user interface
US10976986B2 (en) * 2013-09-24 2021-04-13 Blackberry Limited System and method for forwarding an application user interface
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
CN104954727B (zh) * 2014-03-25 2018-08-07 南宁富桂精密工业有限公司 音视频同步控制设备及方法
DE102014205485A1 (de) * 2014-03-25 2015-10-01 Siemens Aktiengesellschaft Verfahren zur Übertragung digitaler Bilder aus einer Bilderfolge
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
US9690626B2 (en) * 2014-06-27 2017-06-27 Vmware, Inc. Processing workloads in single-threaded environments
US9875751B2 (en) 2014-07-31 2018-01-23 Dolby Laboratories Licensing Corporation Audio processing systems and methods
US9679315B2 (en) 2014-09-01 2017-06-13 AdSupply, Inc. Systems and methods to bypass online advertisement blockers
EP3023987B1 (en) * 2014-11-20 2017-03-22 Axis AB Method and apparatus for visualizing information of a digital video stream
CN105718210B (zh) * 2014-12-05 2018-12-18 旭景科技股份有限公司 用于操作可携式设备的只读方法与系统
CN105740158A (zh) * 2014-12-11 2016-07-06 广州市动景计算机科技有限公司 减少便携式终端设备上浏览器内存占用的方法与装置
CN104570856B (zh) * 2014-12-18 2017-04-12 黑龙江大学 可在线编程的监控网络系统
RU2608883C2 (ru) * 2014-12-26 2017-01-25 Общество С Ограниченной Ответственностью "Яндекс" Способ и электронное устройство для обработки изображения
FR3034943B1 (fr) * 2015-04-07 2017-04-14 Streamroot Inc Procede de lecture en continu sur un equipement client d'un contenu diffuse au sein d'un reseau pair a pair
US20160313958A1 (en) * 2015-04-27 2016-10-27 Microsoft Technology Licensing, Llc Cross-platform command extensibility
US9420027B1 (en) 2015-04-27 2016-08-16 Wowza Media Systems, LLC Systems and methods of communicating platform-independent representation of source code
FR3038995B1 (fr) * 2015-07-15 2018-05-11 F4 Dispositif interactif a affichage personnalisable
US9462323B1 (en) * 2015-08-28 2016-10-04 Streamray Inc. Method and system for display of mixed media content on devices without standard video
US9654753B1 (en) * 2015-09-01 2017-05-16 Amazon Technologies, Inc. Video stream processing
FR3042620B1 (fr) 2015-10-16 2017-12-08 F4 Dispositif web interactif a affichage personnalisable
CN106817354A (zh) * 2015-12-01 2017-06-09 阿里巴巴集团控股有限公司 一种视频流传输方法、设备和系统
CN106997348A (zh) * 2016-01-22 2017-08-01 腾讯科技(深圳)有限公司 一种数据绘制方法和装置
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
NL2016702B1 (en) * 2016-04-29 2017-11-20 E-Comvideo Web-based enriched video.
US20170344523A1 (en) * 2016-05-25 2017-11-30 Samsung Electronics Co., Ltd Method and apparatus for presentation customization and interactivity
US10157480B2 (en) 2016-06-24 2018-12-18 Microsoft Technology Licensing, Llc Efficient decoding and rendering of inter-coded blocks in a graphics pipeline
US11197010B2 (en) * 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
KR102130429B1 (ko) * 2016-11-07 2020-07-07 한화테크윈 주식회사 멀티미디어 수신 장치에서 디코딩을 수행하는 방법 및 멀티미디어 장치
KR102725853B1 (ko) * 2016-12-13 2024-11-05 삼성전자주식회사 전자 장치 및 이의 제어 방법
CN108235107A (zh) * 2016-12-15 2018-06-29 广州市动景计算机科技有限公司 视频录制方法、装置及电子终端
US10904329B1 (en) 2016-12-30 2021-01-26 CSC Holdings, LLC Virtualized transcoder
US11089349B2 (en) * 2017-01-20 2021-08-10 Hanwha Techwin Co., Ltd. Apparatus and method for playing back and seeking media in web browser
US10979785B2 (en) * 2017-01-20 2021-04-13 Hanwha Techwin Co., Ltd. Media playback apparatus and method for synchronously reproducing video and audio on a web browser
US10462512B2 (en) * 2017-03-31 2019-10-29 Gracenote, Inc. Music service with motion video
CN109348226B (zh) * 2017-04-08 2022-11-11 腾讯科技(深圳)有限公司 一种图片文件处理方法及智能终端
GB2576662B (en) * 2017-04-21 2020-10-28 Zenimax Media Inc Systems and methods for encoder-guided adaptive-quality rendering
CN109271327B (zh) * 2017-07-18 2020-11-27 杭州海康威视数字技术股份有限公司 内存管理方法及装置
US11303947B2 (en) * 2018-04-24 2022-04-12 Google Llc Methods, systems, and media for adjusting quality level during synchronized media content playback on multiple devices
CN112369041B (zh) 2018-07-05 2022-10-28 杜比国际公司 播放媒体的方法和计算机可读存储装置
TWI680661B (zh) * 2018-07-20 2019-12-21 茂傑國際股份有限公司 加值遠端顯示服務的無線路由伺服裝置及方法
EP3651140A1 (en) * 2018-11-12 2020-05-13 BAE SYSTEMS plc Processing simulator data
EP3881307A1 (en) 2018-11-12 2021-09-22 BAE SYSTEMS plc Processing simulator data
CN109218795B (zh) * 2018-11-29 2021-09-24 海信视像科技股份有限公司 一种多设备播放进度同步方法、装置及终端设备
CN109828791B (zh) * 2018-12-28 2022-03-22 北京奇艺世纪科技有限公司 一种动画播放方法、终端和计算机可读存储介质
CN109697060B (zh) * 2018-12-29 2022-08-26 广州方硅信息技术有限公司 视频特效系统及其生成方法、装置、设备和存储介质
US20200296316A1 (en) 2019-03-11 2020-09-17 Quibi Holdings, LLC Media content presentation
US20200296462A1 (en) 2019-03-11 2020-09-17 Wci One, Llc Media content presentation
CN110753265B (zh) * 2019-10-28 2022-04-19 北京奇艺世纪科技有限公司 数据处理方法、装置和电子设备
US20210168472A1 (en) * 2019-12-01 2021-06-03 Arris Enterprises Llc Audio visual time base correction in adaptive bit rate applications
CN110839181A (zh) * 2019-12-04 2020-02-25 湖南快乐阳光互动娱乐传媒有限公司 基于B/S架构的视频内容转换为gif的方法及系统
CN111629214A (zh) * 2020-06-05 2020-09-04 北京百度网讯科技有限公司 视频文件的转码方法、装置、设备和介质
DE102020208695A1 (de) * 2020-07-12 2022-01-13 Volkswagen Aktiengesellschaft Bereitstellung und Anzeige von Videodaten
US12015785B2 (en) * 2020-12-04 2024-06-18 Ofinno, Llc No reference image quality assessment based decoder side inter prediction
CA3142044A1 (en) * 2020-12-14 2022-06-14 Comcast Cable Communications, Llc Methods and systems for improved content encoding
CN114915837B (zh) * 2021-02-10 2023-08-25 武汉斗鱼网络科技有限公司 视频渲染的触发方法、装置、电子设备及存储介质
US11284165B1 (en) 2021-02-26 2022-03-22 CSC Holdings, LLC Copyright compliant trick playback modes in a service provider network
CN113326086B (zh) * 2021-05-18 2022-08-23 翱捷科技股份有限公司 基于lvgl的gif图片显示方法及装置
CN113490044B (zh) * 2021-06-29 2023-07-28 北京百度网讯科技有限公司 一种视频播放方法、装置、电子设备及存储介质
CN114205662B (zh) * 2021-12-13 2024-02-20 北京蔚领时代科技有限公司 iOS端的低延迟视频渲染方法及装置
US11928078B2 (en) * 2022-03-04 2024-03-12 Lemon Inc. Creating effect assets while avoiding size inflation
CN114610212A (zh) * 2022-03-11 2022-06-10 北京中量质子网络信息科技有限公司 前端可视化视频内容编辑方法、装置、设备及存储介质
US20250157036A1 (en) * 2022-04-12 2025-05-15 Utech Products, Inc. Multithreading video processing with cloud services to detect and analyze objects
CN114979766B (zh) * 2022-05-11 2023-11-21 深圳市闪剪智能科技有限公司 音视频的合成方法、装置、设备及存储介质
CN115277651B (zh) * 2022-06-22 2024-05-24 肯特智能技术(深圳)股份有限公司 基于xml文件的配置式流媒体软件方法及系统
CN117439997B (zh) * 2023-12-20 2024-03-08 天津华来科技股份有限公司 一种基于模块化设计的通用p2p通信架构构建方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000134237A (ja) * 1998-10-23 2000-05-12 Toshiba Corp ホームネットワークのためのデジタルavデータ再生方法およびデジタルavデータ再生装置
JP2003195870A (ja) * 2001-08-13 2003-07-09 Texas Instruments Inc 通信網メディア・プレーヤーで使用するための汎用デコーダ
JP2006040511A (ja) * 2004-06-05 2006-02-09 Samsung Electronics Co Ltd マルチメディアコンテンツ再生装置、再生方法、生成装置、生成方法、及びそのマルチメディアコンテンツを記録した記録媒体
JP2006079606A (ja) * 2004-09-03 2006-03-23 Microsoft Corp ピアツーピアネットワークでの受信側主導のシステム及び方法
JP2009105706A (ja) * 2007-10-24 2009-05-14 Panasonic Corp 画像音声同期再生装置
JP2009147902A (ja) * 2007-12-12 2009-07-02 Korea Electronics Telecommun ユーザ端末にマルチメディアコンテンツとコーデックを提供する適応的マルチメディアシステムおよびその方法
JP2011009838A (ja) * 2009-06-23 2011-01-13 Sumitomo Electric Ind Ltd 映像通信システム及び映像通信方法
JP2011023992A (ja) * 2009-07-16 2011-02-03 Hitachi Consumer Electronics Co Ltd コンテンツ配信システム、再生装置、及び配信サーバ
JP2011139211A (ja) * 2009-12-28 2011-07-14 Renesas Electronics Corp 画像処理装置及び画像処理方法
JP2011525322A (ja) * 2008-06-11 2011-09-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メディアストリームコンポーネントの同期

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6126382A (ja) * 1984-07-17 1986-02-05 Kokusai Denshin Denwa Co Ltd <Kdd> 動き量を用いた動画像フレ−ムレ−ト変換方式
US5594660A (en) * 1994-09-30 1997-01-14 Cirrus Logic, Inc. Programmable audio-video synchronization method and apparatus for multimedia systems
US6829368B2 (en) 2000-01-26 2004-12-07 Digimarc Corporation Establishing and interacting with on-line media collections using identifiers in media signals
US5767867A (en) * 1995-11-27 1998-06-16 Sun Microsystems, Inc. Method for alpha blending images utilizing a visual instruction set
US6005980A (en) * 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5991447A (en) * 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
US6573907B1 (en) 1997-07-03 2003-06-03 Obvious Technology Network distribution and management of interactive video and multi-media containers
US8645838B2 (en) * 1998-10-01 2014-02-04 Digimarc Corporation Method for enhancing content using persistent content identification
US6573905B1 (en) * 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
DE60025406T2 (de) * 1999-03-02 2006-09-21 Hitachi Denshi K.K. Laufbilderinformationsanzeigeverfahren und -gerät
US20060041639A1 (en) * 1999-04-21 2006-02-23 Interactual Technologies, Inc. Platform detection
GB9918150D0 (en) 1999-08-03 1999-10-06 Univ Sheffield Nuclease variant
WO2001027754A2 (en) 1999-10-13 2001-04-19 Conexant Systems, Inc. Compressed storage and transmission of high-level computer languages
US6246720B1 (en) * 1999-10-21 2001-06-12 Sony Corporation Of Japan Flexible software-based decoding system with decoupled decoding timing and output timing
WO2001059599A1 (en) * 2000-02-11 2001-08-16 Autolycus Corporation Generation and display of multi-image video streams
US6993559B2 (en) * 2000-02-14 2006-01-31 Bigbow.Com, Inc. System, method, apparatus and computer program product for operating a web site by electronic mail
AU2001249451A1 (en) 2000-03-27 2001-12-11 Accenture Llp System, method, and article of manufacture for an automated scripting solution for enterprise testing
US7540021B2 (en) 2000-04-24 2009-05-26 Justin Page System and methods for an identity theft protection bot
CA2345878A1 (en) * 2001-05-01 2002-11-01 Destiny Software Productions Inc. Multi media distribution method and system
US6773845B2 (en) * 2001-06-27 2004-08-10 Delphi Technologies, Inc. Fluid distribution surface for solid oxide fuel cells
US7017162B2 (en) 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
MXPA04002722A (es) * 2001-09-26 2005-11-04 Interact Devices Inc Sistema y metodo para comunicar senales de medios.
EP1437891A4 (en) * 2001-10-18 2009-12-09 Panasonic Corp VIDEO / AUDIO REPRODUCTION DEVICE, VIDEO / AUDIO REPRODUCTION PROCESS, PROGRAM AND MEDIUM
US7317840B2 (en) * 2002-02-26 2008-01-08 Decegama Angel Methods for real-time software video/audio compression, transmission, decompression and display
US20030170006A1 (en) * 2002-03-08 2003-09-11 Bogda Peter B. Versatile video player
US7106908B2 (en) * 2002-03-12 2006-09-12 Nokia Corporation Method and apparatus for selecting a format in which to re-encode a quantized image
WO2003090468A1 (en) * 2002-04-19 2003-10-30 Opentv, Inc. Supporting common interactive television functionality through presentation engine syntax
US6825780B2 (en) 2002-04-19 2004-11-30 Droplet Technology, Inc. Multiple codec-imager system and method
US7260257B2 (en) * 2002-06-19 2007-08-21 Microsoft Corp. System and method for whiteboard and audio capture
US7966374B2 (en) 2002-07-01 2011-06-21 Profiliq Software Inc. Adaptive media messaging, such as for rich media messages incorporating digital content
JP2004120440A (ja) * 2002-09-26 2004-04-15 Toshiba Corp サーバー装置及びクライアント装置
US7230987B2 (en) 2002-09-30 2007-06-12 Broadcom Corporation Multiple time-base clock for processing multiple satellite signals
US20040181611A1 (en) 2003-03-14 2004-09-16 Viresh Ratnakar Multimedia streaming system for wireless handheld devices
KR20060105407A (ko) 2005-04-01 2006-10-11 엘지전자 주식회사 영상 신호의 스케일러블 인코딩 및 디코딩 방법
US7158668B2 (en) * 2003-08-01 2007-01-02 Microsoft Corporation Image processing using linear light values and other image processing improvements
CN1757074A (zh) 2003-11-28 2006-04-05 索尼株式会社 再现设备、再现方法、再现程序、和记录介质
US9323571B2 (en) * 2004-02-06 2016-04-26 Intel Corporation Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor
US7509387B2 (en) 2004-04-07 2009-03-24 Nokia Corporation System, apparatus, and method for using reduced Web service messages
JP2005318473A (ja) 2004-04-30 2005-11-10 Toshiba Corp 動画像のメタデータ
JP2005332274A (ja) 2004-05-20 2005-12-02 Toshiba Corp 動画像中のオブジェクトに関するメタデータストリームのデータ構造、検索方法及び再生方法
JP2006023945A (ja) * 2004-07-07 2006-01-26 Canon Inc 画像処理システム及び画像処理方法
KR100679018B1 (ko) 2004-09-07 2007-02-05 삼성전자주식회사 다계층 비디오 코딩 및 디코딩 방법, 비디오 인코더 및디코더
US20070192818A1 (en) 2004-10-12 2007-08-16 Mikael Bourges-Sevenier System and method for creating, distributing, and executing rich multimedia applications
JP4468796B2 (ja) 2004-12-02 2010-05-26 ソニー株式会社 再生装置、再生方法および再生プログラム、ならびに、記録媒体
JP4275611B2 (ja) 2004-12-02 2009-06-10 ソニー株式会社 再生装置、再生方法および再生プログラム、記録媒体、ならびに、データ構造体
US20060150071A1 (en) * 2005-01-05 2006-07-06 Microsoft Corporation Software-based video rendering
KR100640424B1 (ko) 2005-03-16 2006-11-01 삼성전자주식회사 디지털 멀티미디어 방송 수신기에서 방송 채널의 전환을 제어하는 장치 및 방법
US7602984B2 (en) * 2005-09-28 2009-10-13 Novell, Inc. Adaptive method and system for encoding digital images for the internet
US7707485B2 (en) * 2005-09-28 2010-04-27 Vixs Systems, Inc. System and method for dynamic transrating based on content
US8903196B2 (en) * 2005-10-05 2014-12-02 Texas Instruments Incorporated Video presentation at fractional speed factor using time domain interpolation
ES2276629B1 (es) * 2005-12-15 2009-04-01 Pharma Mar, S.A. Compuestos antitumorales.
JP2007207328A (ja) 2006-01-31 2007-08-16 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
US8769127B2 (en) 2006-02-10 2014-07-01 Northrop Grumman Systems Corporation Cross-domain solution (CDS) collaborate-access-browse (CAB) and assured file transfer (AFT)
US7921415B1 (en) * 2006-05-19 2011-04-05 Tellme Networks, Inc. Externally loaded browser interpreter for non-native language support
US9432433B2 (en) * 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
KR20080050279A (ko) 2006-12-02 2008-06-05 한국전자통신연구원 다단계 해상도 지형의 이미지 튐 현상 완화 장치 및 방법
US20080201736A1 (en) * 2007-01-12 2008-08-21 Ictv, Inc. Using Triggers with Video for Interactive Content Identification
US20090103897A1 (en) * 2007-10-22 2009-04-23 Min-Shu Chen Method for synchronzing audio and video data in avi file
US7761602B1 (en) 2007-11-26 2010-07-20 Adobe Systems Incorporated Playback of content on portable devices
US8279318B2 (en) * 2007-12-14 2012-10-02 Canon Kabushiki Kaisha Image pickup apparatus and display control method for the same
US8050833B2 (en) * 2008-04-15 2011-11-01 Allison Transmission, Inc. System and method for controlling engagement of a lockup clutch in a torque converter
US20090300685A1 (en) 2008-05-30 2009-12-03 Airme Inc. System, method, and device for transmitting video captured on a wireless device
JP2009289103A (ja) 2008-05-30 2009-12-10 Fujitsu Ltd 情報処理システム、情報処理装置、及びコンピュータプログラム
JP2010028509A (ja) 2008-07-22 2010-02-04 Kyocera Mita Corp 画像形成システム、画像形成装置およびコンピュータプログラム
CN101330340B (zh) * 2008-07-31 2010-09-29 中兴通讯股份有限公司 移动多媒体广播终端自适应调整接收速率缓冲播放的方法
WO2010019471A1 (en) * 2008-08-14 2010-02-18 Zoran Corporation System and method for efficient video and audio instant replay for digital television
GB2463329B (en) 2008-09-10 2013-02-20 Echostar Advanced Technologies L L C Set-top box emulation system
JP2010113012A (ja) * 2008-11-04 2010-05-20 Seiko Epson Corp 表示システム、画像出力装置及び画像表示装置
JP2010136292A (ja) * 2008-12-08 2010-06-17 Toshiba Corp 画像処理装置
US8432404B2 (en) 2008-12-15 2013-04-30 Leonovus Usa Inc. Media action script acceleration method
US8432403B2 (en) 2008-12-15 2013-04-30 Leonovus Usa Inc. Media action script acceleration apparatus
US8487941B2 (en) 2008-12-15 2013-07-16 Leonovus Usa Inc. Media action script acceleration apparatus
US8487942B2 (en) 2008-12-15 2013-07-16 Leonovus Usa Inc. Media action script acceleration system
US8176096B2 (en) 2008-12-18 2012-05-08 Microsoft Corporation Data visualization interactivity architecture
FI20095175L (fi) * 2009-02-23 2010-08-24 Anygraaf Oy Menetelmä rasterimuotoisen kuvan segmentoinnin hyödyntämiseksi kuvan pakkaamisessa
CA2755774C (en) * 2009-03-19 2015-01-06 Azuki Systems, Inc. Method for scalable live streaming delivery for mobile audiences
US8832676B2 (en) 2009-09-30 2014-09-09 Zynga Inc. Apparatuses, methods and systems for a social networking application updater
US10713018B2 (en) 2009-12-07 2020-07-14 International Business Machines Corporation Interactive video player component for mashup interfaces
US8537201B2 (en) * 2010-10-18 2013-09-17 Silicon Image, Inc. Combining video data streams of differing dimensionality for concurrent display
US8838680B1 (en) * 2011-02-08 2014-09-16 Google Inc. Buffer objects for web-based configurable pipeline media processing
US9167020B2 (en) * 2011-06-10 2015-10-20 Microsoft Technology Licensing, Llc Web-browser based desktop and application remoting solution
US8903897B2 (en) 2011-07-08 2014-12-02 Google Inc. System and method for providing interactive content to non-native application environments

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000134237A (ja) * 1998-10-23 2000-05-12 Toshiba Corp ホームネットワークのためのデジタルavデータ再生方法およびデジタルavデータ再生装置
JP2003195870A (ja) * 2001-08-13 2003-07-09 Texas Instruments Inc 通信網メディア・プレーヤーで使用するための汎用デコーダ
JP2006040511A (ja) * 2004-06-05 2006-02-09 Samsung Electronics Co Ltd マルチメディアコンテンツ再生装置、再生方法、生成装置、生成方法、及びそのマルチメディアコンテンツを記録した記録媒体
JP2006079606A (ja) * 2004-09-03 2006-03-23 Microsoft Corp ピアツーピアネットワークでの受信側主導のシステム及び方法
JP2009105706A (ja) * 2007-10-24 2009-05-14 Panasonic Corp 画像音声同期再生装置
JP2009147902A (ja) * 2007-12-12 2009-07-02 Korea Electronics Telecommun ユーザ端末にマルチメディアコンテンツとコーデックを提供する適応的マルチメディアシステムおよびその方法
JP2011525322A (ja) * 2008-06-11 2011-09-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メディアストリームコンポーネントの同期
JP2011009838A (ja) * 2009-06-23 2011-01-13 Sumitomo Electric Ind Ltd 映像通信システム及び映像通信方法
JP2011023992A (ja) * 2009-07-16 2011-02-03 Hitachi Consumer Electronics Co Ltd コンテンツ配信システム、再生装置、及び配信サーバ
JP2011139211A (ja) * 2009-12-28 2011-07-14 Renesas Electronics Corp 画像処理装置及び画像処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018521550A (ja) * 2015-05-26 2018-08-02 テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド ビデオを再生するための方法、クライアント及びコンピュータ記憶媒体
WO2019111348A1 (ja) * 2017-12-06 2019-06-13 株式会社典雅 映像処理装置、映像処理方法、コンピュータプログラム、及び映像処理システム

Also Published As

Publication number Publication date
US20130047074A1 (en) 2013-02-21
NZ622065A (en) 2015-12-24
US9571886B2 (en) 2017-02-14
CA2843766A1 (en) 2013-02-21
RU2014110047A (ru) 2015-09-27
US20130044802A1 (en) 2013-02-21
US10645405B2 (en) 2020-05-05
US20170142430A1 (en) 2017-05-18
US9137567B2 (en) 2015-09-15
CN103891303B (zh) 2018-03-09
SG2014008775A (en) 2014-04-28
WO2013023287A1 (en) 2013-02-21
US20130044805A1 (en) 2013-02-21
US20130044823A1 (en) 2013-02-21
US9143826B2 (en) 2015-09-22
US9380338B2 (en) 2016-06-28
ZA201401618B (en) 2015-01-28
US9215499B2 (en) 2015-12-15
AU2012297524B2 (en) 2017-07-20
HK1199586A1 (en) 2015-08-28
EP2745526A4 (en) 2016-04-06
US9432727B2 (en) 2016-08-30
US20130044260A1 (en) 2013-02-21
CN103891303A (zh) 2014-06-25
EP2745526A1 (en) 2014-06-25
US20130044824A1 (en) 2013-02-21
US20130044822A1 (en) 2013-02-21
IL230898A0 (en) 2014-03-31
US9432726B2 (en) 2016-08-30
AU2012297524A1 (en) 2014-04-03

Similar Documents

Publication Publication Date Title
US10645405B2 (en) Script-based video rendering
US10567809B2 (en) Selective media playing method and apparatus according to live streaming and recorded streaming
CN111669623B (zh) 视频特效的处理方法、装置以及电子设备
US9542501B2 (en) System and method for presenting content in a client/server environment
CN105917382B (zh) 用于交互式图形流传输的方法和系统
KR20090110202A (ko) 개인화된 사용자 인터페이스를 디스플레이하는 방법 및 장치
WO2014183487A1 (zh) 一种网页中视频的播放方法和装置
KR100340169B1 (ko) 자바를 이용한 동적 멀티미디어 웹 카타로깅 시스템 및 그 방법
CN114040251A (zh) 音视频播放方法、系统、存储介质及计算机程序产品
KR102232899B1 (ko) 클라우드 스트리밍 서비스 시스템, 이미지 타입에 따른 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
CN109933735A (zh) 调度方法、网页渲染方法、网页显示方法及其设备
NZ622065B2 (en) Script-based video rendering
KR102791998B1 (ko) 미디어 스트리밍 및 재생 동안 프리롤 및 미드롤을 지원하기 위한 방법 및 장치
KR102247887B1 (ko) 클라우드 스트리밍 서비스 시스템, 소스 정보를 이용한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
CN113364728B (zh) 媒体内容接收方法、装置、存储介质和计算机设备
CN118632073A (zh) 视频播放方法、装置、电子设备及存储介质
Huang et al. Design and implementation of an efficient MPEG-4 interactive terminal on embedded devices
Rodríguez‐Silva et al. Improving the virtualization of rich applications by combining VNC and streaming protocols at the hypervisor layer

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150525

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160621

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170509