JP2010508734A - リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー - Google Patents

リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー Download PDF

Info

Publication number
JP2010508734A
JP2010508734A JP2009534948A JP2009534948A JP2010508734A JP 2010508734 A JP2010508734 A JP 2010508734A JP 2009534948 A JP2009534948 A JP 2009534948A JP 2009534948 A JP2009534948 A JP 2009534948A JP 2010508734 A JP2010508734 A JP 2010508734A
Authority
JP
Japan
Prior art keywords
engine
program
network
video frames
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009534948A
Other languages
English (en)
Other versions
JP5451397B2 (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 JP2010508734A publication Critical patent/JP2010508734A/ja
Application granted granted Critical
Publication of JP5451397B2 publication Critical patent/JP5451397B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17318Direct or substantially direct transmission and handling of requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/401Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
    • H04L65/4015Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference where at least one of the additional parallel sessions is real time or time sensitive, e.g. white board sharing, collaboration or spawning of a subconference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/756Media network packet handling adapting media to device capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • 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/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • 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
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2668Creating a channel for a dedicated end-user group, e.g. insertion of targeted commercials based on end-user profiles
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44213Monitoring of end-user related data
    • H04N21/44222Analytics of user selections, e.g. selection of programs or purchase activity
    • H04N21/44224Monitoring of user activity on external systems, e.g. Internet browsing
    • 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/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47205End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for manipulating displayed content, e.g. interacting with MPEG-4 objects, editing locally
    • 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • 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/8545Content authoring for generating interactive applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Social Psychology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Marketing (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

ネットワークを通じてビデオフレームを通信するためのシステム及び方法を開示する。本システムにおいて、第1の装置にある第1のエンジンは、ネットワークを通じて送信するためのプログラムのユーザーインターフェースの連続するビデオフレームをエンコーディングする。ビデオフレームのエンコーディングは、1つ以上のフィードバックパラメータに基づき、ビデオ圧縮技法を含む。本システムは、前記プログラムに機能的に結合される第1のコマンド処理エンジンを含む。本システムにおいて、第2の装置にある第2のエンジンは、ネットワークを通した送信後に連続するビデオフレームをデコーディングする。更に本システムは、第1のコマンド処理エンジンに機能的に結合され且つ第2の装置のユーザー入力を第1のコマンド処理エンジンを介して前記プログラムに通信する第2のコマンド処理エンジンを含む。
【選択図】図1

Description

関連出願の相互参照
[0001]本願は、35 U.S.C. 119(e)の規定の下で、2006年11月1日に出願され、「CONTENT ACCESS USING COMPRESSION」と題する米国仮特許出願第60/863,888号、及び2007年10月30日に出願され、「ARCHITECTUREFOR DELIVERY OF VIDEO CONTENT RESPONSIVE TO REMOTE INTERACTION」と題する米国通常特許出願第11/929,773号に基づく優先権を主張しており、これらの出願明細書の記載は、ここにそのまま援用される。
[0002]本発明は、リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャーに係る。特に、本発明は、連続するビデオフレームを対話形式である装置に対して通信することに係る。
[0003]クライアント−サーバーアーキテクチャーは、多くの異なるタイプのネットワーク環境において、種々なコンテクストにて使用される。あるネットワーク環境においては、帯域幅制限が、クライアントサーバーアーキテクチャーを使用する上での主たる制約要因の1つとなる。このような帯域幅制約環境は、ワイヤードネットワーク及びワイヤレスネットワークの両者及びこのようなネットワークの組合せ/ハイブリッドにおいて生ずることがある。ワイヤレスネットワークを例にとると、クライアント装置は、これに加えて、例えば、処理能力、メモリ及び電力(即ち、バッテリー)制限を含む装置能力に関してリソース制約を被ることがある。ウエブブラウザアプリケーションの如き、比較的に大量の帯域幅及び処理能力を消費するエンドユーザーアプリケーションにおいては、モバイルクライアント装置において実行されるときに、ユーザーの知覚認識が満足できないような事態となることがある。これらのユーザーの知覚認識が満足できないような事態は、ウエブブラウジングセッションにて予想される高速対話性を与える能力が低いことから生ずることが多い。セルラー電話の如き多くのモバイルクライアント装置は、このようなアプリケーションのフルフィーチャーバージョンを十分に支援することができないことがある。
[0004]これに併せて、ウエブサイトは、絶えずよりフィーチャーリッチとなり且つ種々な補助ソフトウエア(アニメーションプラグインの如き)を利用することが増えてきてしまい、これらは、多くのモバイルクライアント装置においては支援できないものである。多くのモバイルクライアント装置に対してコンテンツのビデオ送信をしようとすると、帯域幅制限のため、又、既存のクライアント−サーバーアーキテクチャーではこのような制限を十分に調整することができないため、ユーザーの知覚認識が満足できないような事態が生じてしまうことが多い。種々な面を有する帯域幅及び能力制約されたモバイル装置において生ずるフルフィーチャーブラウジング知覚認識を支援し且つこれら同じ装置に対する他のアプリケーションの使用を支援する必要性がある。本発明の実施形態は、その他の必要性にも向けられる。
[0005]種々な実施形態において、本発明は、ネットワークを通じてビデオフレームを通信するためのアーキテクチャーに関するシステム及び方法を提供する。一実施形態では、システムは、第1の装置に存在する第1のエンジンを含み、前記第1のエンジンは、前記ネットワークを通じて送信するためのプログラムのユーザーインターフェースの連続するビデオフレームをエンコーディングするように構成される。前記ビデオフレームのエンコーディングは、1つ以上のフィードバックパラメータに基づいており、且つビデオ圧縮技法を含む。同じ実施形態において、前記システムは、前記プログラムに機能的に結合される第1のコマンド処理エンジンを含む。同じ実施形態において、前記システムは、第2の装置に存在する第2のエンジンを含み、前記第2のエンジンは、前記ネットワークを通した送信後に前記連続するビデオフレームをデコーディングするように構成される。同じ実施形態において、前記システムは、前記第1のコマンド処理エンジンに機能的に結合され且つ前記第2の装置のユーザー入力を前記第1のコマンド処理エンジンを介して前記プログラムへ通信するように構成される第2のコマンド処理エンジンを含む。
[0006]別の実施形態においては、前記連続するビデオフレームに関連したオーディオストリームもまたエンコーディング及びデコーディングされる。更に別の実施形態においては、ユーザーインターフェースを有する複数のプログラムがあり、前記複数のプログラムの各々は、対応する複数の第1のエンジン及び対応する複数の第1のコマンド処理エンジンを有する。更に又、前記複数のプログラムは、オペレーティングシステムの1つのインスタンスにおいて実行され、ユーザーマネージャエンジンは、前記ネットワークを通じて対応する複数の第2の装置へ送信するため前記複数のプログラムの各々の連続するビデオフレームをロードバランス形式にてエンコーディングするように構成される。
[0007]更に別の実施形態では、前記第2の装置は、ビューイングアプリケーションを含み、前記ビューイングアプリケーションは、前記第1のエンジンに機能的に結合され且つ前記連続するビデオフレームを表示するように構成される。同じ実施形態において、前記ビューイングアプリケーションは、更に、前記コマンド処理エンジンに機能的に結合され且つ前記プログラムへのユーザー入力の通信を行うように構成される。
[0008]更に別の実施形態では、方法は、前記複数のプログラムに対応する複数のオーディオストリームをインターセプトするステップと、前記複数のオーディオストリームの各々を前記複数のプログラムに対応する複数の処理識別子のうちの1つに関連付けるステップと、前記複数のオーディオストリームをエンコーディングするステップと、前記関連付けられた処理識別子に基づいて前記複数のオーディオストリームをルーティングするステップと、を含む。
[0009]当業者であれば、本発明は、広範囲に亘る種々なシステム及び方法において実施できることが認識されよう。
一実施形態による本発明のクライアント−サーバーアーキテクチャーのある幾つかの態様を例示するブロック図である。 一実施形態によるサーバーに関する本発明のある幾つかの態様を例示するブロック図である。 一実施形態によるサーバー、オーディオサーバー及びクライアントを含む本発明のアーキテクチャーオーバービューのある幾つかの態様を例示するブロック図である。 一実施形態によるクライアントに関する本発明のある幾つかの態様を例示するブロック図である。 一実施形態によるマルチユーザーソフトウエアアーキテクチャーのある幾つかの態様を例示する図である。 一実施形態による連続するビデオフレームを取り込むためのある幾つかの支援態様を例示するフローチャートである。 一実施形態による連続するビデオフレームを送るためのある幾つかの支援態様を例示するフローチャートである。 一実施形態によるクライアント−サーバー交換のある幾つかの態様を例示する図である。 一実施形態によるサーバー内での付随する交換を含むクライアント−サーバー交換のある幾つかの態様を例示する図である。 一実施形態によるリモートインターラクションのためのクライアント−サーバーアーキテクチャーに関連して使用するのに適した典型的なコンピュータシステムを例示している。
[0020]当業者であれば、これら図は、1つ又は幾つかの実施形態による本発明の動作の単なる実施例を示すだけのものであり、本発明の本質的な特徴から逸脱せずに、他のアーキテクチャー、方法ステップ、交換及び動作のモードを使用できることが認識されよう。
[0021]本発明の1つの又は幾つかの実施形態を示している添付図面に関して、本発明について、以下、より十分に説明する。本発明は、多くの異なる形にて実施することができるものであり、ここに説明する実施形態に限定されるものではない。むしろ、これらの実施形態は、本発明の開示を完全なものとし、当業者に対して本発明の原理を十分に理解させるために提示されるものである。
[0022]例示の目的で、本発明の実施形態について、サーバー又は典型的なモバイルクライアント装置の如きモバイルクライアント装置に関連して説明する。ここでは、本発明の理解を助けるため、サーバー及びモバイルクライアント装置に関する実施形態について、種々な特定の詳細につき説明する。しかしながら、これら特定の詳細は、例示のためのものであり、特許請求の範囲に限定される本発明の範囲を制限するものではない。特に、当業者であれば、本発明は、例えば、ワイヤードネットワークにおいて動作するクライアント装置を含む広範囲に亘る種々なコンテクストに関して使用できるものであることが認識されよう。又、本発明の実施形態は、ウエブブラウジングアプリケーションに関連して説明するが、これら説明は、実施例を例示しようとしているものであり、特許請求の範囲に限定されたような本発明の範囲を制限するものではない。本発明の種々な実施形態は、オペレーティングシステム(OS)を含む多くの種々なタイプのプログラム、ワードプロセシング、スプレッドシート、プレゼンテーション及びデータベースアプリケーションを含む広範囲に亘る種々なアプリケーションに関して使用することができる。
[0023]ある幾つかの実施形態では、本発明は、マイクロソフト社から入手できるマイクロソフトOS、リナックスの種々なバージョン、ユニックスの種々なバージョン、アップルコンピュータ社から入手できるマックOS及び/又は他のオペレーティングシステムの如きOSを実行する従来のサーバーコンピュータシステムにおいて、少なくとも部分的に実施される。ある幾つかの実施形態では、本発明は、マイクロソフトウインドーズビスタ又はエックスピー(又は別のウインドーズバージョン)、マックOSエックス(又は別のマックOSバージョン)、リナックスの種々なバージョン、ユニックスの種々なバージョン、又はコンピューティング装置における種々なオペレーションを全体的に管理するように設計された他のOSの如きOSを実行する通常のパーソナルコンピュータシステムにおいて実施される。
[0024]更に又、本発明は、例えば、個人向け携帯情報端末(PDA)、セルホン、1つ以上のコンピューティングリソースが遠隔的に配置されていてネットワークを介してアクセスされ、種々なオペレーティングシステムにて実行されるようなコンピューティング装置の如きパーソナルコンピュータ以外の装置にて実施され、又はそのような装置に関連して実施することのできるものである。本発明は、アドオンソフトウエアとして含ませることができ、又、本発明は、コンピュータシステムに添付されるアプリケーションのフィーチャーとなることもでき、又、本発明は、ハードウエアに埋め込まれた機能として実施することもできる。
[0025]本発明により生成される出力は、スクリーンに表示され、リモート装置に記憶され、データベース又は他の記憶機構に記憶され、プリントされ、又は、その他の任意の仕方にて使用することができるものである。更に又、ある幾つかの実施形態では、本発明は、キーボード(種々な形式におけるスクリーンベースの又は物理的なキーボード)、スクロールホイール、ナンバーパッド、スタイラスベースの入力、タッチスクリーン又はタッチパッドの如き入力装置を介してコンピュータシステムへ与えられる入力を使用する。このような構成部分は、それらの動作、互いのインターラクション及びパーソナルコンピュータの中央処理装置とのインターラクションを含めて、コンピュータシステムの技術分野において良く知られているので、ここでは説明しない。
[0026]モジュールに関してここに説明するどのソフトウエア部分も、別々のソフトウエアモジュールを含む必要はない。ここに説明するどのソフトウエア構成も、単なる実施例であり、本発明の種々な実施形態の範囲内で他の構成も考えることができる。用語「エンジン」は、ここでは、関連する機能又は種々の機能を果たす任意のソフトウエア又はハードウエアコンフィギュレーションを示すのに使用される。
[0027]本明細書において、「一実施形態」又は「ある実施形態」としているのは、それら実施形態に関して説明された特定の特徴、構造又は特性が本発明の少なくとも1つの実施形態に含まれることを意味している。本明細書の種々な場所に出て来る表現「一実施形態において」は、必ずしも同じ実施形態を指しているものではない。本明細書の種々な場所に出て来る表現「ある幾つかの実施形態において」は、必ずしも、全てが、実施形態のその同じ組を指しているものではない。本明細書の種々な場所に出て来る表現「種々な実施形態」は、必ずしも、全てが、実施形態の同じ組を指しているものではない。
1.システム
[0028]図1は、一実施形態による本発明のシステム100のある幾つかの態様を例示するブロック図である。このシステム100は、サーバーアプリケーション1(102)、サーバーアプリケーション2(104)、サーバーアプリケーション3(106)、及びサーバーアプリケーションn(110)までの広範囲に亘る数の付加的なサーバーアプリケーション(省略符号108で表される)を含む、サーバー200にて実行される多数のサーバーアプリケーションインスタンスを含むクライアントサーバーアーキテクチャーを使用する。用語「サーバーアプリケーション」は、ここでは、サーバー側アプリケーション、即ち、1つ以上のサーバーにて実行されるアプリケーションを示すのに使用される。サーバーアプリケーションn(110)は、任意の所定ポイントでシステム100において実行されることのあるサーバーアプリケーションインスタンスの数を表している。サーバー200は、複数のサーバーアプリケーションインスタンス102−110の間で複数のユーザーを管理する働きをするユーザーマネージャモジュール502も含む。ユーザーマネージャモジュール502は、図5において説明されており、サーバー200にて実行される可能性のある複数のユーザーマネージャのうちの1つを表している。サーバー200は、OS下位サーバーアプリケーション102−110のうちの1つのインスタンスを実行する。別の実施形態では、1つ以上のアプリケーションインスタンスを各々が含むOSの複数のインスタンスを実行することができる。
[0029]図1は、複数のサーバーアプリケーション102−110を例示しているが、他の実施形態では、例えば、OSを含む、多数の異なるタイプのプログラムを交互に使用することができる。図1に例示したサーバーアプリケーション102−110は、例えば、1つ以上のサーバーファーム環境におけるように、1つのサーバー200又は任意数のサーバーにおいて実行することができる。サーバーアプリケーション102−110は、各々、異なるサーバーアプリケーションのインスタンスを含むものであってもよいし、全て、1つのサーバーアプリケーションのインスタンスを含むものであってもよい。例えば、各サーバーアプリケーション102−110は、ウエブブラウジングアプリケーションの別々のインスタンスを含むことができる。
A.サーバー
[0030]サーバーアプリケーション1(102)について更に詳述するに、典型的なサーバーアプリケーションインスタンスとして、サーバーアプリケーション1(102)は、アプリケーション112、プラグイン114、オーディオデータ生成器116、オーディオエンコーダーモジュール120、ビデオエンコーダーモジュール124及びコマンド処理モジュール126を含む。ビデオエンコーダーモジュール124は、フィードバックパラメータ125を使用する。
[0031]ビデオエンコーダー124は、アプリケーション112に機能的に結合され、アプリケーション112のユーザーインターフェース(UI)の連続するキャプチャ(122)を受け取り、ネットワーク128を介して送信するためビデオフレームへとエンコーディングするように構成される。UIの連続するキャプチャ(122)は、図2に例示され説明されるような別のモジュール(画像管理モジュール216)により、アプリケーション112から取り込まれビデオエンコーダー124へと転送されるデータを含む。本明細書を通して使用される用語「ユーザーインターフェース」は、広範囲に亘る種々なコンピュータプログラムに関連した任意のユーザーインターフェースの全て又は部分を指している。
[0032]アプリケーションUIキャプチャ(122)のエンコーディングは、特定のエンコーディング又はビデオ圧縮フォーマットに限定されず、H.264の如きビデオ圧縮標準の使用からビデオ圧縮の全体的にカスタマイズされた形式のビデオ圧縮、ビデオ圧縮標準の変形形式等まで広範囲に亘るビデオ圧縮技法を含むことができる。
[0033]オーディオエンコーダーモジュール120は、アプリケーション112のオーディオデータ生成器116に機能的に結合され、ネットワーク128を介して送信するためオーディオデータ生成器116のオーディオキャプチャ118(例えば、オーディオストリーム)をエンコードされたオーディオストリームへと変換するように構成される。オーディオキャプチャ118は、オーディオデータ生成器116からオーディオエンコーダーモジュール120へと転送されるデータを含む。
[0034]オーディオデータ生成器116は、アプリケーション112に機能的に結合され、オーディオデータ添付アプリケーション112を生成するように構成される。プラグイン114は、アプリケーション112及びコマンド処理モジュール126に機能的に結合される。プラグイン114は、アプリケーション112とコマンド処理モジュール126との間のインターフェースを行うように構成される。
[0035]サーバー200については、図2において更に説明する。
C.クライアント
[0036]システム100は、クライアント1(400)、クライアント2(132)、クライアント3(134)、及びクライアントn(138)まで広範囲に亘る種々な付加的なクライアント(省略符号136で表される)を含む多数のクライアントを含む。ここで、クライアントn(138)は、任意の所定の点においてシステムに関わることのあるクライアントの数を表している。図1に例示されるように、異なるクライアントは、異なる非関連クライアント装置を含む。
[0037]クライアント1(400)について更に詳述するに、典型的なクライアントとして、クライアント1(400)は、オーディオデコーダーモジュール142、ビデオデコーダーモジュール144、コマンド処理モジュール146、ビューイングアプリケーション148、及びスピーカー150を含むことができる。ビデオデコーダーモジュール144は、ビデオエンコーダーモジュール124によりエンコードされ、クライアント1(400)による受信のためネットワーク128を通して送信されてきた連続するビデオフレームをデコーディングするように構成される。ビデオデコーダーモジュール144は、ビューイングアプリケーション148に機能的に結合され、クライアント1(400)にそれらビデオフレームを表示するためデコードされたビデオフレームをビューイングアプリケーション148へと通信するように構成される。
[0038]クライアント1(400)は、スピーカー150を含み、オーディオデコーダーモジュール142は、スピーカー150に機能的に結合される。オーディオデコーダーモジュール142は、オーディオエンコーダーモジュール120によりエンコードされ、クライアント1(400)による受信のためネットワーク128を通して送信されてきたオーディオキャプチャをデコーディングするように構成される。オーディオストリームをデコーディングした後、オーディオデコーダーモジュール142は、クライアント1(400)からオーディオ出力するためデコードされたオーディオをスピーカー150へと通信することができる。
[0039]ビューイングアプリケーション148は、ユーザー入力を受け取り、そのユーザー入力をコマンド処理モジュール146へと通信するように構成される。コマンド処理モジュール146は、そのユーザー入力を、ネットワーク128を介してアプリケーション102のコマンド処理モジュール126へと通信し戻すように構成される。コマンド処理モジュール126は、そのユーザー入力を、プラグイン114を介してアプリケーション112へと通信するように構成される。
[0040]プラグイン114は、図1に示したシステム100を介してアプリケーション112のリモート対話型使用を行う。プラグイン114は、拡張であることもできる。別の実施形態では、アプリケーション112は、特別なプラグインを必要としない範囲で、本発明のクライアント−サーバーアーキテクチャーにて使用できるようにカスタマイズすることができる。更に別の実施形態では、プラグインも、どのような特別なアプリケーション変更も必要とされないようにすることができる。
[0041]コマンド処理モジュール146は、1つ以上のフィードバックパラメータ(125)をコマンド処理モジュール126へ通信するように構成される。コマンド処理モジュール126は、それら1つ以上のフィードバックパラメータ125をビデオエンコーダーモジュール124及びオーディオエンコーダーモジュール120へと通信し、連続するアプリケーションUIキャプチャ122及びオーディオキャプチャ118のエンコーディングがそれぞれそこで行われるようにするように構成される。それら1つ以上のフィードバックパラメータ125は、ネットワーク128の少なくとも部分に関連した帯域幅パラメータ、クライアント1(400)のデバイスパラメータ又はクライアント1(400)に対するユーザー入力を含む広範囲に亘るパラメータを含むことができる。
[0042]それら1つ以上のフィードバックパラメータ(125)は、推定又は測定帯域幅データポイントを含む帯域幅パラメータを含むことができる。典型的な帯域幅パラメータは、サーバー200とクライアント1(400)との間で移動する特定のパケットの測定に基づいた推定帯域幅(例えば、スループット値を得るため送出データがどのくらい移動時間により分割されるか)又はネットワークプロトコルからのものを含めてネットワーク128から得られる又はネットワーク128に関連した得られる他の帯域幅情報を含むことができる。それら1つ以上のフィードバックパラメータ(125)は、例えば、特定のフォーマット又は形式にて行われるエンコーディングのためのユーザー要求を含むクライアント1(400)に対するユーザー入力を含むことができる。そのような要求は、ビューイングアプリケーション148により要求され通信されるものである。それ1つ以上のフィードバックパラメータ(125)は、クライアント1(400)のディスプレイ解像度(例えば、CGA、QVGA、VGA、NTSC、PAL、WVGA、SVGA、XGA等)を含むことができる。それら1つ以上のフィードバックパラメータ125は、他のスクリーンパラメータ(例えば、スクリーンサイズ、リフレッシュ能力、バックライティング能力、スクリーン技法等)又はクライアント装置(例えば、デバイスプロセッサ、GPS又は他の位置特定技法により可能とされる場合においてビデオフレーム、位置を記憶するのに使用することのできるメモリ等)の他のパラメータを含むことができる。前述した典型的なフィードバックパラメータのどれも、互いに又は他のフィードバックパラメータと組み合わせて使用することを排除していることを意味しているものではない。ある幾つかの実施形態では、ビデオエンコーダーモジュール124は、それらの1つ以上のフィードバックパラメータ(125)にそのビデオサンプルレートを少なくとも部分的に基づかせるように構成することができる。
[0043]図1に示す複数のクライアントは、各クライアント各々がそれ自身の1つ以上のフィードバックパラメータを有する異なるタイプのクライアント装置を含む可能性があるものとして、例示されている。
[0044]クライアント1(400)については、図4において更に説明する。
[0045]当業者であれば、図1に例示したクライアントサーバーアーキテクチャーは、単なる実施例であり、本発明は、多くの他のアーキテクチャー及び環境を使用して実施されるものであることは、認識されよう。
[0046]図2は、一実施形態による本発明のある幾つかの態様を例示するブロック図である。サーバー200は、ユーザーマネージャモジュール502、サーバーアプリケーション1(102)、アプリケーション112、プラグイン114、オーディオデータ生成器116、オーディオエンコーダーモジュール120、画像管理モジュール216、メモリ218、ビデオエンコーダーモジュール124(フィードバックパラメータ125を含む)、コマンド処理モジュール126及び整列モジュール224を含む。コマンド処理モジュール126は、クライアントインタープリタサブモジュール228を含み、プラグイン114は、クライアントインプリメンタサブモジュール208を含む。図1に例示した構成部分と同じ数をもって図2に例示された構成部分は、図1のそれらの各構成部分に対応しており、従って、それらの一般的動作は、繰り返されない。1つの実行アプリケーションがサーバー200に関して例示されているのであるが、サーバーアプリケーション102は、サーバー200にて実行される複数のサーバーアプリケーションの代表的インスタンスとして例示されており、それら複数のサーバーアプリケーションの各々は、それ自身の別々のクライアントと関連付けられている(クライアントは、この例図には示されていない)。
[0047]画像管理モジュール216は、アプリケーション112のUIを取り込み(そのUIがスクリーンに現れるとき)、そのキャプチャをメモリ218に記憶させるように作用する。スクリーンスクレイピングの如き任意のキャプチャ処理を使用することができ、画像管理モジュール216は、このキャプチャを任意の希望のレートで行うことができる。画像管理モジュール216は、又、アプリケーションUIの直前のキャプチャを現在のキャプチャと比較し、そのアプリケーションUIの特定の区域に何か変化が生じたかを決定する。このような比較動作のために、任意の画像/ビデオフレームマッチング処理を使用することができる。画像管理モジュール216は、この機能を繰り返し行うように作用する。
[0048]もし、画像管理モジュール216が問題の特定の区域における何らかの変化を検出する場合には、その問題の区域が変化したことを示すため、デルタフラグがセットされる。変化を検出するとき、画像管理モジュール216は、UIレンダリングされたデータのネイティブフォーマットを圧縮及びクライアント装置への送信のためにより適したビデオフレームフォーマットへと変換する作用をする(例えば、カラースペース変換、データフォーマット変換等)。画像管理モジュール216は、その画像を再フォーマット化されたビデオフレームに対してリサイズするように作用する。図2の実施形態では、適用できるクライアント装置の複数のパラメータが1つ以上のフィードバックパラメータ125に含まれており、画像管理モジュール216がクライアントデバイスパラメータに基づいて再フォーマット化及びリサイズを行うことができるようにしている(適切なパラメータが画像管理モジュール216へ通信される)。
[0049]画像管理モジュール216は、デルタフラグがセットされているかを周期的にチェックする(そのサンプル間隔に基づいて)。もし、チェック中にデルタフラグがセットされている検出される場合には、メモリ218における再フォーマット化/リサイズされたビデオフレームが、クライアント装置へ送信するためビデオエンコーダーモジュール124によりエンコードされる。
[0050]コマンド処理モジュール126のクライアントインタープリタサブモジュール228は、クライアント装置400から受け取られたデータを解釈し、ビデオエンコーダーモジュール124、オーディオエンコーダーモジュール120及びアプリケーション112に関して使用するためこのデータ(例えば、ユーザーコマンド等)を翻訳する作用をする。クライアントインタープリタサブモジュール228は、エンコーディングに使用するためフィードバックパラメータ125をビデオエンコーダーモジュール124及びオーディオエンコーダー120へと通すように作用する。
[0051]コマンド処理モジュール126のクライアントインタープリタサブモジュール228は、プラグイン114及びそのクライアントインプリメンタサブモジュール208に関して使用するためクライアント受信データを翻訳する作用をする。ユーザー入力を通信し返すのに、クライアント装置は、クライアント装置のスクリーンに対する座標(カーソル等の)をコマンド処理126へ通す。クライアントインタープリタサブモジュール228は、アプリケーションUI及びクライアント装置のビューポイントに関する対応する位置を決定するように作用する。それから、クライアントインタープリタサブモジュール228は、そのクライアントインプリメンタサブモジュール208による使用のためその翻訳された座標をプラグイン114へ通信する。クライアントインプリメンタサブモジュール208は、通常のユーザー入力からアプリケーション112に適当なフォーマットへと翻訳し、それから、その翻訳された入力をアプリケーション112へと直接に投入するように作用する。
[0052]整列モジュール224は、ビデオエンコーダーモジュール124によりエンコードされたビデオフレームとオーディオエンコーダーモジュール120によりエンコードされたオーディオとを相関させてクロススタンプし、アプリケーション112のUIに関連したビデオフレーム及びオーディオストリームがクライアント装置400において容易に整合されるようにする。画像管理モジュール216は、又、全ての画像にタイムスタンプ
するように動作し、オーディオデータ生成器116からオーディオを取り込む動作は、又、オーディオストリームにタイムスタンプするように動作し、これは共に、当業者には理解されるように、整列モジュール224による下流整列のためである。別の実施形態では、オーディオ及びビデオフレームの全ての整列/マッチングは、クライアント装置にて行うことができる。
[0053]当業者であれば、図2の例示は、単なる実施例であり、本発明は、多くの他の仕方にて実施できることは理解されよう。
[0054]図3は、一実施形態によるサーバー、オーディオサーバー及びクライアントを含む、本発明のアーキテクチャーオーバービューのある幾つかの態様を例示する機能ブロック図300である。この実施形態では、オーディオは、専用オーディオサーバー304からクライアントへ送られる。機能ブロック図300は、サーバー302、オーディオサーバー304及びクライアント306を含み、クライアント306は、ネットワーク310を介して(接続312及び316を介して)サーバー302及びオーディオサーバー304に機能的にリンクされる。サーバー302は、接続308を介してオーディオサーバー304に機能的にリンクされる。サーバー302は、アプリケーション318、プラグイン322、オーディオデータ生成器320、ビデオエンコーダーモジュール324(フィードバックパラメータ325を含む)、コマンド処理モジュール326、オーディオインターセプタモジュール330、PID(処理識別子)マネージャモジュール332及びタイムスタンプマネージャモジュール334を含む。
[0055]ビデオエンコーダーモジュール324は、図2にて説明したように動作し、ビデオエンコーダーモジュール124と類似である(及びフィードバックパラメータ125に関してフィードバックパラメータ325についても同様である)。ビデオエンコーダーモジュール324は、アプリケーションUIキャプチャ328をエンコードし、エンコードされたビデオフレームをクライアント306への送信のため通信する。アプリケーションUIキャプチャを得る処理において、その結果生ずるUIキャプチャは、タイムスタンプされる。タイムスタンプマネージャモジュール334は、UIキャプチャのタイムスタンプを行う。コマンド処理モジュール326は、図2において説明されたように動作し、コマンド処理モジュール126と類似である。
[0056]1つの実行アプリケーションがサーバー302に関して例示されているが、アプリケーション318は、サーバー302にて実行される複数のアプリケーションの代表的インスタンスとして例示されており、それら複数のアプリケーションの各々は、それ自身のビデオエンコーダー及びコマンド処理モジュールを有しており、それ自身の別々のクライアントに関連付けられている。オーディオデータ生成器320は、アプリケーション318のためのオーディオストリーム(図示せず)をレンダリングする。オーディオインターセプタモジュール330は、オーディオサーバー304へリダイレクトするためこのオーディオストリームをインターセプト又はトラップし、そのオーディオストリームにタイプスタンプすることができる。タイムスタンプマネージャモジュール334は、オーディオストリームのタイムスタンプを行うことができる。オーディオインターセプタモジュール330は、カスタマイズされたDLL(ダイナミックリンクライブラリ)を使用して、オーディオストリームのこのようなリダイレクションを行うことができる。PIDマネージャモジュール332は、サーバー302にて実行される複数のアプリケーションの異なる処理IDを検出して管理する作用をする。PIDマネージャモジュール332は、オーディオサーバーへリダイレクトされる各オーディオストリームにその関連するアプリケーションの処理IDをスタンプすることができる。
[0057]オーディオサーバー304は、オーディオストリーム処理モジュール336及びPID認証モジュール338を含む。オーディオストリーム処理モジュール336は、サーバー302にて実行されるアプリケーションから受け取られたオーディオストリームをエンコードし、希望の任意の変換(サンプルレート、ビット深さ、チャネルカウント、バッファサイズ等の変換)を行うように作用する。図3の実施形態では、各オーディオストリームをその宛先クライアント装置へと向けるのに、そのユーザーデータグラムプロトコルポートが使用され(図示せず)、他の実施形態では、他のプロトコルを使用することができる。オーディオストリーム処理モジュール336は、各オーディオストリームを、そのオーディオストリームの対応するクライアント装置(即ち、そのオーディオストリームに対応するビデオフレームを表示するクライアント装置)に関連したポートへと向ける。オーディオストリーム処理モジュール336は、PID認証モジュール338と関連して動作して、サーバー302から流れる複数のオーディオストリームを確証して適当なポートへと向けるようにする。
[0058]クライアント306は、ビデオデコーダーモジュール340、オーディオデコーダーモジュール342、コマンド処理モジュール344及びオーディオ/ビデオ同期モジュール346を含む。クライアント306がサーバー302からの適用できるオーディオ及びビデオストリーム(即ち、クライアント306に対して例示されたアプリケーションのオーディオ及びビデオストリーム)を受け取りデコードした後、オーディオ/ビデオ同期モジュール346は、両方のストリームのタイムスタンプを相関させ、オーディオデコーダーモジュール342及びビデオデコーダーモジュール340と関連して作動して、それぞれスピーカー348及びビューイングアプリケーション350への出力を同期化する。
[0059]当業者であれば、図3の例示は、単なる実施例であり、本発明は、多くの他の仕方にて実施できることが認識されよう。
[0060]図4は、一実施形態によるクライアントに関する本発明のある幾つかの態様を例示するブロック図である。クライアント400は、ビデオデコーダーモジュール144、オーディオデコーダーモジュール142、オーディオ/ビデオ同期モジュール406、コマンド処理モジュール146、スピーカー150、ビューイングアプリケーション148、及び接続410、412及び414を含む。
[0061]ビデオデコーダーモジュール144は、接続412を介してエンコードされたビデオフレームを受け取り、一方、オーディオデコーダーモジュール142は、接続414を介してエンコードされたオーディオストリームを受け取る。オーディオ/ビデオ同期モジュール406は、それぞれスピーカー150及びビューイングアプリケーション148を介して同期出力するため、オーディオストリーム及びビデオフレームのタイムスタンプ又は他のタイプの識別子のマッチングを行うように作用する。オーディオデコーダーモジュール142、ビデオデコーダーモジュール144及びビューイングアプリケーション148は、全て、ビデオエンコーディング、オーディオエンコーディング等のサンプルレート及び/又は圧縮を変えることを含めて、コマンド処理モジュール146へのフィードバックを行い、サーバー側アプリケーションへフィードバックパラメータを通信し返すように作用することができる(図4には例示せず)。
[0062]コマンド処理モジュール146は、あるセッションの開始時又はあるセッション中にビデオ及び/又はオーディオエンコーディングに使用するためクライアント400のフィードバックパラメータを通すように作用する。このようなフィードバックパラメータとしては、次のパラメータ、即ち、ディスプレイ解像度、スクリーンサイズ、プロセッサ識別又は能力、メモリ能力/パラメータ、スピーカー能力等のうちの1つ以上のものを含むことができる。
[0063]ビューイングアプリケーション148は、サーバー側アプリケーションのUIの部分の連続するビデオフレームを表示する。ビューイングアプリケーション148は、サーバーへ送信し返すため、ユーザーコマンドを含むユーザー入力コントロールのコマンド処理モジュール146への通信を行うように作用する。サーバーへ返されるクライアントユーザー入力コントロールとしては、例えば、キーボード(種々な形式におけるスクリーンベースの又は物理的キーボード)、スクロールホイール、ナンバーパッド、スタイラスベースの入力、タッチスクリーン又はタッチパッド等からの入力を含むことができる。ビューイングアプリケーション148は、テキストエントリーのためローカルテキストボックスを開けるが如き送出のため特定のユーザー入力を集約する作用をする。
[0064]当業者であれば、図4の例示は、単なる実施例であり、本発明は、多くの他の仕方にて実施することができるものであることは認識されよう。
[0065]図5は、一実施形態によるマルチユーザーソフトウエアアーキテクチャーのある幾つかの態様を例示する図500である。ユーザーマネージャモジュール502は、ワーカースレッド504、ワーカースレッド506及び広範囲に亘る数の付加的なワーカースレッド(省略符号508によって表される)を含み、「ワーカースレッドn」は、ワーカースレッド510により表されている。ワーカースレッド510は、任意の所定のポイントでシステムにて実行されることのあるワーカースレッドの全数を表している。各ワーカースレッドは、アクティブユーザーのリストに対応しており、アクティブユーザーのリストは、種々な数のアクティブユーザーを含むことがあり得る。図5に例示されるように、ワーカースレッド504は、スレッドサイクル512に対応し、ワーカースレッド506は、スレッドサイクル514に対応し、省略符号508により表された可変数のワーカースレッドは、省略符号518により表された同じ可変数のスレッドサイクルに対応し、ワーカースレッド510は、スレッドサイクル516に対応している。図5に例示されるように、ワーカースレッド504は、ユーザー1(520)、ユーザー2(522)、ユーザー3(524)及びユーザー4(526)を通して循環し、ワーカースレッド506は、ユーザー5(528)、ユーザー6(530)及びユーザー7(532)を通して循環し、ワーカースレッド516は、ユーザー8(534)、ユーザー9(536)、ユーザー10(538)、ユーザー11(540)及びユーザー12(542)を通して循環する。図5に例示したワーカースレッドによって支援されるユーザーの数は、任意の時点でのスナップショットを表しているものであり、任意の所定のスレッドにより支援されるユーザーの数は、動的に変化するものである。
[0066]ユーザーマネージャモジュール502は、システムに加えられた更に別のユーザーを管理するため付加的なワーカースレッドをインスタンス化する前に有限数のワーカースレッドをインスタンス化するように設定することができる。図5に例示した全アーキテクチャーにおけるワーカースレッドの数は、種々な実施形態により変化するものである。ワーカースレッド当たりに割当てられるアクティブユーザーの数に関するパラメータも、種々な実施形態により変化するものである。
[0067]ユーザーマネージャモジュール502は、アプリケーションの複数のインスタンス(図1に例示されるように)が実行されるようなサーバー(図1に例示されるように)に対して作動する。従って、ユーザーマネージャモジュール502は、複数のアプリケーションインスタンスの環境において複数のユーザーを管理するように作用する。図1の全システムに対して新しいユーザーが導入されるとき、その新しいユーザーは、特定のクライアントと特定のサーバー側アプリケーションとの間のインターラクションを行うためワーカースレッド(504−510)に割り当てられる。
[0068]図5に例示した実施形態は、複数のユーザーが単一のスレッドに割り当てられているところを例示しているのであるが、他の実施形態では、単一のユーザーをそれ自身の単一のスレッドに割り当てることができる。他の実施形態では、全システムの現在のローディング/使用、本発明の実施形態をオペレーティングする各サービスのプロバイダーのユーザサービスポリシー等の如き1つ以上のファクタに依存して、ユーザーを共有スレッド又は専用スレッドへと割り当てることができる。
[0069]ユーザーマネージャモジュール502は、各ワーカースレッドがアクティブユーザーのそれらの各リストを通して循環して各ユーザーのための1つのアクティブイベントを処理するとき、多くの仕方にて複数のユーザーのロードバランシングを行う。処理されるアクティブイベントとしては、(a)クライアントへの1つのビデオフレーム更新の送出又は(b)クライアントのビューイングアプリケーション及びサーバー側アプリケーション/UIに関する状態情報の更新がある。ユーザー1が図1のサーバーアプリケーション1(102)に関連付けられるような場合について例示すると、ワーカースレッド512は、前述の(a)及び(b)を行うため、ユーザー1(520)からユーザー4(526)の各ビデオエンコーダー/コマンド処理モジュールの間でタイムスライスを行い、この状態では、ビデオエンコーダーモジュール124及びコマンド処理モジュール126は、ユーザー1(520)のビデオエンコーダー/コマンド処理モジュールを含む。オーディオデータが送られるべき時には、クライアントへそのエンコードされたオーディオストリームを連続して送るため、別のスレッド(図示せず)がオーディオエンコーダーモジュール120に機能的に結合される。
[0070]このように作動することにより、どの単一ユーザーも、処理集中セッション(例えば、高解像度、高フレームレートビデオに対して)の結果として、別のユーザーが同じスレッドによるサービスを受けるような事態を被ることはなくなる。これについては、図7に関して以下に更に説明する。他の実施形態では、ユーザー当たり2以上のアクティブイベントを処理することができる。他の実施形態では、適用できるユーザーに対する下位アプリケーションアクティビティのレベル、本発明の実施形態をオペレーティングする各サービスのプロバイダーのユーザーのサービスポリシー等を含む広範囲に亘るファクタに基づいて、ユーザー当たり可変数のアクティブイベントを処理することができる。
[0071]ユーザーマネージャモジュール502は、処理集中ユーザー及び処理軽量ユーザーの間のロードバランシングを行うため、異なるワーカースレッドの間で特定のユーザーを移すことができる。例えば、もし、1つのワーカースレッドによってサービスを受ける複数のユーザーが高フレームレートビデオのサービスを受ける必要がある場合には、ユーザーマネージャモジュール502は、そのような1つ以上のユーザーを、処理軽量ユーザーのみにサービスしている別のスレッド又は処理軽量ユーザーに主としてサービスしている別のスレッドへと移すことができる。別のスレッドをこの目的のためインスタンス化することもできる。当業者であれば分かるように、ユーザーは、オブジェクトとして取り扱うことができ、オブジェクトがスレッドの間で転送される時に、別のスレッドへと移すことができる。このようなオブジェクト移動のタイミングは、ユーザーの知覚認識の混乱を最小とするため、クライアント装置のビューイングアプリケーションによるビデオフレームの表示の特定の継ぎ目とすることができる。
[0072]当業者であれば、図5の例示は、単なる例示であり、本発明は、多くの他の仕方にて実施できることが認識できよう。
[0073]図6は、一実施形態による連続するビデオフレームを取り込むためのある幾つかの態様を例示するフローチャート600である。アプリケーションへのプラグインにより又はアプリケーション自体により、最初に、オペレーション602(メモリへのアプリケーションUIのレンダリング)が行われる。オペレーション602は、アプリケーションのUIを、そのUIがスクリーンに現れるときに、取り込み、そのキャプチャをメモリバッファ(図2の218)にセーブするように作動する。そのUIをスクリーンに実際に表示する必要はないが、使用することがある。それから、オペレーション604(前のアプリケーションUIキャプチャからのデルタ変化があるか?)は、何らかの変化が生じているかを決定するため、そのアプリケーションUIの直前のキャプチャを現在のキャプチャと比較するように作動する。このようなデルタ変化チェッキングオペレーションは、例えば、現在のUIキャプチャのピクセルブロックをハッシングすること及びそれらハッシュ値を前のUIキャプチャから生成されたアナログピクセルハッシュテーブルと比較することを含む広範囲の多数の仕方にて行うことができる。この時、それらハッシュ値は、例えば、連続するビデオフレームのブロックのマッチング、基準フレームに対するブロックのマッチング等、使用される任意の圧縮方法において可能性のある使用のためにも利用することができる。別の仕方として、例えば、そのアプリケーションにより、オペレーション602の前にある変化が起きる時を、サーバーに通知することができる。
[0074]もし、オペレーション604により、デルタ変化がないと決定される場合には、オペレーション602が繰り返し行われる前に、オペレーション606(遅延)がタイマー(図示せず)により実施される。もし、オペレーション604により、デルタ変化があると決定される場合には、オペレーション608(適当なフォーマットへの変換)が行われる。オペレーション608は、そのUIレンダリングされたデータのネイティブフォーマットを、クライアント装置に表示するためネットワークを通しての送信及び圧縮により適した別のフォーマットへと変換するように作動する(例えば、カラースペース変換、データフォーマット変換等)。
[0075]それから、オペレーション610(リサイズ)が行われる。オペレーション610は、そのUIレンダリングされたデータに固有のネイティブスクリーンサイズを、クライアント装置(セルラーホン、ハンドヘルドコンピュータ等)に表示するのにより適した別のサイズへとリサイズするように作動する。オペレーション610は、サーバー側アプリケーションへ通信されるクライアント装置の1つ以上のフィードバックパラメータ(図示せず)及びその添付ビデオエンコーダインスタンス化を利用することができる。それから、オペレーション612(エンコーダーのためメモリに記憶)が続いて行われ、その変換されたビデオフレームがビデオエンコーダーによる使用のために記憶させられる。それから、オペレーション614(必要とされるビデオ更新のフラグ)が続いて行われ、ビデオ更新が必要とされるかを決定するオペレーション(図7のオペレーション712(ビデオ更新が必要とされるか?)参照)による使用のための指示がセットされる。それから、オペレーション616(遅延)が続いて行われ、これは、オペレーション602が繰り返し行われる前に、タイマー(図示せず)により実施することができる。
[0076]当業者であれば、図6の例示は、単なる実施例であり、本発明は、他の多くの仕方にて実施することができるものであることは認識できよう。
[0077]図7は、一実施形態による連続するビデオフレームを送るためのある幾つかの支援態様を例示するフローチャート700である。ユーザーNの更新、702は、ステップのシーケンスの開始を表しており、これらステップのシーケンスは、アクティブユーザーの適用できるワーカースレッドのリストにおける各ユーザーに対して図5のワーカースレッドにより行われるステップを表している。ワーカースレッドは、最初に、オペレーション704(チャネルのリードバック)を行う。それから、オペレーション706(ユーザーについて処理すべきデータがあるか?)が続いて行われ、ここでは、ユーザーNに対して適切なものが処理する必要のあるネットワークから来ているかの決定がなされる。ユーザーNに適切なデータが検出されることに応答して、オペレーション708(ネットワークイベントの処理)が続いて行われる。ユーザーNに適切な入来データとしては、例えば、サーバー側アプリケーションUIの特定の部分に対するズームインの試みの如き、クライアント装置へのユーザー入力に関する情報がある(クライアント装置にて実行されるビューイングアプリケーションにて表示されるサーバー側アプリケーションUIのビデオフレームにより示されるような)。オペレーション708は、そのような処理される情報をその次の宛先へと通信することを含むことができ、例えば、もし、ズームコマンドがクライアントから送られる場合には、そのズームコマンドは、そのワーカースレッドがその次の適用できるオペレーションへと進む前に、適当に処理されてサーバー側アプリケーションへと送られる。
[0078]オペレーション708(ネットワークイベントの処理)の後、又は、オペレーション706(ユーザーに対する処理すべきデータはあるか?)による否定的決定の後、オペレーション710(更新が必要とされるか?)が行われる。オペレーション710は、適用できるユーザーに対する最後のビデオフレームが送られた時に、又は、より特定すると、オペレーション712(ビデオ更新が必要とされるか?)が最後に行われた時にセットされているカウンター(図示せず)に依存する。もし、そのカウンターが終点にまだ達していない場合には、それらオペレーションを行うワーカースレッドは、オペレーション718(Nのインクリメント)に進み、次の適用できるユーザーに対する図7に例示したステップのシーケンスを開始させる。カウンターは、サーバーからクライアントへ通信される連続するビデオフレームに対するフレームレート、より特定すると、許容フレームレートを制御する。これについて、オペレーション712(ビデオ更新が必要とされるか?)に関して更に後述する。例えば、秒当たり10回の許容フレームレートの場合には、カウンターは、100ミリ秒まで(例えば、100ミリ秒から零まで、又はその逆)カウントするように設定される。
[0079]オペレーション710(更新が必要とされるか?)が肯定的に決定される場合には、オペレーション712(ビデオ更新が必要とされるか?)が行われる。オペレーション712は、図6に関して説明したように、「ビデオ更新が必要とされるか?」のフラグをチェックすること、又はあるそのような同様のオペレーションを含むことができる。オペレーション712は、クライアントのビューイングアプリケーションにおいてクライアントにより表示されるサーバー側アプリケーションの部分に何か変化があるかを決定するように作動する。もし、オペレーション712が肯定的に決定される場合には、オペレーション714(必要とされるビデオ情報を取得する)が行われる。オペレーション714は、アプリケーションUIの最後に送信されたビデオフレームからそのアプリケーションUIのビデオフレームを更新するのに必要とされるビデオフレーム情報を得るように作動し、このオペレーションは、ビデオフレーム/圧縮標準、カスタマイズされた方法、及びそれらの組み合わせたものを含む広範囲に亘るビデオフレーム/圧縮技法を利用することができる。
[0080]オペレーション714(必要とされるビデオ情報を取得する)が行われた時、オペレーション716(ネットワークイベントを送る)が行われる。オペレーション716は、クライアントへ、1つのビデオフレーム更新、又は、クライアントのビューイングアプリケーション及びサーバー側アプリケーション/UIに関する更新状態情報を送るように作動する。オペレーション716は、ユーザーNのための適用できるデータを、これを行うためのユーザーNのネットワーク接続のためのキューに入れることができる。
[0081]もし、オペレーション712が否定的に決定されており、クライアントのビューイングアプリケーション及びサーバー側アプリケーション/UIに関する更新状態情報がある場合には、オペレーション716(ネットワークイベントを送る)がさらに行われる。
[0082]ユーザー当たり1つのビデオフレーム更新(又は状態情報更新)のみを送信することにより、複数のユーザーにサービスしているワーカースレッドは、1つのユーザーがワーカースレッドの時間を相当に消費してしまって他の特定のユーザーに障害を与えるようなことなく、そのアクティブユーザーリストにおけるユーザーの全てを通して循環してサービスを与えるようにすることができる。その支援されるユーザーの全てに亘るワーカースレッドのロードが増大するにつれて、そのワーカースレッドのアクティブユーザーの全てに対するサービス時間は、次第に増大する。従って、ロードバランシングがこのようにして本来的に埋め込まれている。付加的なロードバランシングについては、図5に関して説明される。
[0083]当業者であれば、図7の例示は単なる実施例であり、本発明は、他の多くの仕方にて実施できることが認識されよう。
[0084]図8は、一実施形態によるクライアントサーバー交換800のある幾つかの態様を例示する図である。クライアントサーバー交換800は、サーバー802とクライアント装置804との間のセッション交換を示している。ここに説明するように、サーバー802は、任意のサーバー側マシンであることができ、図8に記述されるようなオペレーションを行うように関連して動作するような、1つのファシリティーに配置されるか又は地理的に分散されるかする多数のサーバーを含むことができる。これらのサーバーは、認証サーバー、データベースサーバー等を含むことができる。
[0085]クライアント装置804は、ユーザーがクライアント装置804にてビューイングアプリケーションを起動させるオペレーション806でクライアントサーバー交換800を開始させる。(用語「クライアント装置」は、図8に関してのみ使用される。何故ならば、クライアント装置のパラメータについて本明細書を通じて説明されており、用語「クライアント」は、入れ換え可能なようにも使用できるからである。)それから、そのビューイングアプリケーションは、オペレーション808によりネットワーク接続を介してサーバー802への接続を開くようにする。オペレーション808は、当業者には理解されるように、1つ以上の標準インターネットプロトコル又はそれらの変形を使用する。オペレーション808は、このセッションにおけるユーザー802による使用のため、ユーザーのアイデンティティ(例えば、電話番号、キャリアアカウント等による)及びクライアント装置(804)のディスプレイ解像度及びサイズをサーバー802へ通すように作動する。それから、サーバー802は、オペレーション810を行い、このオペレーション810は、サーバーアプリケーションインスタンスを起動させて用意し、このサーバーアプリケーションは、ユーザーの初期設定に基づいてカスタマイズされる。この実施形態では、ユーザーの初期設定は、それらがユーザーのアイデンティティと関連付けられているようなデータベース(図示せず)からフェッチされる。オペレーション810につき、そのサーバーアプリケーションは、仮想フレームバッファにおいてレンダリングされる。別の実施形態では、サーバーアプリケーションは、スクリーンへレンダリングされる。
[0086]それから、オペレーション812が続いて行われ、このオペレーションでは、オーディオ/ビデオエンコーダーモジュール及び付属コマンド処理モジュールが起動され、クライアント装置804に対するカスタマイズされたエンコーディングのため、クライアント装置(804)のディスプレイ解像度及びサイズが供給される。コマンド処理及びエンコーダーモジュールには、又、ユーザーのアイデンティティに関連したサービスのレベルが供給され、特定のユーザーには、このシステムを使用する他のユーザーに対する優先レベルが供給される。その後、オペレーション814において示されるように、ビデオエンコーダーは、サーバーアプリケーションのUIのビデオフレームを変換しエンコードすることができる(例えば、そのサーバーアプリケーションによりレンダリングされたビデオフレームを、そのサーバーアプリケーションのネイティブレンダリング解像度からQVGA解像度へと変換すること。何故ならば、クライアント装置804は、QVGA解像度を支援しているからである。)。このビデオエンコーダーモジュールは、又、クライアント装置(804)のスクリーンサイズ内に適当にはまり込み又はそれと適当に協働するようにするため、サーバーアプリケーションのネイティブUIサイズレンダリングをリサイズする。オーディオエンコーダーモジュールは、クライアント装置804のスピーカー能力に基づいてサーバーアプリケーションのオーディオストリーム出力をエンコードする(例えば、もし、クライアント装置がセルラーホンであることが知られている場合には、オーディオは、エンコードされた品質がその特定の電話のスピーカー能力又はセルラーホンに対して使用されるデフォルトレベルを越えないようにエンコードされる。)。矢印816は、クライアント装置804へのエンコードされたオーディオ及びビデオの通信を例示している。
[0087]オペレーション818がその後に続いて行われ、このオペレーションでは、ビューイングアプリケーションのデコーダーモジュール(オーディオ及びビデオ)が受信したオーディオ及びビデオフレームをデコードする。オペレーション820により示されるように、ビデオフレームは、クライアントのビューイングアプリケーションにて表示され、オーディオは、クライアント装置(804)のスピーカーへと出力される(オーディオが存在しクライアント804がミュートにない場合)。
[0088]オペレーション822がその後に続いて行われ、このオペレーションでは、クライアント側のオペレーション824でも表されているように、サーバー802とクライアント装置804との間の一連の発信インターラクション(矢印826及び828により表されている)を示している。オペレーション822は、UI又はオーディオ出力が変化する時のみ、サーバーアプリケーションが情報をエンコーダーモジュールへ送り、エンコーダーが、クライアント装置804へ送信するためこの情報をエンコードすることを示している。従って、もし、サーバーアプリケーションのUI又はオーディオに関して何も変化がない場合には、オーディオ/ビデオ情報はエンコードされず、クライアント装置804へ送られない。こうして、サーバー(802)のビデオエンコーダーは、UIの変化に基づき、非同期的にビデオフレームを通信する。ビデオは、UI変化を表示するためのビデオフレームとして送られるのであり、ビデオフレームフォーマットの外のコマンドとして送られるのではない。
[0089]オペレーション824は、仮想アプリケーションとのユーザー対話を示しており、ユーザーの入力は、パラメータへと変換され、サーバーアプリケーションへと戻されるように示されている。オペレーション822は、更に、サーバー側コマンド処理モジュールが、サーバーアプリケーションUIにて動作するようにユーザー入力パラメータを翻訳し、サーバーアプリケーションUIがそれに応じて変化することを示している。オペレーション824は、更に、仮想アプリケーションへのユーザー入力から生じたエンコードされたオーディオ及びビデオが受信され、デコードされ、ビューイングアプリケーションにて表示されることを示して、この循環シーケンスを完了する。
[0090]当業者であれば、図8の例示は、単なる実施例であり、本発明は、多くの他の仕方にて実施することができるものであることは認識されよう。
[0091]図9は、一実施形態によるクライアント−サーバー交換900のある幾つかの態様を例示する図である。クライアント−サーバー交換900は、サーバー903とクライアント904との間のセッション交換を示しており、エンコーダー/コマンド処理モジュール902とアプリケーション906(共にサーバー903にて実行される)との間の付属する交換もまた示している。アプリケーション906は、この実施形態ではウエブブラウジングアプリケーションを含む。エンコーダー/コマンド処理モジュール902は、オーディオ及びビデオエンコーダーモジュール、及びコマンド処理モジュールを含む。当業者には理解されるように、エンコーダー/コマンド処理モジュール902との交換とは、特定すると、これらモジュールのうちの1つとの交換を含むものである。別の実施形態では、エンコーダー/コマンド処理モジュール902として同様に置かれた機能要素は、ビデオエンコーダーモジュール及びコマンド処理モジュールを含むことができるが、オーディオエンコーダーモジュールは含まない。ここに説明するように、サーバー903は、任意のサーバー側マシンを指しており、図9に記述しているオペレーションを行うように動作するような、1つのファシリティーに配設され又は地理的に分散された多数のサーバーを含むことができる。これらのサーバーは、認証サーバー、データベースサーバー等を含むことができる。
[0092]クライアント904は、接続を開くオペレーション908でクライアントサーバー交換900を開始させる。サーバー903は、接続確認のオペレーション910で応答する。それから、クライアント904は、オペレーション912を通して、スクリーンサイズ及び他の装置パラメータを含めて、その能力をエンコーダー/コマンド処理モジュール902へ送る。それら装置パラメータは、デバイスプロセッサ、メモリ、スクリーン特性等を含む広範囲に亘る種々なデバイスパラメータを含むことができる。それから、クライアント904は、URLを、オペレーション914を通して送り、これは、セーブされたURL(例えば、ホームページ)又はクライアント904のユーザーにより入力されたURLを含むことができる。それから、エンコーダー/コマンド処理モジュール902は、そのURLを、オペレーション916を通してアプリケーション906へ通信し、それから、アプリケーション906は、オペレーション918により、そのURLをロードする。アプリケーション906は、又、そのURLに関連したウエブページの幅(w)及び高さ(h)を、オペレーション920によりエンコーダー/コマンド処理モジュール902へと通す。それから、エンコーダー/コマンド処理モジュール902は、オペレーション922により、ウエブページサイズ並びにクライアントのビューポートを特徴付けるパラメータ、例えば、コーナー座標(x、y)及び関連ズームファクタ(z)を含むクライアントスクリーンで見られるビューポートを、クライアント904へ通信する。
[0093]それから、当業者に知られた多くの技法に従って、オペレーション924を通して、ウエブページビューポート(ビューポートが関連するブラウザUIの部分)のスクリーンキャプチャが行われる。それから、ビューポートを通して見ることのできるウエブページのビデオフレームが、オペレーション926によりクライアント904へ通信される。それから、可変サンプル間隔928の後、その後のスクリーンキャプチャ930が行われ、その関連するビデオフレームは、オペレーション932を通して通信される。可変要素を示すのに普通に使用される矢印記号929は、この新規な特徴を示すため可変サンプル間隔928に交差するようにして例示されている。
[0094]非同期フィードバックチャネルにより、オペレーション934を通してフィードバックが行われる。このフィードバックは、クライアントデバイスパラメータ、ユーザー入力パラメータ及び/又はサーバー903とクライアント904との間でやり取りされるパケットの測定値に基づいた帯域幅パラメータの如き推定帯域幅パラメータを含む1つ以上のフィードバックパラメータに基づいて、サンプル間隔928を変えるのに使用される。RTCPプロトコル又はそのような同様のプロトコル(標準化された又はカスタマイズされた)が、オペレーション936により例示されているように、このようなフィードバックを与えることに関して使用される。省略符号938及びサイクル940は、ビデオフレームをクライアント904へ送るサーバー903とのインターラクションの反復性を例示している。
[0095]サンプル間隔928は、見られる下位ウエブページの変化レートに基づいて少なくとも部分的に変えることもできる。例えば、もし、クライアント904により見られる下位ウエブページにおいて少しの変化しか検出されないか、又は全く変化が検出されない場合には、フレームサンプル間隔は上向きに調整される。同様に、非常にダイナミックなウエブページ又はウエブページ内のコンテンツの場合には、フレームサンプル間隔は下向きに調整される。
[0096]クライアント904のユーザーは、オペレーション942にて示されるように、ウエブページの別の部分を見るため、ウエブページが見られるビューポートを移動することができ、この場合において、x′及びy′は、そのビューポートの新しいパラメータを含む。それから、その新しいビューポートに整合するウエブページの新しい部分が、オペレーション944を通して取り込まれ、その新しいビューポートのビデオフレームが、オペレーション946を通してクライアント904へ通信される。
[0097]クライアント904のユーザーは、オペレーション948において示されるように、そのビューポートを再び移動することができ、この場合において、x″及びy″は、そのビューポートの新しいパラメータを含む。この時、その新しいビューポートは、そのサーバーブラウザウインドウに表示されるところを越えて延在してしまい、従って、ブラウザ自体、オペレーション950にて示されるように、ウエブページの希望の部分を取り込むためスクロールしなければならない。オペレーション952を通して示されるように、適当にスクロールした後、その新しいビューポートのスクリーンキャプチャが得られ、その結果のビデオフレームがオペレーション956を通して通信される。
[0098]クライアント904のユーザーは、オペレーション958を通して示されるように、マウス又はマウス均等物(例えば、タッチスクリーン上のフィンガータップ等、多方向ボタン、トラックポイント、カーソル移動スタイラス等)を使用することもでき、ここでは、マウスダウン運動がなされ、そのマウスの新しい座標が(a,b)として通される。クライアント904は、このようなオペレーションにおいて、クライアント装置のスクリーンに対する座標を、エンコーダー/コマンド処理モジュール902へと戻し、エンコーダー/コマンド処理モジュール902は、ビューポート及び下位ウエブページに対する対応する位置を決定する。図9に記述されている実施形態では、サーバー903は、下位ウインドウズOSを実行して、適当な位置情報を有するマウスメッセージがブラウザ906に関連したウインドウへと入れられるようにする(レンダリングのために使用される実際のスクリーンがあてもなくても)。これは、オペレーション960を通して例示されており、スクリーンカーソルは、その結果として、アプリケーション906を移動させ、前述したように、ビデオフレームにてクライアント904へと通信し返される。他のオペレーティングシステムに関連して使用される他の実施形態では、当業者により理解されるように、利用できる場合にはそのような同様の機能を使用することができ、又は、ある幾つかの類似の他のそのような技法を使用することができる。
[0099]オペレーション962、964、966及び968は、類似の仕方にて動作する同様のマウス駆動イベントを示している。他の入力駆動コントロールイベント(キーパッドエントリの如き)も同じ仕方にて動作することができる。970、972、974、976にて示した種々なタイプのオペレーションについて前述しており、省略符号980及びサイクル982は、クライアント904とサーバー903との間のセッションが続く限り、インターラクションを発信するところを例示している。
[0100]当業者であれば、図9の例示は単なる実施例であり、本発明は、その他の多くの仕方にて実施することのできるものであることは認識されよう。
[0101]図10は、一実施形態によるリモートインターラクションのためのクライアント−サーバーアーキテクチャーに関連して使用するに適した典型的なコンピュータシステムを例示している。図示されるように、コンピュータシステム1000は、サーバーとして動作するコンピュータ又はクライアントとして動作するコンピュータを表すことができ、図10に例示した一般的構成部分は、当業者により理解されるように、各個々の表現でもって変えることのできるものである。コンピュータシステム1000は、1つ以上のプロセッサ1002を含むことができ、又、システムメモリ1004を含むことができる。更に又、コンピュータシステム1000は、1つ以上のデバイスの形の記憶装置1006(ハードドライブ、光又は別のタイプのディスク、フラッシュメモリを含む電子メモリ等の如き)、入力/出力装置1008(キーボード(種々な形式のスクリーンベースの又は物理的なもの)、スクロールホイール、ナンバーパッド、スタイラスベースの入力、タッチスクリーン又はタッチパッド等)として)、及び通信インターフェース1010(LAN、WAN、ワイヤード又はワイヤレスネットワーク等に接続するための)を含むことができる。これらの要素は、1つ以上のバスで表されるシステムバス1012を介して互いに結合される。システムバス1012が複数のバスを表す場合には、それら複数のバスは、1つ以上のバスブリッジ(図示せず)によりブリッジされる。ある幾つかの実施形態においてクライアント装置を表す時には、プロセッサ1002は、コントローラを含むことができ、システムメモリ1004及び記憶装置1006は、1つの密着形態メモリ構成部分を含むことができる。
[0102]これらの要素の各々は、当業分野にて知られているそれらの通常の機能を果たす。種々な実施形態では、コンピューティングシステム1000は、少なくとも部分的により大きなコンピューティングシステムへと組み入れることができる。システムメモリ1004及び記憶装置1006は、本発明の1つ以上の前述した実施形態の種々な態様を実施するプログラミング命令のワーキングコピー又は永久コピーを記憶するのに使用される。前述したどのソフトウエア部分も、別々のソフトウエアモジュールを含む必要はない。前述したどのソフトウエア構成も、単なる実施例であり、本発明の種々な実施形態の範囲内でその他の構成を考えることができるものである。用語「エンジン」は、ここでは、関連する機能又は諸機能を果たす任意のソフトウエア又はハードウエア構成、又はそれらの組合せを示すのに使用されている。
[0103]本発明のある幾つかの実施形態に関して、モジュールは、種々な機能を実施するものとして説明される。代替実施形態では、それらモジュールの部分又は全ては、ハードウエアにて実施することができ、例えば、代わりに1つ以上のアプリケーション特定用途向け集積回路(ASIC)を使用して実施することができる。
[0104]前述したことの全てにおいて、そのような実施形態は、単なる例示の目的だけのものであり、本発明の必須の特性から逸脱せずに、他の実施形態も同様に提供することができることは、理解されよう。
[0105]本発明について、1つの可能な実施形態に関して特に詳細に説明してきた。当業者であれば、本発明は、他の実施形態にて実施することができることは理解されよう。先ず第1に、各構成部分の特定の名称、用語の使用、属性、データ構造又はその他のプログラミング又は構成的特徴は、それに限定するものでも重要なものでもなく、本発明又はその特徴を実施する機構は、種々な名称、フォーマット又はプロトコルを有することができる。更に又、本システムは、前述したように、ハードウエアとソフトウエアとの組合せにより実施でき、又は、全体的にハードウエア要素にて実施することができる。又、ここで説明したような種々な構成部分の間への機能の特定の分担は、単なる例示であり、これに限定するものでなく、単一のシステムにより行われる機能を複数の構成部分により行うこともできるし、複数の構成部分により行われる機能を単一の構成部分により行うようにすることもできる。
[0106]前述の説明のうちのある幾つかの部分は、本発明の特徴をアルゴリズム及び情報に関するオペレーションの記号的表現の形にて与えている。これらのアルゴリムによる記述及び表現は、データ処理における当業者が、当業分野における他の当業者に対して自己の成果を最も効果的に伝えるために使用される手段である。これらのオペレーションは、機能的又は論理的に説明されるのであるが、コンピュータプログラムによって実施されることは理解されよう。更に又、これらのオペレーションの構成をモジュールとして示すこと又は機能的名称にて示すことも、その一般性を損なうことなく可能であり、時には、この方が便宜的であることも分かっている。
[0107]前述の説明から明らかなように、特に断らない限り、本明細書を通じて、「決定する」又は「表示する」等の用語を用いて説明していることは、物理的(電子的)量として表されたデータを、コンピュータシステムメモリ又はレジスタ又は他の同様の情報記憶装置、送信又は表示装置内で取扱い及び変換するようなコンピュータシステム又は同様の電子的コンピューティング装置の動作及び処理を指している。
[0108]本発明の特定の態様は、アルゴリズムの形にて前述した処理ステップ及び命令を含む。本発明の処理ステップ及び命令は、ソフトウエア、ファームウエア又はハードウエアにて実施することができ、ソフトウエアにて実施されるときには、実時間ネットワークオペレーティングシステムにより使用される種々なプラットフォームから実在するようにダウンロードされオペレーティングされることもできるとういうことに、注意されたい。
[0109]本発明は、ここでのオペレーションを行うためのシステムにも関する。このシステムは、必要とされる目的に特に合わせて構成することができ、又、このシステムは、コンピュータによりアクセスできるコンピュータ読み取り可能な媒体に記憶されたコンピュータプログラムにより選択的にアクティべートされ又はリコンフィギュレーションされるコンピュータ(種々な実施形態に依存して、サーバー、パーソナルコンピュータ、タブレットデバイス、ハンドヘルドコンピュータ、PDA、セルラーホン等を含む任意のタイプのコンピュータを含む)を含むことができる。このようなコンピュータプログラムは、これらに限定されるものではないが、フロッピーディスクを含む任意のタイプのディスク、光ディスク、CD-ROM、磁気-光ディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光カード、アプリケーション特定用途向け集積回路(ASIC)、又は電子命令を記憶するのに適した任意のタイプの媒体の如きコンピュータ読み取り可能な記憶媒体であって、各々がコンピュータシステムバスに結合されているようなコンピュータ読み取り可能な記憶媒体に記憶させておくことができる。更に又、本明細書において述べられているコンピュータは、単一プロセッサを含むものであっても、又は、コンピューティング能力を増大させるためマルチコア設計を含むマルチプロセッサ設計を使用するアーキテクチャーであってもよい。
[0110]ここに説明したアルゴリムズ及びオペレーションは、本来的には、特定のコンピュータ又は他のシステムに関連付けられているものではない。ここで教示したプログラムでもって、種々な汎用システムを使用することもでき、又は、必要とされる方法ステップを行うためより特化したシステムを構成すると都合がよい場合があることも理解されよう。これらの種々なシステムのために必要とされる構成については、均等の変形と共に、当業者には明らかなことであろう。更に又、本発明は、特定のプログラム言語に関して説明されていない。ここに説明した本発明の教示を実施するのに、種々なプログラミング言語を使用することができることは理解されよう。
[0111]本発明は、種々なトポロジーを通して広範囲に亘る種々なコンピュータネットワークに良好に適合するものである。この分野内において、大規模ネットワークのコンフィギュレーション及び管理は、インターネットの如きネットワークを通して異なるコンピュータ及び記憶装置に通信により結合される記憶装置及びコンピュータを含む。
[0112]最後に、本明細書において使用されている用語は、主として理解を容易にする目的で使用されているだけのものであり、本発明の主題を限定しようとして選択されるものではないことに、注意されたい。従って、本発明の開示は、例示しようとしているだけのものであり、本発明の範囲をこれに限定しようとしているものではなく、本発明の範囲は、特許請求の範囲に記載されるところである。

Claims (25)

  1. ネットワークを通じてビデオフレームを通信するためのシステムであって、
    第1の装置に設けられた、前記ネットワークを通じて送信するためのプログラムのユーザーインターフェースの連続するビデオフレームをエンコーディングするように構成された第1のエンジンであり、前記ビデオフレームのエンコーディングが、1つ以上のフィードバックパラメータに基づいており、ビデオ圧縮技法を含む、第1のエンジンと、
    前記プログラムに機能的に結合される第1のコマンド処理エンジンと、
    第2の装置に設けられ、前記ネットワークを通した送信後に前記連続するビデオフレームをデコーディングするように構成された第2のエンジンと、
    前記第1のコマンド処理エンジンに機能的に結合され且つ前記第2の装置のユーザー入力を前記第1のコマンド処理エンジンを介して前記プログラムへ通信するように構成された第2のコマンド処理エンジンと、
    を備えるシステム。
  2. 前記プログラムに機能的に結合され、前記ネットワークを通じて送信するため前記連続するビデオフレームに関連するオーディオストリームをエンコーディングするように構成された第3のエンジンと、
    前記ネットワークを通した送信後に前記オーディオストリームをデコーディングするように構成された第4のエンジンと、
    を更に備える、請求項1に記載のシステム。
  3. 各々が対応する複数の第1のエンジン及び対応する複数の第1のコマンド処理エンジンを有し、オペレーティングシステムの1つのインスタンスにおいて実行されるユーザーインターフェースを有する複数のプログラムと、
    前記ネットワークを通じて対応する複数の第2の装置へ送信するため前記複数のプログラムの各々の連続するビデオフレームをロードバランス形式にてエンコーディングするように構成されたユーザーマネージャエンジンと、
    を更に備える、請求項1に記載のシステム。
  4. ネットワークを通じてビデオフレームを通信するための方法であって、
    前記ネットワークを通じて送信するため、プログラムのユーザーインターフェースの連続するビデオフレームをエンコーディングするステップであって、前記エンコーディングは、1つ以上のフィードバックパラメータに基づいてなされ、ビデオ圧縮技法を含む、ステップと、
    前記ネットワークを通した送信後に前記プログラムのユーザーインターフェースの連続するビデオフレームをデバイスによりデコーディングするステップと、
    前記デバイスのユーザー入力を前記プログラムへ通信するステップと、
    を含む方法。
  5. 前記ネットワークを通じて送信するため、前記ビデオフレームに関連したオーディオストリームをエンコーディングするステップと、
    前記ネットワークを通した送信後に前記オーディオストリームをデコーディングするステップと、
    を更に含む、請求項4に記載の方法。
  6. 対応する複数のプログラムのユーザーインターフェースの複数の連続するビデオフレームをエンコーディングするステップであって、前記エンコーディングは、各プログラムに対応する1つ以上のフィードバックパラメータに基づいてなされ且つビデオ圧縮技法を含み、前記複数のプログラムは、オペレーティングシステムの1つのインスタンスにおいて実行されるステップと、
    各々が前記複数のプログラムのうちの1つに対応する複数のデバイスにより、前記連続するビデオフレームをデコーディングするステップと、
    前記複数のデバイスのユーザー入力を前記各対応するプログラムへ通信するためのステップと、
    を更に含む、請求項4に記載の方法。
  7. ネットワークを通じてビデオフレームを通信するためのシステムであって、
    前記ネットワークを通じてデバイスへ送信するため、プログラムのユーザーインターフェースの連続するビデオフレームをエンコーディングするように構成された第1のエンジンであり、前記エンコーディングは、1つ以上のフィードバックパラメータに基づいており、ビデオ圧縮技法を含む、第1のエンジンと、
    前記プログラムに機能的に結合され、且つ前記デバイスのユーザー入力を受け取り前記ユーザー入力を前記プログラムへと通信するように構成されたコマンド処理エンジンと、
    を備えるシステム。
  8. 前記プログラムに機能的に結合され、前記コマンド処理モジュールを通してユーザー入力を受け取り且つ前記プログラムでのオペレーションのため前記ユーザー入力を転送するように構成されたプラグインを更に備える、請求項7に記載のシステム。
  9. 前記プログラムに機能的に結合され、前記プログラムのユーザーインターフェースの連続するビデオフレームを取り込み且つビデオフォーマット変換を行うように構成された画像管理エンジンを更に備える、請求項7に記載のシステム。
  10. 前記第1のエンジンは、更に、前記ユーザーインターフェースにおける変化に基づいてビデオフレームを非同期的に通信するように構成された、請求項7に記載のシステム。
  11. 各々が対応する複数の第1のエンジン及び対応する複数の第1のコマンド処理エンジンを有しているユーザーインターフェースを有する複数のプログラムと、
    前記ネットワークを通じて対応する複数のデバイスへと送信するため、前記複数のプログラムの各々の連続するビデオフレームをロードバランシング形式にてエンコーディングするように構成されたユーザーマネージャエンジンと、
    を更に備える、請求項7に記載のシステム。
  12. 前記複数のプログラムは、オペレーティングシステムの1つのインスタンスにて実行される、請求項11に記載のシステム。
  13. 前記ユーザーマネージャエンジンは、複数のワーカースレッドを備えており、各ユーザーを前記複数のワーカースレッドのうちの1つへと割り当て、各ワーカースレッドが1つ以上のユーザーにサービスするように構成された、請求項11に記載のシステム。
  14. 前記複数のプログラムに機能的に結合され、前記複数のプログラムに対応する複数のオーディオストリームをエンコーディングするように構成された第2のエンジンを更に備える、請求項11に記載のシステム。
  15. 前記第1のデバイスに設けられており、前記複数のプログラム及び前記第2のエンジンに機能的に結合され、前記複数のオーディオストリームを前記第2のエンジンへとリダイレクトするように構成されたオーディオインターセプターエンジンを更に備えており、
    前記複数のオーディオストリームは、各々、前記複数のプログラムに対応する複数の処理識別子のうちの1つに関連付けられており、
    前記第2のエンジンは、前記関連付けられた処理識別子に基づいて前記複数のオーディオストリームをルーティングするように構成された、請求項14に記載のシステム。
  16. ネットワークを通じてビデオフレームを通信するための方法であって、
    ネットワークを通じてデバイスへ送信するため、プログラムのユーザーインターフェースの連続するビデオフレームをエンコーディングするステップであり、前記エンコーディングは、1つ以上のフィードバックパラメータに基づいており、ビデオ圧縮技法を含む、ステップと、
    前記デバイスのユーザー入力を受け取るステップと、
    前記ユーザー入力を前記プログラムへ通信するステップと、
    を含む方法。
  17. 前記プログラムにおけるオペレーションのため、前記ユーザー入力を受け取り前記プロ倉メッセージへ転送するように構成されたプラグインを前記プログラムに補充するステップを更に含む、請求項16に記載の方法。
  18. 前記ネットワークを通じて対応する複数のデバイスへと送信するため、複数のプログラムのユーザーインターフェースの複数の連続するビデオフレームをエンコーディングするステップであり、前記エンコーディングは、各プログラムに対応する1つ以上のフィードバックパラメータに基づいており、ビデオ圧縮技法を含む、ステップと、
    前記複数のプログラムのユーザーインターフェースの複数の連続するビデオフレームのエンコーディングを管理しロードバランシングさせるステップと、
    前記複数のデバイスのユーザーインターフェースを各対応するプログラムへと通信するステップと、
    を更に含む、請求項16に記載の方法。
  19. 前記複数のプログラムは、オペレーティングシステムの1つのインスタンスにおいて実行される、請求項18に記載の方法。
  20. 前記管理しロードバランシングさせるステップは、複数のワーカースレッドを使用し各ユーザーを前記複数のワーカースレッドのうちの1つへと割り当て、各ワーカースレッドが1つ以上のユーザーにサービスするようにする段階を含む、請求項18に記載の方法。
  21. 前記複数のプログラムに対応する複数のオーディオストリームをインターセプトするステップと、
    前記複数のオーディオストリームの各々を、前記複数のプログラムに対応する複数の処理識別子のうちの1つに関連付けるステップと、
    前記複数のオーディオストリームをエンコーディングするステップと、
    前記複数のオーディオストリームを前記関連付けられた処理識別子に基づいてルーティングするステップと、
    を更に含む、請求項18に記載の方法。
  22. ネットワークを通じてビデオフレームを受け取るためのシステムであって、
    前記ネットワークを通じて送信されるプログラムのユーザーインターフェースの連続するビデオフレームをデコーディングするように構成された第1のエンジンであり、前記ビデオフレームのエンコーディングは、1つ以上のフィードバックパラメータに基づいており、ビデオ圧縮技法を含む、第1のエンジンと、
    前記システムのユーザー入力を前記プログラムへ通信するように構成されたコマンド処理エンジンと、
    を備えるシステム。
  23. 前記ネットワークを通した送信の後、前記連続するビデオフレームに関連したオーディオストリームをデコーディングするように構成された第2のエンジンを更に備える、請求項22に記載のシステム。
  24. 前記第1のエンジン及び前記第2のエンジンに機能的に結合され、デバイス出力のため前記オーディオストリームを前記連続するビデオフレームと相関させるように構成された同期エンジンを更に備える、請求項23に記載のシステム。
  25. 前記第1のエンジンに機能的に結合され、前記連続するビデオフレームを表示するように構成されており、且つ前記コマンド処理エンジンに更に機能的に結合され、ユーザー入力を前記プログラムへ通信するように構成されたビューイングアプリケーションを更に備える、請求項22に記載のシステム。
JP2009534948A 2006-11-01 2007-10-31 リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー Active JP5451397B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US86388806P 2006-11-01 2006-11-01
US60/863,888 2006-11-01
US11/929,773 2007-10-30
US11/929,773 US8443398B2 (en) 2006-11-01 2007-10-30 Architecture for delivery of video content responsive to remote interaction
PCT/US2007/083203 WO2008057888A2 (en) 2006-11-01 2007-10-31 Architecture for delivery of video content responsive to remote interaction

Publications (2)

Publication Number Publication Date
JP2010508734A true JP2010508734A (ja) 2010-03-18
JP5451397B2 JP5451397B2 (ja) 2014-03-26

Family

ID=39331968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009534948A Active JP5451397B2 (ja) 2006-11-01 2007-10-31 リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー

Country Status (5)

Country Link
US (1) US8443398B2 (ja)
EP (1) EP2082328A2 (ja)
JP (1) JP5451397B2 (ja)
KR (1) KR101413126B1 (ja)
WO (1) WO2008057888A2 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015513732A (ja) * 2013-01-24 2015-05-14 華為技術有限公司Huawei Technologies Co.,Ltd. 仮想プラットフォーム上でi/oチャネルを調整する方法及び装置
JP2017535148A (ja) * 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 映像符号化のためのハッシュベースのエンコーダ判断
JP2019057921A (ja) * 2012-12-04 2019-04-11 アバルタ テクノロジーズ、 インク.Abalta Technologies, Inc. 分散型クロスプラットフォームユーザインタフェースおよびアプリケーション投写
US10368092B2 (en) 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Encoder-side decisions for block flipping and skip mode in intra block copy prediction
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US10567754B2 (en) 2014-03-04 2020-02-18 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
US10681372B2 (en) 2014-06-23 2020-06-09 Microsoft Technology Licensing, Llc Encoder decisions based on results of hash-based block matching
US11076171B2 (en) 2013-10-25 2021-07-27 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4506856B2 (ja) * 2008-03-10 2010-07-21 ソニー株式会社 通信装置、及び通信方法
US8793749B2 (en) * 2008-08-25 2014-07-29 Broadcom Corporation Source frame adaptation and matching optimally to suit a recipient video device
FR2943871B1 (fr) * 2009-03-25 2011-07-22 Sagem Comm Procede de partage a distance de bureaux(x) informatique(s)
US8379039B2 (en) * 2009-06-07 2013-02-19 Apple Inc. Reformatting content with proper color-region conversion
US20100328418A1 (en) * 2009-06-25 2010-12-30 Yair Winkler Method for real-time remote presentation and control of a visual page from a mobile terminal during a video call
US20110154214A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems
KR101211279B1 (ko) * 2010-01-27 2012-12-11 에스케이플래닛 주식회사 미디어 스트리밍을 이용한 리치미디어 서비스 방법 및 시스템
US9781477B2 (en) 2010-05-05 2017-10-03 Cavium, Inc. System and method for low-latency multimedia streaming
US20110274156A1 (en) * 2010-05-05 2011-11-10 Cavium Networks System and method for transmitting multimedia stream
US8849956B2 (en) * 2011-01-14 2014-09-30 Google Inc. Video processing feedback
US8681866B1 (en) 2011-04-28 2014-03-25 Google Inc. Method and apparatus for encoding video by downsampling frame resolution
US9106787B1 (en) 2011-05-09 2015-08-11 Google Inc. Apparatus and method for media transmission bandwidth control using bandwidth estimation
US9503497B2 (en) * 2011-12-10 2016-11-22 LogMeln, Inc. Optimizing transfer to a remote access client of a high definition (HD) host screen image
US9185429B1 (en) 2012-04-30 2015-11-10 Google Inc. Video encoding and decoding using un-equal error protection
US9311692B1 (en) 2013-01-25 2016-04-12 Google Inc. Scalable buffer remote access
US8713600B2 (en) * 2013-01-30 2014-04-29 Almondnet, Inc. User control of replacement television advertisements inserted by a smart television
US9225979B1 (en) 2013-01-30 2015-12-29 Google Inc. Remote access encoding
US10116943B2 (en) * 2013-10-16 2018-10-30 Nvidia Corporation Adaptive video compression for latency control
EP3061253A4 (en) 2013-10-25 2016-08-31 Microsoft Technology Licensing Llc PAIRING OF BLOCKS BY HASHING VIDEO AND IMAGE CODING
US9424429B1 (en) * 2013-11-18 2016-08-23 Amazon Technologies, Inc. Account management services for load balancers
FR3019428A1 (fr) 2014-03-31 2015-10-02 Orange Dispositif et procede de commande a distance de la restitution de contenus multimedia
US9681157B2 (en) * 2014-07-23 2017-06-13 Able Technologies System and method for D-cinema to a selected location
US9628830B1 (en) 2014-12-22 2017-04-18 Sorenson Media, Inc. Automatic content recognition (ACR) fingerprinting and video encoding
JP2016143236A (ja) 2015-02-02 2016-08-08 株式会社リコー 配信制御装置、配信制御方法、及びプログラム
EP3057318A1 (en) * 2015-02-13 2016-08-17 Alcatel Lucent Adapting coding parameters based on viewing experience and system constraints
WO2017046713A2 (en) 2015-09-14 2017-03-23 Colorado Code Craft Patent Holdco Llc Secure, anonymous browsing with a remote browsing server
US9681111B1 (en) 2015-10-22 2017-06-13 Gopro, Inc. Apparatus and methods for embedding metadata into video stream
US9667859B1 (en) 2015-12-28 2017-05-30 Gopro, Inc. Systems and methods for determining preferences for capture settings of an image capturing device
US9922387B1 (en) 2016-01-19 2018-03-20 Gopro, Inc. Storage of metadata and images
US9967457B1 (en) 2016-01-22 2018-05-08 Gopro, Inc. Systems and methods for determining preferences for capture settings of an image capturing device
US9665098B1 (en) 2016-02-16 2017-05-30 Gopro, Inc. Systems and methods for determining preferences for flight control settings of an unmanned aerial vehicle
US9973792B1 (en) 2016-10-27 2018-05-15 Gopro, Inc. Systems and methods for presenting visual information during presentation of a video segment
US10187607B1 (en) 2017-04-04 2019-01-22 Gopro, Inc. Systems and methods for using a variable capture frame rate for video capture
GB2568020A (en) * 2017-09-05 2019-05-08 Nokia Technologies Oy Transmission of video content based on feedback
US20240181339A1 (en) * 2022-12-01 2024-06-06 At&T Intellectual Property I, L.P. Intelligent adaptive signaling automation for metaverse streaming

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003134362A (ja) * 2001-10-22 2003-05-09 D T P:Kk 監視用ビデオカメラ
JP2003259310A (ja) * 2002-02-28 2003-09-12 Mitsubishi Electric Corp 映像音声録画再生媒体用メニュー装置
WO2005081528A1 (ja) * 2004-02-24 2005-09-01 Nec Corporation 情報配信システム及び方法とその情報配信装置、受信端末、情報中継装置
JP2006270690A (ja) * 2005-03-25 2006-10-05 Funai Electric Co Ltd データ伝送システム

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253275A (en) * 1991-01-07 1993-10-12 H. Lee Browne Audio and video transmission and receiving system
US6297843B1 (en) * 1993-09-30 2001-10-02 Intel Corporation System providing video compression/encoding for communications across a network
JP3749752B2 (ja) * 1995-03-24 2006-03-01 アイティーティー・マニュファクチャリング・エンタープライジズ・インコーポレーテッド ブロック適応型差分パルスコード変調システム
US5742892A (en) * 1995-04-18 1998-04-21 Sun Microsystems, Inc. Decoder for a software-implemented end-to-end scalable video delivery system
US5821915A (en) * 1995-10-11 1998-10-13 Hewlett-Packard Company Method and apparatus for removing artifacts from scanned halftone images
US5841432A (en) * 1996-02-09 1998-11-24 Carmel; Sharon Method and system of building and transmitting a data file for real time play of multimedia, particularly animation, and a data file for real time play of multimedia applications
US5727159A (en) * 1996-04-10 1998-03-10 Kikinis; Dan System in which a Proxy-Server translates information received from the Internet into a form/format readily usable by low power portable computers
US6038257A (en) * 1997-03-12 2000-03-14 Telefonaktiebolaget L M Ericsson Motion and still video picture transmission and display
US6292834B1 (en) * 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
JP3003618B2 (ja) * 1997-03-19 2000-01-31 日本電気株式会社 動画像送受信装置
US6282240B1 (en) * 1997-09-03 2001-08-28 Oki Electric Industry Co., Ltd. Picture coder, picture decoder, and transmission system
US20030122954A1 (en) * 1998-01-01 2003-07-03 Kassatly L. Samuel Anthony Video camera and method and device for capturing video, audio and data signals
US7257158B1 (en) * 1998-05-18 2007-08-14 Kendyl A. Román System for transmitting video images over a computer network to a remote receiver
US6496203B1 (en) * 1998-05-27 2002-12-17 Microsoft Corporation Standardized and application-independent graphical user interface components implemented with web technology
US6563517B1 (en) * 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US6578201B1 (en) * 1998-11-20 2003-06-10 Diva Systems Corporation Multimedia stream incorporating interactive support for multiple types of subscriber terminals
US6529552B1 (en) * 1999-02-16 2003-03-04 Packetvideo Corporation Method and a device for transmission of a variable bit-rate compressed video bitstream over constant and variable capacity networks
US6584493B1 (en) * 1999-03-02 2003-06-24 Microsoft Corporation Multiparty conferencing and collaboration system utilizing a per-host model command, control and communication structure
US6711294B1 (en) * 1999-03-31 2004-03-23 International Business Machines Corporation Method and apparatus for reducing image data storage and processing based on device supported compression techniques
US6668273B1 (en) * 1999-11-18 2003-12-23 Raindance Communications, Inc. System and method for application viewing through collaborative web browsing session
US20020059368A1 (en) * 2000-01-07 2002-05-16 Soneticom, Inc. Wireless remote computer interface system
TW515192B (en) * 2000-06-06 2002-12-21 Noa Kk Off Compression method of motion picture image data and system there for
US6925651B2 (en) * 2000-06-08 2005-08-02 Agile Tv Corporation Method and processor engine architecture for the delivery of audio and video content over a broadband network
US7210099B2 (en) * 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
US7116843B1 (en) * 2000-07-24 2006-10-03 Quark, Inc. Method and system using non-uniform image blocks for rapid interactive viewing of digital images over a network
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
KR100345447B1 (ko) * 2000-09-27 2002-07-26 한국전자통신연구원 스트리밍 서비스를 위한 가변 비트율 처리 방법
US20020076049A1 (en) * 2000-12-19 2002-06-20 Boykin Patrick Oscar Method for distributing perceptually encrypted videos and decypting them
US20030079222A1 (en) * 2000-10-06 2003-04-24 Boykin Patrick Oscar System and method for distributing perceptually encrypted encoded files of music and movies
US6724382B2 (en) * 2000-12-04 2004-04-20 Wildtangent, Inc. Method and apparatus for distributing and displaying maps electronically
US7043745B2 (en) * 2000-12-29 2006-05-09 Etalk Corporation System and method for reproducing a video session using accelerated frame recording
US20020122491A1 (en) * 2001-01-03 2002-09-05 Marta Karczewicz Video decoder architecture and method for using same
JP3918447B2 (ja) * 2001-03-30 2007-05-23 三菱電機株式会社 動画像受信装置および動画像送信装置
US7821953B2 (en) 2005-05-13 2010-10-26 Yahoo! Inc. Dynamically selecting CODECS for managing an audio message
US7016963B1 (en) * 2001-06-29 2006-03-21 Glow Designs, Llc Content management and transformation system for digital content
JP2003087575A (ja) * 2001-07-06 2003-03-20 Ricoh Co Ltd 画像表示装置
US6990534B2 (en) * 2001-07-20 2006-01-24 Flowfinity Wireless, Inc. Method for a proactive browser system for implementing background frame maintenance and asynchronous frame submissions
BR0212000A (pt) * 2001-08-23 2004-09-28 Polycom Inc Sistema e método para ocultação de erro de vìdeo
US7088398B1 (en) * 2001-12-24 2006-08-08 Silicon Image, Inc. Method and apparatus for regenerating a clock for auxiliary data transmitted over a serial link with video data
US7376896B2 (en) * 2002-01-15 2008-05-20 International Business Machines Corporation System for recording world wide web browsing sessions navigation on a real-time basis and for subsequently displaying the recorded sessions as surrogate browsing sessions with user enabled real-time modification
US7219163B2 (en) * 2002-03-14 2007-05-15 Hewlett-Packard Development Company, L.P. Method and system that tailors format of transmission to suit client capabilities and link characteristics
FR2840495B1 (fr) * 2002-05-29 2004-07-30 Canon Kk Procede et dispositif de selection d'une methode de transcodage parmi un ensemble de methodes de transcodage
GB2390949A (en) * 2002-07-17 2004-01-21 Sony Uk Ltd Anti-aliasing of a foreground image to be combined with a background image
US20040022322A1 (en) * 2002-07-19 2004-02-05 Meetrix Corporation Assigning prioritization during encode of independently compressed objects
JP4343111B2 (ja) * 2002-10-02 2009-10-14 エルジー エレクトロニクス インコーポレーテッド グラフィックデータの再生を管理するためのデータ構造を有する記録媒体、該記録媒体による記録・再生方法、およびその装置
US7483575B2 (en) * 2002-10-25 2009-01-27 Sony Corporation Picture encoding apparatus and method, program and recording medium
GB0230328D0 (en) * 2002-12-31 2003-02-05 British Telecomm Video streaming
GB0303888D0 (en) * 2003-02-19 2003-03-26 Sec Dep Acting Through Ordnanc Image streaming
US20040184523A1 (en) * 2003-02-25 2004-09-23 Dawson Thomas Patrick Method and system for providing reduced bandwidth for picture in picture video transmissions
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
KR100982511B1 (ko) * 2003-10-08 2010-09-16 삼성전자주식회사 원격 제어 장치 및 방법
US20050089092A1 (en) * 2003-10-22 2005-04-28 Yasuhiro Hashimoto Moving picture encoding apparatus
US20050147247A1 (en) * 2003-11-14 2005-07-07 Westberg Thomas E. Interactive television systems having POD modules and methods for use in the same
TWI262660B (en) * 2003-11-19 2006-09-21 Inst Information Industry Video transcoder adaptively reducing frame rate
KR100586883B1 (ko) * 2004-03-04 2006-06-08 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩방법, 프리디코딩방법, 비디오 디코딩방법, 및 이를 위한 장치와, 이미지 필터링방법
KR100631768B1 (ko) * 2004-04-14 2006-10-09 삼성전자주식회사 비디오 코딩에서 프레임간 예측방법 및 비디오 인코더와,비디오 디코딩방법 및 비디오 디코더
US20050257167A1 (en) * 2004-05-11 2005-11-17 International Business Machines Corporation Embedded Web dialog
KR20050114047A (ko) * 2004-05-31 2005-12-05 삼성전자주식회사 원격지에 소재하는 다수의 클라이언트들을 지원하는 방법및 서버
EP1615447B1 (en) * 2004-07-09 2016-03-09 STMicroelectronics Srl Method and system for delivery of coded information streams, related network and computer program product therefor
US7590750B2 (en) * 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US8948266B2 (en) * 2004-10-12 2015-02-03 Qualcomm Incorporated Adaptive intra-refresh for digital video encoding
US7784076B2 (en) * 2004-10-30 2010-08-24 Sharp Laboratories Of America, Inc. Sender-side bandwidth estimation for video transmission with receiver packet buffer
KR20060063605A (ko) * 2004-12-06 2006-06-12 엘지전자 주식회사 영상신호의 엔코딩과 그 전송, 그리고 디코딩을 위한 방법및 장치
US20060174026A1 (en) * 2005-01-05 2006-08-03 Aaron Robinson System and method for a remote user interface
US7730157B2 (en) * 2005-02-03 2010-06-01 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for displaying information on a thin-client in communication with a network
US7503173B2 (en) * 2005-02-08 2009-03-17 Parker-Hannifin Corporation Control devices for swashplate type variable displacement piston pump
US7870256B2 (en) * 2005-03-25 2011-01-11 Hewlett-Packard Development Company, L.P. Remote desktop performance model for assigning resources
US20060282855A1 (en) * 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
US7830961B2 (en) * 2005-06-21 2010-11-09 Seiko Epson Corporation Motion estimation and inter-mode prediction
KR100699261B1 (ko) * 2005-06-24 2007-03-27 삼성전자주식회사 움직임 에러 검출장치와 이를 포함하는 움직임 에러보정장치와 이에 의한 움직임 에러 검출방법 및 움직임에러 보정방법
KR100723505B1 (ko) * 2005-10-06 2007-05-30 삼성전자주식회사 하이브리드 방식의 영상 데이터 처리 시스템 및 영상데이터 처리 방법
US20070116117A1 (en) * 2005-11-18 2007-05-24 Apple Computer, Inc. Controlling buffer states in video compression coding to enable editing and distributed encoding
JP2007158410A (ja) * 2005-11-30 2007-06-21 Sony Computer Entertainment Inc 画像符号化装置、画像復号装置、および画像処理システム
US20070250711A1 (en) * 2006-04-25 2007-10-25 Phonified Llc System and method for presenting and inputting information on a mobile device
US20080062322A1 (en) * 2006-08-28 2008-03-13 Ortiva Wireless Digital video content customization
US20080065980A1 (en) * 2006-09-08 2008-03-13 Opera Software Asa Modifying a markup language document which includes a clickable image
NO325628B1 (no) * 2006-09-20 2008-06-30 Opera Software Asa Fremgangsmåte, datamaskinprogram, transkodingsserver og datamaskinsystem for å modifisere et digitalt dokument

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003134362A (ja) * 2001-10-22 2003-05-09 D T P:Kk 監視用ビデオカメラ
JP2003259310A (ja) * 2002-02-28 2003-09-12 Mitsubishi Electric Corp 映像音声録画再生媒体用メニュー装置
WO2005081528A1 (ja) * 2004-02-24 2005-09-01 Nec Corporation 情報配信システム及び方法とその情報配信装置、受信端末、情報中継装置
JP2006270690A (ja) * 2005-03-25 2006-10-05 Funai Electric Co Ltd データ伝送システム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019057921A (ja) * 2012-12-04 2019-04-11 アバルタ テクノロジーズ、 インク.Abalta Technologies, Inc. 分散型クロスプラットフォームユーザインタフェースおよびアプリケーション投写
JP2015513732A (ja) * 2013-01-24 2015-05-14 華為技術有限公司Huawei Technologies Co.,Ltd. 仮想プラットフォーム上でi/oチャネルを調整する方法及び装置
US11076171B2 (en) 2013-10-25 2021-07-27 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
US10368092B2 (en) 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Encoder-side decisions for block flipping and skip mode in intra block copy prediction
US10567754B2 (en) 2014-03-04 2020-02-18 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
US10681372B2 (en) 2014-06-23 2020-06-09 Microsoft Technology Licensing, Llc Encoder decisions based on results of hash-based block matching
JP2017535148A (ja) * 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 映像符号化のためのハッシュベースのエンコーダ判断
US11025923B2 (en) 2014-09-30 2021-06-01 Microsoft Technology Licensing, Llc Hash-based encoder decisions for video coding
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks

Also Published As

Publication number Publication date
US8443398B2 (en) 2013-05-14
EP2082328A2 (en) 2009-07-29
WO2008057888A3 (en) 2008-07-10
JP5451397B2 (ja) 2014-03-26
KR101413126B1 (ko) 2014-07-01
WO2008057888A2 (en) 2008-05-15
KR20090106453A (ko) 2009-10-09
US20080104652A1 (en) 2008-05-01

Similar Documents

Publication Publication Date Title
JP5451397B2 (ja) リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー
US8375304B2 (en) Maintaining state of a web page
US20080184128A1 (en) Mobile device user interface for remote interaction
EP2624611B1 (en) Method and system for visualizing an adaptive screen according to a terminal
US10019213B1 (en) Composition control method for remote application delivery
WO2021143182A1 (zh) 游戏的处理方法、装置、电子设备及计算机可读存储介质
US8463912B2 (en) Remote displays in mobile communication networks
TWI495330B (zh) 有效地串流數位視訊的系統及方法
KR20120106778A (ko) 라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법
KR20160092136A (ko) 가상 데스크탑 제공 방법 및 가상 데스크탑 제공 서버
US7076523B2 (en) Interaction interface for a composite device computing environment
JP2016103117A (ja) 情報処理装置、端末装置、画像表示システムおよび画像送信プログラム
JP2005228228A (ja) クライアントサーバシステム及びそのgui表示方法
EP1821490A1 (en) Method for transmitting graphical data to a thin client
KR101473463B1 (ko) 터미널 환경의 서버 기반 컴퓨팅 시스템에서 압축 화면 정보를 제공하는 터미널 서비스 시스템 및 터미널 서비스 방법
KR20130017406A (ko) 이종의 원격 제어 서비스를 지원하는 서버 및 방법
KR20160044732A (ko) 클라우드 스트리밍 서비스 시스템, 스틸 이미지 기반 클라우드 스트리밍 서비스 방법 및 이를 위한 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130709

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131009

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131017

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131226

R150 Certificate of patent or registration of utility model

Ref document number: 5451397

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250