JP2021522729A - 符号化されたビデオビットストリームの低遅延消費 - Google Patents

符号化されたビデオビットストリームの低遅延消費 Download PDF

Info

Publication number
JP2021522729A
JP2021522729A JP2020560303A JP2020560303A JP2021522729A JP 2021522729 A JP2021522729 A JP 2021522729A JP 2020560303 A JP2020560303 A JP 2020560303A JP 2020560303 A JP2020560303 A JP 2020560303A JP 2021522729 A JP2021522729 A JP 2021522729A
Authority
JP
Japan
Prior art keywords
frame
buffer
chunk
bitstream
video encoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020560303A
Other languages
English (en)
Other versions
JP7336459B2 (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.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of JP2021522729A publication Critical patent/JP2021522729A/ja
Priority to JP2023134181A priority Critical patent/JP2023156488A/ja
Application granted granted Critical
Publication of JP7336459B2 publication Critical patent/JP7336459B2/ja
Active 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods

Landscapes

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

Abstract

符号化されたビデオビットストリームをリアルタイムで消費するときの待ち時間を短縮するためのシステム、装置、及び方法が開示される。ビデオエンコーダは、ビデオビットストリームを符号化し、符号化されたビットストリームのチャンクをビットストリームバッファに書き込む。エンコーダがフレーム全体またはフレームのスライス全体の符号化を完了する前に、コンシューマモジュールはビットストリームの符号化されたチャンクを消費する。一実施態様では、符号化による消費のパイプライン化を可能にするために、エンコーダは、バッファ書き込みポインタを更新して、ビットストリームバッファに書き込まれているデータの量を指示する。コンシューマモジュールは、ビットストリームバッファから、バッファ書き込みポインタによって示される場所まで、符号化データを取得する。このように、コンシューマモジュールは、エンコーダがフレーム全体またはフレームのスライス全体の符号化を終了する前に、符号化されたビデオデータにアクセスしてそれを消費することが可能である。
【選択図】図7

Description

デジタルビデオストリーミングの帯域幅要件は、時間と共に増え続けている。様々な用途では、アーカイブされたビデオ情報のためにより小さい記憶スペースを必要とし及び/またはビデオ情報の伝送により小さい帯域幅を必要とするビデオ圧縮から利益がもたらされる。したがって、デジタルビデオの品質及び利用のし易さを改善するための様々な技術が開発されてきた。係る技術の例は、Joint Video Team(JVT)によって提案されたビデオ圧縮標準であるH.264に説明されている。現在のマルチメディア対応のデジタルデバイスの多くは、H.264標準に準拠するデジタルビデオコーデックの(データを符号化及び/または復号化するように構成されるハードウェア及び/またはソフトウェア)を組み込んでいる。高効率ビデオコーディング(HEVC)標準は、H.264に従っている別のビデオ圧縮標準である。
ストリーミング、ストレージ、または追加処理のためにビデオを準備するために、ハードウェアアクセラレータ(例えば、ビデオエンコーダ)は、ビデオフレームごとに符号化されたビットストリームを出力する。符号化されたビットストリームは、通常、(例えば、ネットワーク送信のために)別の論理ユニットによって消費される前に、メモリに書き込まれる。符号化された各ビデオフレームのビデオ消費(例えば、ストリーミング)は、通常、各フレームが完全に符号化された後に開始される。言い換えると、ビデオエンコーダは、通常、フレーム全体が符号化されるまで待機して、全てのビットストリームメモリ書き込み動作が完了したことを確認し、書き込まれているビット数を確認し、ビットストリームコンシューマが、書き込まれたビット数と、ストレージデバイスのビットストリームの場所とを判定する方法を提供する。このアプローチの不利点は、符号化フレームの消費は、フレーム全体が符号化されているときだけ開始できることを意味することである。これは、フレーム符号化がネットワーク送信等の他のアクションによってパイプライン化されるのを防ぎ、待ち時間の増加をもたらす。
本明細書で説明される方法及び機構の利点は、添付の図面と併せて以下の説明を参照して最良に理解され得る。
コンピューティングシステムの一実施態様のブロック図である。 エンコーダ及びビットストリームコンシューマに関する動作の一実施態様のタイミング図である。 エンコーダ及びビットストリームコンシューマに関する動作の別の実施態様のタイミング図である。 コンピューティングシステムの別の実施態様のブロック図である。 コンシューマモジュールに結合されるビデオエンコーダの一実施態様のブロック図である。 所与のビデオフレームが符号化されている間に所与のビデオフレームの符号化されたビデオビットストリームへのオンザフライアクセスを可能にするための方法の一実施態様を示す全体的フロー図である。 ビットストリームが符号化されているときに、リアルタイムで符号化されたビデオビットストリームにアクセスするコンシューマモジュールに関する方法の一実施態様を示す全体的フロー図である。 ビットストリーム書き込みポインタ更新の粒度を制御するための方法の一実施態様を示す全体的フロー図である。 消費されているチャンクにわたる予測を行うビデオエンコーダに関する方法の一実施態様を示す全体的フロー図である。 符号化されたビデオビットストリームのチャンクのリアルタイム消費の一実施態様のタイミング図を示す。
以下の説明では、本明細書で提示される方法及び機構の完全な理解を提供するために、多くの特定の詳細が示される。しかしながら、当業者は、それらの特定の詳細を用いずに様々な実施態様を実践し得ることを認識するべきである。いくつかの場合、本明細書で説明されるアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術を詳細に示していない。例示を簡潔及び明確にするために、図に示される要素は、必ずしも縮尺通りに描かれていないことが理解されよう。例えば、要素の一部の寸法は、他の要素に関して誇張され得る。
フレームまたはスライスの全体が符号化される前に、符号化されたビデオビットストリームの低遅延消費を可能にするための様々なシステム、装置、方法、及びコンピュータ可読媒体が本明細書で開示される。本システムは、メモリデバイスに結合される少なくとも1つ以上のプロセッサを含む。1つ以上のプロセッサは、少なくともビデオエンコーダ及びコンシューマモジュールを実行する回路を含む。コンシューマモジュールは、ビデオビットストリームがビデオエンコーダによって符号化されるとき、リアルタイムで符号化されたビデオビットストリームにアクセスしてそれを消費する(例えば、ネットワークを通じてビデオビットストリームを送信する)様々な種類の論理ユニットのいずれかである。フレームまたはスライスの全体がビデオエンコーダによって符号化されるまで待機するのではなく、コンシューマモジュールは符号化されたビットストリームの中間フレーム及び/または中間スライスの処理を開始する。スライス符号化は通常コーデック固有であり、様々な種類のスライス符号化のいずれかが様々な実施形態で使用されることに留意されたい。符号化されたビデオビットストリームをオンザフライによる消費に関して本明細書で説明される技術は、フルフレーム符号化またはいずれかのコーデック固有のサブフレーム符号化(例えば、H−264スライス符号化)に適用可能である。
一実施態様では、フレーム全体の符号化を完了する前に符号化されたビットストリームの消費を容易にするために、ビデオエンコーダは、バッファ書き込みポインタを定期的に更新して、ビデオバッファに書き込まれた符号化データの量を指示する。一実施態様では、ビデオエンコーダがバッファ書き込みポインタを更新する粒度はプログラム可能である。一実施態様では、コンシューマモジュールは、ビデオエンコーダがバッファ書き込みポインタを更新する粒度をプログラムする。言い換えると、ビデオエンコーダは、特定のビット数(例えば、512ビット、1024ビット等)の符号化データをバッファに書き込んだ後、バッファ書き込みポインタを更新するように構成可能である。符号化されたフレームの最後の部が結果的に粒度よりも小さくなる場合、ビデオエンコーダはバッファ書き込みポインタを更新して、フレーム完了フラグをフレームの符号化が完了したことを示すように設定する。この場合、チャンクは、上述の粒度と異なるサイズを有する(すなわち、チャンクのサイズは可変である)。
ビデオエンコーダがビデオビットストリームを符号化することに並行して、コンシューマモジュールはバッファ書き込みポインタへの更新を監視する。バッファ書き込みポインタへの更新を検出した後、コンシューマモジュールはビットストリームバッファからバッファ書き込みポインタによって示される場所まで読み取る。ビットカウントに加えて、バッファ書き込みポインタは、また、フレーム符号化が現在のフレームに対して完了しているどうかを示すフレーム完了フラグを含む。一実施態様では、フレーム完了フラグは、フレーム符号化が現在のフレームに対して完了し、バッファ書き込みポインタが現在のフレームの最終フレームビットカウントを有するときに、ビデオエンコーダによって真(例えば、1)に設定される。本実施態様では、コンシューマモジュールが全ての符号化データを現在のフレームのビデオバッファから取得した後、フレーム完了フラグがコンシューマモジュールによって疑(例えば、0)にリセットされる。フレーム完了フラグは、コンシューマモジュールが、バッファ書き込みポインタが現在のフレームに対して更新されないことを判定する方法を提供し、データの量が指定された粒度よりも小さい場合でも、コンシューマモジュールが残りの符号化されたビットストリームデータを読み取ることを可能にする。一実施態様では、フレーム完了同期は、バッファ書き込みポインタの更新とは別に実施される。
ここで、図1を参照して、コンピューティングシステム100の一実施態様のブロック図が示される。一実施態様では、コンピューティングシステム100は、少なくとも、プロセッサ105A〜N、入出力(I/O)インターフェース120、バス125、メモリコントローラ(複数可)130、ネットワークインターフェース135、及びメモリデバイス(複数可)140を含む。他の実施態様では、コンピューティングシステム100は他のコンポーネントを含み、及び/またはコンピューティングシステム100は異なって配列される。プロセッサ105A〜Nは、システム100に含まれる任意の数のプロセッサを表す。
一実施態様では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。一実施態様では、プロセッサ105Nは、高度な並列アーキテクチャを伴うデータ並列プロセッサである。データ並列プロセッサは、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等を含む。プロセッサ105A〜Nのうちの1つ以上は、ビデオエンコーダ及びコンシューマモジュールを実装する回路を含む。コンシューマモジュールは、ビデオエンコーダがビデオフレームを符号化している間、リアルタイムでビデオフレームの符号化されたビットストリームにアクセスしてそれを消費する。
メモリコントローラ(複数可)130は、プロセッサ105A〜N及びI/Oインターフェース120に結合される入出力デバイス(図示しない)によってアクセス可能な任意の数及び種類のメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及び種類のメモリデバイス(複数可)140に結合される。メモリデバイス(複数可)140は、任意の数及び種類のメモリデバイスを表す。例えば、メモリデバイス(複数可)140におけるメモリの種類は、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、または強誘電体ランダムアクセスメモリ(FeRAM)等を含む。
I/Oインターフェース120は、任意の数及び種類のI/Oインターフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI−Extended(PCI−X)、PCIE(PCI Express)バス、ギガビットイーサネット(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々な種類の周辺機器デバイス(図示しない)は、I/Oインターフェース120に結合される。係る周辺機器デバイスは、(限定ではないが)ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、または他の種類のゲームコントローラ、メディア記録デバイス、外部記憶デバイス、及びネットワークインターフェースカード等を含む。ネットワークインターフェース135は、ネットワークにわたってネットワークメッセージを送信及び受信するために使用される。
様々な実施態様では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲーム機、サーバ、ストリーミングデバイス、ウェアラブルデバイス、または様々な他の種類のコンピューティングシステムもしくはコンピューティングデバイスのいずれかである。コンピューティングシステム100のコンポーネントの数は、実施態様ごとに変わることに留意されたい。例えば、図1に示される数よりも多いまたは少ないコンポーネントがそれぞれ存在し得る。また、コンピューティングシステム100は、図1に示されない他のコンポーネントを含み得ることに留意されたい。加えて、他の実施態様では、コンピューティングシステム100は、図1に示される様式以外の様式で構造化され得る。
ここで、図2を参照して、エンコーダ205及びビットストリームコンシューマ210に関する動作の一実施態様のタイミング図200が示される。一実施態様では、エンコーダ205は、ビデオストリームの個々のフレーム0〜2を符号化し、各フレームを、各フレームの終わりにビットストリームコンシューマ210に対して利用可能にする。例えば、エンコーダ205は、ビットストリームメモリ書き込み動作が完了したことを確認し、ビットストリームバッファに書き込まれているビット数を確認し、その後、ビットストリームコンシューマがメモリの符号化されたビットストリームのサイズ及び場所を判定する方法を提供する。ビットストリームコンシューマ210は、また、「コンシューマモジュール」と称され得ることに留意されたい。エンコーダ205は、様々なコーディング標準のいずれかに従ってビデオストリームを符号化する。例えば、一実施態様では、エンコーダ205は、H.264ビデオ圧縮標準に準拠するようにビットストリームを符号化する。別の実施態様では、エンコーダ205は、高効率ビデオコーディング(HEVC)標準に準拠するようにビットストリームを符号化する。他の実施態様では、エンコーダ205は、他の標準に準拠するようにビットストリームを符号化する。
したがって、タイミング図200に示されるように、ビットストリームコンシューマ210は、エンコーダ205がフレーム全体を符号化した後にだけ、所与のフレームの消費を開始することが可能である。例えば、フレーム0がエンコーダ205によって完全に符号化された後にだけ、ビットストリームコンシューマ210は、フレーム0のために生成された符号化されたビットストリームの消費を開始することが可能である。同じ一連のイベントがフレーム1〜2に対して発生する。これは、エンコーダ205がフレームの符号化を開始するときから、ビットストリームコンシューマ210が符号化フレームの消費を開始することが可能であるときまで遅延をもたらす。
ここで、図3を参照して、エンコーダ305及びビットストリームコンシューマ310の動作の別の実施態様のタイミング図300が示される。タイミング図300に示される実施態様では、エンコーダ305はフレームのスライスを符号化し、その後、エンコーダ305が所与のスライスの符号化を終了した後、ビットストリームコンシューマ310は個々のスライスを消費することが可能である。これは、(図2の)タイミング図200に示される実施態様と比較して、動作の待ち時間を短縮するのに役立つ。例えば、エンコーダ305は、フレーム0のスライス0を符号化して、符号化スライス0の場所とサイズをビットストリームコンシューマ310に対して利用可能にする。その後、エンコーダ305がフレーム0のスライス1の符号化を開始する間、ビットストリームコンシューマ310は符号化スライス0を消費することが可能である。このパターンは、フレーム0のスライス1〜2及びフレーム0の後続のスライスで継続する。スライスの内容及び構造が通常圧縮標準によって定義されるため、係るスライスを生成するために使用されるコーデックは、対応する標準に準拠している。本明細書で使用されるスライスは、また、本明細書では「コーデックレベルのスライス」と称される。
タイミング図300に示される実施態様は、タイミング図200に示される実施態様と比較して待ち時間の短縮がもたらされているが、スライスベースのアプローチの欠点は、ユーザーエクスペリエンスを低下させる視覚的アーティファクトを潜在的に導入するスライス境界効果である。さらに、いくつかのコーディング標準(H.264等)ではスライスにわたる予測を行うことができないと規定されているため、スライスベースのアプローチでは圧縮効率が低下する。係る場合、フレームの各スライスは、フレームの他のスライスと独立して符号化される。加えて、スライスベースのアプローチでは、各スライスがスライスの先頭にヘッダーが含まれるため、スライスヘッダーのオーバーヘッドの増加をもたらす。スライスベースのアプローチのマイナスの影響は、フレームあたりのスライス数が増加するにつれて増大する。
ここで、図4を参照して、コンピューティングシステム400の別の実施態様のブロック図が示される。一実施態様では、コンピュータシステム400は、プロセッサ405A〜N、入出力インターフェース420、バス425、メモリコントローラ(複数可)430、メモリデバイス(複数可)435、及びネットワークインターフェース440を含む。プロセッサ405A〜Nは、任意の種類及び数のプロセッサ(例えば、CPU、GPU、DSP、FPGA、ASIC等)を表す。一実施態様では、プロセッサ405Aは、ビデオビットストリームを符号化するためのビデオエンコーダ410を実行するための回路を含む。一実施態様では、プロセッサ405Aの回路は、ソフトウェア命令を実行して、ビデオエンコーダ410の機能を実施する。別の実施態様では、プロセッサ405Aの回路は、ビデオエンコーダ410の機能を実施するための制御ロジックを含む。他の実施態様では、プロセッサ405Aのハードウェア及び/またはソフトウェアの任意の組み合わせは、ビデオエンコーダ410の機能を実施する。
一実施態様では、プロセッサ405Nは、符号化されたビデオビットストリームにアクセスしてそれを処理するためのコンシューマモジュール415を実行するための回路を含む。一実施態様では、プロセッサ405Nの回路は、ソフトウェア命令を実行して、コンシューマモジュール415の機能を実施する。別の実施態様では、プロセッサ405Nの回路は、コンシューマモジュール415の機能を実施するための制御ロジックを含む。他の実施態様では、プロセッサ405Nのハードウェア及び/またはソフトウェアの任意の組み合わせは、コンシューマモジュール415の機能を実施する。別の実施態様では、単一のプロセッサ405は、ビデオエンコーダ410及びコンシューマモジュール415の両方を実施するためのハードウェア及び/またはソフトウェアを含む。さらなる実施態様では、複数のプロセッサ405A〜Nはビデオエンコーダ410を実施するためのハードウェア及び/もしくはソフトウェアを含み、ならびに/または複数のプロセッサ405A〜Nはコンシューマモジュール415を実施するためのハードウェア及び/もしくはソフトウェアを含む。他の実施態様では、システム400は他のコンポーネントを含み及び/または他の適切な様式で編成されることを理解されたい。
ビデオエンコーダ410は、ビデオシーケンスのフレームを符号化されたビデオビットストリームに符号化するための回路を含む。一実施態様では、ビデオエンコーダ410は、符号化されたビットストリームを、メモリデバイス(複数可)435内のビットストリームバッファ445に記憶する。ビットストリームバッファ445は、任意の数及びサイズのバッファを表し、メモリデバイス(複数可)435は、任意の数及び種類のメモリデバイスを表す。メモリデバイス(複数可)435は、システム400内の任意の適切な場所に位置する。例えば、様々な実施形態では、メモリデバイス(複数可)435は、プロセッサ405Aの外部にある、プロセッサ405Aの内部にある、プロセッサ405Aの1つ以上のキャッシュ(複数可)として実装されている、またはそれ以外の場合がある。ビデオエンコーダ410が符号化データの一部をビットストリームバッファ445に書き込むとき、ビデオエンコーダ410は、バッファ書き込みポインタ450の値を更新して、ビットストリームバッファ445に書き込まれているデータの量(例えば、ビット数)を示す。いくつかの実施態様では、データレディフラグ460は、符号化データがバッファ445に書き込まれており、消費の準備ができていることを示すために使用される。他の実施態様では、バッファ書き込みポインタ450への更新が検出され、符号化データがバッファ445に書き込まれており、消費の準備ができていることを示すのに役立つ。
一実施態様では、ビデオエンコーダ410がバッファ書き込みポインタ450を更新する頻度はプログラム可能である。例えば、一実施態様では、コンシューマモジュール415は、ビデオエンコーダ410がバッファ書き込みポインタ450を更新する頻度をプログラムする。言い換えれば、コンシューマモジュール415は更新粒度を指定し、更新粒度はバッファ書き込みポインタ450への更新をトリガするビット数として定義される。ビデオエンコーダ410がビットストリームバッファ445にビット数を書き込み、ビット数が更新粒度以上であるとき、ビデオエンコーダ410はバッファ書き込みポインタ450を更新する。そうでなければ、ビットストリームバッファ445に書き込まれるビット数が更新粒度よりも小さい場合、ビデオエンコーダ410は、バッファ書き込みポインタ450を更新しない。これは、コンシューマモジュール415が1回で特定のサイズのビットストリームチャンクだけを消費する場合、バッファ書き込みポインタ450を更新するための不必要なメモリトランザクションを回避するのに役立つ。本明細書で使用される「チャンク」は、1つ以上のビットを指す。いくつかの実施態様では、チャンクは特定のバイト数のデータを指す一方、他の実施態様では、チャンクはバイトに均等に分割できないビット数を指す。係る実施態様が可能であり想到される。例えば、一実施態様では、コンシューマモジュール415は、ネットワーク送信パケットペイロードの最大サイズに一致するチャンクサイズを消費する。一実施態様では、ネットワーク送信パケットペイロードの最大サイズは1024バイトであり、したがって、コンシューマモジュール415は、更新粒度が1024バイトに等しくなるようにプログラムする(すなわち、チャンクサイズは8192ビットである)。他の実施態様では、更新粒度は他のビット数と同じに設定される。
フレーム全体が符号化されているとき、ビデオエンコーダ410は、この最終ビットカウントがコンシューマモジュール415によってプログラムされた粒度よりも小さい場合でも、ビットストリーム書き込みポインタ450がフレームビットストリーム全体の最終ビットカウントを含むことを保証する。最終ビットカウントの問題に対処するために、ビデオエンコーダ410は、フレーム全体が符号化されたときにフレーム完了フラグを設定する。フレーム完了フラグ455を設定することは、フレーム符号化が完了し、ビットストリーム書き込みポインタ450が最終フレームビットカウントを有することをコンシューマモジュール415に通知する。様々な実施態様では、コンシューマモジュール415は、フレーム完了フラグ455をポーリングして、フレーム符号化が完了したかどうかを判定する。他の実施態様では、信号または他の指示が生成され、データが消費の準備ができていることをコンシューマモジュール415に通知する。このように、コンシューマモジュール415に、ビットストリーム書き込みポインタ450がフレームに対して更新されなくなることが通知されるため、コンシューマモジュール415は、残りのビットストリームビット数が指定された粒度よりも小さい場合でも、残りのビットストリームビットのいずれかを読み取ることが可能である。フレーム完了フラグ455は、コンシューマモジュール415が現在のフレームのビットストリームバッファ445の全てのビットを取得した後、コンシューマモジュール415によってリセットされる。
一実施態様では、ビットストリーム書き込みポインタ450の記憶場所は、コンシューマモジュール415によって判定される(例えば、GPUメモリ内の特定の場所)。一実施態様では、別個のビットストリーム書き込みポインタ450の場所は、フレームごとに指定される。これは、単一のビットストリーム書き込みポインタ450が複数のフレームに使用される場合、コンシューマモジュール415及びビデオエンコーダ410がそれらのアクションを同期させ、単一のビットストリーム書き込みポインタ450の状態を維持する必要がないようにする。いくつかの実施態様では、ビットストリーム書き込みポインタ450への更新が行われ、ビデオエンコーダ410以外の他のエンティティによってコンシューマモジュール415に通信される。
ここで、図5を参照すると、コンシューマモジュールに結合されるビデオエンコーダを有するコンピューティングシステム500の一実施態様のブロック図が示される。システム500は、少なくとも、ビデオエンコーダ510、ビットストリームバッファ515、ビットストリーム書き込みポインタ(BWP)及びフレーム完了フラグ520、ならびにコンシューマモジュール525を含む。ビットストリームバッファ515は、符号化されたビデオビットストリームを記憶するための任意の種類のバッファまたはストレージエレメントの集合を表す。また、ビットストリームバッファ515は、様々なメモリデバイスまたはメモリサブシステムのいずれかの中に位置する。例えば、一実施態様では、ビットストリームバッファ515はGPUメモリに記憶される。他の実施態様では、ビットストリームバッファ515は他の場所に記憶される。ビデオエンコーダ510及びコンシューマモジュール525によって実施される例示的なルーチンが図5に示される。このルーチンは、単に一実施態様を示しているにすぎないことに留意されたい。他の実施態様では、図5に示される例と異なる他のルーチンが可能であり想到される。
一実施態様では、例示的なルーチンは、ステップ505Aで始まり、コンシューマモジュール525は、所与のフレームの終わりに、次のフレームの開始の前に、BWP及びフレーム完了フラグ520をリセットする。ビデオエンコーダ510が次のフレームの符号化を開始すると、ビデオエンコーダ510は、ステップ505Bにおいて、符号化データとともに書き込み要求をビットストリームバッファ515に送信する。各書き込み要求のデータの量は、実施態様によって変わる。ビデオエンコーダ510が書き込み要求をビットストリームバッファ515に送信したことに応答して、書き込み要求のデータがビットストリームバッファ515に書き込まれているとき、ビットストリームバッファ515は、書き込み要求完了確認応答(「Acks」)をビデオエンコーダ510に送信する。様々な実施態様では、所与のフレームのデータは、符号化されるフレームデータの各部が1つ以上の他の部のフレームデータに依存するという意味で、全体的に符号化される。これは、フレームのスライスが互いに独立して符号化される従来技術のアプローチとは対照的である。上記に留意したように、スライスを互いに独立して符号化すると、スライスの境界を越える予測をしにくくなることが原因で、境界アーティファクトが生じる。フレームデータ全体を全体的に符号化することによって、符号化されたフレームデータの一部が符号化プロセス中に消費するために準備されていても、係る境界アーティファクトは消去される。
ステップ505Cで書き込み要求完了Ackを受信したことに応答して、ビデオエンコーダ510は、ステップ505DでBWPの値を更新して、ビットストリームバッファ515に書き込まれた符号化データの量を示す。代替として、いくつかの実施態様では、バッファ515に関連付けられる回路がBWPを更新する。また、ビデオエンコーダ510がフレーム全体の符号化を完了すると、ビデオエンコーダ510はフレーム完了フラグを更新する。一実施態様では、フレーム完了フラグ455は単一ビットであり、ビデオエンコーダ510は、フレームの終わりに達したときにフレーム完了フラグを1の値に設定する。コンシューマモジュール525は、ステップ505EでBWP及びフレーム完了フラグ520を読み取り、符号化データが消費の準備ができているかどうか、フレーム全体の符号化が完了したかどうか、及びコンシューマモジュール525がビットストリームバッファ515から読み取ることが可能である程度(消費の準備ができているデータの量)を判定する。その後、BWPの値に基づいて、コンシューマモジュール525は、ステップ505Fにおいて、符号化されたビットストリームの一部をビットストリームバッファ515から読み取る。いくつかの実施態様では、別個のデータレディフラグは、符号化データがバッファ515に書き込まれており、消費の準備ができていることを示すために使用される。例えば、データレディフラグをポーリングすることによって、コンシューマモジュール525は、データが消費の準備ができていることを判定する。例えば、ビデオエンコーダ510は、書き込み要求Ackを受信すると、データレディフラグを設定する。バッファからデータを読み取ると、コンシューマモジュール525はデータレディフラグをリセットする。そのような場合、フレーム完了フラグは、消費の準備ができているデータがフレームの最後の部を表すかどうかを示すのに役立つ。コンシューマモジュール525は、ビデオエンコーダ510がまだ所与のフレームを符号化している間に、符号化データをビットストリームバッファ515から読み取り、所与のフレームのための符号化データを取得することが可能であることに留意されたい。また、コンシューマモジュール525は、符号化データをビットストリームバッファ515から読み取る前に、フレームまたはスライスの全体がビデオエンコーダ510によって符号化されるまで待機する必要はない。これは、ビットストリームバッファ515から符号化データを消費するときにコンシューマモジュール525が経験する待ち時間を短縮するのに役立ち、また、コンシューマアプリケーションの待ち時間全体を短縮する。
ここで、図6を参照すると、所与のビデオフレームが符号化されている間に所与のビデオフレームの符号化されたビデオビットストリームへのオンザフライアクセスを可能にするための方法600の一実施態様が示される。考察する目的のために、本実施態様のステップ及び図7〜図8のステップを順番に示す。しかしながら、説明される方法の様々な実施態様では、説明される1つ以上の要素は、同時に行われる、示されるものと異なる順序で、または、全体的に省略されることに留意されたい。他の追加の要素も必要に応じて行われる。本明細書で説明される様々なシステムまたは装置のいずれかは、方法600を実施するように構成される。
ビデオエンコーダは、ビデオシーケンスの所与のフレームの符号化を開始する(ブロック605)。ビデオエンコーダが所与のフレームの一部を符号化すると、ビデオエンコーダは、符号化データとともに書き込み要求をビットストリームバッファに送信する(ブロック610)。加えて、ビデオエンコーダは、ビットストリームバッファへの符号化データの書き込み要求の完了を追跡する(ブロック615)。書き込み要求の完了が確認された場合(条件付きブロック620、「はい」レッグ)、ビデオエンコーダは、ビットストリーム書き込みポインタを更新して、ビットストリームバッファに書き込まれたデータの量を指示する(ブロック625)。実施態様によって、指示はデータの量、ビットストリームバッファに書き込まれたデータの最後の部を含むメモリアドレス等を指定する。一実施態様では、ビットストリーム書き込みポインタへの更新は、ビデオエンコーダ及びコンシューマモジュールの両方によるビットストリーム書き込みポインタへの同時アクセスを防ぐために、アトミック操作として行われることに留意されたい。保留中の書き込み要求に関する確認応答が受信されていない場合(条件付きブロック620、「いいえ」レッグ)、方法600はブロック610に戻る。
ブロック625の後、ビデオエンコーダは、所与のフレーム全体が符号化されて、ビットストリームバッファに書き込まれたかどうかを判定する(条件付きブロック630)。フレーム全体が符号化されて、ビットストリームバッファに書き込まれた場合(条件付きブロック630、「はい」レッグ)、ビデオエンコーダはフレーム完了フラグを設定する(ブロック635)。ブロック635の後、ビデオエンコーダは、フレーム完了フラグがクリアされるのを待機し(ブロック640)、その後、方法600はブロック605に戻る。一実施態様では、コンシューマモジュールはフレーム完了フラグをクリアする。別の実施態様では、コンシューマモジュールと異なる別のエンティティがフレーム完了フラグをクリアする。フレーム全体が符号化されていなく、ビットストリームバッファに書き込まれていない場合(条件付きブロック630、「いいえ」レッグ)、方法600はブロック610に戻る。書き込み要求の完了に続いてビデオエンコーダがビットストリーム書き込みポインタを更新した後、ビデオエンコーダは、符号化されビットストリーム書き込みバッファに書き込まれる次のデータの部にヘッダー(例えば、スライスヘッダー)を挿入しないことに留意されたい。加えて、ビデオエンコーダは、符号化された、ビットストリーム書き込みバッファに書き込まれたデータの最後の部と、符号化されている次のデータの部との間の境界を越える予測(例えば、フレーム内コーディング予測)を行うことが可能である。例えば、様々な符号化技術は、フレーム内の他のピクセル(例えば、隣接するピクセルまたは他のピクセル)から(コード化及び/または非コード化された)情報を使用して、ピクセルデータを符号化する。このように、境界(スライス、チャンク等)を越える符号化データは、アーティファクトを減らして、より一貫性のある結果を提供する。様々な係るアプローチが当業者に知られており、係る全てのアプローチが想到される。
ここで、図7を参照すると、コンシューマモジュールは、ビットストリームが符号化されているときに、リアルタイムで符号化されたビデオビットストリームにアクセスするための方法700の一実施態様が示される。一実施態様では、方法700は、ビデオエンコーダが方法600を行うことに並行してコンシューマモジュールによって行われることに留意されたい。コンシューマモジュールは、ビットストリーム書き込みポインタを監視する(ブロック705)。例えば、いくつかの実施態様では、コンシューマモジュールはビットストリーム書き込みポインタをポーリングして、更新が受信されているかどうかを判定する。他の実施態様では、フラグ(例えば、データレディフラグ)は、データが受信されて、消費の準備ができていることを示すために使用される。一実施態様では、コンシューマモジュールは、ブロック705でアトミック読み取りを行い、ビデオエンコーダ及びコンシューマモジュールによるビットストリーム書き込みポインタへの同時アクセスを防ぐことに留意されたい。ビットストリーム書き込みポインタへの更新を検出した場合(またはデータレディフラグが設定された場合)(条件付きブロック710、「はい」レッグ)、コンシューマモジュールはビットストリームバッファからビットストリーム書き込みポインタによって示される場所まで符号化データを取得する(ブロック715)。コンシューマモジュールは、ビデオエンコーダがまだ所与のフレームを符号化するプロセスである間、所与のフレームのために、ビットストリームバッファから符号化データを取得することに留意されたい。その後、コンシューマモジュールは、ビットストリームバッファから取得されている符号化データを処理する(ブロック720)。コンシューマモジュールは、実施態様に応じて、任意の種類の処理を行う(例えば、ネットワークを通じて符号化データをストリーミングする)。ビットストリーム書き込みポインタが更新されていない場合(条件付きブロック710、「いいえ」レッグ)、方法700はブロック725にジャンプする。
ブロック720の後、コンシューマモジュールは、フレーム完了フラグを監視する(ブロック725)。フレーム完了フラグが設定されている場合(条件付きブロック730、「はい」レッグ)、コンシューマモジュールは、最終量が指定された粒度よりも小さい場合でも、ビットストリームバッファから符号化データの最終量を取得する(ブロック735)。次に、コンシューマモジュールは、フレーム完了フラグをクリアする(ブロック740)。代替として、別の実施態様では、別のハードウェアまたはソフトウェアモジュールは、ブロック740において、フレーム完了フラグをクリアする。ブロック740の後、方法700はブロック705に戻る。フレーム完了フラグが設定されていない場合(条件付きブロック730、「いいえ」レッグ)、方法700はブロック705に戻る。
ここで、図8を参照すると、ビットストリーム書き込みポインタ更新の粒度を制御するための方法800の一実施態様が示される。コンシューマモジュールは、ビットストリーム書き込みポインタへの更新が行われる粒度設定をプログラムする(ブロック805)。例えば、一実施態様では、コンシューマモジュールは、ネットワーク送信パケットペイロードの最大サイズに等しくなるように粒度設定をプログラムする。他の実施態様では、コンシューマモジュールは他の要因に基づいて粒度設定の値をプログラムする。次に、ビデオエンコーダは、コンシューマモジュールによってプログラムされた粒度設定を読み取る(ブロック810)。その後、ビデオエンコーダは、ビデオフレームの符号化中にビットストリームバッファへの書き込み要求の完了を追跡する(ブロック815)。次に、ビデオエンコーダは、完了した書き込み要求に基づいて、ビットストリームバッファに書き込まれた符号化データの量(例えば、ビット数)が粒度設定以上であるかどうかを判定する(条件付きブロック820)。
ビットストリームバッファに書き込まれた符号化データの量が粒度設定以上である場合(条件付きブロック820、「はい」レッグ)、ビデオエンコーダは、ビットストリーム書き込みポインタを更新して、ビットストリームバッファに書き込まれた符号化データの量を指示する(ブロック825)。また、ビデオエンコーダは、ビットストリームバッファに書き込まれた符号化データの量を追跡するために使用されるカウントをリセットする(ブロック830)。ブロック830の後、方法800はブロック815に戻る。そうでなければ、ビットストリームバッファに書き込まれた符号化データの量が粒度設定よりも小さい場合(条件付きブロック820、「いいえ」レッグ)、ビデオエンコーダは、ビットストリームバッファにより多くのデータが書き込まれるのを待機する(ブロック835)。ブロック835の後、方法800はブロック815に戻る。
ここで、図9を参照すると、消費されているチャンクにわたる予測を行うビデオエンコーダのための方法900の一実施態様が示される。ビデオエンコーダは、ビデオフレームの所与のチャンクを符号化する(ブロック905)。次に、コンシューマモジュールは、ビデオフレームの所与のチャンクの消費を開始する(ブロック910)。一実施態様では、ビデオエンコーダは、バッファ書き込みポインタを更新して、コンシューマモジュールが消費を開始することが可能であるバッファ内に符号化されたチャンクがあることをコンシューマモジュールに知らせる。その後、ビデオエンコーダは、フレーム内予測を使用して後続のチャンクの符号化を開始する(ブロック915)。ブロック910及びブロック915は、一実施態様では、同時に行われることに留意されたい。次に、ビデオエンコーダは、後続のチャンクの符号化を終了する(ブロック920)。その後、コンシューマモジュールは後続のチャンクの消費を開始する(ブロック925)。ブロック925及びブロック915は、一実施態様では、同時に行われることに留意されたい。符号化するチャンクがさらにある場合(条件付きブロック930、「はい」レッグ)、方法900はブロック915に戻る。符号化するチャンクがこれ以上ない場合(条件付きブロック930、「いいえ」レッグ)、方法900は終了する。
ここで、図10を参照すると、符号化されたビデオビットストリームのチャンクのリアルタイム消費の一実施態様のタイミング図1000が示される。タイミング図1000に示される実施態様では、エンコーダ1005がフレーム0〜2を符号化する一方、ビットストリームコンシューマ1010は、エンコーダ1005がフレームの次のチャンクを符号化する間、フレームの所与のチャンクを消費することが可能である。これは、タイミング図200(図2)及びタイミング図300(図3)に示される実施態様と比較して、動作の待ち時間を短縮するのに役立つ。例えば、一実施態様では、エンコーダ1005は、フレーム0のチャンクを符号化し、その後、各チャンクの後に書き込みポインタを更新して、バッファに書き込まれた符号化データの量を示す。その後、コンシューマ1010は、エンコーダ1005が後続のチャンクを符号化する間、バッファからフレーム0の各チャンクにアクセスしてそれを消費することが可能である。このパターンは、フレーム1〜2及びそれ以降のフレームで継続する。タイミング図1000に示される実施態様は、符号化されたフレーム0〜2の消費をフレーム0〜2の符号化によってパイプライン化することを可能にすることによって、待ち時間を最小化するのに役立つ。本実施態様では、ビットストリームコンシューマ1010は、エンコーダ1005がフレームの後続のチャンクを符号化するのと同時に、フレームのチャンクを消費することが可能である。
様々な実施態様では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書で説明される方法及び/または機構を実施する。例えば、汎用プロセッサまたは専用プロセッサによって実行可能なプログラム命令が想到される。様々な実施態様では、係るプログラム命令は、高水準プログラミング言語によって表される。他の実施態様では、プログラム命令は、高水準プログラミング言語から、バイナリ言語、中間言語、または他の形式にコンパイルされる。代替として、プログラム命令は、ハードウェアの挙動または設計を記述するように書き込まれる。係るプログラム命令は、C等の高水準プログラミング言語によって表される。代替として、Verilog等のハードウェア設計言語(HDL)を使用する。様々な実施態様では、プログラム命令は、様々な非一時的コンピュータ可読記憶媒体のいずれかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために使用される間に、コンピューティングシステムによってアクセス可能である。一般的に言うと、係るコンピューティングシステムは、プログラム命令を実行するように構成される少なくとも1つ以上のメモリ及び1つ以上のプロセッサを含む。
前述の実施態様は、単なる実施態様の非限定的な例にすぎないことを強調したい。いったん上記の開示が十分に理解されると、多くの変形及び修正が当業者に明らかになる。以下の「特許請求の範囲」は、全ての係る変形及び修正を包含すると解釈されることが意図される。

Claims (20)

  1. 所与のビデオフレームの第1の部を符号化して、符号化データの第1のチャンクを生成することであって、前記第1の部は前記所与のビデオフレームの全体よりも小さいものを含む、前記所与のビデオフレームの前記第1の部を符号化して、前記符号化データの前記第1のチャンクを生成することと、
    前記符号化データの前記第1のチャンクをバッファに書き込むことと、
    前記符号化データの前記第1のチャンクが消費の準備ができていることの指示を提供することと、を行うように構成される回路を備えるビデオエンコーダと、
    前記指示を検出したことに応答して、前記ビデオエンコーダが前記所与のビデオフレームの前記全体の符号化を完了する前に、前記符号化データの前記第1のチャンクを前記バッファから取得するように構成される回路を備えるコンシューマモジュールと、
    を備える、システム。
  2. 前記ビデオエンコーダの前記回路は、さらに、前記所与のビデオフレームの前記全体を符号化する前に、前記指示を提供するように構成される、請求項1に記載のシステム。
  3. 前記ビデオエンコーダの前記回路は、さらに、フレーム内コーディング予測を使用して、前記所与のビデオフレームの全てのチャンクを符号化するように構成される、請求項1に記載のシステム。
  4. 前記ビデオエンコーダの前記回路は、さらに、前記第1のチャンクに含まれるデータの量についての指示を提供するように構成される、請求項1に記載のシステム。
  5. 前記ビデオエンコーダが前記指示を提供する粒度である、請求項1に記載のシステム。
  6. 前記ビデオエンコーダの前記回路は、前記所与のビデオフレームの符号化が完了したとき、フレーム完了フラグを設定するように構成され、
    前記コンシューマモジュールの前記回路は、前記フレーム完了フラグが設定されていることを検出したことに応答して、前記符号化データの最終量が前記粒度よりも小さいとき、前記符号化データの前記最終量を前記バッファから取得するように構成される、請求項4に記載のシステム。
  7. 前記コンシューマモジュールの前記回路は、前記符号化データの前記最終量を前記バッファから取得したことに応答して、前記フレーム完了フラグをクリアするように構成される、請求項6に記載のシステム。
  8. ビデオエンコーダの回路によって、所与のビデオフレームの第1の部を符号化して、符号化データの第1のチャンクを生成することであって、前記第1の部は前記所与のビデオフレームの全体よりも小さいものを含む、前記所与のビデオフレームの前記第1の部を符号化して、前記符号化データの前記第1のチャンクを生成することと、
    前記ビデオエンコーダの前記回路によって、前記符号化データの前記第1のチャンクをバッファに書き込むことと、
    前記ビデオエンコーダの前記回路によって、前記符号化データの前記第1のチャンクが消費の準備ができていることの指示を提供することと、
    コンシューマモジュールの回路によって、前記指示を検出したことに応答して、前記ビデオエンコーダが前記所与のビデオフレームの前記全体の符号化を完了する前に、前記符号化データの前記第1のチャンクを前記バッファから取得することと、
    を含む、方法。
  9. 前記ビデオエンコーダの前記回路によって、前記所与のビデオフレームの前記全体を符号化する前に、前記指示を提供することをさらに含む、請求項8に記載の方法。
  10. フレーム内コーディング予測を使用して、前記所与のビデオフレームの全てのチャンクを符号化することをさらに含む、請求項8に記載の方法。
  11. 前記第1のチャンクに含まれるデータの量についての指示を提供することをさらに含む、請求項8に記載の方法。
  12. 前記コンシューマモジュールの前記回路によって、前記ビデオエンコーダが前記指示を提供する粒度をプログラミングすることをさらに含む、請求項11に記載の方法。
  13. 前記ビデオエンコーダの前記回路によって、前記所与のビデオフレームの符号化が完了したとき、フレーム完了フラグを設定することと、
    前記コンシューマモジュールの前記回路によって、前記フレーム完了フラグが設定されていることを検出したことに応答して、前記符号化データの最終量が前記粒度よりも小さいとき、前記符号化データの前記最終量を前記バッファから取得することと、
    をさらに含む、請求項11に記載の方法。
  14. 前記コンシューマモジュールの前記回路によって、前記符号化データの前記最終量を前記バッファから取得したことに応答して、前記フレーム完了フラグをクリアすることをさらに含む、請求項13に記載の方法。
  15. メモリと、
    バッファと、
    前記メモリに結合される1つ以上のプロセッサと、を備える装置であって、
    前記メモリから所与のビデオフレームデータを読み取ることと、
    前記所与のビデオフレームの第1の部を符号化して、符号化データの第1のチャンクを生成することであって、前記第1の部は前記所与のビデオフレームの全体よりも小さいものを含む、前記前記所与のビデオフレームの第1の部を符号化して、前記符号化データの前記第1のチャンクを生成することと、
    前記符号化データの前記第1のチャンクを前記バッファに書き込むことと、
    前記符号化データの前記第1のチャンクが消費の準備ができていることの指示を提供することと、
    前記指示を検出したことに応答して、前記ビデオエンコーダが前記所与のビデオフレームの前記全体の符号化を完了する前に、前記符号化データの前記第1のチャンクを前記バッファから取得することと、
    を行うように構成される、装置。
  16. 前記装置は、さらに、前記所与のビデオフレームの前記全体を符号化する前に、前記指示を提供するように構成される、請求項15に記載の装置。
  17. 前記装置は、さらに、フレーム内コーディング予測を使用して、前記所与のビデオフレームの全てのチャンクを符号化するように構成される、請求項15に記載の装置。
  18. 前記装置は、さらに、前記第1のチャンクに含まれるデータの量についての指示を提供するように構成される、請求項17に記載の装置。
  19. 前記装置は、さらに、
    前記所与のビデオフレームの前記符号化が完了したとき、フレーム完了フラグを設定することと、
    前記フレーム完了フラグが設定されていることに応答して、前記符号化データの最終量が粒度よりも小さいとき、前記符号化データの前記最終量を前記バッファから取得することと、
    を行うように構成される、請求項17に記載の装置。
  20. 前記装置は、さらに、前記符号化データの前記最終量を前記バッファから取得したことに応答して、前記フレーム完了フラグをクリアするようにさらに構成される、請求項19に記載の装置。
JP2020560303A 2018-04-27 2019-02-26 符号化されたビデオビットストリームの低遅延消費 Active JP7336459B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023134181A JP2023156488A (ja) 2018-04-27 2023-08-21 符号化されたビデオビットストリームの低遅延消費

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/965,281 US11252429B2 (en) 2018-04-27 2018-04-27 Low-latency consumption of an encoded video bitstream
US15/965,281 2018-04-27
PCT/IB2019/051542 WO2019207368A1 (en) 2018-04-27 2019-02-26 Low-latency consumption of an encoded video bitstream

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023134181A Division JP2023156488A (ja) 2018-04-27 2023-08-21 符号化されたビデオビットストリームの低遅延消費

Publications (2)

Publication Number Publication Date
JP2021522729A true JP2021522729A (ja) 2021-08-30
JP7336459B2 JP7336459B2 (ja) 2023-08-31

Family

ID=68291381

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020560303A Active JP7336459B2 (ja) 2018-04-27 2019-02-26 符号化されたビデオビットストリームの低遅延消費
JP2023134181A Pending JP2023156488A (ja) 2018-04-27 2023-08-21 符号化されたビデオビットストリームの低遅延消費

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023134181A Pending JP2023156488A (ja) 2018-04-27 2023-08-21 符号化されたビデオビットストリームの低遅延消費

Country Status (6)

Country Link
US (2) US11252429B2 (ja)
EP (1) EP3785438A4 (ja)
JP (2) JP7336459B2 (ja)
KR (2) KR20230097207A (ja)
CN (2) CN112055969B (ja)
WO (1) WO2019207368A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11076158B2 (en) * 2019-09-09 2021-07-27 Facebook Technologies, Llc Systems and methods for reducing WiFi latency using transmit opportunity and duration
US11843772B2 (en) 2019-12-06 2023-12-12 Ati Technologies Ulc Video encode pre-analysis bit budgeting based on context and features
US11070829B2 (en) 2019-12-16 2021-07-20 Ati Technologies Ulc Reducing latency in wireless virtual and augmented reality systems
US11714620B1 (en) 2022-01-14 2023-08-01 Triad National Security, Llc Decoupling loop dependencies using buffers to enable pipelining of loops
KR102632507B1 (ko) * 2023-06-20 2024-01-31 쿠팡 주식회사 스트리밍 서비스를 위한 비디오 가공 방법 및 그 시스템

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768533A (en) * 1995-09-01 1998-06-16 National Semiconductor Corporation Video coding using segmented frames and retransmission to overcome channel errors
JP2015062324A (ja) * 2012-08-09 2015-04-02 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像符号化方法および画像符号化装置
US20160100196A1 (en) * 2014-10-06 2016-04-07 Microsoft Technology Licensing, Llc Syntax structures indicating completion of coded regions
JP2017225152A (ja) * 2012-07-02 2017-12-21 キヤノン株式会社 メディアファイルの生成装置、生成方法、及びプログラム
WO2018074291A1 (ja) * 2016-10-18 2018-04-26 パナソニックIpマネジメント株式会社 画像符号化方法、伝送方法および画像符号化装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592227A (en) * 1994-09-15 1997-01-07 Vcom, Inc. Method and apparatus for compressing a digital signal using vector quantization
US6067287A (en) 1997-09-15 2000-05-23 Accton Technology Neural fuzzy connection admission controller and method in a node of an asynchronous transfer mode (ATM) communication network
US6654539B1 (en) * 1998-10-26 2003-11-25 Sony Corporation Trick playback of digital video data
US6535251B1 (en) * 1999-10-26 2003-03-18 Sharplabs Of America, Inc. Video encoder and method for adjusting quantization step in real time
EP1323308B1 (en) 2000-08-15 2014-08-20 Polycom Israel Ltd. Delay reduction for transmission and processing of video data
US7885337B2 (en) 2004-08-23 2011-02-08 Qualcomm Incorporated Efficient video slicing
US8131660B2 (en) 2008-04-08 2012-03-06 Microsoft Corporation Reconfigurable hardware accelerator for boolean satisfiability solver
FR2956271B1 (fr) * 2010-02-09 2012-02-17 Canon Kk Procede et dispositif de calcul de l'espace disponible dans un paquet pour le transport de flux de donnees
JP5750899B2 (ja) * 2011-01-17 2015-07-22 株式会社リコー 画像形成装置およびその制御方法
KR102365958B1 (ko) * 2012-01-20 2022-02-23 지이 비디오 컴프레션, 엘엘씨 병렬 처리, 전송 디멀티플렉서 및 비디오 비트스트림을 허용하는 코딩 개념
US9245496B2 (en) * 2012-12-21 2016-01-26 Qualcomm Incorporated Multi-mode memory access techniques for performing graphics processing unit-based memory transfer operations
US9510008B2 (en) 2013-11-25 2016-11-29 Entropic Communications, Llc Video decoder memory bandwidth compression
US9742836B2 (en) * 2014-01-03 2017-08-22 Yahoo Holdings, Inc. Systems and methods for content delivery
CA2943647C (en) * 2014-03-27 2018-12-04 Arris Enterprises Llc Method and apparatus for encoding rate control in advanced coding schemes
JP6546197B2 (ja) * 2014-06-18 2019-07-17 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 従属ランダムアクセスポイントピクチャ
US10417555B2 (en) 2015-05-29 2019-09-17 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US10003811B2 (en) 2015-09-01 2018-06-19 Microsoft Technology Licensing, Llc Parallel processing of a video frame
US10078794B2 (en) 2015-11-30 2018-09-18 Pilot Ai Labs, Inc. System and method for improved general object detection using neural networks
US10582250B2 (en) 2017-07-24 2020-03-03 Advanced Micro Devices, Inc. Integrated video codec and inference engine
US11227214B2 (en) 2017-11-14 2022-01-18 Advanced Micro Devices, Inc. Memory bandwidth reduction techniques for low power convolutional neural network inference applications
US11948073B2 (en) 2018-04-20 2024-04-02 Advanced Micro Devices, Inc. Machine learning inference engine scalability

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768533A (en) * 1995-09-01 1998-06-16 National Semiconductor Corporation Video coding using segmented frames and retransmission to overcome channel errors
JP2017225152A (ja) * 2012-07-02 2017-12-21 キヤノン株式会社 メディアファイルの生成装置、生成方法、及びプログラム
JP2015062324A (ja) * 2012-08-09 2015-04-02 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像符号化方法および画像符号化装置
US20160100196A1 (en) * 2014-10-06 2016-04-07 Microsoft Technology Licensing, Llc Syntax structures indicating completion of coded regions
JP2017535167A (ja) * 2014-10-06 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 符号化領域の完了を示すシンタックス構造
WO2018074291A1 (ja) * 2016-10-18 2018-04-26 パナソニックIpマネジメント株式会社 画像符号化方法、伝送方法および画像符号化装置

Also Published As

Publication number Publication date
KR20230097207A (ko) 2023-06-30
CN117201812A (zh) 2023-12-08
CN112055969A (zh) 2020-12-08
EP3785438A1 (en) 2021-03-03
WO2019207368A1 (en) 2019-10-31
JP7336459B2 (ja) 2023-08-31
US20220159286A1 (en) 2022-05-19
US11252429B2 (en) 2022-02-15
JP2023156488A (ja) 2023-10-24
KR20210002677A (ko) 2021-01-08
EP3785438A4 (en) 2022-06-08
KR102546236B1 (ko) 2023-06-21
US20190335189A1 (en) 2019-10-31
CN112055969B (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
JP7336459B2 (ja) 符号化されたビデオビットストリームの低遅延消費
US11175854B2 (en) Data processing systems
US7747086B1 (en) Methods and apparatus for encoding a shared drawing memory
US10672098B1 (en) Synchronizing access to buffered data in a shared buffer
US10116943B2 (en) Adaptive video compression for latency control
JP7441045B2 (ja) Gpu並列ハフマン復号化
US8522254B2 (en) Programmable integrated processor blocks
CN109218822B (zh) 一种视频处理系统
US20150117516A1 (en) Dynamic video encoding based on channel quality
US20140105272A1 (en) Low power context adaptive binary arithmetic decoder engine
KR20160032969A (ko) 코덱과 이를 포함하는 장치들
KR102619668B1 (ko) 슬라이스 업데이트 맵을 이용하는 장치 및 방법
US8531468B1 (en) Image processing apparatus having context memory controller
CN111831404A (zh) 用于dram控制器的高性能内联ecc架构
TWI666930B (zh) 一種使用環形緩衝器和競賽模式環形緩衝器訪問控制方案的視訊處理系統
US10448020B2 (en) Intelligent MSI-X interrupts for video analytics and encoding
CN107408292B (zh) 媒体中枢设备和高速缓存
US10181842B2 (en) Mixed threshold flip-flop element to mitigate hold time penalty due to clock distortion
US11418212B2 (en) Parallel decoding techniques
US9986159B2 (en) Technique for reducing the power consumption for a video encoder engine
TW202415071A (zh) 影像處理裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230605

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230821

R150 Certificate of patent or registration of utility model

Ref document number: 7336459

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150