JP5389449B2 - メディアエンコーダおよびデコーダの間のフィードバックおよびフレーム同期 - Google Patents

メディアエンコーダおよびデコーダの間のフィードバックおよびフレーム同期 Download PDF

Info

Publication number
JP5389449B2
JP5389449B2 JP2008544413A JP2008544413A JP5389449B2 JP 5389449 B2 JP5389449 B2 JP 5389449B2 JP 2008544413 A JP2008544413 A JP 2008544413A JP 2008544413 A JP2008544413 A JP 2008544413A JP 5389449 B2 JP5389449 B2 JP 5389449B2
Authority
JP
Japan
Prior art keywords
frame
decoder
encoder
cache
block
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.)
Active
Application number
JP2008544413A
Other languages
English (en)
Other versions
JP2009518956A (ja
Inventor
ヴィ.バークリー ウォーレン
ジェイ.クリノン レジス
(ブルース) リン チー−ルン
エム.ムーア ティム
ヂョン ウェイ
シィア ミンフイ(ジェイソン)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009518956A publication Critical patent/JP2009518956A/ja
Application granted granted Critical
Publication of JP5389449B2 publication Critical patent/JP5389449B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0014Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the source coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements
    • 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/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing 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 for generating different versions
    • 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/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25825Management of client data involving client display capabilities, e.g. screen resolution of a mobile phone
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • 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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client
    • 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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client
    • H04N21/6336Control signals issued by server directed to the network components or client directed to client directed to decoder
    • 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/654Transmission by server directed to the client
    • 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/6582Data stored in the client, e.g. viewing habits, hardware capabilities, credit card number
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0023Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the signalling
    • H04L1/0026Transmission of channel quality indication

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Graphics (AREA)
  • Quality & Reliability (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期に関する。
様々な形態のメディアコーダおよびデコーダにより、メディアをネットワーク内のポイントからポイントへ送信することができる。コーダとデコーダの協働する組み合わせを本明細書では「コーデック」と称する。さらに、「コーダ」および「エンコーダ」という用語を本明細書では同意語として使用する。
一般に、エンコーダは多数のデコーダと相互作用または協働することができる。これらのデコーダの全てを一様に構成してもしなくてもよく、またはこれらのデコーダの全ては同一の処理能力を有しても有さなくてもよい。さらに、デコーダは一般に、エンコーダに特性、特徴、または能力のような特定のデコーダの情報を与えるようには構成されない。本環境では、エンコーダは、全てのデコーダが同種の実体でない可能性があるとき、それらのデコーダが同種の実体であるかのようにデータをデコーダに送信することができる。
ネットワークは一般に損失チャネルにあたり、そのネットワーク経由で送信した若干のデータがまとめて破損、損傷、または失われることを見込んでいる。上記のデータ損失または破損から回復する様々な方式が提案されている。これらの回復方式の一部は、失われまたは損傷したデータの完全な複製を再送信することを含む。従って、これらの回復方式は不必要にネットワークの帯域幅を消費する恐れがある。
メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期を可能とするシステムおよび/または方法(「ツール」)を説明する。より詳細には、エンコーダは、デコーダに送信すべきソースコンテンツに基づいてフレームをエンコードすることができる。エンコーダは、エンコーダおよびデコーダによりフレームがキャッシュされるべきかどうかを決定することができる。フレームがキャッシュされるべきである場合、エンコーダはそのフレームを1つまたは複数のキャッシュ制御ビットでエンコードすることでそのように指示することができる。デコーダはフレームをそのデコーダから受信することができ、キャッシュ制御ビットを調べてそのフレームをキャッシュすべきかどうかを決定することができる。デコーダはそのフレームをデコードすることもできる。
本要約は、選択した概念を簡潔な形で紹介するために提供される。これらの概念は以下の発明を実施するための最良の形態でさらに説明する。本要約はクレーム主題の主要な特徴または本質的な特徴を特定するようには意図しておらず、クレーム主題の範囲を決定するための支援として使用するようにも意図していない。
(概要)
以下の文書は、多くの技術やプロセスの可能なシステム(複数)および/または方法(複数)(「ツール」)を説明する。以下の議論は、メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期が可能となるツールの例示的な方法を説明する。本議論はさらに、ツールが他の技術を同様に実施する方法を説明する。
本文書は便宜上、複数の部分に分類してある。限定ではなく便宜上選択した見出しでそれらの部分を紹介する。先ず、メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期を実施する例示的な動作環境を説明する。次いで例示的なデータ構造を説明し、その後例示的なデータフローを説明する。最後に例示的なプロセスフローを説明する。
本明細書では、「パケット」および「フレーム」という用語を例示や議論の便宜上
使用する。さらに便宜のため、全てのフレームが1つのパケットのペイロードに適合できるものとし、従って所与のフレームと次のフレームの区別を議論するときにパケット数がフレーム数と等しいものと仮定し得るものとする。
(動作環境)
ツールを詳細に説明する前に、以下の例示的な動作環境の議論は、ツールの様々な態様を使用し得る1つの方法の理解において読み手を助けるために提供される。以下で説明する環境は1つの例を構成するに過ぎず、ツールの適用を任意のある特定の動作環境に限定するようには意図していない。クレーム主題の精神および範囲から逸脱することなく、他の環境が使用され得る。
図1は、上記の動作環境の1つを一般的に100で示す。動作環境100は、1つまたは複数のプロセッサ(複数)104aとコンピュータ読取可能媒体106aとを有するワークステーション102aを備えることができる。ワークステーション102aは、携帯電話、デスクトップコンピュータ、携帯情報端末、サーバ、等のようなコンピューティング装置を備えることができる。プロセッサ104aは、コンピュータ読取可能媒体106aにアクセスおよび/または実行するように構成され得る。コンピュータ読取可能媒体106aは、モジュール、プログラム、またはネットワーク可能な実体と相互作用可能な他の実体として実装し得るエンコーダ108を備えたり或いはエンコーダ108に対するアクセスを有したりできる。
エンコーダ108は、ソースコンテンツ110を複数の対応フレーム112にエンコードするよう動作することができる。ソースコンテンツ110は、スピーカまたは他のパフォーマ(perfomer)を特徴とするライブプレゼンテーションなどのいくつかの異なる形態を想定できる。ソースコンテンツ110はビデオおよび/またはオーディオ会議でもよい。最後に、ソースコンテンツ110は、オーディオまたはビデオメディアなどの既存または記録済みのメディアでもよい。
動作環境100は、ネットワーク114と関連するサーバ(複数)116とを備えることもできる。ネットワーク114は、ワークステーション102とサーバ(複数)116との間の通信を可能とし、インターネットまたは企業イントラネットのようなグローバルまたはローカルの有線または無線ネットワークを備えることができる。エンコーダ108は、ネットワーク114上の送信に適したプロトコルを用いてソースコンテンツ110をフレーム112にエンコードするよう動作し得る。
サーバ(複数)116は単一のサーバまたはサーバファームなどの複数のサーバを備えることができるが、サーバ(複数)116は、他の実体と通信可能な、又は(例えば、ロードバランシングのために)個々のサーバを管理可能な、追加のサーバまたは非サーバ実体を備えることもできる。サーバ(複数)116は、例えばワークステーション102からの要求をサービスするのに直列または並列に動作する3つの別々のサーバ116a、116b、および116cで示されている。
ネットワーク114は、ワークステーション102aからのフレーム112を少なくとも1つの追加のワークステーション102bに送信するよう動作することができる。ネットワーク114は、フレーム112の全てを完全にワークステーション102aからワークステーション102bに送信しなくてもよいことが理解される。従って、図1内の参照番号112はワークステーション102aから出ていくフレームを表し、参照番号118はネットワーク114から現れてワークステーション102bに与えられるフレームを表す。フレーム118と比較して、幾つかのフレーム112がネットワーク114を通して送信中に失われ、歪み、または破損する可能性がある。従って、フレーム112の一部が失われる場合、受信したフレーム118を送信したフレーム112の部分集合(subset)と見ることができる。また、フレーム112の一部が破損する場合、受信したフレーム118を、破損した状態の送信したフレーム112と見ることができる。
ワークステーション102bの詳細に移ると、上述のワークステーション102aと同様に実装し得る。従って、ワークステーション102bは、プロセッサ(複数)104bおよびコンピュータ読取可能媒体106bを含んでもよい。コンピュータ読取可能媒体106bは、デコーダ120を備えるかまたはデコーダ120に対するアクセスを有することができる。
デコーダ120は、ネットワーク114経由でワークステーション102aから受け取るようにフレーム118を受信しおよびデコードするよう動作することができる。デコーダ120は、エンコーダ108が以前にフレーム112のエンコードに使用したものと同じプロトコルを使用してフレーム118をデコードすることになる。フレーム112に対してフレーム118が破損、損傷、または失われていないとデコーダ120が決定する場合、デコーダはこれらのフレーム118を、デコード済みコンテンツ122にデコードできる。
デコード済みコンテンツ122は、ワークステーション102b上で再生したソースコンテンツ110を表す。例えば、ソースコンテンツ110がライブプレゼンテーションである場合、デコード済みコンテンツ122はワークステーション102b経由で表示したプレゼンテーションを表すことができる。ソースコンテンツ110が口頭の会議関連のオーディオまたはビデオストリームである場合、デコード済みコンテンツ122は、別の会議参加者によって視られまたは聴かれたオーディオまたはビデオストリームでもよい。別の例として、ソースコンテンツ110が既存または記録済みのメディアである場合、デコード済みコンテンツ122はワークステーション102b経由で表示したメディアを表すことができる。
上述したものを提供することにおいて、動作環境100は単方向の性質に限定されないことが理解される。寧ろ、ワークステーション102aは幾つかの時点で特定のソースコンテンツ110を送信することができ、一方でワークステーション102bは他の時点で他のソースコンテンツ110を送信することができる。従って、本明細書の図1および他の図面に示されたデータフローは例示に過ぎず、限定ではない。
デコーダ120の処理に戻ると、フレーム118の一部がネットワーク114を介した送信中に破損または損傷したとデコーダ120が決定する場合、またはフレーム112の一部が失われワークステーション102bに決して到達しなかったとデコーダ120が決定する場合、デコーダ120はそれに従ってエンコーダ108に報告することができる。より詳細には、デコーダ120はフィードバックチャネル124を使用してエンコーダ108に報告することができる。フィードバックチャネル124は、ネットワーク114を使用して少なくとも部分的に実行することができるが、フィードバックチャネル124経由でデータをエンコードおよび/または送信するために使用するプロトコルは、フレーム112および118をエンコードおよび/または送信するために使用するプロトコルと同一であっても同一でなくともよい。ネットワーク114経由でフィードバックチャネル124を通して移動するデータが参照番号124aおよび124bで表される。ネットワーク内のエラーまたは他の問題のため、フレーム112がフレーム118と異なり得るのと同じ理由で、データ124aおよび124bは幾分異なり得る。
失われ、損傷し、または破損したフレーム112または118のレポートを受信すると、エンコーダ108は補正したまたは置き換えたフレーム112をデコーダ120に送信することができる。損傷したフレームを報告し、補正したまたは置き換えたフレーム112を送信するこの処理は、ワークステーション102b上にデコード済みコンテンツ122を生成するために、デコーダ120がフレーム118のデコードに適切な情報を有するまで繰り返すことができると理解される。
フレーム損失の報告に使用されるフィードバックチャネル124の追加の態様が以下でさらに詳細に説明される。しかしながら、フィードバックチャネル124は、デコーダ120がそれ自身に関する情報、その構成、または他の関連パラメータを通信しエンコーダ108に戻すことも可能にし得る。デコーダ120に関するこの情報が与えられると、エンコーダ108はそれに応じてそのエンコーディング処理を調整または最適化することができる。デコーダ120に関する情報の報告に用いるフィードバックチャネル124のこれらの態様も以下でさらに説明される。前述の説明を踏まえて、フィードバックチャネル124はデコーダ(複数)120に帯域外チャネルを与えてエンコーダ108と通信し得る。
明確さおよび読み易さのため図1では1つのワークステーション102bおよび関連するデコーダ120のみが示されており、それらは動作環境100の可能な実装を限定するものではないことが理解される。特に、任意の数の異なるワークステーション102bおよび対応するデコーダ120が含まれてもよく、異なるワークステーション102bおよびデコーダ120は異なる構成、特徴、容量、能力、または他の特性を有することができることが指摘される。例えば、異なるワークステーション102bは、異なる色深度、画素解像度、ディスプレイサイズ、もしくはソースコンテンツ110および/またはデコード済みコンテンツ122を処理する他の態様をサポートすることができる。各ワークステーション102bおよび/またはデコーダ120はそれぞれのフィードバックチャネル124を有し得ることがさらに理解される。このフィードバックチャネル124を使用して、ワークステーション102bおよび/またはデコーダ120は、それらのローカル環境に密接に関わる特定のローカル情報をエンコーダ108に戻すことを提供できる。
(データ構造)
本明細書で説明しおよび例示したツールは、データ構造をそのツールの実装および/または動作の一部として利用して、メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期を行うことができる。上記データ構造の例がここで説明される。
図2はデータ構造200を示すもので、データ構造200の少なくとも一部は、図1に示されたフレーム112および/または118のそれぞれのインスタンスの実装に適している可能性がある。例えばエンコーダ108およびデコーダ120がリアルタイム転送プロトコル(RTP)を実装することのみを仮定して、データ構造200は、所与のフレーム112および/または118に対してRTP標準ヘッダに関するフィールド205と、フレーム112および/または118のペイロードと考えられるデータを含むフィールド210とを含むことができる。さらに、データ構造200は追加のヘッダデータに対するフィールド215を含むことができる。フィールド215に含まれるデータは、エンコーダ108およびデコーダ120により使用される基本的なプロトコルに対する拡張と考えられ得る。図2に示す例では、プロトコルはRTPであることができるが、他のプロトコルを等しく適用可能であることもまた理解される。
フィールド215のより詳細に移ると、図2は特定のフレーム112および/または118に対するフィールド215に含まれ得るデータの幾つかの例を示す。サブフィールド220は1つまたは複数のキャッシュ制御ビットを含むことができる。これらのキャッシュ制御ビット220は、エンコーダ108が、デコーダ120によって特定のフレーム112および/または118のキャッシングを制御および/または管理するのを可能にできる。これらのビット220は、エンコーダ108とデコーダ120の幾つかとの間のフレーム回復および同期動作をサポートすることができる。このフレームキャッシング動作が以下でさらに詳細に説明される。
サブフィールド222は、所与のフレーム112および/または118に対して、それがどのようなタイプのフレームであるかを示すことができる。図2には3つのタイプのフレームを示してあるが、他のタイプのフレームが実装されてもよく、実装したフレームを本明細書で述べたものと異なる名前付けまたはラベル付けできることも理解される。
サブフィールド222に示すように、Iフレームは、例えばオーディオまたはビデオのようなコンテンツの完全な自己完結型フレームを表す。Iフレームは「独立」しており、他の以前のまたは後続のフレームを参照することなくデコーダ120によりデコードされおよび再生され得る。
Pフレームは、オーディオまたはビデオの現在状態と以前のIフレームとの間の差分を表す。従って、Pフレームは以前のIフレームを参照すると言うことができる。Pフレームはこの以前のIフレームに対する差分のみを表すデータを含むので、Pフレームは一般にIフレームより非常に小さい。ネットワーク114に渡る帯域幅を節約するため、Pフレームを可能な限り利用することが適切であろう。ソースコンテンツ110が一定の時間に渡って比較的少さな動作を示すとき、エンコーダ108は一連のPフレームを使用することができる。なぜならばそのような状況下では、後続のフレームにおける差分は一般的に相対的に小さく、Pフレームにより容易に表されるからである。しかしながら、ソースコンテンツ110が一定の時間に渡って比較的大きな動作を示すか、もしくはシーンまたはコンテクストの大幅な変化を示すとき、エンコーダ108は新規のシーンまたはコンテクストを設定するために1つまたは複数のIフレームを使用することができる。また、ワークステーション102bおよび/またはデコーダ120によって生じた損失率が、ワークステーション102aおよび/またはエンコーダ108に報告され得る。次いで、エンコーダ108はデコーダ120によって報告された損失率を、IフレームまたはPフレームをデコーダ120に送信するかどうかの決定において考慮することができる。さらに、報告された損失率は、フレーム速度、ビット速度、品質、およびスーパーPフレーム(Super−P frame)を送信するかどうか、の制御における1つの因子となり得る。
サブフィールド222は追加のタイプのフレーム112および/または118をサポートすることもできる。そのフレームを本明細書では限定ではなく便宜上、スーパーPフレームと称する。スーパーPフレームはそれがコンテンツ内の変化をそのコンテンツの以前の状態に対して定義する点でPフレームと似ている。しかしながら、以前のフレームを参照する代わりに、スーパーPフレームはデコーダ120上でローカルに維持されるキャッシュの内容を参照する。このキャッシング動作が以下でさらに詳細に説明される。
サブフィールド224は、所与のフレーム112および/または118に対する索引または他のタイプの一意な識別子を含むことができる。例えば、サブフィールド224の内容は、フレームまたはパケットに対するシーケンス番号、一意なタイムスタンプ、所与のフレーム112および/または118のソースコンテンツ110のコンテクストにおけるオフセットまたは位置、所与のフレーム112および/または118のソースコンテンツ110の先頭に対する変位、等の形態を取ることができる。
ワークステーション102aでソースコンテンツ110をフレーム112にエンコードするとき、どのような形態であれ、サブフィールド224の内容をエンコーダ108により埋めることができる。ワークステーション102bで、デコーダ120は、複数のフレーム118をデコード済みコンテンツ122にデコードし組み立てるとき、所与のフレーム118に対するサブフィールド224の内容を参照することができる。より詳細には、サブフィールド224の内容は、デコーダ120が、デコード済みコンテンツ122を提示するときにフレーム118を適切な順序に組み立てることを可能にすることができる。さらに、デコーダ120は、エンコーダ108により送信した1つまたは複数のフレーム112がネットワーク114を通してワークステーション102bに送信する間に失われたかどうかを決定するために、サブフィールド224の内容を少なくとも部分的に使用することができる。
前述したことの例として、デコーダ120はA、B、およびDなどの識別子224を有する一連の所与のフレーム118を受信してもよい。しかしながら、デコーダ120はこれら3つのフレーム118がA、B、およびCとして識別子224を有すると期待する恐れがある。デコーダ120が幾分かの時間フレームCを受信しないと、デコーダ120は、期待したフレームCに対応するフレーム112が決して到達することはなく、ネットワーク114内で失われたと結論付けるかもしれない。それゆえに、デコーダ120はデコーダ120に対し、パケットCが失われたことを例えばフィードバックチャネル124を通して報告してもよい。
サブフィールド226は、特定のデコーダ120の特性または構成に基づいてエンコーダ108が実施する色空間変換に関するデータを含むことができる。上記図1の議論から、デコーダ120の特定のインスタンスは、それらのローカル色表示能力または特徴に関連する情報をエンコーダ108に対して、例えばフィードバックチャネル124経由で送信し戻すことができることを思い出さなければならない。特定のデコーダ120からのこのフィードバックに応じて、エンコーダ108は、その特定のデコーダ120の各々に送信されたフレーム112を具体的に調整することができる。所与のデコーダ120の代わりにエンコーダ108によって実施された特定の色変換に関連する任意のデータは、サブフィールド226に格納され得る。例えば、ソースコンテンツ110は、256色の例示的な範囲で取り込まれ、エンコーダ108に提示され得る。しかしながら、所与のデコーダ120が16色をサポートし表示できるに過ぎない場合、256色をサポートするフレーム112をこの所与のデコーダ120に送信することは有用ではないであろう。従って、エンコーダ108はデコーダ120に対し、サブフィールド226に含まれるデータを通して、フレーム112内で表されたものをデコーダ120によってサポートされる色に変換する方法を指示してもよい。前述したことに加え、またはその代わりとして、エンコーダ108はサブフィールド226内のデータを通して、エンコーダ108がフレーム112内の色をどのように既に変換したかをデコーダ120のために示してもよい。
サブフィールド228は、特定のデコーダ120の代わりにエンコーダ108が実施した任意の画素解像度変換に関連するデータを含むことができる。上記図1の議論から、デコーダ120の特定のインスタンスはそれらの画素解像度などのデータを例えばフィードバックチャネル124経由でエンコーダ108に送信できることを思い出さなければならない。色深度に関するサブフィールド226の上述の議論を参照すると、サブフィールド228は、画素解像度に関して同様な処理を可能にできる。例えば、ソースコンテンツ110は、相対的に高い画素密度で取り込まれ、エンコーダ108に提示され得る。しかしながら、1つまたは複数のデコーダ120がこの高い画素密度をサポートしない可能性があり、異なるデコーダ120が異なる画素密度をサポートする可能性がある。従って、エンコーダ108は、異なるデコーダ120に送信した異なるフレーム112の画素密度を、その異なるデコーダ120の能力に応じて最適化してもよい。従って、サブフィールド228は、エンコーダ108によって行われた画素解像度における任意の変換に関連する任意の情報、またはフレーム118の処理においてデコーダ120が行うべき任意の変換に関連する任意の情報を含むことができる。
フィールド205−215およびサブフィールド220−228の前述の例を説明によって、データ構造200の様々な実装は1つまたは複数のこれらの例示的なフィールド205−215またはサブフィールド220−228を含むことができ、または図2に示したもの以外の追加のデータ、フィールド、またはサブフィールドを含むことができることが理解される。さらに、データ構造200のフィールドまたはサブフィールドのレイアウト、名前、および構成は例に過ぎず、例示および説明の便宜を図るためにのみ選択したものであり、データ構造200の可能な実装を限定しない。さらに、データ構造200の所与のインスタンスを特定のフレーム112に関連付けることができるが、データ構造200の各インスタンスは、図2に示すように各フィールドおよび/またはサブフィールドに埋めておく必要はないことが理解される。
図3はデータ構造300を示しており、データ構造300の少なくとも一部は図1に示すフィードバックチャネル124のそれぞれのインスタンスの実装に適し得る。より詳細には、デコーダ120のそれぞれのインスタンスからエンコーダ108へのデータ送信を、少なくとも部分的に、データ構造300を使用して容易にすることができる。
データ構造300のより詳細に移ると、フィールド305は、デコーダ120の幾つかで生じたローカルフレームまたはパケットの損失率を報告するデータを含むことができる。この損失率は、例えば特定のデコーダ120で生じた時間単位当りの損失フレーム数として表現することができる。この情報が与えられると、エンコーダ108はIフレームまたはPフレームのデコーダ120への送信頻度を選択することができる。また、この情報は、特定のフレーム112/118をキャッシュするようデコーダ120に命令または指示する時期および/または頻度を、エンコーダ108が決定するのを可能にできる。これらのキャッシング動作は、図4−6に関連してさらに以下で議論される。
フィールド310は特定のフレーム112/118の損失を報告するデータを含むことができる。フレーム損失の報告において、デコーダ120は、図2に示すサブフィールド224に関して前に議論したようなデータを参照することができる。サブフィールド224は、特定のフレーム112/118に対する識別情報を含むことができることを思い出さなければならない。例えば、デコーダ120は1つまたは複数のフレーム112が失われていると疑う場合、デコーダ120は実際に受信した一連のフレーム118を報告することができ、その結果、エンコーダ108はどのフレーム112が失われたかを決定することができる。別の例では、デコーダ120は失われたと疑われるフレーム112に対する識別情報を推測または決定することができる。
フィールド315は、特定のデコーダ120がサポートするローカル画素解像度を表すデータを含むことができる。デコーダ120が報告したこのデータ315に応じて、エンコーダ108は、デコーダ120に送信したフレーム112/118の画素解像度を変換することができ、デコーダ120に対してフレーム112/118の画素解像度の変換方法を指示することができ、または他の関連処理を実施することができる。前述したようなことは、図2に示すサブフィールド228と関連して実施され得る。
フィールド320は、特定のデコーダ120がサポートするローカル色深度を表すデータを含むことができる。デコーダ120が報告したこのデータ320に応じて、エンコーダ108はデコーダ120に送信したフレーム112/118の色深度を変換することができ、デコーダ120に対してフレーム112/118の色深度の変換方法を指示することができ、または他の関連処理を実施することができる。前述したようなことを、図2に示すサブフィールド226と関連して実施することができる。
フィールド305−320の前述の例の説明によって、データ構造300の様々な実装は1つまたは複数のこれらの例示的なフィールド305−320を含むことができ、もしくは図3に示したもの以外の追加のデータ、フィールド、またはサブフィールドを含むことができることが理解される。さらに、データ構造300のフィールドのレイアウト、名前、および構成は例に過ぎず、例示および説明の便宜上としてのみ選択したものであり、データ構造300の可能な実装を限定しない。さらに、データ構造300の所与のインスタンスは、デコーダ120からエンコーダ108に送信したデータの特定のインスタンスに関連付けることができることが理解される。しかしながら、データ構造300の各インスタンスは図3に示すように各フィールドに埋めておく必要はない。
(データフロー)
本明細書で説明したツールは、メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期の実施に適したデータフローを実装することができる。例示的なデータフローを別の動作環境と関連して説明する。
図4は、フレーム118を受信し、新規フレーム118を以前のディスプレイと統合して最新のディスプレイを生成し、フレーム118をキャッシュし、および新規フレーム118とキャッシュの内容とを統合して最新のディスプレイを生成するための動作環境400を示す。動作環境400は、少なくとも部分的に、ワークステーション102bおよび/またはデコーダ120により実装され得るが、動作環境400の態様は、同様に他の構成要素またはツールによっても実装され得る。
時刻(T)でフレーム118aが受信されると仮定する。図2に関連して上で議論したように、フレーム118は、データ構造200のそれぞれのインスタンスと関連付けることができることを思い出さなければならない。さらに、フレーム118aに対するデータ構造200のフィールド222は、フレーム118aがIフレームであることを示すと仮定する。フレーム118aはIフレームであるので、フレーム118aは、例えばワークステーション102bに関連付けたディスプレイ402上に直接提示され得る。便宜上、Iフレーム118aを提示するときに有効になるディスプレイ402を図4ではディスプレイ402aとして示されている。
図2の議論から、フレーム112/118に対するデータ構造200は、キャッシュ制御ビット220を含み得ることが思い出さなければならない。動作環境400を説明する目的で、データ構造200は2つのキャッシュ制御ビット220を含むと仮定する。第1のキャッシュ制御ビットは「Cache」とラベル付けされ、少なくとも第2のキャッシュ制御ビットは「Use Cache」とラベル付けされることができる。これらのビットのいずれかまたは両方は、所与のフレーム118に対して設定されまたはアクティブにされ得る。
先ず「Cache」ビットについて述べる。このビットが所与のフレーム112/118に対して設定されるとき、このビットはデコーダ120にフレーム112/118、および/またはそのフレーム112/118から生ずるディスプレイを、ワークステーション102bおよび/またはデコーダ120がローカルに維持するキャッシュ404に格納するよう命令する。従って、図4に示す例では、ブロック406で示すように、Iフレーム118aは設定されまたはアクティブな「Cache」ビットを有すると仮定している。従って、Iフレーム118aはディスプレイ402aとして提示され、キャッシュ404に格納されるであろう。
動作環境400の幾つかの実装は、デフォルトでIフレーム112/118の全てのインスタンスをキャッシュすることができる。動作環境400の他の実装は、それらの「Cache」ビットが設定されまたはアクティブなIフレーム112/118のみをキャッシュしてもよい。
時刻(T)でフレーム118bが到達し、そのフレームタイプ222はそれがPフレームであることを示すと仮定する。Pフレームは、ソースコンテンツ110の現在状態と幾つかの以前の参照フレームとの間の差分を表すことを思い出さなければならない。従って、マージブロック408aで表すように、フレーム118bの内容が以前のディスプレイ402aと統合される。マージ408aは、最新のディスプレイ402bをもたらす。
Pフレーム118bの処理を説明によって、一般的にPフレーム118はその「Cache」ビットを設定しまたはアクティブにできることに留意されたい。上記の場合において、動作環境400の幾つかの実装では、Pフレーム118自体の内容はキャッシュ404に格納され得る。他の実装では、Pフレーム(例えば、フレーム118b)の統合から生ずるディスプレイ(例えば、ディスプレイ402b)がキャッシュされ得る。
時刻(T)でフレーム118cが到達し、そのフレームタイプ222はそれがPフレームであることを示すと仮定する。この場合において、マージブロック408bで表すように、フレーム118cの内容が以前のディスプレイ402bと統合される。マージ408bは、最新のディスプレイ402cをもたらす。しかしながら前述したことは、フレーム118cが実際に動作環境400に到達することを仮定している。フレーム118cが動作環境400で到達できなかった場合、最新のディスプレイ402cは存在しないであろう。さらに、動作環境400がフレーム損失を検出する時には、以前のディスプレイ402bは有効期限切れであるか、または無効となっているかもしれない。この場合、エンコーダ108はフレーム損失の通知をもらうことができる。例えば、図3のブロック310および関連する議論を参照のこと。
フレーム損失レポート310に応答して、エンコーダ108は置換Pフレーム118dを送信することができる。動作環境400は、この置換Pフレーム118dを時刻(T)で受信すると仮定する。ブロック410で示すように、置換Pフレーム118dに対するキャッシュ制御ビット220はその「Use Cache」ビットを設定しまたはアクティブにすることができる。「Use Cache」ビットは、動作環境400に、現在のPフレーム118dと以前のディスプレイではなくキャッシュ404の内容とを統合するよう命令する。このキャッシュからの統合は、マージブロック408cで一般的に表される。
この置換Pフレーム118dは、以前のIフレームではなくキャッシュした参照フレームに対してエンコードされるので、このPフレーム118dを本明細書では上述のようにスーパーPフレームと称する。エンコーダ108はキャッシュした参照に基づいてスーパーPフレーム118dをエンコードするので、スーパーPフレーム118dは置換Iフレーム118より非常に小さくなる。従って、フレーム損失を補うためのスーパーPフレーム118dの送信は、置換Iフレーム118を送信するよりも少ないネットワーク帯域幅を消費する。
幾つかの実装では、破損したフレームがデコーダ120に到達する次のIフレーム118eと十分に近い場合、エンコーダ108はスーパーPフレーム118dを送信しなくともよい。上記の実装では、デコーダ120は次のIフレーム118eを待ってもよい。デコーダ120は、この処理を行うために破損フレームが次のIフレーム118eとどの程度近くなければならないかに関連して指定する1つまたは複数の設定で構成され得る。
スーパーPフレーム118dがキャッシュ404の内容と統合された後、ディスプレイ402dが生ずる。図4はさらに、時刻(T)で新規のIフレーム118eが到達し、新規のディスプレイ402eが生ずることを示す。
図4では、例示および説明の便宜上としてのみ1つのキャッシュ404を示してあることに留意されたい。複数の参照フレーム112/118がエンコーダ108および/またはデコーダ120により格納および保持できるように、追加のキャッシュ404がエンコーダ108および/またはデコーダ120により与えられ得る。これらの複数の参照フレーム112/118は、1つまたは複数のキャッシュしたフレーム112/118が破損しまたは失われた可能性のある場合に役立ち得る。複数のキャッシュ404が実装される場合、所与の置換フレーム112/118をエンコードするためにどのキャッシュ404を使用したかを要求または示すのに適すように追加のキャッシュ制御ビット(例えば、図2のキャッシュ制御ビット220)が実装され得る。
さらにキャッシュ制御ビット220は、置換フレーム112/118のキャッシングおよび関連する同期の扱い方についてエンコーダ108がデコーダ120に指示できるための手段を提供することに留意されたい。最後に、エンコーダ108およびデコーダ120でキャッシュした参照フレーム、およびそこからエンコードした置換フレーム112/118は、エンコーダ108およびデコーダ120の処理の同期をとるための手段を提供する。
(プロセスフロー)
本明細書で説明したツールは、メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期を実施する様々なプロセスフローを実行することができる。上記プロセスフローの例がここで説明される。
図5に示すプロセスフロー500は、フレームのエンコードやパケット損失レポートへの応答が実施され得る。プロセスフロー500は、ここではエンコーダ108に関連して説明される。しかしながら、プロセスフロー500は、本明細書の精神および範囲から逸脱することなくエンコーダ108以外の装置または構成要素上で実行できることが理解される。
ブロック502はソースコンテンツ110からの1つまたは複数のフレームをエンコードする。ブロック504は後に起こりうる参照のためカレントフレーム112をキャッシュすべきかどうかを判定する。フレーム112がキャッシュされるべきである場合、ブロック506は「Cache」ビットをカレントフレーム112に対して設定する。「Cache」ビットは、図2に示すキャッシュ制御ビット220の一部として実装できることを思い出さなければならない。ブロック508はカレントフレーム112を後の参照のためキャッシュする。例えば、カレントフレーム112は、エンコーダ108によりキャッシュされ得る。ブロック510はカレントフレーム112をデコーダ120に送信する。例えばデコーダ120でのフレーム112の例示的な処理は、図6に関連して以下で説明される。
ブロック504に戻ると、カレントフレーム112がキャッシュされるべきでない場合、ブロック512はこのフレーム112に対して「Cache」ビットをクリアする。幾つかのインスタンスでは、フレーム112がインスタンス化されるときに「Cache」ビットは設定またはクリア状態に初期化され得る。上記の場合、「Cache」ビットの状態をその初期化状態から変更する必要がないならば、ブロック512または506を実施しなくともよい。
ブロック512の後、プロセスフロー500は上述したようなブロック510に進む。ブロック510を実施した後、プロセスフロー500は、ソースコンテンツ110がエンコードされる次のフレーム112を処理するためにブロック502に戻ることができる。プロセスフロー500は、ソースコンテンツ110を適切なフレーム112にエンコードするのに適するようにブロック502−512を通してループしてもよいことが理解される。
ブロック502−512の処理中の任意の時点で、ブロック514はフレーム損失レポート310を受信することができる。ブロック514は、プロセスフロー500内の任意の点で起こり得る。プロセスフロー500は、ブロック502−512における任意の点でフレーム損失レポート310の受信に対しテストしまたはそれに応答してもよい。さらに、プロセスフロー500は、割り込みとしてブロック514を実行しても、ブロック502−512内の幾つかの点から分岐してその割り込みを処理しても、(以下で説明する)ブロック516−522を割り込み処理ルーチンとして実施しても、および割り込みを受信したブロック502−512内の点に戻ってもよい。例示の便宜上、図5は、プロセスフロー500がブロック502−512内のどこにいるかに関わらずフレーム損失レポート310を受信したときにブロック514に分岐するプロセスフロー500を示している。
ブロック516は、以前にブロック508でキャッシュされたフレームを参照する。ブロック518は、そのキャッシュしたフレームに対して、またはそのキャッシュしたフレームを参照して、新規のPフレームをエンコードする。ブロック520は、新規のPフレームの「Use Cache」ビットを、それがまだ設定されていない場合に設定する。図2で示し議論したキャッシュ制御ビット220は、「Use Cache」ビットを含んでもよく、この「Use Cache」ビットは、カレントディスプレイ402を更新するとき、例えばデコーダ120に命令して、カレントディスプレイ402ではなくキャッシュ404の内容を参照することを思い出さなければならない。この新規のPフレームは、本明細書では便宜上としてのみスーパーPフレームと称する。ブロック514で報告したフレームの損失をデコーダ120が補うことができるように、ブロック522はスーパーPフレームをデコーダ120に送信する。
図6は、例えばデコーダ120が受信するフレームを処理するプロセスフロー600を示す。プロセスフロー600は本明細書では、デコーダ120やエンコーダ108などのツールと関連して説明されるが、プロセスフロー600の他の実装を、本明細書の説明の精神および範囲から逸脱することなく他のツールで実装することもできる。
ブロック602は、例えば図5に示すブロック510で送信したフレーム118を受信する。ブロック604は、受信したフレーム118が破損しているかどうか、または異なるフレーム118を予測したかどうかをテストする。フレームの破損に関して、ブロック604は例えば、デコーダ120および/またはエンコーダ108が実装するチェックサムまたは他のエラー検出訂正方式を判定することで、破損をテストできる。図2で上述したように、フレーム損失に関して、フレーム118はデータ構造200のそれぞれのインスタンスと関連付けられ得ることを思い出さなければならない。データ構造200は、フレーム118を順序付けたり或いは一意に識別するフィールド224を含むことができる。例えばこのフィールド224を使用して、ブロック604は、カレントフレーム118が以前のフレーム118の後に来ることが予測されるかどうかをテストできる。そうでなければ、予測した後続フレーム118が失われている恐れがある。
カレントフレーム118が破損しているかまたは予測したものでない場合、ブロック606はその失われまたは破損したフレームを報告する。ブロック606から発行したレポートは、図5に示すブロック514で受信したレポートや図3に示すフレーム損失レポート310に相当し得る。
カレントフレーム118が破損しておらず、かつ予測した後続フレームである場合、ブロック608、610、および612はフレーム118のフレームタイプが何かをテストすることができる。データ構造200はフレームタイプを示すサブフィールド222を含み得ることを思い出さなければならない。ブロック608はフレーム118がIフレームであるかどうかをテストし、ブロック610はフレーム118がPフレームであるかどうかをテストし、ブロック612はフレーム118がスーパーPフレームであるかどうかをテストする。
ブロック608に戻ると、フレーム118がIフレームである場合、ブロック614は、カレントディスプレイまたは任意の他のフレーム118を参照することなくフレーム118を直接表示することができる。ブロック610で、フレーム118がPフレームである場合、ブロック616はカレントディスプレイを、それをフレーム118と統合することで更新する。ブロック614は次いで、その最新のフレームを表示する。ブロック612で、フレーム118がスーパーPフレームである場合、ブロック618はディスプレイを、それを図4に示すキャッシュ404などのキャッシュの内容と統合することで更新する。スーパーPフレームは、設定されまたはアクティブにされている「Use Cache」ビットにより示されるかまたは検出されることが可能なことを思い出さなければならない。ブロック614は次いで、その最新のディスプレイを表示する。
ブロック612から、フレーム118がIフレームでも、Pフレームでも、スーパーPフレームでもない場合、ブロック620はこの他のタイプのフレームを処理することができる。その後、プロセスフロー600はブロック602に戻って次のフレーム118を待機することができる。
ブロック614から、ブロック622は「Cache」ビットがフレーム118に対して設定されているかどうかをテストする。そうならば、ブロック624はフレーム118を、例えば図4に示すキャッシュ404などのキャッシュに格納する。ブロック602はそして次のフレーム118の到着を待機する。ブロック614に戻ると、「Cache」ビットがフレーム118に対して設定されていない場合、ブロック624は飛ばされてもよく、ブロック602はそして次のフレーム118の到着を待機する。
(結論)
システムおよび方法を構造的特徴および/または方法論的動作に固有な言葉で説明してきたが、添付の特許請求の範囲で定義したシステムおよび方法は説明した特定の特徴または動作に必ずしも限定されないことは理解されるべきである。寧ろ、その特定の特徴および動作は、クレームしたシステムおよび方法を実装する例示的な態様として開示してある。
さらに、本明細書で説明および例示した特定のフロー図に関して、本明細書の説明の精神および範囲から逸脱することなく、その中で示したプロセスおよびサブプロセスは、そられ例示したもの以外の順序で実施できることに留意されたい。
メディアエンコーダとデコーダの間のフィードバックおよびフレーム同期の実施に適した動作環境を示すブロック図である。 その少なくとも一部は図1に示すフレームのそれぞれのインスタンスの実装に適し得るデータ構造を示すブロック図である。 その少なくとも一部は図1に示すフィードバックチャネルのそれぞれのインスタンスの実装に適し得るデータ構造を示すブロック図である。 フレームを受信すること、新規フレームを以前のディスプレイと統合して最新のディスプレイを生成すること、フレームをキャッシュすること、および新規フレームをキャッシュの内容と統合して最新のディスプレイを生成することに対する動作環境を示すブロック図である。 フレームのエンコードとフレーム損失レポートへの応答を実施し得るプロセスフローを示すフロー図である。 例えばデコーダにより受信したフレームを処理するプロセスフローを示すフロー図である。

Claims (8)

  1. エンコーダとデコーダとの間でフィードバックおよびフレーム同期を行うために、エンコーダにおいて実行される方法であって、
    ソースコンテンツに基づいて少なくとも1つのフレームをエンコードするステップと、
    前記フレームをエンコーダおよび少なくとも1つのデコーダにキャッシュするかどうかを決定するステップと、
    前記決定に応じて、前記フレームに関連付けられた少なくとも1つのキャッシュ制御ビットをエンコードするステップであって、前記少なくとも1つのキャッシュ制御ビットをエンコードするステップは、前記フレームが前記エンコーダおよび前記デコーダでキャッシュされるべきことを示すように前記キャッシュ制御ビットを設定するステップを含む、エンコードするステップと、
    前記エンコーダで前記フレームをキャッシュするステップと、
    前記フレームを前記デコーダに送信するステップと
    前記デコーダから、前記エンコーダが送信した一連のフレームのうち少なくとも1つの追加のフレームが失われたかまたは破損したことを報告するデータを含む損失レポートを受信するステップと、
    前記損失レポートの受信に応答して、少なくとも1つのキャッシュしたフレームを参照し、参照フレームに基づいて前記少なくとも1つの追加のフレームに対する置換フレームをエンコードするステップと
    を備え、前記デコーダから、前記デコーダによりサポートされる画素解像度または色深度を表すデータを受信するステップをさらに備えることを特徴とする方法。
  2. 前記少なくとも1つの追加のフレームに対する前記置換フレームを前記デコーダに送信するステップをさらに備える請求項に記載の方法。
  3. 前記置換フレームに関連付けられた少なくとも1つの追加のキャッシュ制御ビットを設定するステップをさらに備え、前記追加のキャッシュ制御ビットは、前記参照フレームに基づいて前記置換フレームがエンコードされることを示すことを特徴とする請求項に記載の方法。
  4. 前記少なくとも1つのフレームをエンコードするステップを、前記デコーダの前記画素解像度または前記色深度を表す前記データに基づいて実施することを特徴とする請求項1に記載の方法。
  5. エンコーダとデコーダとの間でフィードバックおよびフレーム同期を行うために、デコーダにおいて実行される方法であって、
    ソースコンテンツからエンコードした少なくとも1つのフレームを受信するステップと、
    前記フレームをキャッシュするかどうかを決定するステップであって、前記フレームに関連付けられた少なくとも1つのキャッシュ制御ビットをテストするステップを含む、決定するステップと、
    前記フレームをデコードするステップと、
    前記フレームに関連付けられた少なくとも1つのキャッシュ制御ビットが設定されていると決定したことに応じて、前記フレームをキャッシュするステップと、
    前記エンコーダから送信された一連のフレームのうち少なくとも1つの追加のフレームが失われたかまたは破損したことを報告するデータを含む損失レポートを、前記エンコーダに送信するステップと、
    前記損失レポートの送信に応答して、前記エンコーダから前記少なくとも1つの追加のフレームに対する置換フレームを受信するステップであって、前記置換フレームは、少なくとも1つのキャッシュされたフレームへの参照に基づいてエンコードされている、ステップと
    を備え、前記デコーダがサポートする画素解像度または色深度を表すデータを前記エンコーダに送信するステップをさらに備えることを特徴とする方法。
  6. 前記フレームが破損しているかどうかを決定するステップ、および少なくとも1つの追加のフレームが失われているかどうかを決定するステップのうち少なくとも1つをさらに備える請求項に記載の方法。
  7. 前記フレームに関連付けた少なくとも1つのキャッシュ制御ビットをテストすることで、キャッシュした参照フレームに基づいて前記フレームをエンコードするかどうかを決定するステップをさらに備える請求項に記載の方法。
  8. 前記置換フレームを少なくとも1つのキャッシュした内容と統合するステップをさらに備える請求項に記載の方法。
JP2008544413A 2005-12-07 2006-12-07 メディアエンコーダおよびデコーダの間のフィードバックおよびフレーム同期 Active JP5389449B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/275,071 US7716551B2 (en) 2005-12-07 2005-12-07 Feedback and frame synchronization between media encoders and decoders
US11/275,071 2005-12-07
PCT/US2006/046221 WO2007067479A1 (en) 2005-12-07 2006-12-07 Feedback and frame synchronization between media encoders and decoders

Publications (2)

Publication Number Publication Date
JP2009518956A JP2009518956A (ja) 2009-05-07
JP5389449B2 true JP5389449B2 (ja) 2014-01-15

Family

ID=38120188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008544413A Active JP5389449B2 (ja) 2005-12-07 2006-12-07 メディアエンコーダおよびデコーダの間のフィードバックおよびフレーム同期

Country Status (9)

Country Link
US (1) US7716551B2 (ja)
EP (1) EP1961232B1 (ja)
JP (1) JP5389449B2 (ja)
KR (1) KR101343234B1 (ja)
CN (1) CN101341754B (ja)
BR (1) BRPI0618719A2 (ja)
RU (1) RU2470481C2 (ja)
TW (1) TWI408967B (ja)
WO (1) WO2007067479A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9061207B2 (en) * 2002-12-10 2015-06-23 Sony Computer Entertainment America Llc Temporary decoder apparatus and method
US9124757B2 (en) * 2010-10-04 2015-09-01 Blue Jeans Networks, Inc. Systems and methods for error resilient scheme for low latency H.264 video coding
US9043818B2 (en) 2012-05-23 2015-05-26 Fur Entertainment, Inc. Adaptive feedback loop based on a sensor for streaming static and interactive media content to animals
TW201501496A (zh) * 2013-06-17 2015-01-01 Quanta Comp Inc 視訊編解碼系統及視訊流傳輸方法
US10516891B2 (en) 2015-11-20 2019-12-24 Intel Corporation Method and system of reference frame caching for video coding
CN110945494B (zh) 2017-07-28 2024-06-21 杜比实验室特许公司 向客户端提供媒体内容的方法和系统

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999173A (en) * 1992-04-03 1999-12-07 Adobe Systems Incorporated Method and apparatus for video editing with video clip representations displayed along a time line
US5444489A (en) 1993-02-11 1995-08-22 Georgia Tech Research Corporation Vector quantization video encoder using hierarchical cache memory scheme
CA2156889C (en) * 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
JP3068002B2 (ja) * 1995-09-18 2000-07-24 沖電気工業株式会社 画像符号化装置、画像復号化装置及び画像伝送システム
JPH09121358A (ja) * 1995-10-25 1997-05-06 Matsushita Electric Ind Co Ltd 画像符号化及び復号化装置と方法
JP3427149B2 (ja) * 1996-01-26 2003-07-14 三菱電機株式会社 符号化信号の復号回路及びその同期制御方法, 同期検出回路及び同期検出方法
JPH1079949A (ja) * 1996-09-04 1998-03-24 Oki Electric Ind Co Ltd 画像符号化装置、画像復号化装置及び画像伝送システム
JPH10191356A (ja) * 1996-12-27 1998-07-21 Oki Electric Ind Co Ltd 画像符号化装置
JP3373130B2 (ja) * 1997-03-24 2003-02-04 沖電気工業株式会社 画像復号化装置
US6061399A (en) * 1997-05-28 2000-05-09 Sarnoff Corporation Method and apparatus for information stream frame synchronization
EP0902593B1 (en) 1997-09-12 2006-11-08 Oki Electric Industry Co., Ltd. Video coder, decoder and transmission system
JP4558195B2 (ja) * 1997-10-23 2010-10-06 ソニー エレクトロニクス インク 符号化方法及び装置、復号方法及び装置、デジタル信号処理装置並びに記録媒体
EP0940989A3 (en) * 1998-03-02 2003-10-29 Nippon Telegraph and Telephone Corporation Video communication system and method
US6289054B1 (en) 1998-05-15 2001-09-11 North Carolina University Method and systems for dynamic hybrid packet loss recovery for video transmission over lossy packet-based network
US6115080A (en) * 1998-06-05 2000-09-05 Sarnoff Corporation Channel selection methodology in an ATSC/NTSC television receiver
US6269130B1 (en) * 1998-08-04 2001-07-31 Qualcomm Incorporated Cached chainback RAM for serial viterbi decoder
JP3660513B2 (ja) * 1998-12-25 2005-06-15 沖電気工業株式会社 画像通信装置およびローカルデコード処理方法
US6499060B1 (en) 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
US6658618B1 (en) * 1999-09-02 2003-12-02 Polycom, Inc. Error recovery method for video compression coding using multiple reference buffers and a message channel
US6580767B1 (en) 1999-10-22 2003-06-17 Motorola, Inc. Cache and caching method for conventional decoders
EP1130921B1 (en) * 2000-03-02 2005-01-12 Matsushita Electric Industrial Co., Ltd. Data transmission in non-reliable networks
US6760749B1 (en) 2000-05-10 2004-07-06 Polycom, Inc. Interactive conference content distribution device and methods of use thereof
JP2002010265A (ja) * 2000-06-20 2002-01-11 Sony Corp 送信装置およびその方法と受信装置およびその方法
US7191242B1 (en) * 2000-06-22 2007-03-13 Apple, Inc. Methods and apparatuses for transferring data
KR100354768B1 (ko) * 2000-07-06 2002-10-05 삼성전자 주식회사 영상 코덱 시스템, 그 시스템과 외부 호스트 시스템과의데이터 처리방법 및 그 시스템에서의 인코딩/디코딩제어방법
US7174561B2 (en) * 2001-04-13 2007-02-06 Emc Corporation MPEG dual-channel decoder data and control protocols for real-time video streaming
US6823489B2 (en) * 2001-04-23 2004-11-23 Koninklijke Philips Electronics N.V. Generation of decision feedback equalizer data using trellis decoder traceback output in an ATSC HDTV receiver
US8923688B2 (en) * 2001-09-12 2014-12-30 Broadcom Corporation Performing personal video recording (PVR) functions on digital video streams
US20040016000A1 (en) * 2002-04-23 2004-01-22 Zhi-Li Zhang Video streaming having controlled quality assurance over best-effort networks
US7684483B2 (en) * 2002-08-29 2010-03-23 Raritan Americas, Inc. Method and apparatus for digitizing and compressing remote video signals
US7606314B2 (en) * 2002-08-29 2009-10-20 Raritan America, Inc. Method and apparatus for caching, compressing and transmitting video signals
US20040125816A1 (en) * 2002-12-13 2004-07-01 Haifeng Xu Method and apparatus for providing a buffer architecture to improve presentation quality of images
JP4329358B2 (ja) * 2003-02-24 2009-09-09 富士通株式会社 ストリーム配信方法、及びストリーム配信システム
US7237061B1 (en) * 2003-04-17 2007-06-26 Realnetworks, Inc. Systems and methods for the efficient reading of data in a server system
JP2005101677A (ja) * 2003-09-22 2005-04-14 Ricoh Co Ltd 画像送信装置、画像処理システム、プログラム、及び、情報記録媒体
GB0323284D0 (en) * 2003-10-04 2003-11-05 Koninkl Philips Electronics Nv Method and apparatus for processing image data
US7143207B2 (en) * 2003-11-14 2006-11-28 Intel Corporation Data accumulation between data path having redrive circuit and memory device
US20050201471A1 (en) * 2004-02-13 2005-09-15 Nokia Corporation Picture decoding method
US7627227B2 (en) * 2004-05-17 2009-12-01 Microsoft Corporation Reverse presentation of digital media streams
US8634413B2 (en) 2004-12-30 2014-01-21 Microsoft Corporation Use of frame caching to improve packet loss recovery
US8204131B2 (en) * 2005-01-13 2012-06-19 Qualcomm Incorporated Method and system for rapid and smooth selection of digitally compressed video programs
US20070008323A1 (en) * 2005-07-08 2007-01-11 Yaxiong Zhou Reference picture loading cache for motion prediction
US8300701B2 (en) * 2005-12-09 2012-10-30 Avid Technology, Inc. Offspeed playback in a video editing system of video data compressed using long groups of pictures

Also Published As

Publication number Publication date
TW200731811A (en) 2007-08-16
EP1961232A4 (en) 2011-11-30
BRPI0618719A2 (pt) 2011-09-06
KR101343234B1 (ko) 2013-12-18
CN101341754B (zh) 2010-10-27
CN101341754A (zh) 2009-01-07
EP1961232B1 (en) 2014-06-04
KR20080080521A (ko) 2008-09-04
EP1961232A1 (en) 2008-08-27
RU2470481C2 (ru) 2012-12-20
RU2008122940A (ru) 2009-12-20
JP2009518956A (ja) 2009-05-07
US20070130493A1 (en) 2007-06-07
US7716551B2 (en) 2010-05-11
WO2007067479A1 (en) 2007-06-14
TWI408967B (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
JP5016279B2 (ja) データ通信システム、データ送信装置およびデータ送信方法
JP5389449B2 (ja) メディアエンコーダおよびデコーダの間のフィードバックおよびフレーム同期
JP2005503708A (ja) エンコーダ冗長選択システム及び方法
RU2006101400A (ru) Переключение потока на основе постепенного восстановления при декодировании
JP2003092564A (ja) ストリームメディアに対する交渉方式の/動的なエラー訂正
CN101594203A (zh) 发送装置、发送方法和接收装置
JP2006319696A (ja) 送受信システム、送信装置および送信方法、受信装置および受信方法、並びにプログラム
JP2004165922A (ja) 情報処理装置および方法、並びにプログラム
JP2003224839A (ja) ストリーミングシステム及びストリーミング方法、ストリーミングサーバ及びデータ配信方法、クライアント端末及びデータ復号方法、オーサリング装置及びオーサリング方法、並びにプログラム及び記録媒体
JP5344541B2 (ja) データ送信装置、送信方法及びプログラム
JP2006503516A (ja) Ipネットワークでfgs符号化映像をストリーミングするための誤り回復を備えるシステム及び方法
CN101854224A (zh) 纠错编码方法、装置和系统以及转发控制方法和装置
JP2005130428A (ja) 双方向画像通信装置、その処理方法及びクライアント装置並びにプログラム
JP2005051299A (ja) パケット送信装置、パケット受信装置、パケット送信方法及びパケット受信方法
US7827458B1 (en) Packet loss error recovery
JP6529299B2 (ja) 送信装置、受信装置、方法及びプログラム
JP4088956B2 (ja) 情報処理装置
JP2012151622A (ja) 受信端末、パケットデータ受信方法、送信端末、送受信システム、中継端末およびパケットデータの中継方法
JP5098784B2 (ja) 映像通信装置
JP4182347B2 (ja) 画像データ通信システム及び画像データ通信方法
JP2005151176A (ja) 画像伝送方法および装置
JP4343808B2 (ja) 双方向画像通信システムにおけるサーバ及びその処理方法並びにプログラム
JP4049378B2 (ja) 双方向画像通信システムにおけるサーバ及びその処理方法並びにプログラム
JP5201056B2 (ja) 映像受信装置、映像送受信システム
CN117082266A (zh) 直播中继方法、直播数据接收方法、装置、设备和介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091104

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120924

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130805

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130813

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130814

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130816

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: 20130910

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131009

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5389449

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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