JP2017517921A - ヒントを使ったフレーム・エンコード - Google Patents

ヒントを使ったフレーム・エンコード Download PDF

Info

Publication number
JP2017517921A
JP2017517921A JP2016560782A JP2016560782A JP2017517921A JP 2017517921 A JP2017517921 A JP 2017517921A JP 2016560782 A JP2016560782 A JP 2016560782A JP 2016560782 A JP2016560782 A JP 2016560782A JP 2017517921 A JP2017517921 A JP 2017517921A
Authority
JP
Japan
Prior art keywords
frame
computer
encoding
interest
information
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
JP2016560782A
Other languages
English (en)
Inventor
キャラハン,ショーン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017517921A publication Critical patent/JP2017517921A/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/46Embedding additional information in the video signal during the compression process
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/136Incoming video signal characteristics or properties
    • 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
    • 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
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/55Motion estimation with spatial constraints, e.g. at image or region borders

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Processing Or Creating Images (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

実施形態は、補足的なエンコード命令に応答してフレームをエンコードすること、フレームについてのエンコード情報を提供することおよびエンコード・ヒントを含むソフトウェア・コードをコンパイルすることに向けられる。ある実施形態では、フレームに関連付けられたフレーム情報にアクセスすることに応答して、コンピュータ・システムはフレーム情報を、フレームの指定された部分をエンコードするための補足的なエンコード命令であるとして解釈する。次いで、コンピュータ・システムは、フレームの指定された部分が補足的なエンコード命令に従ってエンコードされるよう、フレームをエンコードする。

Description

ビデオ・データは、インターネットのようなネットワークを通じて、日常的に世界中の消費者に送信されている。ビデオ・データは何らかの型のソフトウェア・アプリケーションによって生成される。次いでビデオ・データは、エンコーダによってエンコードされたのちに、受領システム(すなわちクライアント)に送信される。次いで、受領システムは、エンコードされたフレームをデコードし、ユーザーに対して表示する。ビデオ・エンコーダは典型的には、フレームを、ソフトウェア・アプリケーションから受領されるにつれて逐次的にエンコードする。
エンコーダは、フレームの実際の内容についていかなる知識もなしに、あるいはフレームにおいて何が実際に起こっているかを何も知らずに、フレームをエンコードする。エンコード・プロセスは典型的には、フレームの視覚的品質を劣化させる。
本稿に記載される実施形態は、補足的なエンコード命令に応答してフレームをエンコードすること、フレームについてのエンコード情報を提供することおよびエンコード・ヒントを含むソフトウェア・コードをコンパイルすることに向けられる。ある実施形態では、フレームに関連付けられたフレーム情報にアクセスすることに応答して、コンピュータ・システムはフレーム情報を、フレームの指定された部分をエンコードするための補足的なエンコード命令であるとして解釈する。次いで、コンピュータ・システムは、フレームの指定された部分が補足的なエンコード命令に従ってエンコードされるよう、フレームをエンコードする。
もう一つの実施形態では、コンピュータ・システムは、フレームに対応するフレーム情報にアクセスする。コンピュータ・システムは、アクセスされたフレーム情報から、そのフレームの少なくとも一部が指定された仕方でエンコードされるべきであることを判別する。次いで、コンピュータ・システムは、該指定された仕方でエンコードされるべきである前記フレームの部分を同定する補足的なエンコード命令を生成し、該補足的なエンコード命令がエンコーダに提供されるようにする。
さらにもう一つの実施形態では、コンピュータ・システムは、アプリケーション・コンテンツの指定された部分が特定の仕方でエンコードされるべきであるとの指示を受領する。コンピュータ・システムは、アプリケーション・コンテンツのそれらの指定された部分がどのようにレンダリングされ、エンコードされるかを示すアプリケーション・コードをそのアプリケーションに加える。次いで、コンピュータ・システムは、アプリケーションをコンパイルするが、それにより、実行されたときにコンパイルされたアプリケーションが、アプリケーション・コンテンツの指定された部分がどのようにエンコードされているかを示す前記情報を、そのアプリケーション・コンテンツをエンコードするよう構成されているプロセッサまたは第二のアプリケーションに提供するようにされる。
この概要は、詳細な説明においてさらに記載される概念のセレクションを簡略化された形で紹介するために与えられている。この概要は、特許請求される主題のキーとなる特徴や本質的な特徴を特定することを意図したものではなく、特許請求される主題の範囲を決定する際の助けとして使われることも意図されていない。
追加的な特徴および利点が以下の記述において記載され、部分的には、該記述から当業者に明白となるであろう。あるいは、本稿における教示の実施により学習されることもありうる。本稿に記載される実施形態の特徴および利点は、付属の請求項において具体的に指摘される機器および組み合わせによって実現され、得られることができる。本稿に記載される実施形態の特徴は、以下の記述および付属の請求項からより十全に明白となるであろう。
本稿に記載される実施形態の上記および他の特徴を一層明確にするために、より具体的な記述が付属の図面を参照して与えられる。これらの図面は、本稿に記載される実施形態の例を描いているだけであり、よってその範囲を限定すると考えられるべきではないことは理解される。実施形態は、付属の図面の使用を通じてさらなる具体性および詳細さをもって記載され、説明される。
補足的なエンコード命令に応答してフレームをエンコードすることを含む、本稿に記載される実施形態が動作しうるコンピュータ・アーキテクチャを示す図である。 補足的なエンコード命令に応答してフレームをエンコードするための例示的な方法のフローチャートを示す図である。 フレームについてのエンコード情報を提供するための例示的な方法のフローチャートである。 エンコード・ヒントを含むソフトウェア・コードをコンパイルするための例示的な方法のフローチャートである。 フレームがフレーム情報に従ってエンコードされるコンピューティング・アーキテクチャを示す図である。 AおよびBは、異なるフレームについて関心領域が示されている実施形態を示す図である。 ヘッドアップ・ディスプレイについて関心領域が指示される実施形態を示す図である。
本稿に記載される実施形態は、補足的なエンコード命令に応答してフレームをエンコードすること、フレームについてのエンコード情報を提供することおよびエンコード・ヒントを含むソフトウェア・コードをコンパイルすることに向けられる。ある実施形態では、フレームに関連付けられたフレーム情報にアクセスすることに応答して、コンピュータ・システムはフレーム情報を、フレームの指定された部分をエンコードするための補足的なエンコード命令であるとして解釈する。次いで、コンピュータ・システムは、フレームの指定された部分が補足的なエンコード命令に従ってエンコードされるよう、フレームをエンコードする。
もう一つの実施形態では、コンピュータ・システムは、フレームに対応するフレーム情報にアクセスする。コンピュータ・システムは、アクセスされたフレーム情報から、そのフレームの少なくとも一部が指定された仕方でエンコードされるべきであることを判別する。次いで、コンピュータ・システムは、該指定された仕方でエンコードされるべきである前記フレームの部分を同定する補足的なエンコード命令を生成し、該補足的なエンコード命令がエンコーダに提供されるようにする。
さらにもう一つの実施形態では、コンピュータ・システムは、アプリケーション・コンテンツの指定された部分が特定の仕方でエンコードされるべきであるとの指示を受領する。コンピュータ・システムは、アプリケーション・コンテンツのそれらの指定された部分がどのようにエンコードされるかを示すアプリケーション・コードをそのアプリケーションに加える。次いで、コンピュータ・システムは、アプリケーションをコンパイルするが、それにより、実行されたときにコンパイルされたアプリケーションが、アプリケーション・コンテンツの指定された部分がどのようにエンコードされるべきかを示す前記情報を、そのアプリケーション・コンテンツをエンコードするよう構成されているプロセッサまたは第二のアプリケーションに提供するようにされる。
さて、以下の議論は実行されうるいくつかの方法および方法工程に言及する。それらの方法工程はある種の順序で論じられる、あるいは特定の順序で生起するかのようにフローチャートにおいて図示されることがありうるが、明示的に述べられているまたはある工程が、該工程が実行される前に別の工程が完了することに依存しているために必要とされるのでない限り、いかなる特定の順序も必須ではないことを注意しておくべきである。
本稿に記載される実施形態は、さまざまな型のコンピューティング・システムを実装しうる。これらのコンピューティング・システムは今日、ますます幅広い多様な形を取りつつある。コンピューティング・システムはたとえば、ハンドヘルド・デバイス、機器、ラップトップ・コンピュータ、デスクトップ・コンピュータ、メインフレーム、分散コンピューティング・システムまたさらには従来コンピューティング・システムであるとは考えられていなかった装置であってもよい。本稿および請求項において、用語「コンピューティング・システム」は、少なくとも一つの物理的で有体のプロセッサと、該プロセッサによって実行されうるコンピュータ実行可能命令を有することができる物理的で有体のメモリとを含むいかなる装置またはシステム(またはそれらの組み合わせ)をも含むものとして広義に定義される。コンピューティング・システムは、ネットワーク環境上に分散していてもよく、複数の構成コンピューティング・システムを含んでいてもよい。
図1に示されるように、コンピューティング・システム101は典型的には少なくとも一つの処理ユニット102Aおよびメモリ103Aを含む。メモリ103Aは物理的なシステム・メモリであってもよく、これは揮発性、不揮発性または両者の何らかの組み合わせであってもよい。用語「メモリ」は、本稿では、物理的記憶媒体のような不揮発性の大容量記憶を指すためにも使用されうる。コンピューティング・システムが分散式である場合には、処理、メモリおよび/または記憶容量も分散されてもよい。
本稿での用法では、「実行可能モジュール」または「実行可能コンポーネント」は、ソフトウェア・オブジェクト、ルーチンまたはコンピューティング・システム上で実行されうる方法を指すことができる。本稿に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして(たとえば別個のスレッドとして)実装されてもよい。
以下の記述において、実施形態は、一つまたは複数のコンピューティング・システムによって実行される工程を参照して記述される。そのような工程がソフトウェアで実装される場合、その工程を実行する関連するコンピューティング・システムの一つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答してコンピューティング・システムの動作を指揮する。たとえば、そのようなコンピュータ実行可能命令は、コンピュータ・プログラム・プロダクトを形成する一つまたは複数のコンピュータ可読媒体上に具現されてもよい。そのような動作の例は、データの操作に関わる。コンピュータ実行可能命令(および操作されるデータ)は、コンピューティング・システム101のメモリ103Aに記憶されてもよい。コンピューティング・システム101は、該コンピューティング・システム101が有線もしくは無線のネットワークを通じて他のメッセージ・プロセッサと通信できるようにする通信チャネルをも含んでいてもよい。
本稿に記載される実施形態は、のちにより詳細に論じるようなコンピュータ・ハードウェアを含む特殊目的または汎用のコンピュータ・システムを含むまたは利用するのでもよい。システム・メモリは、全体的なメモリ103A内に含められてもよい。システム・メモリは「メイン・メモリ」と称されてもよく、メモリ・バスを通じて前記少なくとも一つの処理ユニット102Aによってアドレッシング可能なメモリ位置を含む。その場合、アドレス位置はメモリ・バス自身の上でアサートされる。システム・メモリは伝統的に揮発性だが、本稿に記載される原理はシステム・メモリが部分的またさらには完全に不揮発性である状況にも適用できる。
本発明の範囲内の実施形態は、コンピュータ実行可能命令および/またはデータ構造を担持または記憶する物理的なまたはその他のコンピュータ可読媒体をも含む。そのようなコンピュータ可読媒体は、汎用または特殊目的のコンピュータ・システムによってアクセスされることのできるいかなる利用可能な媒体であることもできる。コンピュータ実行可能命令および/またはデータ構造を記憶するコンピュータ可読媒体はコンピュータ記憶媒体である。コンピュータ実行可能命令および/またはデータ構造を搬送するコンピュータ可読媒体は伝送媒体である。よって、限定ではなく例として、本発明の実施形態は、コンピュータ記憶媒体および伝送媒体という、少なくとも二つの明確に異なる種類のコンピュータ可読媒体を含むことができる。
コンピュータ記憶媒体は、コンピュータ実行可能命令および/またはデータ構造を記憶する物理的なハードウェア記憶媒体である。物理的なハードウェア記憶媒体は、RAM、ROM、EEPROM、半導体ドライブ(「SSD」)、フラッシュメモリ、相変化メモリ(「PCM」)、光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイスまたは、本発明の開示される機能を実装するために汎用または特殊目的のコンピュータ・システムによってアクセスされ、実行されることのできるコンピュータ実行可能命令またはデータ構造の形でプログラム・コードを記憶するために使用できる他の任意のハードウェア記憶デバイスといったコンピュータ・ハードウェアを含む。
伝送媒体は、コンピュータ実行可能命令またはデータ構造の形でプログラム・コードを搬送するために使用でき、汎用または特殊目的のコンピュータ・システムによってアクセスされることのできるネットワークおよび/またはデータ・リンクを含むことができる。「ネットワーク」は、コンピュータ・システムおよび/またはモジュールおよび/または他の電子装置の間で電子データの輸送を可能にする一つまたは複数のデータ・リンクとして定義される。情報がネットワークまたは他の通信接続(有線、無線または有線もしくは無線の組み合わせのいずれでもよい)を通じてコンピュータ・システムに転送または提供されるとき、該コンピュータ・システムは、その接続を通信媒体として見ることができる。上記の組み合わせもコンピュータ可読媒体の範囲内に含められるべきである。
さらに、さまざまなコンピュータ・システム・コンポーネントに到達すると、コンピュータ実行可能命令またはデータ構造の形のプログラム・コードは自動的に伝送媒体からコンピュータ記憶媒体に(またはその逆に)転送されることができる。たとえば、ネットワークまたはデータ・リンクを通じて受領されたコンピュータ実行可能命令またはデータ構造は、ネットワーク・インターフェース・モジュール(たとえば「NIC」)内のRAMにおいてバッファリングされ、次いで最終的にコンピュータ・システムRAMおよび/またはコンピュータ・システムにおけるより揮発性の低いコンピュータ記憶媒体に転送されることができる。よって、コンピュータ記憶媒体は、伝送媒体をも利用する(またさらには伝送媒体を主として利用する)コンピュータ・システム・コンポーネントに含まれることができることが理解されるべきである。
コンピュータ実行可能命令はたとえば、一つまたは複数のプロセッサにおいて実行されたときに、汎用コンピュータ・システム、特殊目的のコンピュータ・システムまたは特殊目的の処理装置にある機能または機能群を実行させる命令およびデータを含む。コンピュータ実行可能命令はたとえば、バイナリー、アセンブリー言語のような中間フォーマット命令またさらにはソース・コードであってもよい。
当業者は、本稿に記載される原理が、多くの型のコンピュータ・システム構成をもつネットワーク・コンピューティング環境において実施されうることを理解するであろう。そうした型は、パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、メッセージ・プロセッサ、ハンドヘルド装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースまたはプログラム可能な消費者電子製品、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、携帯電話、PDA、タブレット、ポケベル、ルーター、スイッチなどを含む。本発明は、ネットワークを通じて(有線のデータ・リンク、無線のデータ・リンクまたは有線および無線データ・リンクの組み合わせによって)リンクされているローカルとリモートのコンピュータ・システム両方がタスクを実行する分散式のシステム環境において実施されてもよい。よって、分散式のシステム環境では、コンピュータ・システムは複数の構成コンピュータ・システムを含みうる。分散式のシステム環境では、ローカルおよびリモートのメモリ記憶装置の両方にプログラム・モジュールが位置していてもよい。
当業者は、本発明がクラウド・コンピューティング環境において実施されてもよいことも理解するであろう。クラウド・コンピューティング環境は分散式であってもよいが、これは必須ではない。分散式のときは、クラウド・コンピューティング環境は組織内で国際的に分散していてもよく、および/または複数の組織を横断して所有される諸コンポーネントを有していてもよい。本稿および付属の請求項において、「クラウド・コンピューティング」は、構成設定可能なコンピューティング資源(たとえばネットワーク、サーバー、記憶、アプリケーションおよびサービス)の共有されるプールへのオンデマンドのネットワーク・アクセスを可能にするためのモデルとして定義される。「クラウド・コンピューティング」の定義は、適正に展開されたときにそのようなモデルから得られる他の多くの利点のいずれかに限定されるものではない。
さらに、本稿に記載されるシステム・アーキテクチャは、全体としてのシステムの機能にそれぞれ寄与する複数の独立したコンポーネントを含むことができる。このモジュール性は、プラットフォーム・スケーラビリティーの問題に近づきつつあるときに増大した柔軟性を許容し、この目的に向け、多様な利点を提供する。システムの複雑さおよび増大は、限られた機能範囲をもつ、より小さなスケールの部分の使用を通じて、より簡単に管理できる。プラットフォームの障害耐性は、これらのゆるやかに結合されたモジュールの使用を通じて向上される。個々のコンポーネントは、ビジネス上の必要性に応じて段階的に増大させることができる。モジュール展開は、新たな機能についての市場投入までの時間の短縮にもなる。新たな機能は、コア・システムに影響することなく追加または除去できる。
図1は、少なくとも一つの実施形態が用いられうるコンピュータ・アーキテクチャ100を示している。コンピュータ・アーキテクチャ100はコンピュータ・システム101を含む。コンピュータ・システム101および113は、クラウド・コンピューティング・システムも含め、いかなる型のローカルなまたは分散式のコンピュータ・システムであってもよい。それぞれは、少なくとも一つのプロセッサ102A/102B、メモリ103A/103Bおよび通信モジュール104A/104Bを含む。通信モジュールは、有線または無線のネットワーク・カード、ブルートゥース(登録商標)無線器、WiFi無線器またはデジタル・データを送信および/または受信するよう構成された他のハードウェアを含む有線または無線の通信手段を含みうる。たとえば通信モジュール104Aは、コンピュータ・システム113の通信モジュール104Bから、エンコードされたフレーム112を受領してもよい。
いくつかの実施形態では、コンピュータ・システム113はサーバーであってもよい。サーバーは、単一のコンピュータ・システムであってもよく、あるいは分散式であってもよい。サーバーは、コンピュータ・システム101のようなクライアントにデータを提供するよう構成されていてもよい。サーバーは、入力または他のデータ要求に応答して(たとえばユーザー105からの入力に応答して)クライアントにアプリケーション・データを提供してもよい。いくつかの場合には、コンピュータ・システム113はビデオ・ゲーム・サーバーであってもよい。そのような場合、ビデオ・ゲーム・サーバーは、ビデオ・ゲーム・コンテンツをもつフレーム(たとえばエンコードされたフレーム112)を提供するよう構成されていてもよい。これらのフレームは典型的には何らかの仕方でエンコードされており、データ・パケットの形で転送される。これらのフレームは、動画を形成する連続的な一連のフレームを形成するために連続的なストリーミング方式で送られてもよい。ゲームのシナリオでは、フレームのこのストリームはビデオ・ゲーム出力をなす。ビデオ・ゲーム実施形態は本稿で頻繁に言及されるが、ビデオ・コンテンツがあるコンピュータ・システムから別のコンピュータ・システムに転送される(すなわちストリーミングされる)多数の可能な実施形態の単に一つの例であることは理解しておくべきである。
多くのビデオ・ゲームにおいて、ビデオ・ゲームのコンテンツは常時変化している。たとえば、アドベンチャー・ゲームでは、ユーザーは多くの異なる世界を旅することがあり、各世界は異なるルックアンドフィールをもち、各レベルが異なる敵、風景などをもつことがある。同じことは、一人称視点シューティングゲーム、レース・ゲーム、ロールプレイングゲームおよび他のゲームについて当てはまることがある。各レベルは異なる詳細レベルをもつことがあり、変化する詳細レベルをもつことがある。いくつかのレベルはたとえば、より低い対話性レベルをもつことがあり、よってより高いレベルの視覚的品質を提供することがある。他方、あるレベルまたはレベルの一部は、非常に高いレベルの対話性をもつことがあり、よって高品質グラフィックスよりも短い遅延を優先することがある。いくつかの状況では、ゲーム・プレーヤーまたは他の観覧者にとって特に関心があることがありうる画面〔スクリーン〕もしくはフレームのある種の領域があることがありうる。たとえば、一人称視点シューティングゲームにいるユーザーが遠くの選ばれた標的を狙って、標的を撃つ場合、ユーザーは、弾が当たったあたりの領域に追加的な詳細が与えられることを望むことがありうる。ユーザーは画面の残りの部分にはそれほど集中していないことがあり、その領域により焦点を当てていることがありうる。そのような領域は、「焦点領域」または「関心領域」と称される。
ビデオ・ゲーム(または他のアプリケーション)のプログラマーは、所与のゲームについて所与の時点においてこうした関心領域がどこにあるかについてのヒントを提供できることがある。たとえば、その領域に(そしておそらくは関心領域のまわりの指定された領域に)より高いレベルの視覚的忠実さを与えるために、関心領域に追加的なエンコード・ビットが割り当てられてもよい。こうして、プログラマーは、ゲーム自身においてこれらのヒントを提供しうる。すると、ヒントは、最終的にゲームについてのビデオ・フレームをエンコードするエンコーダに提供されてもよい。このようにして、ビデオ・ゲーム自身がゲーム固有の関心領域を提供でき、これがエンコーダに対して、エンコードされるビデオの追加的なビットがどこに割り当てられるべきかのヒントを与える。プログラマー/ビデオ・ゲームは、たとえば、ヘッドアップ・ディスプレイ(HUD)情報が常時読めるべきである画面の部分を示すことができる。こうして、ビデオ・ゲーム・ヒントは、画面上のどこをプレーヤーが見ている可能性が高いかを示すことができる。
ヒントはさらに、画面上で(すなわちビデオ・コンテンツ内で)何が現在起こっているかの指示を提供することができる。たとえば、ディスプレイは現在、黒/白に/からフェーディングしつつあることがありうる。追加的または代替的に、画面は現在、ローカルなマルチプレーヤーをサポートするために複数の領域に分割されていることがあり、それらの領域は別個に、あるいは異なるエンコード・パラメータもしくは設定をもって、エンコードされていることがある。さらに、ヒントは、3Dカメラがある方向に所与のレートで動きつつあることを示してもよい。これらは、どのようにしてヒント情報がユーザーの画面上で現在何が起こっているかの指示を提供しうるかの多くの異なる例のほんのいくつかである。
ゲーム・ヒントはさらに、ゲームの現在の対話性状態の指示を提供してもよい。たとえば、ゲームは、現在、非対話的なまたは対話性の低いコンテンツ(たとえばあらかじめレンダリングされたビデオ)を表示していることがある。そのようなシナリオでは、遅延よりもビデオ品質が重要であることがある。高度に対話的なモードでは、高いビデオ品質よりも低遅延が重要になることがある。他のシナリオでは、ゲームは、メニュー画面を表示しているときのように、中程度の対話性のモードであることがある。そのような場合、プログラマーは、ビデオ品質、遅延または他の何らかの因子のいずれがエンコード上で優先されるべきか、あるいはそれらが等しくエンコード上で優先されるべきかどうかについてのヒントを提供してもよい。
このようにして、ゲームによって提供される関心領域がエンコーダに渡されてもよく、それによりエンコーダは、それらの領域を、エンコードされるフレームの残りの部分よりも高い品質で(より多くのビットを用いて)エンコードできる。優先度付けは、最も重要な領域に対してより多くのビットが与えられ、それほど重要でない領域にいくらかのビットが割り当てられ、残りの領域には残りのビットが与えられるような仕方で適用されてもよい。
フェーディングするビデオを補償し、よりよくエンコードするために、重み付けされた予測が使われるべきであることをエンコーダに示すために、フェーディング・ヒントも使われてもよい。エンコーダに分割境界を横断する動き検索を試みないよう、あるいはそうした境界をまたぐブロックを典型的なブロックとは異なる設定を用いてエンコードするようエンコーダに告げるために、分割画面情報が使われることができる。カメラ動き情報は、エンコーダに、どの方向に動き検索マッチを見出す可能性が最も高いかのヒントを与え、より迅速にマッチを見出せるようにするために使用できる。
対話性状態ヒントは、ビデオ・エンコード品質に重点を置き、使用されるバッファリングの量を指定するために使用されてもよい。低対話性状態は、より高い品質のエンコード(たとえば双方向予測されたフレームを可能にする)およびより多くのバッファリングを許容し、ユーザーがゲームと対話しているのではなく単に見ているときに、よりなめらかな、より高品質のビデオを提供する。ゲームが高対話性状態にあるときは(ゲーム・プレイ中)、エンコードは、可能性としてはより低品質でより少ないバッファリングをもつ、可能な最低の遅延に重点を置かれてもよい。これらの概念は、それぞれ図2、図3、図4の方法200、300、400に関して下記でさらに説明する。
上記のシステムおよびアーキテクチャに鑑み、開示される主題に基づいて実装されうる方法論は、図2、図3、図4のフローチャートを参照してよりよく理解されるであろう。説明の簡単のため、これらの方法論は一連のブロックとして図示され、記述されるが、特許請求される主題はブロックの順序によって限定されないことは理解し、認識しておくべきである。いくつかのブロックは、図示され、本稿で記載されるのとは異なる順序で行なわれてもよく、および/または他のブロックと並行して行なわれてもよい。さらに、以下に記載される方法論を実装するために、すべての図示されているブロックが必要ではないことがある。
図2は、補足的なエンコード命令に応答してフレームをエンコードするための方法200のフローチャートを示している。方法200についてここで、環境100のコンポーネントおよびデータを頻繁に参照しつつ説明する。
方法200は、少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする工程(工程210)を含む。この工程は、プロセッサによって実行されてもよく、あるいは該アクセスを実行するためのコンピュータ実行可能命令を記憶しているコンピュータ可読媒体と連携したコンピューティング・システムによって実行されてもよい。フレーム情報は、フレームまたはフレームのシーケンスのある部分がどのようにエンコードされるべきかについてのヒントを含んでいてもよい。たとえば、上述したように、開発者が、フレームのある種の領域を関心領域として指示してもよい。そのような場合、関心領域がより高い視覚的品質、より低い遅延またはその両方をもつよう、これらの関心領域は追加的なエンコード・ビットを受け取ってもよい。関心領域は、開発者によって指定された他の型の処理をも受けてもよい。コンピュータ・システム113のデータ・アクセス・モジュール115は、フレーム情報114を受領してもよく、あるいはフレーム情報114が別の位置に(たとえば可能性としてはデータベースまたは他のデータ・ストアに)記憶されている場合にはそれにアクセスしてもよい。
方法200は次に、前記フレーム情報の前記一つまたは複数の部分を、そのフレームの少なくとも一つの部分をエンコードするための補足的なエンコード命令であるとして解釈する工程を含む(工程202)。フレーム情報114は、データ解釈モジュール116によって補足的なエンコード命令117であるとして解釈され、エンコードのためにエンコード・モジュール118に送られる。本稿での用法では、「補足的なエンコード命令」とは、フレーム情報114によって加えられるエンコード命令をいう。エンコード・モジュール118は典型的にはすでに、ビデオ・ゲームのようなソフトウェア・アプリケーションから情報を受領することに応答してフレームをエンコードするよう構成されている。そのような場合、エンコード・モジュール118によってエンコードされ、その後、ディスプレイ106上でユーザー105に対して可視のデコードされたフレーム119にデコードされるビデオ・ゲーム・コンテンツを、ビデオ・ゲーム・エンジンが提供する。ここでの実施形態では、エンコード・モジュール118は、フレーム情報(すなわちヒント)114を通じて提供される補足的なエンコード情報117をも考慮に入れてもよい。このようにして、開発者または他のユーザーが、アプリケーションによって通常提供されるグラフィック情報に対して補足的なエンコード・ヒントを提供しうる。次いで、エンコード・モジュール118は、前記部分(すなわち関心領域)が補足的なエンコード命令に従ってエンコードされるよう、フレーム112をエンコードする(工程230)。
いくつかの場合には、フレーム情報114は、フレーム全体またはフレームのシーケンス全体に影響することがある。他の場合には、フレーム情報114はフレームまたはフレームのシーケンスの一部のみに影響することがある。フレームのこの部分(すなわち関心領域)は、開発者によって提供されるフレーム情報114に従って、フレーム毎に動的に変化してもよい。たとえば、図6のAおよびBに示されるように、フレーム601Aはフレームの左上隅に関心領域602Aをもつことがあり、一方、フレーム601Bは中心近くに関心領域をもつことがある。映画の場合、この関心領域はあるオブジェクトが画面上に新たに現われたところ、あるいは筋の進展のために重要な何かが起こりつつあるところ、あるいは追加される劇的効果を与える何かが起こりつつあるところ、あるいは監督が観覧者に注意を集中させてほしいところであってもよい。実際、監督、アプリケーション開発者または他のユーザーが、各フレームについて、どこに関心領域があるべきか、その領域はどんなサイズおよび形か、単一のフレーム内に複数の関心領域があるかどうか、フレーム中の各関心領域においてどのような型の処理が行なわれるべきか、関心領域が単一のフレームに適用されるべきか一連のフレームに適用されるべきかなどを指定してもよい。当業者には理解されるであろうが、関心領域をフレームに適用させる人は、各フレームまたは一連のフレームについてのフレーム情報をカスタマイズし、調整することができる。
図5に示されるようないくつかの実施形態では、図1のフレーム情報114はビデオ・ゲームのフレームに対応してもよい。ビデオ・ゲームは、サーバー506(これはリモート・サーバーであってもよい)からストリーミングされる、ストリーミングされたビデオ・ゲームであってもよい。サーバー506は、ビデオ・ゲーム・コードを処理し、ビデオ・ゲーム・コンテンツ508を生成するゲーム・エンジン507を有していてもよい。このビデオ・ゲーム・コンテンツ508はエンコーダ509(または複数のエンコーダ)に送られ、そこでビデオ・ゲーム・コンテンツは、フレームのストリーム505内の単一のフレーム504としてエンコードされる。このフレームのストリーム505は有線または無線のネットワークを通じて(たとえばWiFiまたはインターネットを通じて)クライアント・コンピュータ・システム501に伝送されてもよい。クライアント・コンピュータ・システム501は、エンコードされたフレームを受領し、潜在的にはそれらのフレームに対して何らかの型の処理(たとえばデコード)を実行し、デコードされたフレーム511を観覧者/プレーヤーに対する表示のためにディスプレイ503に送る表示モジュール502(これは図1の表示モジュール111と同じであっても異なっていてもよい)を含んでいてもよい。ビデオ・ゲーム開発者は、ゲーム・アプリケーション・コード(これについては図4の方法400に関してのちにさらに説明する)内で提供される追加的なコードを介してゲーム・エンジン507にフレーム情報114を提供してもよい。
こうして、ビデオ・ゲームのコンテキストにおいて、ビデオ・ゲーム開発者は、フレームのどの部分が追加の(または異なる型の)エンコード・ビットを受け取るべきかについてのヒント(すなわちフレーム情報114)を提供できる。このようにして、ゲーム作者は、より正確なレンダリングを提供するための関心領域を特定することができ、同時に、関心領域をみつけるために画像解析が必要とされないのでエンコードの間の時間を節約することができる。フレーム情報は、所与のフレームについて、ビデオ・ゲーム・コンテキストのより一般的な指示をも提供してもよい。たとえば、ビデオ・ゲーム作者は、フレームのあるシーケンスについて、あるいはゲームの中のあるレベルについて、雪が降っていることを示してもよい。ビデオ・ゲーム作者は、エンコード・モジュール118によって、フレームの複数の部分が降っている雪片を示すためにランダムなパターンで変化することになることを示す補足的なエンコード情報として解釈されるフレーム情報114を追加してもよい。あるいはまた、ビデオ・ゲーム作者は、フレームのシーケンスがフレームの通常の色から全部白または全部黒の画面にフェードしつつあることを示してもよい。そのような場合、ビデオ・ゲーム・オブジェクトの多くは静止したままであり、その間、色のみが多色から白または黒へと変化する。これは、エンコーダに、フェードするシーケンスの間、より低い遅延よりもより高い品質を優先させることを許容しうる。
ビデオ・ゲーム・コンテキストの他の多くの型が、フレームのシーケンスのうちのあるフレームをエンコードすることにおいてエンコーダを一般的に支援するために提供されうる。たとえば、フレーム情報114は、ゲーム(または他のアプリケーション)内でのカメラ・ビューがある方向にまたはあるパターンで(たとえば右から左に、左から右に、上から下にまたは下から上に、斜めになど)動いていることを示してもよい。カメラ・ビュー情報は、エンコーダが、フレームのどの部分が、完全に新しいのではなく、単にある方向または他の方向にシフトされつつあるかを知ることを許容しうる。いくつかの場合には、カメラは3Dカメラであってもよく、よってフレーム情報114はx軸およびy軸情報のほか奥行き情報(z軸)を含んでいてもよい。このビデオ・コンテキスト・フレーム情報は、関心領域を指定するフレーム情報への追加または代替でありうる。
関心領域は、所与のレベルについて、所与のシーンについて、所与のゲーム内ビデオについて、ゲーム・プレイのあるシーケンスについて、要素のある組み合わせ(たとえばある種の武器とある種の背景または敵など)について同じであってもよく、あるいはフレーム情報114の提供者によって指定される他の要素に固有であってもよい。フレーム情報は、フレーム112/504の一部について初期関心領域が定義されるべきであることおよび関心領域が時間とともに変化することを示してもよい。たとえば、関心領域は、ビデオ・ゲーム・コンテンツにおける変化に対応して時間とともに動的に変化してもよい。上記で示したように、ゲーム開発者は、どのビデオ・ゲーム・コンテンツ変化が関心領域の変化をトリガーするかを示してもよい。たとえばレース・ゲームは、事故が起こったまたはタイヤがキーと音を立てているまたは外壁にぶつかったまたは開発者によって定義される他の状況の画面上の領域に追加的なエンコード・ビットが割り当てられることを指定してもよい。ロールプレイングゲームは、プレーヤー(たとえばヒーロー)のまわりおよび敵(たとえば最終レベルのボス)のまわりまたは他のゲーム内オブジェクトのまわりの領域において追加的なエンコード・ビットが使われるべきであることを指定してもよい。こうして、関心領域は、ゲーム開発者によってそのように指定されれば、エンコード・フレーム毎に変化することがある。
いくつかのゲームは、水平方向に分割されたとき一人のプレーヤーが上の画面でプレイし、一人のプレーヤーが下の画面でプレイする分割画面モードを提供する(垂直方向に分割される場合には左と右の画面)。そのような場合、分割画面の各レベルについてフレーム情報114が提供されてもよい。すなわち、各分割レベルが、独自の関心の点と、フレームのさまざまな部分の間でエンコード・ビットがどのように分配されるべきかを記述する独自のフレーム情報(すなわちヒント)とを有していてもよい。たとえば、分割画面モードにおけるレース・ゲームでは、上の画面のプレーヤーはガソリンがなくなりつつあることがあり、よってゲームは燃料エリアのまわりをフラッシュまたは点滅させることがありうる。開発者は、これがそのユーザーにとっての関心領域である可能性が高いことを示してもよく、よって上の画面のユーザーは(潜在的に画面上には他の場所もある中で)ガソリン計のあたりに関心領域をもつであろう。下の画面のプレーヤーはガソリンをたっぷりもっていることがあるが、事故に遭遇したことがありえ、よって事故を描くために使われる画面変化をエンコードするためにより多くのエンコード・ビットを必要とすることがありうる。追加的なエンコード・ビットは、上と下の分割画面の間で均等に分配されてもよく、あるいは動的に割り当てられてもよい。このように、一方の分割画面で進行していることがほとんどなく、他方の分割画面でより多くのことが進行している場合、後者の分割画面により多くのビットが割り当てられてもよい。ゲームまたはアプリケーション・コンテンツが変化して他方の分割画面がより多くの活動をもつようになる場合には、エンコード・ビットの割り当ては、各分割画面に最適なフレーム・エンコード品質を提供するよう、しかるべく変化してもよい。
図7に示されるように、図1からのフレーム情報114は、ヘッドアップ・ディスプレイ(HUD)情報のうち向上されるべき部分を指定するために使われてもよい。たとえば、フレーム701において、ヘッドアップ・ディスプレイ702はライフ・メーター703、武器インジケーター704および保存されているアイテムのインジケーター705を含んでいてもよい。ゲーム・プレーヤーは、ゲームをプレイしていてもよく、ここで、保存されているアイテムのインジケーター705に保存されているオブジェクトをプレーヤーが取得する。そのオブジェクトは点滅していてもよく、あるいは一時的にサイズが大きくなってもよく、あるいは他の何らかの仕方で目立ってもよい。ゲームの開発者は、関心領域706が保存されているアイテムのまわりに存在すること、保存されている領域が追加的なエンコード・ビットを受け取るべきであることを示してもよい。上記のように、ゲーム開発者は、HUDの任意の一つまたは複数の領域を関心領域として指定でき、HUD上の関心領域は時間とともに変わってもよく、および/または各フレームについて変わってもよい。このようにして、関心領域がHUDのある領域にあるかフレームの別の部分にあるかによらず、ゲーム開発者は、所与の瞬間に観覧者がフレーム上のどこを見ている可能性が最も高いかを示し、それらの領域に対して追加的な処理を実行させるためにフレーム情報114を提供してもよい。
ここで図3に目を転じると、フレームについてのエンコード情報を提供するための方法300のフローチャートが示されている。方法300についてここで環境100のコンポーネントおよびデータを頻繁に参照しつつ説明する。
方法300は、少なくとも一つのフレームに対応するフレーム情報の一つまたは複数の部分にアクセスする工程を含む(工程310)。たとえば、図1のデータ・アクセス・モジュール115は、アプリケーション・コンテンツを含む一つまたは複数のエンコードされたフレーム112に対応するフレーム情報114にアクセスしてもよい。データ解釈モジュール116は、アクセスされたフレーム情報から、そのフレームの少なくとも一つの部分が指定された仕方でエンコードされるべきであることを判別してもよい(工程320)。たとえば、上記のように、開発者または他のユーザーは、フレーム(またはその一部)がどのようにエンコードされるべきかを指定できてもよい。開発者は、関心領域を指定してもよく、それらの関心領域についてある種のエンコード方法またはエンコード上の優先事項を指定してもよい。このようにして、フレームは、開発者によって指定された仕方でエンコードされる。コンピュータ・システム113内のデータ解釈モジュール116(または別のモジュール)は、指定された仕方でエンコードされるべきである前記フレームの一つまたは複数の部分を同定する補足的なエンコード命令を生成し(工程330)、次いで、該補足的なエンコード命令をエンコーダに提供(工程340)させてもよい。こうして、補足的なエンコード情報117はエンコード・モジュール118(これ自身がエンコーダであってもよいし、あるいは該モジュールの一部としてエンコーダを含んでいてもよい)に送られることができ、そこでフレームはエンコードされてコンピュータ・システム101に渡される。コンピュータ・システム101の表示モジュール111は次いでディスプレイ106での表示のためにエンコードされたフレームをデコードしてもよい。
いくつかの場合には、コンピュータ・システム113は、フレームが対応する、アプリケーションについての対話性状態を判別してもよい。たとえば、コンピュータ・システム113は、現在大量の対話活動がある(たとえばユーザー105が現在ボタンを押しているおよび/またはジョイスティックを制御しているなど)かどうか、あるいは現在少量の対話活動がある(たとえば映画の間など)かどうかを判別してもよい。ひとたび所与のフレームに関して対話性状態が判別されたら、補足的なエンコード命令は変更されてもよい。たとえば、補足的なエンコード命令は、フレーム上の関心領域(たとえば図6のAのフレーム601における602A)を示してもよい。対話性状態は、きわめてアクティブであると判別されることがあり、よって関心領域はサイズを縮小されてもよく、あるいは判別されたきわめて対話的な状態に対応するために追加的なエンコード・ビットの数が増やされてもよい。同様に、対話性状態が低いと判別される場合には、関心領域はサイズを増大されてもよく、あるいは判別された、より低い対話性状態に整合して追加的なエンコード・ビットの数が減らされてもよい。よって、補足的なエンコード命令は、決定された現在の対話性状態に従って変更されてもよい。
さらにまた、補足的なエンコード命令自身が、判別された対話性状態に依存していてもよい。そのような場合、開発者は、関心領域の数が対話性とともに変化できること、あるいはサイズが対話性ともに変化できることなどを示してもよい。いくつかの場合には、アプリケーション(ビデオ・ゲームなど)が現在、高対話性状態にあると判別される場合、低遅延のエンコードがより高品質のエンコードより優先されてもよい。さらに、アプリケーションが低対話性状態にあると判別される場合には、より高品質のエンコードが低遅延のエンコードより優先されてもよい。異なるエンコード技法またはエンコード・ビットの異なる適用も、高対話性または低対話性のシナリオのために使われてもよい。このようにして、開発者は、補足的なエンコード命令117が変更されうる、あるいは該アプリケーションとの対話の判別されたレベルに依存しうることを指定できてもよい。開発者は、図4に関して下記に示されるアプリケーションにフレーム情報114(すなわちヒント)を追加してもよい。
図4は、エンコード・ヒントを含むソフトウェア・コードをコンパイルするための方法400のフローチャートを示している。方法400についてここで環境100のコンポーネントおよびデータを頻繁に参照しつつ説明する。
方法400は、アプリケーション・コンテンツの一つまたは複数の部分が特定の仕方でエンコードされるべきであるとの指示を受領する工程を含む(工程410)。たとえば、開発者または他のユーザー105が、フレーム上のさまざまな関心領域がユーザーによって指定される仕方でエンコードされるべきであることを示してもよい。ユーザーは、この指示を、そのユーザーからの入力を介してコンピュータ・システム101に提供してもよい。次いで、コンピュータ・システムは、アプリケーション・コード108をそのアプリケーション107に加える。ここで、追加されるアプリケーション・コードは、アプリケーション・コンテンツのそれらの指定された部分がどのようにエンコードされるべきかを示す情報109を含む。(工程420)この情報109は、最終的にデータ・アクセス・モジュール115に提供されるフレーム情報114と同様または同じであってもよい。次いで、コンピュータ・システム101のコンパイル・モジュール110は、アプリケーションをコンパイルするが、それにより、実行されたときにコンパイルされたアプリケーションが、アプリケーション・コンテンツの指定された部分がどのようにエンコードされるべきかを示す前記情報109を、そのアプリケーション・コンテンツをエンコードするよう構成されているプロセッサまたは第二のアプリケーションに提供するようにされる(工程430)。
ユーザー105によって提供される情報109は、フレーム・コンテンツのある種の部分がどのようにエンコードされるべきかを示すヒントであってもよい。このヒント情報は、アプリケーションのコードに(たとえばビデオ・ゲームのコードに)統合されてもよく、それにより、別のアプリケーション(たとえばゲーム・エンジン507)または別のプロセッサ(たとえばコンピュータ・システム113の103B)がゲーム・コードにアクセスするとき、ヒント情報109はすでにゲーム・コードの一部となっている。すると、ゲーム・エンジンはフレーム情報にアクセスし、ビデオ・ゲーム(または他のアプリケーション・コンテンツ)のフレームを、開発者によって指定される仕方でエンコードすることができる。開発者は、アプリケーション・コンテンツのさまざまな部分が、ビデオ・ゲーム・コンテンツに基づいて、フレーム内で起こっているある種のこと(たとえばある種のカメラ動きまたはある種のキャラクターまたはある種の動きなど)に基づいて、あるいは他の要因に基づいて動的に変更されることを指定してもよい。開発者は、画面のどの領域がゲーム、映画またはアプリケーションのその時点において見られている可能性が最も高いか、およびどれが追加的なおよび/または異なる型の処理を受けるべきであるかを指定してももよい。
このように、補足的なエンコード命令に応答してフレームをエンコードする方法、システムおよびコンピュータ・プログラム・プロダクトが提供される。さらに、フレームについてのエンコード情報を提供し、エンコード・ヒントを含むソフトウェア・コードをコンパイルする方法、システムおよびコンピュータ・プログラム・プロダクトが提供される。
本稿に記載される概念および特徴は、その精神または記述的な特性から外れることなく、他の具体的な形で具現されてもよい。記載される実施形態は、あらゆる観点で単に例示するものであり、制約するものではないと考えられるべきである。したがって、本開示の範囲は、上記の記述ではなく、付属の請求項によって示される。請求項の意味および等価な範囲内にはいるあらゆる変更は、その範囲に含まれる。

Claims (10)

  1. コンピュータ実行可能な命令を含んでいるメモリを含むコンピューティング・システムの一つまたは複数のプロセッサによって実行されるコンピュータ実装される方法であって、前記命令は実行されたときに前記一つまたは複数のプロセッサに当該コンピュータ実装される方法を実行させるものであり、当該コンピュータ実装される方法は、一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われ、当該コンピュータ実装される方法は:
    前記一つまたは複数のプロセッサが、データ・アクセス・モジュールを開始し、ビデオ・データのストリームからの少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする段階であって、前記フレーム情報の前記一つまたは複数の部分のうちの少なくとも一つは、前記フレーム情報における関心領域についての補足的なエンコード命令の必要性を示すために使われるヒント情報を含む、段階と;
    前記一つまたは複数のプロセッサが、前記ヒント情報を解釈するデータ解釈モジュールを開始する段階と;
    前記一つまたは複数のプロセッサが、次いで、前記フレーム情報における前記関心領域が補足的なエンコード命令に従ってエンコードされるよう、解釈されたヒント情報についての補足的なエンコード命令を生成する段階と;
    前記一つまたは複数のプロセッサが、前記補足的なエンコード命令に従って前記関心領域をエンコードするエンコード・モジュールを開始する段階と;
    前記エンコード・モジュールが前記フレーム情報をエンコードされた形で出力のために表示モジュールに送る段階とを含む、
    コンピュータ実装される方法。
  2. 前記フレーム情報は、少なくとも一つのフレームおよびビデオ・データのストリーム中の第一のフレームより後の少なくとも一つのフレームに関するコンテキストを与える、請求項1記載のコンピュータ実装される方法。
  3. 前記フレーム情報は、一つまたは複数の関心領域についてのヒント情報を含む、請求項1記載のコンピュータ実装される方法。
  4. 前記関心領域の少なくとも一つが時間とともに動的に変化する、請求項3記載のコンピュータ実装される方法。
  5. 前記ヒント情報が、現在フレーム上で観覧者が見ている可能性が最も高いところの指示によって与えられる、請求項3記載のコンピュータ実装される方法。
  6. 前記ヒント情報が、ビデオ・ゲームのビデオ・ゲーム・コンテンツに関連する現在カメラ動きの指示によって与えられる、請求項3記載のコンピュータ実装される方法。
  7. 前記ビデオ・ゲームが分割画面モードで動作しており、フレーム情報は分割画面の各レベルについて与えられる、請求項6記載のコンピュータ実装される方法。
  8. 前記フレーム情報が、向上されるべきヘッドアップ・ディスプレイ(HUD)情報の一つまたは複数の部分を示す、請求項6記載のコンピュータ実装される方法。
  9. 一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われるコンピュータ・アーキテクチャを備えたコンピュータ・システムであって、当該コンピュータ・システムは:
    コンピュータ実行可能な命令を含んでいるメモリであって、前記命令は実行されたときに前記一つまたは複数のプロセッサに、一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われる前記コンピュータ・アーキテクチャを実装するためのコンピュータ実装される方法を実行させるものであり、前記アーキテクチャによって提供される前記コンピュータ実装される方法は、
    前記一つまたは複数のプロセッサが、データ・アクセス・モジュールを開始し、ビデオ・データのストリームからの少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする段階であって、前記フレーム情報の前記一つまたは複数の部分のうちの少なくとも一つは、前記フレーム情報における関心領域についての補足的なエンコード命令の必要性を示すために使われるヒント情報を含む、段階と;
    前記一つまたは複数のプロセッサが、前記ヒント情報を解釈するデータ解釈モジュールを開始する段階と;
    前記一つまたは複数のプロセッサが、次いで、前記フレーム情報における前記関心領域が補足的なエンコード命令に従ってエンコードされるよう、解釈されたヒント情報についての補足的なエンコード命令を生成する段階と;
    前記一つまたは複数のプロセッサが、前記補足的なエンコード命令に従って前記関心領域をエンコードするエンコード・モジュールを開始する段階と;
    前記エンコード・モジュールが前記フレーム情報をエンコードされた形で出力のために表示モジュールに送る段階とを含む、
    コンピュータ・システム。
  10. 実行されたときにコンピューティング・システムの一つまたは複数のプロセッサにコンピュータ実装される命令を実行させるコンピュータ実行可能な命令を含んでいるコンピュータ可読媒体からなるコンピュータ・プログラム・プロダクトであって、前記コンピュータ実装される方法は、一つまたは複数のフレームにおける関心領域がより効果的に表示されるようビデオ・データのフレームのエンコードを制御するために使われ、前記コンピュータ実装される方法は、
    前記一つまたは複数のプロセッサが、アプリケーションの一部として提供されるビデオ・データのストリームからの少なくとも一つのフレームに関連付けられたフレーム情報の一つまたは複数の部分にアクセスする段階であって、前記フレーム情報の前記一つまたは複数の部分のうちの少なくとも一つは、前記フレーム情報における関心領域についての補足的なエンコード命令の必要性を示すために使われるヒント情報を含む、段階と;
    前記一つまたは複数のプロセッサが、前記ヒント情報を解釈するデータ解釈モジュールを開始する段階と;
    前記一つまたは複数のプロセッサが、次いで、前記フレーム情報における前記関心領域が補足的なエンコード命令に従ってエンコードされるよう、解釈されたヒント情報についての補足的なエンコード命令を生成する段階と;
    前記一つまたは複数のプロセッサが、前記補足的なエンコード命令に従って前記関心領域をエンコードするエンコード・モジュールを開始する段階と;
    前記エンコード・モジュールが前記フレーム情報をエンコードされた形で、出力のために表示モジュールに送る段階とを含む、
    コンピュータ・プログラム・プロダクト。
JP2016560782A 2014-04-11 2015-04-06 ヒントを使ったフレーム・エンコード Pending JP2017517921A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/250,542 2014-04-11
US14/250,542 US20150296215A1 (en) 2014-04-11 2014-04-11 Frame encoding using hints
PCT/US2015/024411 WO2015157135A2 (en) 2014-04-11 2015-04-06 Frame encoding using hints

Publications (1)

Publication Number Publication Date
JP2017517921A true JP2017517921A (ja) 2017-06-29

Family

ID=52829494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016560782A Pending JP2017517921A (ja) 2014-04-11 2015-04-06 ヒントを使ったフレーム・エンコード

Country Status (10)

Country Link
US (1) US20150296215A1 (ja)
EP (1) EP3130146A2 (ja)
JP (1) JP2017517921A (ja)
KR (1) KR20160143778A (ja)
CN (1) CN106163624A (ja)
AU (1) AU2015244103A1 (ja)
CA (1) CA2943391A1 (ja)
MX (1) MX2016013371A (ja)
RU (1) RU2016139473A (ja)
WO (1) WO2015157135A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021503777A (ja) * 2017-11-17 2021-02-12 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc ビデオエンコーダレンダリング向けのゲームエンジンアプリケーション
US11290515B2 (en) 2017-12-07 2022-03-29 Advanced Micro Devices, Inc. Real-time and low latency packetization protocol for live compressed video data

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3301915A1 (en) 2016-09-30 2018-04-04 Thomson Licensing Method and apparatus for omnidirectional video coding with adaptive intra most probable modes
DE112018002112T5 (de) 2017-04-21 2020-01-16 Zenimax Media Inc. Systeme und verfahren zum rendern & vorkodierte lastschätz-basierte codierer-ansprech-bezogene anwendungen
CN109806596B (zh) * 2019-03-20 2023-04-07 网易(杭州)网络有限公司 游戏画面显示方法与装置、存储介质、电子设备
US11865434B2 (en) 2019-10-01 2024-01-09 Sony Interactive Entertainment Inc. Reducing latency in cloud gaming applications by overlapping receive and decode of video frames and their display at the client
US11524230B2 (en) 2019-10-01 2022-12-13 Sony Interactive Entertainment Inc. Encoder tuning to improve tradeoffs between latency and video quality in cloud gaming applications
US11539960B2 (en) 2019-10-01 2022-12-27 Sony Interactive Entertainment Inc. Game application providing scene change hint for encoding at a cloud gaming server
US11446572B2 (en) 2019-10-01 2022-09-20 Sony Interactive Entertainment Inc. Early scan-out of server display buffer at flip-time for cloud gaming applications
US10974142B1 (en) 2019-10-01 2021-04-13 Sony Interactive Entertainment Inc. Synchronization and offset of VSYNC between cloud gaming server and client
US11833419B2 (en) * 2020-03-16 2023-12-05 Tencent America LLC Method and apparatus for cloud gaming
US11652863B2 (en) * 2020-03-16 2023-05-16 Tencent America LLC Method and apparatus for cloud gaming
CN114062988B (zh) * 2020-07-31 2023-09-22 上海联影医疗科技股份有限公司 磁共振波谱成像方法、装置、计算机设备和存储介质
EP4350683A1 (en) * 2021-10-20 2024-04-10 Samsung Electronics Co., Ltd. Display apparatus and controlling method thereof
KR20230081402A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665872B1 (en) * 1999-01-06 2003-12-16 Sarnoff Corporation Latency-based statistical multiplexing
WO2001069936A2 (en) * 2000-03-13 2001-09-20 Sony Corporation Method and apparatus for generating compact transcoding hints metadata
US20050108026A1 (en) * 2003-11-14 2005-05-19 Arnaud Brierre Personalized subtitle system
US8705614B2 (en) * 2005-04-04 2014-04-22 Broadcom Corporation Motion estimation using camera tracking movements
US9063952B2 (en) * 2006-07-31 2015-06-23 Ricoh Co., Ltd. Mixed media reality recognition with image tracking
JP5157329B2 (ja) * 2007-08-31 2013-03-06 株式会社セガ ゲーム装置
US8151215B2 (en) * 2008-02-07 2012-04-03 Sony Corporation Favorite GUI for TV
US20100034466A1 (en) * 2008-08-11 2010-02-11 Google Inc. Object Identification in Images
US20110235706A1 (en) * 2010-03-25 2011-09-29 Texas Instruments Incorporated Region of interest (roi) video encoding
EP2645713A1 (en) * 2012-03-30 2013-10-02 Alcatel Lucent Method and apparatus for encoding a selected spatial portion of a video stream
US20140038141A1 (en) * 2012-07-31 2014-02-06 Wms Gaming, Inc. Using mobile devices in wagering game environments
US9070050B2 (en) * 2012-12-20 2015-06-30 Rovi Guides, Inc. Methods and systems for customizing a plenoptic media asset
US20150133214A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Video encoding based on areas of interest
US20150248722A1 (en) * 2014-03-03 2015-09-03 Swell, Inc. Web based interactive multimedia system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021503777A (ja) * 2017-11-17 2021-02-12 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc ビデオエンコーダレンダリング向けのゲームエンジンアプリケーション
JP7221957B2 (ja) 2017-11-17 2023-02-14 エーティーアイ・テクノロジーズ・ユーエルシー ビデオエンコーダレンダリング向けのゲームエンジンアプリケーション
US11290515B2 (en) 2017-12-07 2022-03-29 Advanced Micro Devices, Inc. Real-time and low latency packetization protocol for live compressed video data

Also Published As

Publication number Publication date
US20150296215A1 (en) 2015-10-15
MX2016013371A (es) 2017-01-26
KR20160143778A (ko) 2016-12-14
CN106163624A (zh) 2016-11-23
EP3130146A2 (en) 2017-02-15
WO2015157135A3 (en) 2015-12-03
WO2015157135A2 (en) 2015-10-15
AU2015244103A1 (en) 2016-10-06
CA2943391A1 (en) 2015-10-15
RU2016139473A (ru) 2018-04-10

Similar Documents

Publication Publication Date Title
JP2017517921A (ja) ヒントを使ったフレーム・エンコード
US11446582B2 (en) System and method for streaming game sessions to third party gaming consoles
US10306180B2 (en) Predictive virtual reality content streaming techniques
US11565178B2 (en) User interface rendering and post processing during video game streaming
JP6310073B2 (ja) 描画システム、制御方法、及び記憶媒体
US8403757B2 (en) Method and apparatus for providing gaming services and for handling video content
US20180199041A1 (en) Altering streaming video encoding based on user attention
KR101523861B1 (ko) 범용 프로세서와 그래픽 프로세서 사이의 부하 분산
US9370718B2 (en) System and method for delivering media over network
US10537799B1 (en) User interface rendering and post processing during video game streaming
US10792566B1 (en) System for streaming content within a game application environment
US8860720B1 (en) System and method for delivering graphics over network
TWI750676B (zh) 用於圖形處理之資產感知計算架構
US9497238B1 (en) Application control translation
US8992330B1 (en) System and method for facilitating data model substitutions for pre-existing data objects
Barboza et al. An architecture for multi-layer object coding in 2D game streaming using shared data in a multi-user environment
US20240115957A1 (en) Systems and methods for applying a modification microservice to a game instance
US20240062456A1 (en) Variable update adaptation and simulation delay in multiuser virtual reality application
CN115228079A (zh) 虚拟场景的画面展示方法、装置、设备及存储介质
CN116850580A (zh) 游戏中的天空光照切换方法、装置和电子设备
Gaarder Video streaming into virtual worlds
JP2018033706A (ja) プログラム、及びシステム