JP5248673B2 - エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム - Google Patents

エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム Download PDF

Info

Publication number
JP5248673B2
JP5248673B2 JP2011504113A JP2011504113A JP5248673B2 JP 5248673 B2 JP5248673 B2 JP 5248673B2 JP 2011504113 A JP2011504113 A JP 2011504113A JP 2011504113 A JP2011504113 A JP 2011504113A JP 5248673 B2 JP5248673 B2 JP 5248673B2
Authority
JP
Japan
Prior art keywords
video
intra
sequence
gnack
rate
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.)
Expired - Fee Related
Application number
JP2011504113A
Other languages
English (en)
Other versions
JP2011517233A (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011517233A publication Critical patent/JP2011517233A/ja
Application granted granted Critical
Publication of JP5248673B2 publication Critical patent/JP5248673B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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/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/507Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction using conditional replenishment
    • 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/637Control signals issued by the client directed to the server or network components
    • H04N21/6375Control signals issued by the client directed to the server or network components for requesting retransmission, e.g. of data packets lost or corrupted during transmission from server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

関連出願
本出願は、2008年4月7日に出願された、米国仮出願第61/043,005号の利益を主張し、その全体の内容が参照により明白にここに組み込まれている。
本開示は、ビデオデータのエンコーディングおよび/またはデコーディングに関する。
背景
ビデオコーディングおよび圧縮技術は、フレームシーケンス中のビデオフレーム間の時間的冗長性と、ビデオフレーム間内の空間的冗長性との両方を低減させることにより、効率的な圧縮を達成してもよい。ビデオコーディングおよび圧縮技術の例は、ITU−T H.261、H.263、動画像専門家グループ(MPEG)1、MPEG−2、およびMPEG−4の標準規格、ならびに、ITU−T H.264規格およびそれに対応する、ISO/IEC MPEG−4パート10すなわちAdvanced Video Coding(AVC)によって説明されている。
イントラコード化されたフレームは、自立型であり、ビデオフレーム内の空間的冗長性を低減させる。しかしながら、インターコード化されたフレームは、他のコード化されたフレーム(例えば、以前にコード化されたフレーム)からの動き補償により予測されて、時間的冗長性が低減される。インターコード化は、高い圧縮効率を提供するかもしれない。しかしながら、フレーム間の相互依存は、インターコード化フレームに対するコード化されたビットストリームを、チャネルエラーをより伝搬しやすいものにさせる。圧縮されたビットストリーム中に導入されるエラーは、ビデオデコーダにより復元されたビデオフレーム中にエラーをもたらすかもしれない。
イントラコード化は、これらのフレーム中のビデオデータのコード化が、以前の、または、後続のフレーム中のビデオデータのコード化から独立していることから、チャネルエラーを伝搬する確率を最小にする支援をするかもしれない。しかしながら、イントラコード化フレームは、インターコード化フレームよりも、より多くのコード化データを何倍も備えており、それゆえに、送信帯域幅の問題を生じさせるかもしれない。結果として、特に、デコーディングが、リアルタイム、ストリーミング、またはビデオアプリケーションにより実行されるとき、デコードされるビデオ出力側で品質の劣化があるかもしれない。したがって、いくつかのケースにおいて、ビデオコーディング技術は、フレームデータのすべてをイントラコード化する代わりに、個々のフレーム内のデータの個々のセグメント(例えば、マクロブロック)をイントラコード化するだけであってもよい。
インターコード化フレーム(すなわち、予測フレーム(Pフレーム)または双方向予測フレーム(Bフレーム))内の何らかの所定のマクロブロックは、イントラマクロブロックとしてイントラコード化されてもよい。イントラコード化フレームと同様に、イントラコード化マクロブロックは、別の(例えば、以前に)コード化されたフレームからのデータから独立してコード化される。マクロブロックにイントラコード化を強いる方法は、エンコーダイントラリフレッシュと呼ばれてもよい。
概要
一般に、本開示は、ビデオデコーダにより提供されたエラーフィードバックの受信に応答して、ビデオユニット(例えば、フレーム)のシーケンス内のビデオデータのセグメント(例えば、マクロブロック)をリフレッシュするレートを適応的に決定する技術に関する。このエラーフィードバックは、ビデオデコーダが、フレームシーケンスの1つ以上のフレーム内のパケットを受信し損なったことを示すパケットロスフィードバックを含んでいてもよい。
いくつかのケースにおいて、エラーフィードバックは、ビデオデコーダにより送られる、ピクチャロス表示(PLI)メッセージおよび/または汎用否定応答(GNACK)メッセージを含む。PLIメッセージは、1つ以上のピクチャに属している、不定の量のコード化ビデオデータのロスを示し、一方、GNACKメッセージは、失われている、コード化ビデオデータの特定のパケットを識別してもよい。
エラーフィードバックアルゴリズムを実現して、ビデオデコーダから受信されるエラーフィードバックに基づいて、ビデオエンコーダにより、マクロブロックのイントラリフレッシュレートを設定してもよい。ビデオエンコーダは、このイントラリフレッシュレートを使用して、フレームシーケンスの各フレーム中の1つ以上のマクロブロックをイントラコード化してもよい。
1つの観点において、方法は、コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することとを含み、1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している。
1つの観点において、コンピュータ読取り可能媒体は、コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することとを1つ以上のプロセッサに生じさせるための命令を含み、1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している。
1つの観点において、デバイスは、記憶デバイスと、記憶デバイスに結合され、コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定するように構成されている、1つ以上のプロセッサとを備えており、1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している。
1つの観点において、方法は、ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも1つのエラーを、ビデオデコーダにより検出することと、ビデオデコーダとビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、ビデオデコーダにより検出された以前のエラーを示しているフィードバックメッセージを、ビデオデコーダがビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、現在の時間を、最後に送られた時間と往復移動時間との合計と比較することと、比較に基づいて、ビデオデコーダにより検出された少なくとも1つのエラーを示している第2のフィードバックメッセージを、ビデオエンコーダに送るかどうかを決定することとを含む。
1つの観点において、デバイスは、記憶デバイスと、記憶デバイスに結合されている1つ以上のプロセッサとを備えている。1つ以上のプロセッサは、ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも1つのエラーを検出し、デバイスとビデオエンコーダとの間のデータ通信に対する往復移動時間を決定し、デバイスにより検出された以前のエラーを示しているフィードバックメッセージを、デバイスがビデオエンコーダに最後に送った時間である、最後に送られた時間を決定し、現在の時間を、最後に送られた時間と往復移動時間との合計と比較するように構成されている。比較に基づいて、1つ以上のプロセッサは、デバイスにより検出された少なくとも1つのエラーを示している第2のフィードバックメッセージを、ビデオエンコーダに送るかどうかを決定するようにさらに構成されている。
本開示中で記述する技術は、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせ中で実現してもよい。ソフトウェアにおいて実現される場合、ソフトウェアは、プロセッサ中で実行されてもよく、プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラム可能ゲートアレイ(FPGA)、または、デジタル信号プロセッサ(DSP)、あるいは、他の均等の集積またはディスクリート論理回路のような、1つ以上のプロセッサを指してもよい。本技術を実行するための命令を含んでいるソフトウェアは、コンピュータ読取り可能媒体中に最初に記憶され、プロセッサにより、ロードおよび実行されてもよい。
したがって、本開示はまた、本開示中で記述するさまざまな技術のいずれをもプロセッサに実行させるための命令を含むコンピュータ読取り可能媒体を熟慮する。いくつかのケースにおいて、コンピュータ読取り可能媒体は、コンピュータプログラムプロダクトの一部を形成してもよく、コンピュータプログラムプロダクトは、製造業者に売られてもよく、および/または、デバイス中で使用されてもよい。コンピュータプログラムプロダクトは、コンピュータ読取り可能媒体を含んでいてもよく、いくつかのケースにおいて、実装材料を含んでいてもよい。
添付図面および以下の詳細な説明において、1つ以上の観点の詳細を示す。他の特徴、目的および利点が、詳細な説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
図1は、ネットワークによりビデオデコーダに通信可能に結合されているビデオエンコーダを図示するブロック図である。 図2は、図1中で示されるビデオエンコーダおよび/またはビデオデコーダ内に含まれていてもよい例示的なプロセッサを図示するブロック図である。 図3Aないし3Fは、いくつかの数のブロックが、シーケンスの各フレーム内でイントラコード化されている、フレームシーケンスを図示するブロック図である。 図4は、受信したエラーフィードバックに基づいて、ビデオデータのセグメントをイントラコード化するレートを決定するために、ビデオエンコーダにより実行してもよい方法を説明するフロー図である。 図5は、受信したパケットロス情報に基づいて、ビデオデータのブロックをイントラコード化するイントラリフレッシュレートを決定するために、ビデオエンコーダにより実行してもよい方法を説明するフロー図である。 図6は、図5の方法により決定されたイントラリフレッシュレートの修正値を取得するために、ビデオエンコーダにより実行してもよい方法のフロー図である。 図7は、汎用否定応答(GNACK)メッセージを受信次第、パケットエラーレートを計算するために、ビデオエンコーダにより実行してもよい方法のフロー図である。 図8は、パケットシーケンス番号を含むGNACKメッセージの受信に基づいて、修正されたイントラリフレッシュレートを決定するために、ビデオエンコーダにより実行してもよい方法を説明するフロー図である。 図9は、PLI(ピクチャロス表示)メッセージをビデオエンコーダに送るかどうかを決定するためにビデオデコーダにより実行してもよい方法を説明するフロー図である。 図10は、ビデオエンコーダに対して、GNACKを送るか、またはPLIを送るかを決定するために、ビデオデコーダにより実行してもよい方法のフロー図である。
詳細な説明
図1は、ネットワーク16によりデバイス(ビデオデコーダ)20に通信可能に結合されている例示的なデバイス(ビデオエンコーダ)2を図示するブロック図である。ビデオエンコーダ2およびビデオデコーダ20は、独立型のデバイスを構成してもよく、または、より大きなシステムの一部であってもよい。例えば、ビデオエンコーダ2およびビデオデコーダ20のそれぞれは、(ワイヤレス移動ハンドセットのような)ワイヤレス通信デバイス、デジタルカメラ、ビデオカメラ、テレビ電話機、デジタルマルチメディアプレイヤ、パーソナルデジタルアシスタント(PDA)、ビデオゲームコンソール、パーソナルコンピュータまたはラップトップデバイス、あるいは、他のビデオデバイスを構成してもよく、または、それらの一部であってもよい。ビデオエンコーダ2およびビデオデコーダ20はまた、それぞれ、1つ以上の集積回路またはチップ内に含まれていてもよく、1つ以上の集積回路またはチップは、上述のデバイスのいくつかまたはすべてにおいて使用されてもよい。ネットワーク16は、いくつかのケースにおいて、ワイヤードまたはワイヤレスネットワークを備えていてもよい。1つの観点において、ネットワーク16は、プライベートネットワークまたはパブリックネットワーク(例えば、インターネット)であってもよい。
図示および記述のためだけに、デバイス2をビデオエンコーダとして参照し、デバイス20をビデオデコーダとして参照する。以下の記述において、さまざまな技術は、エンコーディング(例えば、圧縮)を実行するデバイスと、デコーディング(例えば、復元)を実行するデバイスとの間の情報交換に関する詳細を提供し、したがって、デバイス2(ビデオエンコーダ)およびデバイス20(ビデオデコーダ)は、ネットワーク16によって通信可能に結合されているように示されている。しかしながら、いくつかの観点において、デバイス2および/またはデバイス20は、エンコーディングおよび/またはデコーディングの動作を実行してもよいことを理解すべきである。しかしながら、後続の記述において、説明のためだけに、デバイス2は、ビデオエンコーディング動作を少なくとも実行し、それゆえに、ビデオエンコーダとして参照され、一方、デバイス20は、ビデオデコーディング動作を少なくとも実行し、それゆえに、ビデオデコーダとして参照されるものと仮定している。
いくつかのケースにおいて、ビデオエンコーダ2およびビデオデコーダ20は、それぞれ、グラフィックスアプリケーション、ビデオアプリケーションおよび/または他のマルチメディアアプリケーションのような、さまざまなアプリケーションを実行可能であってもよい。例えば、ビデオエンコーダ2およびビデオデコーダ20は、グラフィックスアプリケーション、ビデオゲームアプリケーション、ビデオ再生アプリケーション、デジタルカメラアプリケーション、インスタントメッセージングアプリケーション、ビデオ遠隔会議アプリケーション、移動アプリケーション、または、ビデオストリーミングアプリケーションに対して使用してもよい。
ビデオエンコーダ2およびビデオデコーダ20は、それぞれ、さまざまな、異なるデータのタイプおよびフォーマットを処理することが可能であってもよい。例えば、それらは、静止画像データ、動画像(ビデオ)データ、または他のマルチメディアデータを処理できてもよい。以下でより詳細に説明するように、ビデオエンコーダ2は、イントラリフレッシュ手続きの間に、ビデオユニットのシーケンス内の、ビデオフレームのような1つ以上のビデオユニット内の1つ以上のセグメント(例えば、ブロックまたはマクロブロック)あるいはビデオデータをイントラコード化して、シーケンス内の空間的冗長性の低減を支援できる。イントラコード化されるセグメントは、以前にコード化された、または後にコード化されるビデオユニットからのビデオデータから独立してコード化されるセグメントである。
個々のフレーム内の何らかの所定のマクロブロックは、イントラマクロブロックとしてイントラコード化されてもよい。イントラコード化されるフレームと同様に、イントラコード化マクロブロックは、別の(例えば、以前に)コード化されたフレームからのデータから独立してコード化される。マクロブロックにイントラコード化を強いる方法は、エンコーダイントラリフレッシュと呼ばれてもよい。マクロブロックがイントラコード化されるレートは、イントラフレッシュレートとして参照されてもよい。例えば、ビデオデコーダ20による逆離散コサイン変換(IDCT)の不整合や、エラー耐性のような、マクロブロックをイントラリフレッシュするさまざまな理由があってもよい。
例えば、H.261およびH.263のブロックベースのビデオコード化標準規格の状況内で、IDCT不整合を制御するために、画像中の各マクロブロックの位置は、係数がそのマクロブロックに対して送信される、予め定められている回数ごとに少なくとも1回イントラコード化されてもよい。マクロブロックのイントラリフレッシュは、DCT/IDCTの不整合に起因するエラー伝搬の程度を制限し得る。
エラー耐性を向上させるために、選択されたマクロブロックをイントラコード化して、チャネルエラーのために、不正確に復元されているか、または、隠されている破損マクロブロックを使用することに起因するエラー伝搬を制限してもよい。これらの破損マクロブロックは、デコーディングの際に、視覚的に好ましくないかもしれない。さらに、時間予測のために、破損したマクロブロックを後方に参照する、後続のフレームからの、正しくデコードされるマクロブロックもまた、視覚的に好ましくないかもしれない。これらのタイプのアーティファクトは、DCT/IDCT不整合のエラーよりも好ましくないかもしれない。したがって、それらは、エラーをこうむりやすいチャネルを通してデータを伝達するとき、イントラリフレッシュ戦略を駆り立てるかもしれない。
ビデオデコーダ20から受信されるエラー(パケットロス)フィードバック18に基づいて、ビデオエンコーダ2は、イントラコード化ブロックに対するイントラリフレッシュのレートをダイナミックに調整できる。そのような方法において、ビデオエンコーダ2は、ビデオデコーダ20に対するビデオデータ送信の品質を最適化し、ビデオデコーダ20に対するビデオデータ送信中のエラーの数を低減させ、さらに、ある期間にわたってビデオデコーダ20に送られるイントラコード化ブロックの数を制御することにより、送信帯域幅を管理できる。いくつかの観点において、フィードバック18は、パケットロスの表示を含む、コード化ビデオデータに関係する、任意の数の異なるタイプのパケットエラーに関する表示を含んでいてもよい。説明のためだけに、以下の記述において、フィードバック18は、パケットロスフィードバックに関するものと仮定する。
ビデオエンコーダ2は、記憶媒体4と、表示デバイス12と、1つ以上のプロセッサ14とを含む。記憶媒体4は、命令および/またはデータを記憶できる、何らかの固定メモリまたは揮発性メモリを含み、それらは、例えば、同期ダイナミックランダムアクセスメモリ(SDRAM)や、読出し専用メモリ(ROM)や、不揮発性ランダムアクセスメモリ(NVRAM)や、組込みダイナミックランダムアクセスメモリ(eDRAM)や、静的ランダムアクセスメモリ(SDRAM)や、フラッシュメモリのようなものである。表示デバイス12は、表示のためにビデオデータを表示できる任意のデバイスであってもよく、それは、LCD(液晶ディスプレイ)、プラズマ表示デバイス、または他のテレビジョン(TV)表示デバイスのようなものである。プロセッサ14は、図2の例において示される、制御プロセッサ、ビデオプロセッサ、グラフィックスプロセッサ、および/または表示プロセッサのような、1つ以上のプロセッサを含んでいてもよい。表示デバイス12およびプロセッサ14は、それぞれ、記憶媒体4から読み出すことができ、記憶媒体4に書き込むことができる。例えば、プロセッサ14は、記憶媒体4中に記憶されている1つ以上の機能モジュールからの命令を実行してもよい。これらのモジュールは、無線によって、記憶媒体4にダイナミックにダウンロードされるダウンロード可能なモジュールを備えていてもよい。1つの観点において、これらのモジュールのうちの1つ以上は、アプリケーション開発者により生成されるアプリケーションプログラミングインターフェース(API)命令から発生されるか、またはコンパイルされる、バイナリ命令を備えていてもよい。
図1は、記憶媒体4内に記憶されている、そのような3つのモジュールの例を示し、3つのモジュールのそれぞれは、実行のための、1つ以上の命令またはコードを含んでいてもよい。図1中に見られるように、記憶媒体4は、イントラエンコーダ6と、予測(インター)エンコーダ8と、レート適合モジュール10とに対する命令を記憶する。イントラエンコーダ6は、実行時に、1つ以上のビデオユニット(例えば、フレーム)内のビデオデータの1つ以上のセグメント(例えば、ブロック)をイントラコード化できる。イントラエンコーダ6により実行されるイントラコード化は、ビデオユニットのシーケンス内の他のビデオユニット内に含まれているデータセグメントのコード化に基づいていない、独立のコード化を含んでいてもよい。予測エンコーダ8は、ビデオユニットにわたる時間的冗長性を低減させるために、ビデオデータの1つ以上のセグメントをインターコード化できる。インターコード化は、予測技術を実現して、以前にコード化されたフレームまたは後にコード化されるフレームからの動き補償に基づいてビデオデータをエンコードしてもよい。レート適合モジュール10は、ビデオデコーダ20により提供されるパケットロスフィードバック18を受信および処理して、イントラエンコーダ6により実現されるイントラコード化のレート(すなわち、イントラリフレッシュレート)を決定(例えば、設定、修正)できる。
図1の例は、記憶媒体4内に記憶され、プロセッサ14により実行可能なモジュールとして、イントラエンコーダ6、予測エンコーダ8およびレート適合モジュール10を示しているが、これらのモジュールは、他のケースにおいて、(プロセッサ14のハードウェア内のような)ハードウェア内で実現してもよい。プロセッサ14は、いくつかのケースにおいて、図2の例において示されているような、汎用マイクロプロセッサおよび/または他のタイプのプロセッサのような、1つ以上のタイプのプロセッサを含んでいてもよい。
ある期間にわたって、ビデオエンコーダ2は、デコーディングおよび表示のために、コード化ビデオデータをビデオデコーダ20に送る。ビデオデコーダ20は、それが(例えば、パケットシーケンス番号を追跡することにより)ビデオデータの1つ以上のパケットを失っていることを決定した場合、ビデオデコーダ20は、コード化ビデオデータを失っているという表示をビデオエンコーダ2に送ってもよい。図1において、この表示は、パケットロスフィードバック18を構成する。いくつかのケースにおいて、パケットロスフィードバック18は、リアルタイム制御プロトコル(RTCP)データまたはメッセージを含んでいてもよい。例えば、パケットロスフィードバック18は、1つ以上の汎用否定応答(GNACK)メッセージを含んでいてもよく、GNACKメッセージはそれぞれ、失われているパケットのような、1つ以上のパケットを識別してもよい。パケットロスフィードバック18は、1つ以上のピクチャロス表示(PLI)メッセージを含んでいてもよく、PLIメッセージは一般に、1つ以上のピクチャに属している不定の量のコード化ビデオデータのロスを示す。いくつかのケースにおいて、パケットロスフィードバック18は、パケットロスに関する情報を提供してもよい受信者報告メッセージのような、1つ以上のリアルタイムトランスポートプロトコル(RTP)メッセージを含んでいてもよい。
図1の例において、ビデオデコーダ20は、記憶媒体22と、表示デバイス28と、1つ以上のプロセッサ30とを含む。記憶媒体4と同様に、記憶媒体22は、例えば、同期ダイナミックランダムアクセスメモリ(SDRAM)や、読出し専用メモリ(ROM)や、不揮発性ランダムアクセスメモリ(NVRAM)や、組込みダイナミックランダムアクセスメモリ(eDRAM)や、静的ランダムアクセスメモリ(SDRAM)や、または、フラッシュメモリのような、命令および/またはデータを記憶できる、任意の固定メモリまたは揮発性メモリを含んでいてもよい。表示デバイス12と同様に、表示デバイス28は、表示のためにビデオデータを表示できる任意のデバイスであってもよく、それは、LCD(液晶ディスプレイ)、プラズマ表示デバイス、または他のテレビジョン(TV)表示デバイスのようなものである。プロセッサ30は、制御プロセッサ、ビデオプロセッサ、グラフィックスプロセッサ、および/または表示プロセッサのような、1つ以上のプロセッサを含んでいてもよい。表示デバイス28およびプロセッサ30は、それぞれ、記憶媒体22から読み出すことができ、記憶媒体22に書き込むことができる。
図1中で示すように、記憶媒体22は、2つの機能モジュールである、イントラデコーダ24と予測(インター)デコーダ26とに対する命令を含んでいてもよい。イントラデコーダ24は、ビデオエンコーダ2によりネットワークを通して送られる1つ以上のビデオユニット(例えば、フレーム)内に含まれているビデオデータのイントラコード化セグメント(例えば、ブロック)をデコードして表示でできる。予測デコーダ26は、ビデオエンコーダ2により送られるインターコード化セグメントをデコードして表示できる。プロセッサ30は、これらのモジュール24および26を実行して、表示デバイス28上でビデオデータを表示してもよい。図1の例は、記憶媒体22内に記憶され、プロセッサ30により実行可能なモジュールとして、イントラデコーダ24、予測デコーダ26を示しているが、これらのモジュールは、他のケースにおいて、(プロセッサ30のハードウェア内のような)ハードウェア内で実現してもよい。プロセッサ30は、いくつかのケースにおいて、図2の例において示されているような、汎用マイクロプロセッサおよび/または他のタイプのプロセッサのような、1つ以上のタイプのプロセッサを含んでいてもよい。
いくつかのケースにおいて、ビデオデコーダ20は、さらに、エンコーディング動作を実行できる。これらのケースにおいて、ビデオデコーダ20は、イントラエンコーダ6、予測エンコーダ8およびレート適合モジュール10に類似のモジュールを含んでいてもよい。いくつかのケースにおいて、ビデオエンコーダ2はさらに、例えば、(デコーディングおよびエンコーディング動作の両方を実行してもよい)デバイス20からコード化ビデオデータを受信するときに、デコーディング動作を実行できる。これらのケースにおいて、ビデオエンコーダ2は、イントラデコーダ24と予測デコーダ26とに類似のモジュールを含んでいてもよい。
図2は、1つの観点にしたがった、図1中で示したビデオエンコーダ2および/またはビデオデコーダ20内に含まれていてもよい、例示的なプロセッサ50を図示するブロック図である。ビデオエンコーダ2内に含まれているとき、図2中で示したプロセッサ50は、プロセッサ14の一部であってもよい。ビデオデコーダ20内に含まれているとき、プロセッサ50は、プロセッサ30の一部であってもよい。プロセッサ14およびプロセッサ30は、それぞれ、1つ以上のプロセッサを含んでいてもよく、いくつかのケースにおいて、図2の例中で示したプロセッサのうちの1つ以上を含んでいてもよい。
プロセッサ50は、複数のプログラム可能なプロセッサを含んでいてもよい。図2中で示すように、これらは、制御または汎用目的プロセッサ52と、ビデオプロセッサ54と、グラフィックスプロセッサ56と、表示プロセッサ58とを含んでいてもよい。制御プロセッサ52は、ビデオプロセッサ54、グラフィックスプロセッサ56および/または表示プロセッサ58を制御できてもよい。1つの観点において、プロセッサ50は、他の形態の複数媒体のプロセッサを含んでいてもよい。
ビデオプロセッサ54は、ビデオのエンコーディングおよびデコーディング動作の間に利用してもよく、さまざまなコード化アルゴリズムを実現してもよい。例えば、ビデオプロセッサ54は、いくつかのケースにおいて、H.261、H.263、動画像専門家グループ(MPEG)1、MPEG−2、および/またはMPEG−4のビデオコード化標準規格、ならびに、H.264標準規格およびそれに対応する、ISO/IEC MPEG−4パート10すなわちAdvanced Video Coding(AVC)を実現してもよい。ビデオプロセッサ54はまた、ビデオデータをエンコードまたはデコードするときに、1つ以上の離散コサイン変換(DCT)または逆離散コサイン変換(IDCT)を実現してもよい。
グラフィックスプロセッサ56は、コンピュータ化されたグラフィックスをレンダリングし、操作し、表示するために利用される、専用のグラフィックスレンダリングデバイスであってもよい。グラフィックスプロセッサ56は、さまざまな複雑なグラフィックス関連のアルゴリズムを実現してもよい。例えば、複雑なアルゴリズムは、2次元または3次元のコンピュータ化されたグラフィックスの表現に対応していてもよい。グラフィックスプロセッサ56は、点、線、三角形または他の多角形の表面を形成して、表示デバイス12または28(図1)のようなディスプレイ上で、複雑な3次元画像を生成させるような、多数のいわゆる“基本の”グラフィックス動作を実現してもよい。表示プロセッサ58は、表示デバイス上での画素データの表示を管理する。表示デバイス58は、画素データに対して、回転および/またはスケーリング動作のような、さまざまな動作を実行してもよい。
図3Aないし3Fは、フレームシーケンスを図示する図であり、1つの観点にしたがって、いくつかの数のブロックが、シーケンスの各フレーム内でイントラコード化されている。これらの図は、ブロック(例えば、マクロブロック)としてビデオデータのセグメントを示しているが、ビデオデータの、任意のサイズまたは形状のセグメントを使用できる。ブロックは、例えば、16×16画素マクロブロックのようなマクロブロックを備えていてもよく、または、いくつかのケースにおいて、小さいサブパーティション(16×8、8×16、8×8、4×8、8×4、4×4など)画素ブロックを備えていてもよい。
図3Aないし3Fの例において、例示的なフレームシーケンスは、時間的シーケンス中で連続して互いに続く6つのフレームを含むものと仮定されている。(もちろん、他のケースまたは例において、フレームシーケンスは、6つよりも多い多くのフレームを含んでいてもよい。)各フレームは、異なる位置に配列されているブロックのアレイを含んでいてもよい。図3Aないし3Fのそれぞれは、説明のために、これらの6つのフレームのうちの1つを示す。ビデオエンコーダ2(図1)は、各フレーム内のビデオデータのブロックをコード化して(例えば、イントラコード化および/またはインターコード化して)、デコーディングおよび表示のために、フレームをビデオデコーダ20に送ることができる。ビデオエンコーダ2は、その予測エンコーダ8を使用して、何らかの所定のフレーム内のビデオデータの1つ以上のブロックをインターコード化してもよく、そのイントラエンコーダ6を使用して、何らかの所定のフレーム内のビデオデータの1つ以上のブロックをイントラコード化してもよい。ビデオエンコーダ2は、そのレート適合モジュール10を使用して、ブロックのイントラコード化のレート(すなわち、イントラリフレッシュレート)、または、各フレーム中のイントラコード化ブロックの数を調整してもよい。
図3Aないし3Fにおいて、時間的に連続したフレームのそれぞれは、6個のイントラコード化ブロック102を含んでいる。図3Aないし3Fはまた、まだイントラコード化されていないブロック100と、以前にイントラコード化されたブロック104とを描写する。いくつかのケースにおいて、所定のフレーム内でイントラコード化されない何らかのブロックを、インターコード化してもよい。しかしながら、図3Aないし3Fの6つのフレームシーケンスにおいて理解できるように、(この例のケースと同様に、各ブロックが唯一のものであることから)いかなるブロックも2回イントラコード化されない場合、ブロックのすべてが、6つのフレームのシーケンス中で1回イントラコード化されるであろう。この例において、同じ数のブロック(6個)が、各フレーム中でイントラコード化されるが、このことは必ずしも必要でないことに注目すべきである。各フレーム中でイントラコード化されないブロックは、インターコード化されてもよく、対応する、最も整合するブロックがイントラコード化されているか、または、インターコード化されている1つ以上のフレームを参照してもよい。
図3Aないし3Fにおいて、6個のブロックだけが、シーケンスの各フレーム中でイントラコード化されることから、全フレーム中のすべての位置における各ブロックのイントラコード化を完了するのに6フレームかかる。しかしながら、他のブロックがインターコード化される場合、フレーム間に相互依存があるかもしれず、それは、コード化ビットストリームがチャネルエラーを伝搬しやすくなるかもしれず、ビデオデコーダ20によりデコードされるビデオフレーム内でエラーをもたらすかもしれないことを意味する。各送信フレーム中でイントラコード化ブロックの数を増加させることは、エラーと、チャネルエラーにより生じるエラーの伝搬とを低減させるかもしれない。しかしながら、各フレーム中のイントラコード化ブロックの数を増加させることは、インターコード化に対するよりもイントラコード化に対してより多くのビットが使用される場合に、送信帯域幅を増加させるかもしれない。
したがって、ビデオエンコーダ2のレート適合モジュール10は、イントラエンコーダ6により実行されるイントラコード化のレートを、ダイナミックに決定するか、または、調整してもよい。例えば、レート適合モジュール10は、シーケンス中の各フレームに対するイントラコード化ブロックの数を決定してもよく、したがって、帯域幅と、エラー低減パラメータとのバランスを取ろうとして、この数を増加または減少させてもよい。以前に記述したように、レート適合モジュール10は、いくつかのケースにおいて、ビデオデコーダ20から受信されるパケットロスフィードバック18に基づいて、イントラリフレッシュレートを決定してもよい。例えば、パケットロスまたはエラーにおいて、著しい量、または、増加があることをビデオデコーダ20が示す場合、レート適合モジュール10は、イントラリフレッシュレートを増加させることを決定して、エラーをさらに伝搬する確率を低減させる支援をしてもよい。これは、以下で詳細に説明する。
図4は、1つの観点にしたがって、エラーフィードバック18のような、受信したエラーフィードバックに基づいて、ビデオデータのセグメントをイントラコード化するレートを決定するために、図1中で示したビデオエンコーダ2のようなビデオエンコーダにより実行してもよい方法を説明するフロー図である。図4は、ビデオエンコーダにより
実現してもよい、高いレベルの方法の詳細を示し、さまざまな観点のさらなる詳細は、図5ないし8のような、後続の図中で示されている。図4の以下の説明において、説明のためだけに、方法はビデオエンコーダ2により実行されることを仮定するであろう。
ビデオエンコーダ2は、コード化ビデオデータに関係するエラー(例えば、データのロス)を示すフィードバック18をビデオデコーダ20から受信してもよく、そのようなコード化ビデオデータは、ビデオデコーダ20に対して、ビデオエンコーダ2により以前に送られているものであってもよい(106)。フィードバック18を受信すると、ビデオエンコーダ2は、ビデオユニット(例えば、フレーム)のシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメント(例えば、ブロック)をイントラコード化するレートを決定してもよく、1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している(108)。ビデオエンコーダ2は、受信したフィードバック18を処理して、複数のビデオユニットおよび/またはビデオユニットのシーケンスに対してイントラコード化するレートを決定する動作を繰り返してもよい。
いくつかのケースにおいて、ビデオデコーダ20から送られるフィードバック18は、ビデオデコーダ20により、コード化ビデオデータの少なくとも一部のロスを示している。ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含んでいてもよく、ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームまたはスライスを含んでいてもよい。1つのフレーム内のビデオデータのブロックのイントラコード化は、シーケンス内の他のフレーム内のビデオデータのブロックのコード化から独立していてもよい。
フィードバック18は、1つの観点において、ピクチャロス表示(PLI)と汎用否定応答(GNACK)とのうちの少なくとも1つを含んでいてもよい。フィードバック18は、コード化ビデオデータを含んでいる、失われたパケットの数を示すフィードバックを含んでいてもよく、失われた各パケットは、ビデオエンコーダ2により、ビデオデコーダ20に以前に送られているが、ビデオデコーダ20により受信されていないものである。いくつかのケースにおいて、以下でさらに詳細に説明するように、イントラコード化するレートを決定することは、シーケンス内の1つ以上のビデオユニットにわたるエラーを訂正するターゲット訂正時間に少なくとも部分的に基づいていてもよい。
フィードバック18が、失われたパケットの数を示すGNACKを含んでいるとき、イントラコード化するレートを決定することは、失われたパケットの数に少なくとも部分的に基づいていてもよい。いくつかのケースにおいて、ビデオエンコーダ2は、失われたパケットの第2の数を示す、ビデオデコーダ20からの報告を受信してもよい。例えば、この報告は、ビデオデコーダ20によりビデオエンコーダ2に定期的に送られる、一連のRTCP受信者報告のうちの1つであってもよい。以下でさらに詳細に説明するように、1つの観点において、ビデオエンコーダ2は、GNACKにより示された、失われたパケットの数と、報告により示された、失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算してもよく、イントラコード化するレートを決定することは、パケットエラーレートに少なくとも部分的に基づく。例えば、ビデオエンコーダ2は、GNACKまたは報告のどちらが、失われたパケットのより高い量を示しているかに基づいて、パケットエラーレートを計算してもよい。イントラコード化のレートを決定することは、さらに、ビデオユニットのシーケンス内の各ビデオユニット内に含まれるパケットの推定数に少なくとも部分的に基づいていてもよい。
図8を参照して以下でさらに詳細に説明するように、エラーフィードバック18が、GNACKメッセージを含む場合、GNACKは、失われた各パケットを識別してもよく、ビデオエンコーダ2は、現在の時間と、識別された、失われたパケットのうちの1つがビデオデコーダ20に以前に送られた時間との間の差に基づいて、経過時間を計算してもよい。ビデオエンコーダ2は、この経過時間に少なくとも部分的に基づいて、イントラコード化のレートを決定してもよい。いくつかのケースにおいて、GNACKにより識別される、失われた各パケットは、関連するシーケンス番号を有する。シーケンス番号は、パケットがビデオエンコーダ2からビデオデコーダ20に送られるときに、最初に、昇順でパケットに割り当てられてもよい。ビデオデコーダ20は、それがどのパケットを受信しているかに関して跡を追ってもよく、また、これらのパケットの対応するシーケンス番号の経過を追ってもよい。したがって、シーケンス番号が昇順で送られていると仮定して、ビデオデコーダ20により送られるGNACKは、任意の失われたパケットのシーケンス番号(または、失われたパケットに対するシーケンス番号範囲)を識別してもよい。
シーケンス番号により、失われたパケットを識別するGNACKを受信すると、ビデオエンコーダ2は、経過時間を計算してもよい。ビデオエンコーダ2は、GNACKにより識別されている、どの、失われたパケットが、ビデオエンコーダ2によりビデオデコーダ20に以前に送られた、イントラコード化セグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有しているかを決定してもよい。図8を参照して以下で詳細に記述するように、ビデオエンコーダ2は、ビデオエンコーダ2により維持されるような現在の時間と、決定された、失われたパケットがビデオエンコーダ2からビデオデコーダ20に以前に送られた時間との間の差に基づいて、経過時間を計算してもよい。ビデオエンコーダ2は、シーケンス番号により識別されるような各パケットが、ビデオデコーダ20に送られたときの跡を追うことにより、経過時間のそのような計算を実施してもよい。
上述したように、ビデオエンコーダ2は、フィードバック18の受信と、ビデオユニットの複数のシーケンス中の各ビデオユニットに対する、イントラコード化するレートの決定とを繰り返してもよい。いくつかのケースにおいて、以下でさらに詳細に説明するように、ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオエンコーダ2は、受信したフィードバック18の処理と、ビデオユニットの複数のシーケンスにおけるイントラコード化するレートの決定とを繰り返すかどうかを決定してもよい。1つの観点において、動きのしきい値は、調整可能なパラメータであってもよく、そのようなパラメータは、いくつかのケースにおいて、ビデオエンコーダ2がビデオデータのセグメントをイントラコード化する、より高いレートを使用するときに、ビデオエンコーダ2により、より高いしきい値に設定されてもよい。
図5は、1つの観点にしたがって、受信したパケットロス情報に基づいて、ビデオデータのブロックをイントラコード化するためのイントラリフレッシュレートを決定する方法を説明するフロー図である。図5の例は、ビデオデータのブロックまたはマクロブロックに言及しているが、ビデオデータのさまざまな他のセグメント(サイズ、形状)が、さまざまな他のシナリオにおいてイントラコード化されてもよい。1つの観点において、図5中で示す方法は、ビデオデコーダ20から受信されるパケットロスフィードバック18に基づいて、ビデオエンコーダ2(図1)により実行されてもよい。
さまざまなシナリオにおいて、ビデオエンコーダ2(および、より詳細には、レート適合モジュール10)は、受信したパケットロスフィードバックに基づいて、マクロブロックのイントラリフレッシュレートを決定してもよく、さまざまな基準またはファクタを使用して、イントラリフレッシュレートを計算してもよい。例えば、さらに詳細に説明するように、イントラリフレッシュレートを計算するときに、ビデオエンコーダ2は、ターゲット訂正時間、訂正されないエラーの確率、検出されるエラーの数、動きの量、および/または、ユーザにより感知されるエラーの制限された継続時間を使用してもよい。
図5および後続のフローに関して、さまざまなパラメータを記述する。これらのパラメータのいくつかは、以下で定義される。
Target_Correction_Time(秒):ビデオエンコーダ2がエラーを訂正しなければならない、パケットロスのようなエラーの、ビデオエンコーダ2による検出後の時間の最大量
Current_Frame_Rate(1秒当たりのフレーム):ビデオエンコーダ2により使用される、1秒当たりのフレームの現在の数。ビデオエンコーダ2が、target_enc_rate(ターゲットエンコードレート)パラメータにおける変更により、このパラメータを変える場合、レート適合モジュール10は、ビデオエンコーダ2からのフレームの引渡しから、これを推定してもよい。いくつかのケースにおいて、ビデオエンコーダ2は、Current_Frame_Rateの値を、レート適合モジュール10に示してもよい。
Max_Intra_MB_%(0ないし100%):イントラコード化されるマクロブロックの最大許容百分率。データおよびフレームレートにしたがってフレームサイズを固定してもよいことから、このパラメータを使用して、ビデオ品質の劣化を制限してもよい。
Intra_Repeat(整数):パケットロスが検出されたときに、(フレームのシーケンスにわたる)フルのマクロブロックのイントラリフレッシュシーケンスが全画像にわたって実行される回数。
Intra_MB_%_No_Loss(0ないし100%):検出されるパケットロスがないときの、イントラコード化される(リフレッシュされる)マクロブロックの百分率。
Intra_MB_%(0ないし100%):ビデオエンコーダ2が、1フレーム(またはスライス)当たりに挿入すべき、イントラコード化される(リフレッシュされる)マクロブロックの百分率。
Num_Intra_Frames(整数):ビデオエンコーダ2がマクロブロックをイントラコード化している(リフレッシュしている)フレームの数。
さらに、MaxおよびMin演算を含む、さまざま式および計算を以下で示す。Max演算は、1セット内の2以上の可能性のある値のうちの最大値を選択し、Min演算は、1セット内の2以上の可能性のある値のうちの最小値を選択するものと仮定される。
図5中で示した方法は、ビデオエンコーダ2がビデオデコーダ20からRTCPフィードバックを受信しているかどうかを決定するために、繰返しチェックする(110)。そのようなフィードバックを受信すると、ビデオエンコーダは、フィードバックが、ビデオエンコーダ2によりビデオデコーダ20に送信された1つ以上のパケットのロスを示しているかどうかを決定する(112)。例えば、ビデオデコーダ20によりビデオエンコーダ2に送られるパケットロスフィードバック18(図1)は、ビデオエンコーダにより送られたコード化ビデオデータの1つ以上のパケットのそのようなロスを示してもよい。
ビデオエンコーダ2が、何らかのパケットロス表示を受信していない場合、ビデオエンコーダ2は、レート適合モジュール10を使用して、イントラリフレッシュレート、すなわち、マクロブロックに対する百分率(Intra_MB_%)をIntra_MB_%_No_Lossに等しいように決定または設定してもよく、Intra_MB_%_No_Lossは、調整可能なパラメータを含んでいてもよい(114)。いくつかのケースにおいて、ビデオエンコーダ2は、Intra_MB_%_No_Lossを自動的に設定または調整してもよい。いくつかのケースにおいて、ユーザがこのパラメータを設定また調整して、各フレーム中のイントラコード化マクロブロックの数を増加または減少させてもよい。
しかしながら、ビデオエンコーダ2が、パケットロスフィードバック18のような、パケットロス表示を受信している場合、ビデオエンコーダ2は、それがGNACKまたはPLIを受信しているかどうかを決定してもよい(116)。GNACKは、失われた、または、エラーを持った、1つ以上の特定のパケットを示してもよい。Intra_refreshルーチンが、パケットロス表示を受信すると開始する(118)。
最初に、ビデオエンコーダ2のレート適合モジュール10が、Intra_MB_%をMin{Max_Intra_MB_%, 100%/(Target_Correction_Time×Current_Frame_Rate)}に等しいように設定する(120)。Max_Intra_MB_%およびTarget_Correction_Timeは、それぞれ調整可能なパラメータであり、ビデオエンコーダ2により実行される特定のアプリケーションまたは動作に対して最適化される、最初の、予め規定されている値を有していてもよい。これらのパラメータは、ビデオエンコーダ2により実行される異なるアプリケーション(例えば、テレビ電話、ビデオストリーミング、ゲーム)に対して異なる値を有していてもよい。レート適合モジュール10は、Intra_MB_%の値を決定するときに、これらのパラメータのそれぞれの値を使用する。
いくつかのケースにおいて、以下でさらに詳細に説明するように、レート適合モジュール10は、図6ないし8中で示されているような、1つ以上のオプションの拡張機能を実現して、Intra_MB_%の修正値を取得してもよい(122)。レート適合モジュール10は、例えば、イントラエンコーダ6および予測エンコーダ8を実行することにより、各フレーム中のマクロブロックに対するイントラリフレッシュレートとしてIntra_MB_%を使用して、ビデオフレームのシーケンスに対してイントラリフレッシュ手続きを開始することをビデオエンコーダ2に要求する(124)。ビデオエンコーダ2はまた、Num_Intra_framesの値をゼロに初期設定してもよい。イントラリフレッシュ手続きが開始しているビデオエンコーダ2により、入力が提供される。ビデオエンコーダ2はまた、各ビデオフレームの境界に到達しているときを示す(126)。これは、RTP中で、タイムスタンプを設定し、および/またはビットをマーケットに出すために使用される、同じ表示の一部であってもよい。ビデオフレームの境界に到達しているとき、レート適合モジュール10は、Num_Intra_Framesをインクリメントする(128)。Num_Intra_Framesは、Intra_MB_%の現在の値を使用して、イントラコード化マクロブロックを含むビデオフレームの数の跡を追うパラメータである。
各フレームの境界において、レート適合モジュール10は、Num_Intra_Frames>=Ceil[100% /Intra_MB_%]であるかどうかを決定する(130)。Num_Intra_Framesが、このシーリング(すなわち、最大しきい値)よりも小さい場合、ビデオエンコーダ2は、それがビデオデコーダ20から別のパケットロス表示を受信しているかどうかを決定するためにチェックする(131)。そうでない場合、ビデオエンコーダ2は、再び、ビデオフレームの境界をチェックする(126)。しかしながら、ビデオエンコーダ2が、ビデオデコーダ20から、パケットロスフィードバック18のような別のパケットロス表示を受信している場合、ビデオエンコーダ2は、それがGNACKを受信しているか、またはPLIを受信しているかを決定してもよい(116)。このケースにおいて、ビデオエンコーダ2は、Intra_refreshルーチン(118)を続ける。
Num_Intra_Framesが、このシーリング以上である場合、ビデオエンコーダ2は、このシーケンス内の各フレームに対するIntra_MB_%の現在の値(それによって、各フレーム中の、示された数のマクロブロックがイントラコード化されている)を使用して、ビデオフレームのフルのシーケンスをビデオデコーダ20に送っている。レート適合モジュール10は次に、図5中で示したRepeat_Intraルーチンを実行する(132)。このルーチンにおいて、レート適合モジュール10は、ビデオエンコーダ2が、ビデオフレームの全シーケンスをイントラリフレッシュしている回数(Intra-refreshed)が、(2の初期値を有していてもよい別の調整可能なパラメータである)Intra_Repeatの値以上であるかどうかを決定する(134)。Intra_Repeatの値は、イントラリフレッシュされるフレームシーケンス内の1つ以上のマクロブロックに関係する可能性のある動きに対処するために調整されてもよい。そのような動きは、ビデオシーケンスに対してイントラリフレッシュシーケンスを1回以上繰り返すことにより訂正できるエラーを潜在的にもたらすかもしれない。
完全なイントラリフレッシュシーケンスが実行されている回数(Intra-refreshed)が、Intra_Repeatの値以上であるとき、レート適合モジュール10は、ロスが検出されていない動作に戻り、Intra_MB_%=Intra_MB_%_No_Lossに設定する。しかしながら、図5中で示されているように、Intra-refreshedが、Intra_Repeatの値より小さい場合、レート適合モジュール10は、Intra-refreshedの値をインクリメントし(136)、再び、ビデオフレームの後続のシーケンスに対してIntra_refreshルーチン(118)を実行する。
図6は、Intra_MB_%の修正値を取得するために、図1中で示されているビデオエンコーダ2により実行してもよい方法のフロー図である。このIntra_MB_%の修正値は、図5中のボックス“オプションの、Intra_MB_%の改良”(122)内で指定されているとおり、図5の方法内で使用してもよい。1つの観点において、ビデオエンコーダ2は、図5中で示した方法を実行して、Intra_MB_%の初期値を計算してもよいが、フレームシーケンスの各ビデオフレーム内でイントラコード化マクロブロックを使用するときのために、図6中で示した方法をさらに実行して、Intra_MB_%の修正値を決定してもよい。
図6中で示した方法を実行することにより、ビデオエンコーダ2は、フレームシーケンス内のイントラコード化マクロブロックの1つのイントラリフレッシュシーケンス後の、訂正されていないエラーを有する確率を制限してもよい。レート適合モジュール10は、イントラリフレッシュシーケンスの間のRTPパケットロスレートの推定に少なくとも部分的に基づいて、Intra_MB_%の修正値を決定してもよく、ビデオデコーダ20により提供されるRTCP受信者報告内に含まれているfraction_lostパラメータを使用してもよい。fraction_lostパラメータは、最後の受信者報告が送られた以降に、ビデオデコーダ20により失われているパケットの割合を示す。
さらに、レート適合モジュール10が、ビデオデコーダ20から、かなり多数のエラー(例えば、パケットロス)を検出しているとき、レート適合モジュール10は、Intra_MB_%の値を増加させることができてもよい。そうすることにより、ビデオエンコーダ2は、(表示デバイス28上で表示されるような)ビデオデコーダ20のユーザにより見られるかもしれないエラーを、より素早く訂正でき得る。
図6と、後続のフロー図に関して、さまざまなパラメータを説明する。これらのパラメータのいくつかを以下で定義する。
Target_Err_Pr(0−1):単一のイントラリフレッシュシーケンス(すなわち、ビデオフレームのシーケンス)後の画像中にエラーがまだ存在する、ターゲットの確率。図6の例において、このパラメータは、1フレーム当たりのパケットの数の、予測されるPER(パケットエラーレート)倍よりも高く設定される。
α(0−1):avg_norm_ppf(1フレーム当たりの平均標準化パケット)を推定するためのIIR(無限インパルス応答)フィルタの更新ファクタ。ビデオエンコーダ2は、0.1の値により開始してもよい。
β(0−10):Intra_MB_%を決定するための調整ファクタ。ビデオエンコーダ2は、1.0の値により開始してもよい。
PER(0−1):パケットエラーレートであり、ビデオデコーダ20から受信される最も最近のRTCP受信者報告からのfraction_lostパラメータに等しいように設定されてもよい。
avg_norm_ppf(実数):1フレーム当たりの平均の“標準化された”パケットであり、50kbps(キロビットパー秒)のターゲットのエンコードレートおよび10fps(フレームパー秒)に標準化されてもよい。
inst_ppf(整数):現在のフレーム中の、1フレーム当たりのパケット
est_ppf(実数):将来の1フレーム当たりの、パケットの推定数
Target_enc_rate(ビットパー秒):レート適合モジュール10により設定されるtarget_encode_rateの現在の値
図6中で示すように、Intra_MB_%の修正値を計算するとき(163)に、ビデオエンコーダ2は、avg_norm_ppfの値を計算または推定してもよい(150)。いったん、パケットが準備され、ビデオエンコーダ2による送信の用意ができていると(152)、ビデオエンコーダ2は、現在のフレーム中の、1フレーム当たりのパケット数であるinst_ppfをインクリメントしてもよい(154)。いくつかのケースにおいて、inst_ppfは、フレーム中のRTPパケットの数を示す。inst_ppfは、最後のパケットがフレームの終わりを示すまで、フレーム内の各パケットに対してさらにインクリメントされてもよい(156)。この時点で、ビデオエンコーダ2は、次のようにavg_norm_ppfの更新値を計算できる(158)。
avg_norm_ppf=(1-α)×avg_norm_ppf+(α×inst_ppf)×(50kbps/target_encode_rate)×(Current_Frame_Rate/10fps)
ここで、この特定の例において、ターゲットのエンコードレートは、50kbpsの予め規定されている値を基準にして標準化され、現在のフレームレートは、10fpsの予め規定されている値を基準にして標準されると仮定してもよい。これらの予め規定されている値は、いくつかの例示的なシナリオだけで使用され、異なる設定において、さまざまな異なる値を有していてもよい。inst_ppfの値は、次のフレームに対してゼロにリセットできる(160)。示すように、avg_norm_ppfの値は、inst_ppfと、target_encode_rateと、(現在のフレームのフレームレートである)Current_Frame_Rateとの値に基づいている。図6中で示すように、このavg_norm_ppfの値は、est_ppfの値を計算するために使用されてもよい。
1つの観点において、est_ppf(1フレーム当たりの推定パケット)の値は、次のように計算してもよい:
est_ppf=avg_norm_ppf×(target_enc_rate/50kbps)×(10fps/Current_Frame_Rate)
ここで、この例において、ターゲットエンコードレートは、50kbpsの予め規定されている値を基準として標準化され、現在のフレームレートは、10fpsの予め規定されている値を基準として標準化される(166)。予め規定されている値は、最適化されてもよく、さまざまな異なる設定において異なる値を有していてもよい。ターゲットのエンコードレート(target_enc_rate)を、等式に対する1つの入力パラメータとして提供してもよく、図5中で示した基本アルゴリズムからのIntra_MB_%を別のものとして提供してもよい(164)。1つの観点において、ターゲットのエンコードレート、target_enc_rateは、例えば、ビデオエンコーダ2により実行されているアプリケーションのタイプに基づいて調整されてもよい調整可能なパラメータを含んでいてもよい。1つの観点において、ターゲットのエンコードレートは、ダイナミックなレート適合アルゴリズムに基づいて調整されてもよく、ビデオエンコーダ2は、そのレートをネットワーク状態に適合させる。
ビデオエンコーダ2のレート適合モジュール10は、ビデオデコーダ20により送られるRTCP受信者報告内に含まれているfraction_lostの値に等しいようにPER(パケットエラーレート)の値を設定してもよく、上述したように、fraction_lostは、最後の受信者報告が送られた以降に、ビデオデコーダ20により失われているパケットの割合を示す(168)。レート適合モジュール10は、Target_Err_Prの更新値を計算してもよく、Target_Err_Prは、次のような、単一のイントラリフレッシュシーケンス後の画像中にまだエラーが存在している、ターゲットの確率である(170):
Target_Err_Pr=Max{Target_Err_Pr,est_ppf×PER]
この計算を実施した後、レート適合モジュール10は、図5中で示した方法または基本アルゴリズムにより決定されるIntra_MB_%の初期値に基づいて、Intra_MB_%の更新値または修正値を計算できる。図5の方法により決定される、このIntra_MB_%の初期値は、基本アルゴリズムからのIntra_MB_%として示されている(例えば、図6において、基本アルゴリズムは、図5中で示したアルゴリズムである)。Intra_MB_%の更新値を、次のように計算してもよい(172):
Min{Max_Intra_MB_%, Max{β×100%×log(1-PER)×est_ppf/log(1-Target_Err_Pr), 基本アルゴリズムからのIntra_MB_%}}
レート適合モジュール10が、このIntra_MB_%の更新値にしたがって、シーケンスのフレーム内のマクロブロックをイントラコード化するとき、このIntra_MB_%の更新値は、図5中で示した基本アルゴリズムにより使用されてもよい(174)。
図6中で示した方法は、Intra_MB_%の更新値を計算して、フレームシーケンス内のイントラコード化マクロブロックの、1つのイントラリフレッシュ後の補正されていないエラーを有する確率をビデオエンコーダ2が制限するのを支援してもよい。結果として、Intra_MB_%の更新値または修正値は一般に、増加した値となり、それにより、マクロブロックのイントラリフレッシングは、シーケンス内のより少ないフレームにおいて、より素早く起こる。図6中で示した、値を取得して、計算を使用する際に、いくつかのケースにおいて、フレームのすべてのスライス(1つのスライスは、1つ以上のマクロブロックを含んでいてもよい)は、少なくとも1つのイントラコード化マクロブロックを含むものと仮定してもよい。
この仮定を使用して、いくつかのイントラコード化マクロブロックが失われるかもしれないことから、(Intra_MB_%のレートでリフレッシュされたイントラコード化マクロブロックを有する)イントラリフレッシュされた全フレームシーケンスの間の何らかのパケットロスが、いくつかのマクロブロックにおいてエラーを生じさせるかもしれないことをさらに仮定してもよい。これらの仮定は、どのくらい素早くフレームシーケンスをイントラリフレッシュするかに関する保守的な仮定を含んでいてもよい。パケットエラーの確率がフレームシーケンス全体にわたって分布されていると仮定すると、シーケンス全体にわたるすべてのパケットは、訂正されていないエラーを生じさせる等しい確率を有するかもしれない。したがって、1つのイントラリフレッシュされたフレームシーケンス後にエラーがない確率は、(1−PER)Pに等しくてもよく、ここでPは、全フレームシーケンス中のパケットの数である。それゆえに、イントラリフレッシュシーケンス中のパケットの総数は、log(1-Target_Err_Pr)/log(1-PER)よりも小さく制限されてもよい。
イントラリフレッシュされた(IR)フレームシーケンス中のパケットの数を、次のように計算してもよい。
IRシーケンス中の#フレーム×IRシーケンス間の1フレーム当たりの平均の#パケット、ここで、IRシーケンス中の#フレーム=100%/Intra_MB_%
結果として、IRシーケンス間の1フレーム当たりのパケットの推定平均数を、次のように計算してもよい。
est_ppf=Avg_norm_ppf×(target_enc_rate/50kbps)×(10fps/Current_Frame_Rate)
これらの結果を組み合わせることにより、図6中で示した方法により決定されるIntra_MB_%の修正値に関して、次の式が提供される。
log(1-Target_Err_Pr)/log(1-PER)>=(100%/Intra_MB_%)×est_ppf
図7は、1つの観点にしたがって、GNACKメッセージの受信次第で、パケットエラーレート(PER)を計算するために、ビデオエンコーダ2(図1)のレート適合モジュール10により実行してもよい方法のフロー図である。Intra_MB_%の修正値を計算する図6の方法に関して記述したように、PERの値は、ビデオデコーダ20により送られる受信者報告内に含まれるfraction_lostパラメータの値に等しいように選択されて設定された。図7は、GNACKの受信に基づいて、PERの修正値を取得するために、レート適合モジュール10により使用してもよい方法を示す。
図7中で示すように、レート適合モジュール10は、受信したGNACKメッセージ中で示されるパケットの数に基づいて、パラメータGNACK_PERの値を計算できる(180)GNACKは、ビデオデコーダ20から送られる。ビデオデコーダ20は、エラーを有する(例えば、失われている)、1つ以上のフレーム内のパケットの数を決定して、この数をGNACK内で示してもよい。さらに、GNACK内で、ビデオデコーダ20は、シーケンス番号により、エラーを有する特定のパケットを識別してもよい。1つの観点において、これらのパケットシーケンス番号は、パケットがネットワーク16によりビデオデコーダ20に最初に送られるときに、ビデオエンコーダ2により初めに決定される。
GNACKを受信すると、レート適合モジュール10は、ビデオデコーダ20から送られた前のRTCP受信者報告内に含まれていたfraction_lostの値と、GNACK_PERの値とを比較してもよい(182)。GNACK_PERがfraction_lost以上である場合、レート適合モジュール10は、GNACK_PERに等しいようにPERの値を設定する。しかしながら、GNACK_PERがfraction_lostよりも小さい場合、レート適合モジュール10は、最後の受信者報告からのfraction_lostの値に等しいようにPERの値を設定する(186)。
したがって、図7の方法から理解できるように、レート適合モジュール10は、GNACK_PERとfraction_lostとのうちの大きい方を、パケットエラーレートPERの値として選択する。これらの2つの値のうちの大きい方を選択することにより、レート適合モジュール10は、図6の方法内で、修正されたイントラリフレッシュレートIntra_MB_%を計算するときに、PERのより高い値を使用する。この観点において、例えば、fraction_lostにより、または、GNACKメッセージにより、パケットエラーのより高い量が示されるとき、レート適合モジュール10は、Intra_MB_%を増加させる。
図8は、1つの観点にしたがって、パケットシーケンス番号をそれぞれ含んでいてもよい、ビデオデコーダ20からの1つ以上のGNACKメッセージの受信に基づいて、更新されたイントラリフレッシュレートを決定するために、ビデオエンコーダ2(図1)のレート適合モジュール2により実行してもよい方法を説明するフロー図である。図8の方法を実行することにより、ビデオエンコーダ2は、ビデオデコーダ20のユーザがエラーを感知するかもしれない総時間を限定しようとしてもよい。ビデオエンコーダ2のレート適合モジュール10は、より古いエラーに対してIntra_MB_%のより大きな値を使用してもよく、それにより、これらのより古いエラーがより素早く訂正されてもよい。
レート適合モジュール10は、時点またはタイムスタンプへのRTPパケットシーケンス番号のマッピングを維持してもよく、そのどちらかの点において、パケットがビデオエンコーダ2から送られている(190)。例えば、ビデオエンコーダ2は、第1の時点(例えば、100ms)で、第1のシーケンス番号を有する第1のパケットを送ってもよく、第2の時点(例えば、110ms)で、第2のシーケンス番号を有する第2のパケットを送ってもよい。レート適合モジュール10は、これらの2つのパケットのそれぞれと、ビデオエンコーダ2からビデオデコーダ20に送られている他の任意のパケットとに対する、タイムスタンプへのシーケンス番号のマッピングを保持してもよい。
ビデオエンコーダ2が、ビデオデコーダ20から、1つ以上のパケットがエラーを有する(例えば、失われている)ことを示すGNACKを受信するとき、ビデオエンコーダ2は、GNACK内で識別されている、パケットのそれぞれのシーケンス番号を決定できる。例えば、4つの異なるパケットがエラーを有することをGNACKが示す場合、ビデオエンコーダ2は、これらの4つのパケットのそれぞれRTPシーケンス番号を決定できる。これらのシーケンス番号は、これらの4つのパケットと関連していてもよく、GNACK内に含まれていてもよい。(以前に記述したように、これらのRTPシーケンス番号は、パケットがビデオエンコーダ2によりビデオデコーダ20に最初に送られたときに、パケットにそもそも割り当てられていたシーケンス番号である。1つの観点において、シーケンス番号は、ビデオデコーダ20に順次送られるパケットに対して、昇順で、ビデオエンコーダ2により割り当てられる。)
受信したGNACKにより識別される、パケットのシーケンス番号を決定すると、ビデオエンコーダ2は、イントラコード化マクロブロックを含む、最後のイントラリフレッシュされたフレームシーケンスの、最初のパケットのシーケンス番号(RTP_SN_Last_IR_Sequence)よりも大きい、識別されたパケットに対する最も早いまたは最も小さいシーケンス番号(RTP_SN)、すなわち、RTP_SN>RTP_SN_Last_IR_Sequenceを決定してもよい(192)。
ビデオエンコーダ2は、そのマッピング情報を使用して、RTP_SNの、この最も早いシーケンス番号を有する、GNACK内で識別されているパケットに対するタイムスタンプを決定してもよい。このタイムスタンプは、ビデオエンコーダ2が、シーケンス番号RTP_SNを有するこのパケットをビデオデコーダ20にそもそも送った時点に対応する。それゆえに、このタイムスタンプは、ビデオエンコーダ2により維持されているクロックに基づいている。ビデオエンコーダ2は、このタイムスタンプ(TS_of_earliest_GNACK_RTP_SN)を、ビデオエンコーダ2のクロックにより示される現在の時間(current_time)と比較して、次のように差の値(Time_elapsed)を計算する(194):
Time_elapsed=Current_Time−Ts_of_earliest_GNACK_RTP_SN
Time_elapsedパラメータの値は、シーケンス番号RTP_SNを有するパケットがビデオエンコーダ2により送られてから経過した期間を示す。レート適合モジュール10は、この経過期間に基づいて、(後続のイントラリフレッシュされるシーケンス中のマクロブロックをイントラコード化するために使用される)Intra_MB_%の値を修正できる。RTP_SNが、イントラコード化マクロブロックを含む、最後のイントラリフレッシュされたフレームシーケンスの、最初のパケットのシーケンス番号よりも大きい、GNACK中の識別されているパケットに対する、最も早い、または最も小さいシーケンス番号であることから、レート適合モジュール10は、(より古くに発生した)より古いエラーを、より素早く訂正しようとするために、Intra_MB_%の値を修正しようと試みる。一般に、レート適合モジュール10は、これらのケースにおいて、Intra_MB_%の値を増加させて、次に、図5中で示した(Intra_refreshルーチン中の)方法内で、この修正値を使用するであろう。
1つの観点において、レート適合モジュール10は、次のようにIntra_MB_%の修正値を計算してもよい(196):
Set Intra_MB_%=Min{Max_Intra_MB_%, 100%/[(Target_Correction_Time−Time_elapsed)×Current_Frame_Rate]}
以前に記述した、いくつかの式または計算と同様に、レート適合モジュール10は、いくつかのケースにおいて、Intra_MB_%の値をMax_Intra_MB_%までに制限してもよい。Max_Intra_MB_%の値は、ビデオエンコーダ2により実行されるアプリケーションのタイプまたは、ビデオエンコーダ2により提供される環境に基づいて、ビデオエンコーダ2により、またはユーザにより、コンフィグレーションされ、または調整されてもよい。上述のケースにおいて、レート適合モジュール10はまた、Target_Correction_TimeとTime_elapsedとの間の差に少なくとも部分的に基づいて、Intra_MB_%の修正値を決定してもよい。以前に記述したように、Target_Correction_Timeパラメータは、ビデオエンコーダ2がエラーを訂正しなければならないパケットロスのようなエラーの、ビデオエンコーダ2による検出後の時間の最大量を示す。このケースにおいて、この最大訂正時間は、受信機がエラーの伝搬を理解する時間のターゲットとされる最大量になる。Target_Correction_Timeの値は、最適化のためにコンフィグレーションされ、または変更されてもよい。
いくつかの観点において、ビデオエンコーダ2は、図5中で示したIntra_refreshルーチン内で使用してもよい、Intra_MB_%の修正値を決定するための別の改良を実現してもよい。これらの観点において、レート適合モジュール10は、1つ以上のパケットエラーを検出するときに、Intra_MB_%が使用されていた間の、過去のビデオフレームシーケンスに対する動きの量の測定を試みてもよい。図5に関して以前に記述したように、レート適合モジュール10は、潜在的に、調整可能なパラメータIntra_repeatの値にしたがって、フレームシーケンスに対するイントラリフレッシュシーケンスを1回以上繰り返してもよい。このパラメータの値は、検出された動きに基づいて調整されてもよく、検出された動きは、フレームシーケンス内のフレームに対する動きベクトルの関数であってもよい。
レート適合モジュール10は、検出された動きの量を、動きしきい値と比較してもよく、動きしきい値は、ユーザにより、または、ビデオエンコーダ2により、コンフィグレーションされるか、または調整される値を含んでいてもよい。例えば、Intra_MB_%のより高い値が、現在使用されている場合、イントラリフレッシングがより高いレートで発生していることを考えると、ビデオエンコーダ2は、より高いしきい値を使用してもよい。しきい値は、全フレームまたはシーケンスに対する動き統計量に適用してもよいが、また、特定のマクロブロックに対する動きに適用してもよい。
検出された動きの量が、このしきい値よりも小さい場合、レート適合モジュール10は、Intra_MB_%=Intra_MB_%_No_Lossにしたがって、Intra_MB_%の値を修正して、(図5中で使用されるような)ロスがない値に等しいように設定してもよい。
しかしながら、動きの量が、このしきい値を超える場合、レート適合モジュール10は、全ビデオフレームシーケンスのイントラリフレッシュ手続きを繰り返してもよく、および/または、追加のリフレッシュを実行できるように、Intra_repeatの値を増加させてもよい。イントラリフレッシュシーケンスの繰返しは、1つ以上のフレーム内の過度の動きによりもたらされるエラーの訂正を支援してもよい。
図9は、1つの観点にしたがって、ビデオエンコーダ2に対して、PLI(ピクチャロス表示)メッセージを送るか、または、汎用否定応答(GNACK)のような別の表示を送るかを決定するために、ビデオデコーダ20(図1)により実行してもよい方法を説明するフロー図である。以前に記述したように、ビデオデコーダ20は、イントラデコーダ24および/または予測デコーダ26により1つ以上のパケットエラーを検出すると、エラー(例えば、パケットロス)フィードバック18をビデオエンコーダ2に送ることができる。このフィードバック18は、1つ以上のGNACKおよび/またはPLIメッセージを含んでいてもよい。GNACKメッセージは、特に、エラーを有するパケットを識別してもよく、一方、PLIメッセージは、より一般的に、必ずしもパケットを識別することなく、デコーディングのエラーを識別してもよい。
しかしながら、例えば、ある期間にわたってビデオエンコーダ2に対して、非常に多くのPLIメッセージを送ることには、いくつかの不利益がある。例えば、ビデオデコーダ20は、ビデオデコーダ20は、最初のPLIをビデオエンコーダ2に送ってもよく、そのことは、ビデオエンコーダ2のレート適合モジュール10をトリガーして、イントラリフレッシュシーケンスを開始させるか、または、Intra_MB_%の値を増加させることにより、フレームシーケンス内のマクロブロックをイントラエンコードするレートを増加させるかもしれない。新しくリフレッシュされたマクロブロックのうちのいくつかを受信する前に、ビデオデコーダ20が、その後、間もなく、別のPLIをビデオエンコーダ2に送る場合、ビデオエンコーダ2は、ビデオデコーダ20により感知された、新しい、または追加のエラーがあるものと仮定して、Intra_MB_%の値を、ことによると不必要に、再度増加させるかもしれない。これらのタイプのシナリオにおいて、ビデオデコーダ20からのPLIメッセージは、以前に示されたエラーを訂正するためにビデオエンコーダ2により送られている、イントラリフレッシュされたマクロブロックと入れ違うかもしれない。したがって、いくつかのケースにおいて、短い期間わたってビデオエンコーダ2に、繰り返されるPLIメッセージを送る前に、ビデオデコーダ20がいくつかのチェックを実行することが、より有益であるかもしれない。
図9の方法にしたがうと、ビデオデコーダ20は、イントラデコーダ24および/または予測デコーダ26からのデコーダ出力を待ってもよい(200)。ビデオデコーダ20は、何らかのデコーディングエラーが、イントラデコーダ24および/または予測デコーダ26により検出されたかどうかを決定してもよい(202)。いくつかのケースにおいて、ビデオデコーダ20は、例えば、コード化ビデオデータのビットストリームの解析を通して、RTPレイヤにより検出されないいくつかのエラーを検出してもよい。受信したコード化パケットのうちの1つにおけるエラー、または、1つ以上のパケットのロスのような、デコーディングエラーが検出された場合、ビデオデコーダ20は、そのクロックにしたがって、現在の時間(current_time)を決定してもよい。
ビデオデコーダ20はまた、RTTに対する値を決定するか、または、調べてもよく、RTTに対する値は、ビデオデコーダ20と、ビデオエンコーダ2との間のデータ通信に対する往復の移動時間の値である。いくつかのケースにおいて、RTTの値は、デフォルト値として、ビデオデコーダ20内で、最初に設定されるか、または、コンフィグレーションされてもよい。しかしながら、ビデオデコーダ20は、ビデオデコーダ20とビデオエンコーダ2との間のデータ通信に対するリアルタイムの計算に基づいて、ある期間にわたって、RTTの値をダイナミックに調整または更新できる。例えば、ビデオデコーダ20は、RTTの値を測定または推定するために、1つ以上のRTCP受信者および送信者報告内に含まれる情報を使用できてもよい。1つの観点において、ビデオデコーダ20は、ビデオデコーダ20とビデオエンコーダ2との間で交換される、少なくとも1つの対のメッセージに基づいて、RTTの値を測定または推定してもよい。
図9の例において、ビデオデコーダ20は、以下の条件が満たされるかどうかを決定するためにチェックしてもよい(204):
current_time>RTT+Time_Last_Sent_PLI
ここで、Time_Last_Sent_PLIは、ビデオデコーダ20がPLIをビデオエンコーダ2に最後に送った(ビデオデコーダ20のクロックにしたがった)時間に等しい。現在の時間が、実際に、Time_Last_Sent_PLIを加えたRTTよりも大きい場合、ビデオデコーダ20は、別のPLIメッセージをビデオエンコーダ2に送ってもよく、また、ビデオデコーダ20のクロックにしたがって、Time_Last_Sent_PLIの値を現在の時間に設定してもよい。
しかしながら、現在の時間が、Time_Last_Sent_PLIを加えたRTT以下である場合、ビデオデコーダ20は、別のPLIメッセージをビデオエンコーダ2に送るのを抑制するだろう。これらのシナリオにおいて、ビデオデコーダ20は、それが、1つの往復移動時間内にPLIを以前に送っていることを決定し、別のPLIを送る必要はない。これらのシナリオにおいて、ビデオエンコーダ2が、ビデオデコーダ20により送られた、前のPLIの受信に応答して、新しいイントラリフレッシュシーケンスを開始するか、または、さらに、Intra_MB_%の値を調整してもよく、ビデオデコーダ20が、早くとも、前のPLIを送った後の1つの往復移動時間内で、このリフレッシュシーケンス内のパケット(およびマクロブロック)の受信を開始することを、ビデオデコーダ20は仮定する。したがって、ビデオデコーダ20が、この1つの往復移動時間窓内で何らかのエラーを識別する場合、ビデオデコーダ20は、そのようなエラーが、前のPLIの受信次第で、ビデオエンコーダ2により開始されるイントラリフレッシュシーケンスにより訂正され、ビデオデコーダ20がこの時間窓内で別のPLIを送る必要がないものと仮定する。ビデオデコーダ20は、ビデオエンコーダ2から受信したすべてのコード化パケットに対して、図9中で示した方法の実行を継続してもよい。
図10は、1つの観点にしたがって、ビデオエンコーダ2に対して、GNACKを送るか、またはPLIを送るかを決定するために、ビデオデコーダ20(図1)により実行してもよい方法のフロー図である。いくつかのケースにおいて、例えば、PLIを最後に送った以降に、エラーを有するか、または失われている、多数のパケットがある場合、ビデオデコーダ20は、一般的なPLIメッセージをビデオエンコーダ2に送ることを決定してもよい。1つの観点において、例えば、図9中で示したような1つの往復移動時間内で、前のGNACKまたはPLIが送られていない場合、ビデオデコーダ20は、図10中で示す方法を実行してもよい。
したがって、図10中で示すように、ビデオデコーダ20は、デコーディング出力を待って(210)、処理がフレームの境界に到達しているかどうか(または、新しいフレームが検出されているかどうか)を決定してもよい(211)。そうである場合、ビデオデコーダ20は、Number_of_packets_lostと呼ばれる変数の値をゼロにリセットしてもよい。以下で記述するように、パケットエラーを検出すると、GNACKを送るか、またはPLIを送るかを決定する際に、ビデオデコーダ20は、この変数の値を使用する。新しいフレームが検出されているとき、ビデオデコーダ20は、この変数の値をゼロにリセットしてもよい。
ビデオデコーダ20は、ビデオエンコーダ2により送られた特定のパケットが失われていることを識別してもよく、次に、Number_of_packets_lost変数をインクリメントしてもよい(212)。ビデオデコーダ20は、Number_of_packets_lostの値を、パケットロスしきい値と比較してもよい。このしきい値は、ユーザにより、または、ビデオデコーダ20によりコンフィグレーションされるか、または、調整されてもよい、調整可能なパラメータを含んでいてもよい。いくつかの例において、このしきい値の値は、デバイスのタイプ(例えば、ビデオデコーダ20および/またはビデオエンコーダ2に対するデバイスのタイプ)、および/または、実行されるアプリケーションのタイプ(例えば、テレビ電話アプリケーション、ゲームアプリケーション)に依存してもよい。
1つの観点において、ビデオデコーダ20は、以下の条件が満たされるかどうかを決定してもよい(214):
Number_of_packets_lost>=%_Packet_Loss_Threshold)×avg_ppf
ここで、avg_ppfは、ビデオデコーダ20により受信される、1フレーム当たりのパケットの平均の数に等しい。ビデオデコーダ20は、ビデオエンコーダ2により受信される各フレーム中のパケットの数を絶え間なく決定することにより、avg_ppfの値を推定できる。
失われたパケットの数が、(先に示したような、また、avg_ppfに基づいていてもよい)しきい値を超えるように、PLIを最後に送った以降に、非常に多くの数のパケットが失われている場合、ビデオデコーダ20は、フルのイントラリフレッシュシーケンスを開始するために、別のPLIメッセージをビデオエンコーダ2に送ってもよい(218)。ビデオデコーダ20はまた、Number_of_packets_lostの値をゼロにリセットしてもよい。1つの観点において、PLIを送るのに先立って、ビデオデコーダ20はまた、図9中で示した方法を実行して、前のPLIが、1つの往復時間窓内ですでに送られているかどうかを決定してもよく、以前に記述したように、そのようなケースのときに、別のPLIを送ることを控えてもよい。
しかしながら、最後のPLIの送信以降の、失われたパケットの数が、しきい値を超えていないことをビデオデコーダ20が決定する場合、ビデオデコーダ20は、PLIの代わりに、GNACKをビデオデエンコーダ2に送ってもよい(216)。GNACKは、エラーを有する(または失われている)特定のパケットを識別してもよい。いくつかのケースにおいて、ビデオエンコーダ2は、GNACK中で識別されているパケットに関係付けられているシーケンス番号を使用して、図8中で示した方法のような、イントラリフレッシュレートを更新する向上した方法を実行してもよい。
先の記述と、図9ないし10中で示した方法を考慮して、1つの観点において、ビデオデコーダ20のようなビデオデコーダは、ビデオエンコーダ2のようなビデオエンコーダから送られたコード化ビデオデータに関係する少なくとも1つのエラーを検出してもよい。ビデオデコーダ20は、ビデオデコーダ20とビデオエンコーダ2との間のデータ通信に対する往復移動時間を決定し、ビデオデコーダ20により検出された以前のエラーを示すフィードバックメッセージを、ビデオデコーダ20がビデオエンコーダ2に最後に送った時間である、最後に送られた時間を決定し、現在の時間を、最後に送られた時間と往復移動時間との合計と比較してもよい。比較に基づいて、ビデオデコーダ20は、ビデオデコーダ20により検出された少なくとも1つのエラーを示す第2のフィードバックメッセージを、ビデオエンコーダ2に送るかどうかを決定してもよい。
いくつかのケースにおいて、ビデオデコーダ20は、現在の時間が、最後に送られた時間と往復移動時間との合計を超えている場合、第2のフィードバックメッセージを送ってもよく、現在の時間に等しいように、最後に送られた時間を設定してもよい。往復移動時間を決定することは、ビデオデコーダ20とビデオエンコーダ2との間で交換される少なくとも1つのメッセージに基づいて、往復移動時間を測定または推定することを含んでもよい。いくつかのケースにおいて、ビデオデコーダ20は、ビデオエンコーダ2からコード化ビデオデータを受信してもよく、少なくとも、ビデオデコーダによるコード化ビデオデータのデコーディングに際して、少なくとも1つのデコーディングエラーを検出することにより、少なくとも1つのエラーを検出してもよい。
1つの観点において、ビデオデコーダ20は、少なくとも、パケットロスを検出することにより、少なくとも1つのエラーを検出してもよい。パケットロスを検出すると、ビデオデコーダ20は、失われたパケットのカウントをインクリメントし、失われたパケットのカウントをしきい値と比較し、失われたパケットのカウントがしきい値を超えている場合、および、現在の時間が、最後に送られた時間と往復移動時間との合計を超えている場合、第2のフィードバックメッセージをビデオエンコーダ2に送ってもよい。失われたパケットのカウントが、しきい値を超えていない場合、ビデオデコーダ20は、パケットロスを示す、別のタイプのフィードバックメッセージを、ビデオエンコーダ2に送ってもよい。
いくつかのケースにおいて、第2のフィードバックメッセージをビデオエンコーダ2に送ると、ビデオデコーダ20は、ゼロに等しいように、失われたパケットのカウントを設定してもよい。しきい値は、パケットロスしきい値と、1フレーム当たりのパケットの平均数とに少なくとも部分的に基づいていてもよい。
本開示中で記述した技術を、汎用目的マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラム可能ゲートアレイ(FPGA)、複合プログラム可能論理デバイス(CPLD)、または他の均等の論理デバイスのうちの1つ以上内で実現してもよい。したがって、ここで使用されるような用語“プロセッサ”または“制御装置”は、ここで記述した技術の実現に適した、上述の構造または他の任意の構造のうちの1つ以上を指してもよい。
ここで説明したさまざまなコンポーネントは、ハードウェアの任意の適切な組み合わせ、ソフトウェア、ファームウェア、または、これらの任意の組み合わせにより実現してもよい。図面において、さまざまなコンポーネントは、別々のユニットまたはモジュールとして描写されている。しかしながら、これらの図面に関して記述したさまざまなコンポーネントのすべてまたはいくつかを、共通のハードウェアおよび/またはソフトウェア内で組み合わされているユニットまたはモジュールに組み込んでもよい。したがって、コンポーネント、ユニットまたはモジュールとしての特徴の表現は、説明を容易にするために、特定の機能の特徴をハイライトするように向けられており、必ずしも、別々のハードウェアまたはソフトウェアコンポーネントにより、そのような特徴の実現を要求するものではない。いくつかのケースにおいて、さまざまなユニットは、1つ以上のプロセッサにより実行される、プログラム可能なプロセスとして実現されてもよい。
モジュール、デバイス、またはコンポーネントとしてここで説明されている機能は、集積論理デバイス中で一緒に実現されてもよく、または、ディスクリートであるが、相互運用可能な論理デバイスとして別々に実現されてもよい。さまざまな観点において、そのようなコンポーネントは、集積回路チップまたはチップセットのような、集積回路デバイスと集合的に呼ばれてもよい、1つ以上の集積回路デバイスとして少なくとも部分的に形成されてもよい。そのような回路は、単一の集積回路チップデバイス中で、または、複数の相互運用可能な集積回路チップデバイス中で提供されてもよく、さまざまな画像、表示、オーディオ、または、他のマルチメディア、のアップ利ケーションおよびデバイスのいずれかにおいて使用されてもよい。いくつかの観点において、例えば、そのようなコンポーネントは、ワイヤレス通信デバイスハンドセットのような、移動デバイスの一部を形成してもよい。
ソフトウェアにおいて実現される場合、1つ以上のプロセッサにより実行されるとき、上述した方法のうちの1つ以上を実行する命令を有するコードを備えているコンピュータ読取り可能データ記憶媒体により少なくとも部分的に、本技術を実現してもよい。コンピュータ読取り可能媒体は、実装材料を含んでいてもよいコンピュータプログラムプロダクトの一部を形成してもよい。コンピュータ読取り可能媒体は、同期ダイナミックランダムアクセスメモリ(SDRAM)のようなランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラム可能読出し専用メモリ(EEPROM)、組込みダイナミックランダムアクセスメモリ(eDRAM)、静的ランダムアクセスメモリ(SRAM)、フラッシュメモリ、磁気または光学データ記憶媒体を備えていてもよい。
本技術は、さらに、または、代わりに、命令またはデータ構造の形態でコードを搬送または伝達し、1つ以上のプロセッサによりアクセスされ、読み出され、および/または実行され得るコンピュータ読取り可能通信媒体により少なくとも部分的に実現してもよい。いくつかの接続は、適切にコンピュータ読み取り可能媒体と呼ばれてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア線、デジタル加入者線(DSL)、または、赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用して、ウェブサイト、サーバまたは他のリモート情報源から送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア線、DSL、または、赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。上述したものの組み合わせもまた、コンピュータ読取り可能媒体の範囲内に含まれるべきである。利用されるいくつかのソフトウェアは、1つ以上のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは、他の均等の、集積またはディスクリート論理回路のような、1つ以上のプロセッサにより実行されてもよい。
さまざまな観点を本開示中で説明している。これらの、および他の観点は、特許請求の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]方法において、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することとを含み、
1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している方法。
[2]前記フィードバックを受信することは、前記コード化ビデオデータの少なくとも1つのパケットのロスを示すフィードバックを、前記ビデオデコーダから受信することを含み、前記少なくとも1つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない上記[1]記載の方法。
[3]ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む上記[1]記載の方法。
[4]前記レートを決定することは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいて、前記レートを決定することを含む上記[1]記載の方法。
[5]前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む上記[1]記載の方法。
[6]前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートを決定することは、前記失われたパケットの数に少なくとも部分的に基づいている上記[5]記載の方法。
[7]失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信することと、
前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算することとをさらに含み、
前記イントラコード化するレートを決定することは、前記パケットエラーレートに少なくとも部分的に基づいている上記[6]記載の方法。
[8]前記レートを決定することは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている上記[7]記載の方法。
[9]前記GNACKは、失われた各パケットを識別し、前記方法は、現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算することをさらに含み、前記レートを決定することは、さらに、前記経過時間に少なくとも部分的に基づいている上記[6]記載の方法。
[10]前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算することは、
前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、
前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することとを含む上記[9]記載の方法。
[11]ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定することをさらに含む上記[1]記載の方法。
[12]コンピュータ読取り可能媒体において、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することと、
を1つ以上のプロセッサに生じさせるための命令を含み、
1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているコンピュータ読取り可能媒体。
[13]前記フィードバックを受信することを前記1つ以上のプロセッサに生じさせるための命令は、前記コード化ビデオデータの少なくとも1つのパケットのロスを示すフィードバックを、前記ビデオデコーダから受信することを前記1つ以上のプロセッサに生じさせるための命令を含み、前記少なくとも1つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない上記[12]記載のコンピュータ読取り可能媒体。
[14]ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む上記[12]記載のコンピュータ読取り可能媒体。
[15]前記イントラコード化するレートは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいている上記[12]記載のコンピュータ読取り可能媒体。
[16]前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む上記[12]記載のコンピュータ読取り可能媒体。
[17]前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいている上記[16]記載のコンピュータ読取り可能媒体。
[18]失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信することと、
前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算することと、
を前記1つ以上のプロセッサに生じさせるための命令をさらに含み、
前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいている上記[17]記載のコンピュータ読取り可能媒体。
[19]前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている上記[18]記載のコンピュータ読取り可能媒体。
[20]前記GNACKは、失われた各パケットを識別し、前記コンピュータ読取り可能媒体は、現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算することを、前記1つ以上のプロセッサに生じさせるための命令をさらに含み、前記イントラコード化するレートは、さらに、前記経過時間に少なくとも部分的に基づいている上記[17]記載のコンピュータ読取り可能媒体。
[21]前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算することを前記1つ以上のプロセッサに生じさせるための命令は、
前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、
前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することと、
を前記1つ以上のプロセッサに生じさせるための命令を含む上記[20]記載のコンピュータ読取り可能媒体。
[22]ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定することを、前記1つ以上のプロセッサに生じさせるための命令をさらに含む上記[12]記載のコンピュータ読取り可能媒体。
[23]デバイスにおいて、
記憶デバイスと、
前記記憶デバイスに結合されている1つ以上のプロセッサとを具備し、
前記1つ以上のプロセッサは、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定するように構成されており、
1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているデバイス。
[24]前記1つ以上のプロセッサは、少なくとも、前記コード化ビデオデータの少なくとも1つのパケットのロスを示すフィードバックを前記ビデオデコーダから受信することにより、前記フィードバックを受信するように構成されており、前記少なくとも1つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない上記[23]記載のデバイス。
[25]ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む上記[23]記載のデバイス。
[26]前記イントラコード化するレートは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいている上記[23]記載のデバイス。
[27]前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む上記[23]記載のデバイス。
[28]前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいている上記[27]記載のデバイス。
[29]前記1つ以上のプロセッサは、
失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信し、
前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算するようにさらに構成されており、
前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいている上記[28]記載のデバイス。
[30]前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている上記[29]記載のデバイス。
[31]前記GNACKは、失われた各パケットを識別し、前記1つ以上のプロセッサは、現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算するようにさらに構成されており、前記イントラコード化するレートは、さらに、前記経過時間に少なくとも部分的に基づいている上記[28]記載のデバイス。
[32]前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記1つ以上のプロセッサは、少なくとも、前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することとにより、前記経過時間を計算するように構成されている上記[31]記載のデバイス。
[33]前記1つ以上のプロセッサは、ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定するようにさらに構成されている上記[23]記載のデバイス。
[34]前記デバイスは、ワイヤレス通信デバイスハンドセットを具備する上記[23]記載のデバイス。
[35]前記デバイスは、1つ以上の集積回路デバイスを具備する上記[23]記載のデバイス。
[36]デバイスにおいて、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信する手段と、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定する手段とを具備し、
1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているデバイス。
[37]前記フィードバックを受信する手段は、前記コード化ビデオデータの少なくとも1つのパケットのロスを示すフィードバックを、前記ビデオデコーダから受信する手段を備え、前記少なくとも1つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない上記[36]記載のデバイス。
[38]ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む上記[36]記載のデバイス。
[39]前記イントラコード化するレートは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいている上記[36]記載のデバイス。
[40]前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む上記[36]記載のデバイス。
[41]前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいている上記[40]記載のデバイス。
[42]失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信する手段と、
前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算する手段とをさらに具備し、
前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいている上記[41]記載のデバイス。
[43]前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている上記[42]記載のデバイス。
[44]前記GNACKは、失われた各パケットを識別し、前記デバイスは、現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算する手段をさらに具備し、前記イントラコード化するレートは、さらに、前記経過時間に少なくとも部分的に基づいている上記[41]記載のデバイス。
[45]前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算する手段は、
前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定する手段と、
前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算する手段とを備える上記[44]記載のデバイス。
[46]ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定する手段をさらに具備する上記[36]記載のデバイス。
[47]方法において、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも1つのエラーを、ビデオデコーダにより検出することと、
前記ビデオデコーダと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、
前記ビデオデコーダにより検出された以前のエラーを示しているフィードバックメッセージを、前記ビデオデコーダが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較することと、
前記比較に基づいて、前記ビデオデコーダにより検出された少なくとも1つのエラーを示している第2のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することとを含む方法。
[48]前記第2のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することは、
前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第2のフィードバックメッセージを送ることと、
前記最後に送られた時間を、前記現在の時間に等しいように設定することとを含む上記[47]記載の方法。
[49]前記往復移動時間を決定することは、前記ビデオデコーダと前記ビデオエンコーダとの間で交換される、少なくとも1つの対のメッセージに基づいて、前記往復移動時間を測定または推定することを含む上記[47]記載の方法。
[50]前記ビデオエンコーダから、前記コード化ビデオデータを受信することをさらに含み、前記少なくとも1つのエラーを検出することは、前記ビデオデコーダによる前記コード化ビデオデータのデコーディングの際に、少なくとも1つのデコーディングエラーを検出することを含む上記[47]記載の方法。
[51]前記少なくとも1つのエラーを検出することは、パケットロスを検出することを含み、
前記方法は、
前記パケットロスを検出すると、失われたパケットのカウントをインクリメントすることと、
前記失われたパケットのカウントをしきい値と比較することと、
前記失われたパケットのカウントが、前記しきい値を超えている場合に、および、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第2のフィードバックメッセージを前記ビデオエンコーダに送ることと、
前記失われたパケットのカウントが、前記しきい値を超えていない場合に、前記パケットロスを示している、別のタイプのフィードバックメッセージを、前記ビデオエンコーダに送ることとをさらに含む上記[47]記載の方法。
[52]前記第2のフィードバックメッセージを前記ビデオエンコーダに送ると、前記失われたパケットのカウントをゼロに等しいように設定することをさらに含む上記[51]記載の方法。
[53]前記しきい値は、パケットロスしきい値と、1フレーム当たりのパケットの平均数とに少なくとも部分的に基づいている上記[51]記載の方法。
[54]デバイスにおいて、
記憶デバイスと、
前記記憶デバイスに結合されている1つ以上のプロセッサとを具備し、
前記1つ以上のプロセッサは、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも1つのエラーを検出し、
前記デバイスと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定し、
前記デバイスにより検出された以前のエラーを示しているフィードバックメッセージを、前記デバイスが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定し、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較し、
前記比較に基づいて、前記デバイスにより検出された少なくとも1つのエラーを示している第2のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定するように構成されているデバイス。
[55]前記1つ以上のプロセッサは、少なくとも、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第2のフィードバックメッセージを送ることと、前記最後に送られた時間を、前記現在の時間に等しいように設定することとにより、前記第2のフィードバックメッセージを前記ビデオエンコーダに送るかどうかを決定するように構成されている上記[54]記載のデバイス。
[56]前記1つ以上のプロセッサは、少なくとも、前記デバイスと前記ビデオエンコーダとの間で交換される、少なくとも1つの対のメッセージに基づいて、前記往復移動時間を測定または推定することにより、前記往復移動時間を決定するように構成されている上記[54]記載のデバイス。
[57]前記1つ以上のプロセッサは、前記ビデオエンコーダから、前記コード化ビデオデータを受信するようにさらに構成されており、前記1つ以上のプロセッサは、前記デバイスによる前記コード化ビデオデータのデコーディングの際に、少なくとも1つのデコーディングエラーを検出することにより、前記少なくとも1つのエラーを検出するように構成されている上記[54]記載のデバイス。
[58]前記少なくとも1つのエラーは、パケットロスを含み、前記1つ以上のプロセッサは、
前記パケットロスを検出すると、失われたパケットのカウントをインクリメントし、
前記失われたパケットのカウントをしきい値と比較し、
前記失われたパケットのカウントが、前記しきい値を超えている場合に、および、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第2のフィードバックメッセージを前記ビデオエンコーダに送り、
前記失われたパケットのカウントが、前記しきい値を超えていない場合に、前記パケットロスを示している、別のタイプのフィードバックメッセージを、前記ビデオエンコーダに送るようにさらに構成されている上記[54]記載のデバイス。
[59]前記1つ以上のプロセッサは、前記第2のフィードバックメッセージを前記ビデオエンコーダに送ると、前記失われたパケットのカウントをゼロに等しいように設定するようにさらに構成されている上記[58]記載のデバイス。
[60]前記しきい値は、パケットロスしきい値と、1フレーム当たりのパケットの平均数とに少なくとも部分的に基づいている上記[58]記載のデバイス。
[61]前記デバイスは、ワイヤレス通信デバイスハンドセットを具備する上記[54]記載のデバイス。
[62]前記デバイスは、1つ以上の集積回路デバイスを具備する上記[54]記載のデバイス。
[63]デバイスにおいて、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも1つのエラーを検出する手段と、
前記デバイスと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定する手段と、
前記デバイスにより検出された以前のエラーを示しているフィードバックメッセージを、前記デバイスが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定する手段と、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較する手段と、
前記比較に基づいて、前記デバイスにより検出された少なくとも1つのエラーを示している第2のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定す手段とを具備するデバイス。
[64]コンピュータ読取り可能媒体において、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも1つのエラーを、ビデオデコーダにより検出することと、
前記ビデオデコーダと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、
前記ビデオデコーダにより検出された以前のエラーを示しているフィードバックメッセージを、前記ビデオデコーダが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較することと、
前記比較に基づいて、前記ビデオデコーダにより検出された少なくとも1つのエラーを示している第2のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することと、
を1つ以上のプロセッサに生じさせるための命令を含むコンピュータ読取り可能媒体。

Claims (38)

  1. 方法において、
    コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、前記フィードバックは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない、前記コード化ビデオデータ中の1つ以上の失われたパケットを識別することと、
    現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算することと、
    前記フィードバックを受信すると、前記経過時間に少なくとも部分的に基づいて、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することとを含み、
    1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している方法。
  2. ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む請求項1記載の方法。
  3. 前記レートを決定することは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいて、前記レートを決定することを含む請求項1記載の方法。
  4. 前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む請求項1記載の方法。
  5. 前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートを決定することは、前記失われたパケットの数に少なくとも部分的に基づいている請求項記載の方法。
  6. 失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信することと、
    前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算することとをさらに含み、
    前記イントラコード化するレートを決定することは、前記パケットエラーレートに少なくとも部分的に基づいている請求項記載の方法。
  7. 前記レートを決定することは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている請求項記載の方法。
  8. 前記GNACKは、失われた各パケットを識別し、前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算することは、
    前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、
    前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することとを含む請求項記載の方法。
  9. ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定することをさらに含む請求項1記載の方法。
  10. コンピュータ読取り可能記憶媒体において、
    コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、前記フィードバックは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない、前記コード化ビデオデータ中の1つ以上の失われたパケットを識別することと、
    現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算することと、
    前記フィードバックを受信すると、前記経過時間に少なくとも部分的に基づいて、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することと、
    を1つ以上のプロセッサに生じさせるための命令を含み、
    1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているコンピュータ読取り可能記憶媒体。
  11. ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む請求項10記載のコンピュータ読取り可能記憶媒体。
  12. 前記イントラコード化するレートは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいている請求項10記載のコンピュータ読取り可能記憶媒体。
  13. 前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む請求項10記載のコンピュータ読取り可能記憶媒体。
  14. 前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいている請求項13記載のコンピュータ読取り可能記憶媒体。
  15. 失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信することと、
    前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算することと、
    を前記1つ以上のプロセッサに生じさせるための命令をさらに含み、
    前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいている請求項14記載のコンピュータ読取り可能記憶媒体。
  16. 前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている請求項15記載のコンピュータ読取り可能記憶媒体。
  17. 前記GNACKは、失われた各パケットを識別し、前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算することを前記1つ以上のプロセッサに生じさせるための命令は、
    前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、
    前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することと、
    を前記1つ以上のプロセッサに生じさせるための命令を含む請求項14記載のコンピュータ読取り可能記憶媒体。
  18. ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定することを、前記1つ以上のプロセッサに生じさせるための命令をさらに含む請求項10記載のコンピュータ読取り可能記憶媒体。
  19. デバイスにおいて、
    記憶デバイスと、
    前記記憶デバイスに結合されている1つ以上のプロセッサとを具備し、
    前記1つ以上のプロセッサは、
    コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、前記フィードバックは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない、前記コード化ビデオデータ中の1つ以上の失われたパケットを識別し、
    現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算し、
    前記フィードバックを受信すると、前記経過時間に少なくとも部分的に基づいて、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定するように構成されており、
    1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているデバイス。
  20. ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む請求項19記載のデバイス。
  21. 前記イントラコード化するレートは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいている請求項19記載のデバイス。
  22. 前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む請求項19記載のデバイス。
  23. 前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいている請求項22記載のデバイス。
  24. 前記1つ以上のプロセッサは、
    失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信し、
    前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算するようにさらに構成されており、
    前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいている請求項23記載のデバイス。
  25. 前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている請求項24記載のデバイス。
  26. 前記GNACKは、失われた各パケットを識別し、前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記1つ以上のプロセッサは、少なくとも、前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することとにより、前記経過時間を計算するように構成されている請求項23記載のデバイス。
  27. 前記1つ以上のプロセッサは、ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定するようにさらに構成されている請求項19記載のデバイス。
  28. 前記デバイスは、ワイヤレス通信デバイスハンドセットを具備する請求項19記載のデバイス。
  29. 前記デバイスは、1つ以上の集積回路デバイスを具備する請求項19記載のデバイス。
  30. デバイスにおいて、
    コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、前記フィードバックは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていない、前記コード化ビデオデータ中の1つ以上の失われたパケットを識別する手段と、
    現在の時間と、前記識別された、失われたパケットのうちの1つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算する手段と、
    前記フィードバックを受信すると、前記経過時間に少なくとも部分的に基づいて、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定する手段とを具備し、
    1つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているデバイス。
  31. ビデオデータの各セグメントは、ビデオデータの1つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの1つ以上のフレームを含む請求項30記載のデバイス。
  32. 前記イントラコード化するレートは、前記シーケンス内の1つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいている請求項30記載のデバイス。
  33. 前記フィードバックは、ピクチャロス表示(PLI)と、汎用否定応答(GNACK)とのうちの少なくとも1つを含む請求項30記載のデバイス。
  34. 前記フィードバックは、前記GNACKを含み、前記GNACKは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいている請求項33記載のデバイス。
  35. 失われたパケットの第2の数を示す報告を、前記ビデオデコーダから受信する手段と、
    前記GNACKより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第2の数とのうちの少なくとも1つに基づいて、パケットエラーレートを計算する手段とをさらに具備し、
    前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいている請求項34記載のデバイス。
  36. 前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいている請求項35記載のデバイス。
  37. 前記GNACKは、失われた各パケットを識別し、前記GNACKにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算する手段は、
    前記GNACKにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定する手段と、
    前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算する手段とを備える請求項34記載のデバイス。
  38. ビデオユニットの1つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定する手段をさらに具備する請求項30記載のデバイス。
JP2011504113A 2008-04-07 2009-04-06 エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム Expired - Fee Related JP5248673B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US4300508P 2008-04-07 2008-04-07
US61/043,005 2008-04-07
US12/349,386 US8406296B2 (en) 2008-04-07 2009-01-06 Video refresh adaptation algorithms responsive to error feedback
US12/349,386 2009-01-06
PCT/US2009/039677 WO2009126583A1 (en) 2008-04-07 2009-04-06 Video refresh adaptation algorithms responsive to error feedback

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013011107A Division JP2013138447A (ja) 2008-04-07 2013-01-24 エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム

Publications (2)

Publication Number Publication Date
JP2011517233A JP2011517233A (ja) 2011-05-26
JP5248673B2 true JP5248673B2 (ja) 2013-07-31

Family

ID=41133248

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2011504113A Expired - Fee Related JP5248673B2 (ja) 2008-04-07 2009-04-06 エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム
JP2013011107A Pending JP2013138447A (ja) 2008-04-07 2013-01-24 エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム
JP2014191384A Expired - Fee Related JP5917638B2 (ja) 2008-04-07 2014-09-19 エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2013011107A Pending JP2013138447A (ja) 2008-04-07 2013-01-24 エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム
JP2014191384A Expired - Fee Related JP5917638B2 (ja) 2008-04-07 2014-09-19 エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム

Country Status (7)

Country Link
US (2) US8406296B2 (ja)
EP (3) EP2274914B1 (ja)
JP (3) JP5248673B2 (ja)
KR (2) KR101248265B1 (ja)
CN (2) CN102857757B (ja)
TW (1) TW201004356A (ja)
WO (1) WO2009126583A1 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8406296B2 (en) * 2008-04-07 2013-03-26 Qualcomm Incorporated Video refresh adaptation algorithms responsive to error feedback
JP5197238B2 (ja) * 2008-08-29 2013-05-15 キヤノン株式会社 映像送信装置、その制御方法、および制御方法を実行するプログラム
JP4987034B2 (ja) * 2008-12-26 2012-07-25 三菱電機株式会社 映像表示装置
US8468566B2 (en) * 2009-04-10 2013-06-18 Echostar Technologies L.L.C. Control message feedback in a satellite broadcast communication system
US9723319B1 (en) * 2009-06-01 2017-08-01 Sony Interactive Entertainment America Llc Differentiation for achieving buffered decoding and bufferless decoding
US20110072148A1 (en) * 2009-09-24 2011-03-24 Cisco Technology, Inc. Distributed Coordination of Network Elements for Packet Encapsulation
US20110249729A1 (en) * 2010-04-07 2011-10-13 Apple Inc. Error resilient hierarchical long term reference frames
WO2012078640A2 (en) * 2010-12-06 2012-06-14 The Regents Of The University Of California Rendering and encoding adaptation to address computation and network bandwidth constraints
US9025672B2 (en) * 2011-05-04 2015-05-05 Cavium, Inc. On-demand intra-refresh for end-to end coded video transmission systems
GB2492163B (en) 2011-06-24 2018-05-02 Skype Video coding
GB2492329B (en) 2011-06-24 2018-02-28 Skype Video coding
GB2492330B (en) 2011-06-24 2017-10-18 Skype Rate-Distortion Optimization with Encoding Mode Selection
GB2493777A (en) 2011-08-19 2013-02-20 Skype Image encoding mode selection based on error propagation distortion map
GB2495469B (en) 2011-09-02 2017-12-13 Skype Video coding
GB2495468B (en) 2011-09-02 2017-12-13 Skype Video coding
GB2495467B (en) 2011-09-02 2017-12-13 Skype Video coding
CN102946533B (zh) * 2011-09-02 2016-08-17 斯凯普公司 视频编码
TWI528793B (zh) * 2011-10-14 2016-04-01 立積電子股份有限公司 用以提供數位視訊內容錯誤復原的方法
CN104081771B (zh) * 2011-11-14 2018-06-05 瑞典爱立信有限公司 用于对图像序列中的图像进行压缩编码的方法和设备
CN102520897B (zh) * 2011-11-14 2015-01-28 中兴通讯股份有限公司 一种移动终端及其提高屏幕界面绘制速度的方法
US20130170559A1 (en) * 2011-12-28 2013-07-04 Rovi Technologies Corporation Systems and methods for region of interest video processing
US9661325B1 (en) * 2012-02-17 2017-05-23 Polycom, Inc. Lossy channel video blur avoidance
EP2867891B1 (en) * 2012-06-28 2016-12-28 ANT - Advanced Network Technologies OY Processing and error concealment of digital signals
US9762939B2 (en) 2012-09-28 2017-09-12 Marvell World Trade Ltd. Enhanced user experience for miracast devices
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US10616086B2 (en) * 2012-12-27 2020-04-07 Navidia Corporation Network adaptive latency reduction through frame rate control
US20140281994A1 (en) * 2013-03-15 2014-09-18 Xiaomi Inc. Interactive method, terminal device and system for communicating multimedia information
US9407923B2 (en) * 2013-05-20 2016-08-02 Gamefly Israel Ltd. Overconing lost IP packets in streaming video in IP networks
US9350683B2 (en) * 2013-06-18 2016-05-24 Cisco Technology, Inc. Reliable bulk data dissemination using rateless codes
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
CN104780029B (zh) * 2014-01-14 2019-02-19 华为技术有限公司 一种混合自动重传请求方法及相关装置
KR101599888B1 (ko) 2014-05-02 2016-03-04 삼성전자주식회사 적응적 영상 데이터 압축 방법 및 장치
CN104079859B (zh) * 2014-07-03 2017-04-26 天津瑞发科半导体技术有限公司 基于反馈机制的视频传输速率自适应系统
WO2016022982A1 (en) * 2014-08-08 2016-02-11 University Of Florida Research Foundation, Inc. Joint fountain coding and network coding for loss-tolerant information spreading
US9905199B2 (en) 2014-09-17 2018-02-27 Mediatek Inc. Processor for use in dynamic refresh rate switching and related electronic device and method
US10032430B2 (en) * 2014-09-17 2018-07-24 Mediatek Inc. Processor for use in dynamic refresh rate switching and related electronic device
GB2536059B (en) 2015-03-06 2017-03-01 Garrison Tech Ltd Secure control of insecure device
CN107683605B (zh) * 2015-06-24 2021-12-03 索尼公司 编码装置、解码装置和传输控制方法
US10085029B2 (en) 2015-07-21 2018-09-25 Qualcomm Incorporated Switching display devices in video telephony
CN106488229B (zh) * 2015-09-01 2022-01-21 恩智浦美国有限公司 具有可调整帧内刷新率的视频编码器
US10313685B2 (en) * 2015-09-08 2019-06-04 Microsoft Technology Licensing, Llc Video coding
US10595025B2 (en) 2015-09-08 2020-03-17 Microsoft Technology Licensing, Llc Video coding
US10200694B2 (en) * 2015-09-17 2019-02-05 Mediatek Inc. Method and apparatus for response of feedback information during video call
GB2545010B (en) 2015-12-03 2018-01-03 Garrison Tech Ltd Secure boot device
CN110225338B (zh) 2016-12-30 2021-12-10 深圳市大疆创新科技有限公司 图像处理方法、装置、无人飞行器和接收端
WO2018120218A1 (zh) * 2016-12-30 2018-07-05 深圳市大疆创新科技有限公司 图像处理方法与设备
US10291936B2 (en) 2017-08-15 2019-05-14 Electronic Arts Inc. Overcoming lost or corrupted slices in video streaming
US11784757B2 (en) * 2018-03-08 2023-10-10 Nokia Technologies Oy Method, apparatus and computer program
WO2020237466A1 (zh) * 2019-05-27 2020-12-03 深圳市大疆创新科技有限公司 视频传输方法、装置、飞行器、播放设备及存储介质
CN111713107A (zh) * 2019-06-28 2020-09-25 深圳市大疆创新科技有限公司 图像处理方法、设备、无人飞行器和接收端
US11039149B2 (en) * 2019-08-01 2021-06-15 Qualcomm Incorporated Dynamic video insertion based on feedback information

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834313B2 (ja) 1990-11-09 1998-12-09 株式会社日立製作所 画像符号化復号装置
JPH04334189A (ja) 1991-05-09 1992-11-20 Mitsubishi Electric Corp 画像伝送装置
KR0132894B1 (ko) 1992-03-13 1998-10-01 강진구 영상압축부호화 및 복호화 방법과 그 장치
US5682204A (en) 1995-12-26 1997-10-28 C Cube Microsystems, Inc. Video encoder which uses intra-coding when an activity level of a current macro-block is smaller than a threshold level
JPH10200897A (ja) 1997-01-08 1998-07-31 Nippon Telegr & Teleph Corp <Ntt> 動画像伝送装置
JPH11289542A (ja) 1998-02-09 1999-10-19 Matsushita Electric Ind Co Ltd 画像符号化装置、画像符号化方法、および画像符号化プログラムを記録した記録媒体
US6765964B1 (en) 2000-12-06 2004-07-20 Realnetworks, Inc. System and method for intracoding video data
US7042948B2 (en) 2001-03-05 2006-05-09 Intervideo, Inc. Systems and methods for management of data in a ring buffer for error resilient decoding of a video bitstream
JP2002330437A (ja) 2001-05-01 2002-11-15 Sony Corp 画像伝送方法、画像伝送方法のプログラム、画像伝送方法のプログラムを記録した記録媒体及び画像伝送装置
KR100399932B1 (ko) 2001-05-07 2003-09-29 주식회사 하이닉스반도체 메모리의 양을 감소시키기 위한 비디오 프레임의압축/역압축 하드웨어 시스템
EP1337086B1 (en) 2002-02-13 2006-07-19 Matsushita Electric Industrial Co., Ltd. Method for transmitting data packets using RTP and RTCP protocols
JP2004215201A (ja) 2003-01-09 2004-07-29 Sony Corp 情報処理装置および情報処理方法、データ通信システム、記録媒体、並びにプログラム
JP4244159B2 (ja) 2003-05-16 2009-03-25 株式会社エヌ・ティ・ティ・ドコモ 受信装置、通信システムおよびプログラム
US20040252761A1 (en) * 2003-06-16 2004-12-16 Dilithium Networks Pty Limited (An Australian Corporation) Method and apparatus for handling video communication errors
JP3871661B2 (ja) 2003-07-25 2007-01-24 株式会社東芝 マルチメディアコンテンツ受信装置及びマルチメディアコンテンツ受信方法
US7796499B2 (en) 2003-12-05 2010-09-14 Telefonaktiebolaget L M Ericsson (Publ) Method of and system for video fast update
EP1638333A1 (en) 2004-09-17 2006-03-22 Mitsubishi Electric Information Technology Centre Europe B.V. Rate adaptive video coding
US8948266B2 (en) 2004-10-12 2015-02-03 Qualcomm Incorporated Adaptive intra-refresh for digital video encoding
US8634413B2 (en) 2004-12-30 2014-01-21 Microsoft Corporation Use of frame caching to improve packet loss recovery
CN100459717C (zh) * 2005-04-20 2009-02-04 华为技术有限公司 基于h.264的压缩视频传输误码消除方法
TWI259725B (en) 2005-04-28 2006-08-01 Benq Corp Methods and systems for transmitting AV information
JP4688566B2 (ja) 2005-05-10 2011-05-25 富士通東芝モバイルコミュニケーションズ株式会社 送信機及び受信機
JP4542150B2 (ja) * 2005-07-08 2010-09-08 富士通株式会社 送信装置、受信装置、情報通信方法
JP4513725B2 (ja) * 2005-11-09 2010-07-28 ソニー株式会社 パケット送信装置、通信システム及びプログラム
JP4687538B2 (ja) 2006-04-04 2011-05-25 パナソニック株式会社 受信装置、送信装置およびその通信方法
KR100827152B1 (ko) * 2006-10-20 2008-05-02 삼성전자주식회사 Nal 유닛 에러 검출을 위한 효율적인 h.264 복호 방법및 장치
US8175075B2 (en) * 2006-12-26 2012-05-08 Alcatel Lucent Adaptive header compression in a wireless communication network
US8265171B2 (en) * 2008-02-26 2012-09-11 Richwave Technology Corp. Error resilient video transmission using instantaneous receiver feedback and channel quality adaptive packet retransmission
US8406296B2 (en) 2008-04-07 2013-03-26 Qualcomm Incorporated Video refresh adaptation algorithms responsive to error feedback

Also Published As

Publication number Publication date
US20120219073A1 (en) 2012-08-30
KR101248265B1 (ko) 2013-03-27
EP3288263A1 (en) 2018-02-28
US8406296B2 (en) 2013-03-26
WO2009126583A1 (en) 2009-10-15
JP2015039189A (ja) 2015-02-26
EP2621173A3 (en) 2014-06-25
TW201004356A (en) 2010-01-16
EP2274914A1 (en) 2011-01-19
CN101983509A (zh) 2011-03-02
CN102857757A (zh) 2013-01-02
KR20100131520A (ko) 2010-12-15
US9479800B2 (en) 2016-10-25
JP2011517233A (ja) 2011-05-26
CN102857757B (zh) 2015-12-16
JP5917638B2 (ja) 2016-05-18
EP2274914B1 (en) 2013-05-08
KR101330931B1 (ko) 2013-11-18
KR20130018964A (ko) 2013-02-25
US20090252227A1 (en) 2009-10-08
CN101983509B (zh) 2013-11-13
JP2013138447A (ja) 2013-07-11
EP2621173A2 (en) 2013-07-31

Similar Documents

Publication Publication Date Title
JP5248673B2 (ja) エラーフィードバックに応答するビデオリフレッシュ適合アルゴリズム
US10334289B2 (en) Efficient approach to dynamic frame size and frame rate adaptation
JP4644939B2 (ja) 動画像符号化装置および動画像符号化方法
US8804821B2 (en) Adaptive video processing of an interactive environment
US7483488B1 (en) Systems and methods for improving bit rate control of video encoding by correcting for the effects of scene changes and bit stuffing in a video buffer verifier (VBV) buffer model
JP5072572B2 (ja) サーバ
US7197072B1 (en) Systems and methods for resetting rate control state variables upon the detection of a scene change within a group of pictures
US20070009039A1 (en) Video encoding and decoding methods and apparatuses
JP5133290B2 (ja) 動画像符号化装置および復号装置
US20120106632A1 (en) Method and apparatus for error resilient long term referencing block refresh
US20080069202A1 (en) Video Encoding Method and Device
US7388912B1 (en) Systems and methods for adjusting targeted bit allocation based on an occupancy level of a VBV buffer model
US10080032B2 (en) Lossy channel video blur avoidance
JP2014519247A (ja) エンドツーエンドコード化ビデオ伝送システムのためのオンデマンドイントラリフレッシュ
US20060209964A1 (en) Systems and methods for video compression for low bit rate and low latency video communications
KR101069404B1 (ko) 비디오 부호화기 및 그 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120724

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120725

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121024

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121031

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130410

R150 Certificate of patent or registration of utility model

Ref document number: 5248673

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees