JP2002542549A - コンピュータにおける高速ストリーミング媒体の処理装置及び方法 - Google Patents

コンピュータにおける高速ストリーミング媒体の処理装置及び方法

Info

Publication number
JP2002542549A
JP2002542549A JP2000613199A JP2000613199A JP2002542549A JP 2002542549 A JP2002542549 A JP 2002542549A JP 2000613199 A JP2000613199 A JP 2000613199A JP 2000613199 A JP2000613199 A JP 2000613199A JP 2002542549 A JP2002542549 A JP 2002542549A
Authority
JP
Japan
Prior art keywords
start code
buffer
mpeg
data
word
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000613199A
Other languages
English (en)
Inventor
ロバート エム ウォルフ
ランディー ランガー
ウルリッヒ ジグモント
Original Assignee
ラヴィセント テクノロジーズ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/283,947 external-priority patent/US6366970B1/en
Priority claimed from US09/287,535 external-priority patent/US6373898B1/en
Priority claimed from US09/467,552 external-priority patent/US6567557B1/en
Application filed by ラヴィセント テクノロジーズ インコーポレイテッド filed Critical ラヴィセント テクノロジーズ インコーポレイテッド
Publication of JP2002542549A publication Critical patent/JP2002542549A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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

Landscapes

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

Abstract

(57)【要約】 コンピュータシステムにおける高帯域ストリーミングデータを最適に処理する方法及び装置により、演算動作が最小限に抑えられ最大の性能が発揮される。この性能改善は、メモリコピー量を最小限にするとともに発生するオブジェクトの割振り及び割振り解除の回数を最小限に抑えることによって達成される。ワードによる検索が、MPEG−2ストリーム上で実行される。デコード及びレンダリングの過程で、MPEG−2データストリームと平行に二次データストリームを生成するために、事前パーサが使用される。平行二次データストリームは、効率的で使い易い形態でMPEG−2データストリームの構造を記述し、様々なデコード段階での構文解析タスクの重複の排除を促進する。MPEG−2補間ケースDについての2段階動き予測は、補正されない場合には可視的アーチファクトを引き起こすことになる。

Description

【発明の詳細な説明】
【0001】
【技術分野】
本発明は、データ処理に係り、特に、コンピュータにおける高速ストリーミン
グデータの処理・操作に関する。また、本発明は、例えば、ストリーミングデー
タにおける特定パターンを探し出すためのマルチバイト検索に係り、特に、MP
EG−2データストリームやそれと全く同じスタートコード構成を使用したスト
リームにおいてスタートコード・プレフィックスを探し出すためにリアルタイム
のデータストリームを走査する高速メカニズムに関する。これらの汎用アルゴリ
ズムは、どのようなバイト長から成るパターンの検索にも使用でき、特に、検索
パターン長が奇数バイトの場合に有用である。更に、本発明は、デジタルテレビ
、高密度CD−ROM、及びテレビ放送のためのスタジオ用高品質ビデオのコー
ド化に使用されるようなデータ圧縮に関し、特に、事前パーサ(構文解析ツール
)によってMPEG−2データストリーム構造の情報を探し出し、以降の非圧縮
化及び再現の全段階における冗漫な構文解析ジョブを実質的に排除するようにし
たMPEG−2形式のデータストリーム非圧縮化に関する。加えて、本発明は、
コンピュータ及びデジタルデータ圧縮に関し、特に、MPEG−2形式の非圧縮
化において累積される可能性のある丸め誤差の防止に関する。
【0002】
【従来の技術】
ストリーミングデータの形での情報伝送の重要性は益々増大している。ストリ
ーミングデータとは、通常、MPEG−2のようなフォーマットを使用した連続
的で途切れのないストリームとしてリアルタイムに伝送されるデータのことであ
る。MPEG−2は、これまでDVDのような静的媒体において使用されており
、一般社会では周知のものであるが、DSS、DVD、Primestar、D
ishnetwork等のデジタル衛星放送のようなストリーミング(リアルタ
イム)アプリケーションに使用されていることは余り知られていない。
【0003】 このような環境において、上記データは、様々な伝送速度で伝送されているが
、このデータストリーミングによって、データを受信する装置に大きな問題が生
じる。例えば、データがストリームの状態にある、つまりデータ伝送でのエラー
が検出された場合に再読出しできる媒体上に固定されていない状態−エーテルに
気化したような状態にあるために、DVDの場合のように後戻りしたりサンプリ
ングし直したりすることはできない。このように、データブロックが一時的なデ
ータストリームの一部である場合、そのデータブロックの伝送における不具合を
回復することは極めて困難である。
【0004】 従前のソフトウェア技術手法では、ストリーミングデータ処理の問題を解決す
るために、頻繁にメモリをコピーしたり、ソフトウェアオブジェクトを頻繁に割
振ったり割振り解除したり、ハードウェア組込みの自由度のないメモリを使用し
たり、或いはそれらを組合せることが行われてきた。これら手法を行うには、コ
ンピュータ内部の利用できる演算時間や帯域幅の大部分を使用する必要がある。
ストリーミングデータでない場合には、擬似バッチモードでジョブを処理できる
ので、通常、演算時間は重要な要素ではなく問題にはならない。しかし、音響、
ビデオ及びデータの形式での衛星データのようなストリーミング媒体の場合には
、入来データ速度を制御する方法は存在しない。そのため、データ処理をうまく
行わないと入力データが超過した状態となり、その結果として入力データの一部
が失われることになる。
【0005】 コンピュータは、最悪の条件下でもデータストリームを処理する能力を持つ必
要がある。しかし、コンピュータ内で大量のメモリコピーや割振り・割振り解除
を行う場合、このシステムには、他の入来要求を処理したり通常のオペレーショ
ンを行ったりするために使用できるリソースがほとんどない状態となる。これに
より、多量のデータをロードした場合には、多くの行うべきことが放置されるこ
とになり、エラーが生じたりデータが失われたりすることになる。
【0006】 ストリーミングデータ処理の問題点を解消する手法として、メモリ管理を行う
ための再利用型メモリバッファを用いたSmertHeap(登録商標)等のメ
モリマネージャがある。しかしながら、これら手法は、多量のストリーミング媒
体に適用することはできない。また、ストリームライン制御やデューティ設計の
ための多重スレッドを使用することも不可能である。更に、これらの公知技術は
、ストリーミング媒体の処理に関連する問題解決を具体的に狙ったものではない
。従って、これら手法は、ストリーミング用に具体化されたものではなく、上記
したストリーミングにおける問題解決に対して具体的に焦点が絞られたものでは
ないため次善策的なものであると考えられる。 このように、コンピュータシステムにおいてストリーミングデータを処理する
ための効率的で信頼性のある方法及び装置を提供することは有益である。
【0007】 MPEG−2標準規格は、音響・ビデオ情報のフォーマット化や伝送のために
使用されることが多い(MPEG−2標準規格に関する情報については、htt
p://www.mpeg.orgを参照されたい)。MPEG−2標準規格の普
及によって、MPEG−2データのリアルタイム(即ち、非流量制御)ストリー
ムを走査してスタートコード・プレフィックス(即ち、データストリームを構成
する構造要素又はパケットを区画するバイトパターン)を探し出すための高速メ
カニズムの導入が必要となってきた。このメカニズムが必要とされる理由は、上
記ストリームのデータが処理システムに対してリアルタイムに伝えられるためで
ある。従って、ストリームの各要素ユニットは、リアルタイムに確実に識別され
、ユニット毎にその各成分が構文解析されるとともに入来データ速度に応じた速
度で処理される必要がある。このスタートコード・プレフィックスの走査によっ
て、通常、MPEG−2処理プログラムにおけるCPU使用の相当な部分を占有
され、時にはCPU使用の50%を超える占有率となる。
【0008】 MPEG−2標準規格(ISO/IEC 13818−1:1996(E)、
表2−17及びISO/IEC 13818−1:1996(E)、表2−2、
2−6、2−25、2−27及び2−28参照)において、スタートコード・プ
レフィックスは、以下の付帯条件を持つ、8ビット整合のバイトパターン0×0
0 0×00 0×01で表される。 ・0×00 0×00 0×01パターンに続く3バイトが全て0×00である
場合、このパターンは有効なスタートコードではなく、よって、スキャナに受け
入れられることがないようにする。 ・音響のパケット化要素ストリーム(PES)に関しては、0×00 0×00
0×01パターンに続くバイトの唯一の有効値は、0×C0乃至0×DFを含
む範囲にある。ビデオに関しては、その逆となる。即ち、ビデオストリームにお
ける0×00 0×00 0×01パターンに続くバイトが0×C0乃至0×D
Fを含む範囲にある場合、そのパターンは有効なスタートコードとならず、それ
をスキャナが受け入れないようにする。 ・現状のMPEG−2を実施しているものの一部は、それらの音響PESストリ
ームにMPEG−1を使用しており、MPEG−1音響ストリームにその圧縮さ
れたペイロードの一部として0×00 0×00 0×01を含ませることが違
法でないために、表面的に有効なスタートコードをペイロードに表示することが
可能である。スタートコードパターンに続く次の数バイトを調べた上で、本当の
スタートコードを確認することは可能であるが、MPEG−1に適合した音響チ
ャンネルについての走査動作の間、音響コードの同期化を確実に保証するアルゴ
リズムは存在しない。これは、MPEG−2適合のビデオ・音響チャンネルには
ない問題である。実際、MPEG−2仕様には、このようなことが絶対に起こら
ないことが保証されている。
【0009】 MPEG−2スタートコードの走査に関する問題に対処するために本技術分野
で使用されてきた以下の2つの手法がある。 ・入来バイトの順次読取りにより、0×00 0×00 0×01パターンを探
す手法。この手法は、プロセッサに集中的な負担をかける。 ・MPEG−2データをバッファに読込んだ後に、3バイトを1単位として調べ
て、その各々が0×00又は0×01であるか否かが確認される。いずれかの値
が確認されると、隣接するバイトを調べて、それらが0×00 0×00 0×
01パターンを構成するか否かを確認する。このバイトを広範囲に検索する手法
も、上記した第一の手法に比較すると相当低いレベルではあるが、プロセッサに
集中的な負担がかかる。
【0010】 上記手法のいずれも、相当なプロセッサ稼動時間が、目標とするバイト値を探
すだけでなく更に隣接するバイトを調べて完全なスタートコードが発見されたと
判断するために費やされるために、特に有効なものとは言えない。上記した第一
の手法では、Intel80×86/Pentium(登録商標)シリーズ等の
所謂ストリング命令を有するプロセッサ用のアセンブリ言語にコード化し、性能
を高めることは可能である。 しかし、上記2つの手法がアセンブリ言語にコード化された場合であっても、
それら手法よりも更に効率的なアルゴリズムを提供することは有益であると考え
られる。
【0011】 デジタル映画は勿論のことグラフィックも、通常のコンピュータ記憶装置や通
信帯域幅にとって厄介なものである。アップロード即ち送信するデータを圧縮し
、それをダウンロード即ち受信する際に元のフォーマットに非圧縮化することに
よって一部の問題は解消できる。「Motion Picture Expre
ss Group」の頭文字であるMPEGは、動画及び音響データの圧縮及び
非圧縮化の基準である国際工業標準規格として進化してきた。毎秒30フレーム
でのフルスクリーンのビデオ再生及びCDと同等の品質を持つ音響とすることが
本来の目標であった。
【0012】 MPEG−1は、パーソナルコンピュータのビデオや音響の再生性能に革命を
もたらし、Microsoft社のWindows(登録商標)オペレーティン
グシステムの標準機能となった。これによりユーザはMPEGの可能性を初めて
体験することになり、より高度な多重媒体に向けた基礎を築いた。MPEG−2
標準規格の出現により、音響及び視覚体験がパーソナルコンピュータを越えて日
常の家庭用品にまで拡大することが約束された。パーソナルコンピュータの「頭
脳」と民生機器の娯楽機能を組み合すことによって、全く新しいタイプの娯楽用
パーソナルコンピュータ製品の可能性が生じる。
【0013】 MPEG−1技術により、毎秒30フレームのテレビのようなビデオ及びCD
品質の音響が生み出される。MPEG−1は、VHS品質のビデオが許容範囲に
ある多くの製造者間に浸透しており、教育訓練プログラム、対話型の百科事典、
学習機能やプレーイング機能を高めたアクションゲーム等に採用されている。極
東地域においては、MPEG−1は、ビデオCDやカラオケ機器におけるリッチ
ビデオ・音響再生装置の火付け役となっている。MPEG−1は、企業のイント
ラネット、インターネットの相互接続性を利用して各従業員と情報とを結び付け
る新しい個人ネットワーク上でも使用されるようになった。MPEG−1は、イ
ントラネットを利用した訓練アプリケーションにおいて、これらネットワークの
帯域幅の制約を超越してシームレスに該アプリケーションのクリップを伝送する
ように、この訓練アプリケーションを十分補完する。MPEG−1は、ビデオや
音響の再生を許容可能なものとし、標準CDプレーヤーと協働し、更にMicr
isoft Windows(登録商標)を通じて良く知られているパーソナル
コンピュータインターフェースを備えているので、現代の高出力化されたPCで
は、ソフトウェアのみのMPEG−1を利用して許容可能な品質を実現すること
ができる。
【0014】 MPEG−2技術によれば、標準テレビ表示装置より鮮明な解像度を得ること
ができるので、MPEG−1より4倍大きなビデオ画像を作り出すことができる
。MPEG−2は、家庭用娯楽機器愛好家からの要望が強い2つの要素である映
画館並みの品質を持つビデオとAC3・サラウンド・サウンドとを含んでいる。
デジタル多用途ディスク(DVD)製品の品質レベルを考慮すると、MPEG−
2は、MPEG−1より高レベルの性能を実現する。そのため、MPEG−2技
術は、多重媒体用の高級パーソナルコンピュータや民生機器のための標準として
位置付けられる。DVD/MPEG−2の機能性を使用することによって、平均
的パーソナルコンピュータは、本格機能を備えた娯楽ホームシアターに変身する
【0015】 MPEG委員会は、コンパクトディスクのビデオ及び音響の標準化を当面の目
標として、1988年後半に開始された。1992年までに、参加者は、ビデオ
、音響、システムに関する200人を越える国際的な技術専門家を含むまでに拡
大した。民生ビデオテープ(VHS)の知覚品質に近似したコード化ビット言語
である「シンタックス(syntax)」が生み出された。 シンタックスは、当初の第一目標としたアプリケーションよりも大幅に高いビ
ット速度とサンプル速度に適用するに十分な汎用性のあることが実証されたため
、インターレース化された放送用ビデオの効率的表示のためにシンタックスを定
義する第二段階(MPEG−2)が、委員会内で開始された。これは、MPEG
−1によってコード化された順次(非インターレース化)信号よりも更に挑戦的
なものである。 MPEG−1音響は、2つの音チャンネルを直接表現することのみが可能であ
った。これに対し、MPEG−2では、マルチチャンネルの離散的サラウンド・
サウンド音響を相互関連させる基本構想が導入されている。
【0016】 MPEGビデオ用のシンタックスでは、数個のトークン信号を使用して64サ
ンプルの全ブロックが表現される。また、MPEGには、コード化ビットを集約
的表現から元の原フォーマットである画像シーケンスにマップ化する復号化即ち
再構成プロセスが記述されている。例えば、コード化されたビットストリームの
フラグは、後続のビットが「DCT]アルゴリズムを使って複合化されるべきも
のか、或いは予測アルゴリズムを使って複合化されるべきものかを示す。復号化
プロセスのアルゴリズムは、MPEGによって定義されている。シンタックスで
は、空間的冗長性、時間的冗長性、等速運動、空間的マスキング等の共通したビ
デオ特性を利用することができる。
【0017】 MPEGによって100:1を超える圧縮率で高品質ビデオを実現できるよう
にしてほしいという要求は多い。しかし、このように高い圧縮率とすると、ソー
スビデオにオーバーサンプリング要素が含まれるようになる場合が多い。MPE
G画像シーケンスのコード化サンプル速度は、通常、有効ビット速度の30倍の
速度より大きくない。サブサンプリングの事前圧縮では、非MPEG方式のビデ
オコード化方法を含む全てのビデオコード化方法に対して、余りにも高い圧縮率
となる。
【0018】 MPEG−1及びMPEG−2ビデオ用シンタックスは、広範囲のビット速度
及びサンプル速度にわたって有用である。MPEG−1は、毎秒30のSIF画
像(352画素×240列)及び1.84メガビット/秒未満のビット速度で、
例えば、コンパクトディスクビデオの場合のような「条件付きパラメータビット
ストリーム」(白書)を操作する。4095×4095程度の画像寸法で最高1
00Mbit/秒のビット速度にコード化することは可能である。しかし、MP
EG−2では、最も一般的な組み合せは、352画素×240列×30フレーム
/秒の「低レベル」SIF及び720画素/列×480列×30フレーム/秒の
「主要レベル」CCIR601のような各レベルに設定されてきた。動き補償に
より、複数のマイクロブロックが前の画像から移動される。マイクロブロックの
移動目標位置は、以前に再構成した画像からの任意の16×16画素(又はMP
EG−2における16×8)領域に基づいて設定される。
【0019】 前の画像内におけるマイクロブロック移動目標の位置を限定する境界は、画像
のエッジ以外にはない。表示画像サイズは、コード化画像サイズと同一である。
MPEGでは、表示画像サイズ及びフレーム率は、ビットストリームにコード化
されたサイズ(解像度)及びフレーム率と異なるようにすることができる。例え
ば、ソース画像シーケンスにおける通常の画像パターンを落とした(大量に取り
除いた)後に、コード化に先立ち各画像自身をフィルターにかけるとともにサブ
サンプリングすることができる。再構成の際、ソース画像のサイズ及びフレーム
率に対して、画像を補間するとともにアップサンプルすることも可能である。実
際、3つの基本フェーズである、ソース率、コード化率、及び表示率をいくつか
のパラメータによって異なるものとすることもできる。MPEGシンタックスに
よれば、シーケンスのヘッダーによってコード化率と表示率とを個別に記述する
ことかできるが、ソース率は、エンコーダによってのみに識別される。
【0020】 全ての画像コード化形式(I、P、B)は、同一のマイクロブロック形式から
成る。I−画像内の全てのマイクロブロックは、基本JPEG画像のようなコー
ド化されたイントラ(Intra)でなくてはならない。しかし、P−画像内の
マイクロブロックは、イントラとしてコード化しても非イントラとしてコード化
してもよく、一時的に前の再構成画像から予測することも可能である。 B−画像内のマイクロブロックは、イントラ、前方予測によるもの、後方予測
によるもの、或いは、前方及び後方の両方の(補間)予測によるもののいずれか
を単独で選択することができる。マイクロブロックのヘッダーには、マイクロブ
ロックタイプと呼ばれる、マイクロブロックのモードをスイッチのようにオンオ
フ的に反転できる要素が含まれる。マイクロブロックタイプは、ビデオシンタッ
クスの強力な部分である。画像形式(I、P、B)は、意味論の範囲を拡げるこ
とによって各マイクロブロックモードを有効なものとする。この構成要素として
の各スイッチは、(1)イントラ又は非イントラスイッチ、(2)前方一時予測
(動き−前方)スイッチ、(3)後方一時予測(動き−後方)スイッチ、(「補
間」予測とされた組み合わせにおける(2)+(3)前方及び後方の両予測スイ
ッチ)、(4)条件付き補充(マイクロブロック−パターン)スイッチ、(5)
量子化における適応(マイクロブロック−量子化器)スイッチ、及び(6)動き
補償なしの一時的予測スイッチである。最初から5つのスイッチは、大部分が直
交する状態とされる。6番目のスイッチは、P−画像における第一及び第二スイ
ッチに基づくものであるが、B−画像には存在しない。一部のスイッチは、他の
スイッチが存在する場合には、非適用とされる。例えば、イントラのマイクロブ
ロックにおいては、本質的に6つの全てのブロックがDCTデータを含むため、
マイクロブロック−パターン又は他の一時的予測スイッチのいずれも信号を出す
必要がない。同様に、非イントラのマイクロブロックにおいて、コード化された
予測エラー情報がない場合には、マイクロブロック−量子化信号は、意味のない
ものとなる。シーケンス構造は、特定のI、P、Bフレームパターンに対し固定
される。シーケンスは、I−画像、P−画像、及びB−画像の大部分のパターン
から構成することができる。例えば、IBBPBBPBBPBBPBBのような
固定パターンとするのは、業界の慣用手段である。しかし、更に進化したエンコ
ーダでは、局部的シーケンス特性に応じて3つの画像形式の配列を最適化するよ
うにしている。各画像形式には、時間的マスキング、閉鎖、動き活量等の特定画
像の統計値と結び付けられる場合のペナルティが設定されている。
【0021】 これまで、MPEG−2データストリーム処理は、特定用途向け集積回路(A
SIC)を使用し、主としてハードウェアで行われていた。比較的最近、十分な
出力を持つ費用効果の高いマイクロコンピュータが導入されることによって、コ
スト低減の解決策としてソフトウェアを使用してこのMPEG−2処理を行うこ
とへの関心が高まった。このような目的へのソフトウェア使用の現時点までの寿
命は比較的短かったため、従来技術が多量に蓄積される余裕はなかった。
【0022】 デジタル画像には、それを記憶するための大きな記憶スペースとそれを伝送す
るための広い帯域幅が必要とされる。縦横480×640画素で、画素当り24
ビット[画素当り3バイト(8×3ビット)]のフルカラー分解能を有する単一
の比較的小型の画像は、メガバイトのデータに相当する。縦横1024×768
画素の分解能で、24ビットカラー画面は、それを表示するために2.3メガバ
イトのメモリを必要とする。インチ(2.54cm)当り300ドットで、縦横
8.5インチ×11インチのページの24ビットカラー画像は、それを表示する
ために25メガバイト程度を必要とする。
【0023】 高品質民生機器については、少なくとも毎秒30フレームの割合で画像が生じ
る必要があるというのが一般的になっているため、ビデオ画像は、更にデータ集
中的なものとなる。高精細度テレビ(HDTV)に関する最新計画では、フレー
ム当り縦横1920×1080画素又はそれ以上が要求され、これは、毎秒約1
5億ビットのデータ伝送速度に相当する。この帯域幅の要件は、「U」及び「V
」クロミナンス成分について2:1のインターリービング処理及び4:1のデシ
メーション処理を行う場合には多少緩和できるが、依然として毎秒3.73億ビ
ットが必要とされる。
【0024】 ハフマン・コーディング、ランレングス・コーディング、Lempel−Zi
v−Welchアルゴリズム等の圧縮デジタル画像やビデオ情報に関する従来の
損失防止技術は、この要求を満足するには程遠いものである。そのため、いくら
かの情報損失が生じる可能性のある圧縮技術は、離散コサイン変換技術、適応的
離散コサイン変換技術、及びウェーブレット変換技術を含む形で考案された。ウ
ェーブレットの技術は、DEVore、Jawerth及びLucierによる
「Image Compression Through Wavelet T
ransform Cording」IEEE Transactions o
n Information Theory、Vol.38、No.2、pp.
719−746(1992)、及びAntonini、Barlaud、Mat
hieu及びDaubechiesによる「Image Cording Us
ing Wavelet Transform」IEEE Transacti
ons on Image Processing、Vol.1、No.2、p
p.205−220(1992)に論じられている。
【0025】 ジェイペグ(JPEG−Joint Photographic Exper
ts Group)は、離散コサイン変換を利用したアルゴリズムを含むJPE
G規格として知られる静止画像圧縮に関する標準規格を普及させてきた。JPE
G標準規格は、以下の参考文献を含めた多くの刊行物に記載されている。Wal
lanceによる「The JPEG Still Picture Comp
ression Stamdard」IEEE Transactions o
n Consumer Electronica、Vol.38、No.1、p
p.xviii−xxxiv(1992)、Purcellによる「The C
−Cube CL550 JPEG Image Compression P
rocessor」C−Cube Microsystems, Inc.(1
992)、及びC−Cube Microsystems「JPEG Algo
rithm Overview」(1992)。
【0026】 JPEGアルゴリズムを使用したエンコーダは、線形変換、量子化、ランレン
グス・エンコーディング(RLE)、及びハフマン・コーディングという4つの
段階を有する。デコーダは、これらの段階を逆に行い画像を再構成する。線形変
形の段階では、画像が8×8画素ブロックに分割され、ブロック毎に両空間次元
において離散コサイン変換が行われる。画像をブロックに分割する目的は、離散
コサイン変換が著しく非局所的であるという離散コサイン変換アルゴリズムの欠
陥を克服するためである。つまり、画像を小さな領域に制限し各ブロック毎に個
別の変換を行うことによって上記非局所性の問題を克服する目的で、画像が複数
のブロックに分割される。しかし、この妥協策は、高圧縮時においてタイル貼り
の状況(濃淡むら)が生じるという問題がある。
【0027】 量子化段階では画像情報の損失を伴う可能性があるが、この段階は伝送すべき
情報量を減少させる上で必須のものである。各変換成分は、8×8画素の各ブロ
ックにおけるそれらの位置から選定された値を使って量子化される。この段階は
、不必要な小さな値をゼロ又は更に小さな数に減少させるという好都合な副次的
効果を持っている。 ランレングス・エンコーディングの段階では、ある値を繰返す回数及びその繰
返す値を識別する要素である複数のゼロのような一連の同じ値がコード化される
。「8つのゼロ」のような単一要素は、例えば多くの8つのゼロを表すスペース
よりも小さなスペースで済む。この段階は、通常量子化段階から得られる多くの
ゼロによって調整される。 ハフマン・コーディングは、ランレングス・エンコーディング段階からの各記
号を、その記号が生じる頻度に応じて選定される可変長ビットストリングに変換
する。即ち、頻度の高い記号は、頻度の低い記号よりも短いコードでコード化さ
れる。このコード化は、予め設定されたテーブル又は画像に必要とされるビット
総数が最小となるように具体的に構成されたテーブルのいずれかによって行われ
る。
【0028】 JPEGと同様に、エムペグ(MPEG−Motion Picture E
xperts Group)は、画像シーケンスをコード化するための2つの標
準規格を普及させてきた。これら標準規格は、MPEG−1及びMPEG−2と
して知られている。MPEGアルゴリズムは、フレームからフレームへの比較的
小さな変化という共通した事実を利用している。MPEG標準規格では、完全画
像は、20フレーム毎に一度だけ圧縮され伝送される。JPEG標準規格と類似
した圧縮技術が、通常、これらの「参照」フレーム及び「イントラ」フレームを
圧縮するために使用される。中間フレームに関しては、予測フレームが計算され
、実際のフレームと予測フレームとの差分のみが圧縮され伝送される。いくつか
のアルゴリズムのいずれも予測フレームの計算に使用でき、このアルゴリズムは
、予測器のアルゴリズムが特定ブロックに対して最適に作用するかどうかを考慮
してブロック毎に選択される。MPEG−1は、国際標準化機構(ISO)CD
11172に詳細に記載されている。
【0029】 このように、ビデオシーケンスの圧縮に関しては、MPEG技術は、参照フレ
ームの圧縮を参照フレーム間に位置する中間フレームの圧縮と独立して扱うもの
である。本発明は、静止画像又は参照フレームの圧縮に関するものではなく、中
間フレームの圧縮に関するものである。
【0030】 上記したデジタル画像を圧縮する技術は、これまでに考案された技術のほんの
一部を示すに過ぎない。しかし、近未来に予測される巨大な静止・ビデオデータ
の記憶及び伝送の要件を満足する圧縮率を実現する公知技術は未だ存在しない。
また、これらの技術は、純粋な圧縮率に関する問題以外の他の問題も伴う。特に
、リアルタイムの高品質ビデオ画像の非圧縮化については、非圧縮化アルゴリズ
ムは、毎秒30フレームの非圧縮画像を作り出すことができるように十分シンプ
ルなものでなくてはならない。多くの場合、画像を事前に圧縮することができる
ので、圧縮の速度要件は、非圧縮化のための速度要件ほど厳しくない場合が多い
。しかしその場合でも、圧縮時間は、商業的目的を達成する上で妥当なものでな
くてはならない。更に、多くのアプリケーションでは、実況イベントのリアルタ
イム伝送のように、リアルタイムの圧縮や非圧縮が必要とされる。高圧縮率を達
成する公知の画像圧縮・非圧縮技術は、圧縮又は非圧縮のいずれか又は両者にお
いて膨大な計算を必要とするという犠牲を払うしかそれを行う方法がない場合が
多い。
【0031】 MPEG−2ビデオ圧縮標準規格は、ISO/IEC 13818−2「情報
技術−−動画及び関連音響情報の一般コード化:ビデオ」に定義されている。M
PEG−2では、圧縮効率を改善するための時間的局所性を利用するように固定
サイズとされた矩形ブロックの画素素子(「マイクロブロック」)による動き補
償(又は動き補正)が使用される。参照画像内のこれら「マイクロブロック」の
位置は、2分の1の画素境界により与えられるため、画素素子の補間を必要とす
る。 この補間は、MPEG−2標準規格に以下のように明記されている。
【表1】
【0032】 ケース−B、C及びDの末尾にある演算子「//」は、MPEG−2仕様書に
おいて、「最も近い整数に四捨五入する(又は切り上げる)整数除算。特に定め
がない限り、半整数値は、ゼロを避けて四捨五入される(又は切り上げる)。[
−−]」。従って、2又は4が、右側演算数であり、左側演算数がゼロより大き
い又はゼロである場合、演算子「//」は、x//2=(x+1)>>1;x/
/4=(x+2)>>2によって置き換えることができる。ここで、「>>」は
、ビット数で示される右側演算子による左側演算子の2進右方シフトを意味する
【0033】 「avg(P00,P01):=(P00,P01)//2=(P00,P01+1)>>
1」は、マイクロプロセッサ上での実行する上で簡単な演算であるため、多くの
市販用マイクロプロセッサは、この演算を組込み命令として含んでいる。例えば
、「pavgusb」は、SSE拡張機能を備えたIntelプロセッサ及び3
DNow!拡張機能を備えたAMDプロセッサに含まれている。このような命令
は、上記ケース−B及びケース−Cの計算に非常に有用である。
【0034】 組込み「pavgusb」命令は、例えば「avg(avg(P00,P01),
avg(P10,P11))」のようにこれを2回実行することにより、ケース−D
に用いると大変魅力的である。また、第一段階の加算平均を行う回路を、第二段
階を行うためにもう一度使用することができるので、組込み「pavgusb」
命令は、純粋にハードウェアでの実施の代替案としても興味深いものである。し
かし、このようにすると、好ましくない可視アーチファクトが生じてしまう。
【0035】 ケース−Dを実行するための通常のサブルーチンには、表Aの左欄に記載され
ているように、28の命令を実行する必要がある。しかし、「pavgusb」
が使用される場合には、表Aの右欄に記載されているように、5つの命令に縮小
することができる。ケースDに関して即効性のあるこの解決策の魅力は非常に大
きい。
【0036】
【表2】
【0037】 上記ショートカット的解決策の1つの問題点は、丸め(四捨五入又は切り上げ
)がMPEG命令と異なる形で処理されるために、アーチファクトを引き起こす
という点にある。従って、アーチファクトのない状態で実施するため、ショート
カット的解決策は採用できない。 4つの画素の特定の組み合せについての丸め誤差は、以下のように算出できる
。 err(P00,P01,P10,P11)= ((((P00+P01+1)>>1)+((P10+P11+1)>>1)+1)>>
1)− ((P00+P01+P10+P11+2)>>2) 全体誤差は、各係数の2つの最小有効ビットにのみ影響を受けるので、総平均
誤差は以下のように算出できる。
【0038】 丸め誤差は、第一ジェネレーション補償については1つの最小有効ビット未満
であり問題はない。しかし、MPEG−2標準規格では、マルチジェネレーショ
ン補償が許されている。このシーケンスでは、予測画像を後続の画像の参照画像
として使用できる。予測画像が参照画像として使用される場合には、丸め誤差が
1つの最小有効ビットを超えて加算される可能性があり、この累積された丸め誤
差が、いくつかの補償ジェネレーションよりも大ききなり好ましくない可視アー
チファクトが発生する可能性がある。
【0039】 このような可視アーチファクト又は光学的影響は、「ポンピング」と呼ばれ、
一連の予測画像では明るくなり、次のイントラ画像では普通の明るさに戻るよう
な画像として眼で知覚される。特に、イントラコード画像間の予測画像の数が通
常より多いシーケンスでは、深刻なポンピングが起こる可能性がある。例えば、
フィールド構造のコード化シーケンス又は「双方向の」予測画像を欠く素材では
、ポンピングを被ることになる。
【0040】 (発明の概要) 本発明は、コンピュータシステムにおける高帯域ストリーミングデータの最適
処理を可能とする方法及び装置を提供する。このシステムの全体的な目的は、演
算動作を最小限とすることによって、最大の性能を実現することにある。その結
果は、本明細書に記載された発明において、メモリコピー量を最小限とすること
により、更にオブジェクトの割振り及び割振り解除の回数を最小限とすることに
より達成される。 高速ストリーミングデータが入力される場合、メモリコピーでは、CPU/帯
域幅での集中的な演算を伴う。オブジェクトの割振り及び割振り解除では、シス
テムリソースの集中的な動作を伴い、コンピュータにおける呼出し当りのCPU
処理量の非常に大きな割合を必要とする。複数の手法の組み合せを用いて、本発
明は、メモリコピー数だけでなくストリーミング媒体データに関する操作過程で
割振りされ割振り解除されるオブジェクト数をも低減する手法を提供する。
【0041】 本発明の好ましい実施形態では、ワードによる検索が行なわれる。この方策に
は、バイトによる検索のクロックサイクル数と同数のクロックサイクルが必要で
あるが、関連するアドレス数は2分の1であるため実行時間は半分に削減される
。スタートコード毎に、第一又は第二バイトがワード境界上にあるので、データ
を2回検索することによって、まず0×00 0×00のワードに関して、次に
再度0×00 0×01のワードに関して、データ内の全てのスタートコードを
検出することができる(各々の成功した検索「ヒット」には、検出したコードが
本当にスタートコードであることを確認するために隣接したバイトを調べる必要
があるが、このルールは簡単なもので効率的にコード化できる。)第二検索は、
(マシンがデータキャッシュを1つ持っている場合)マシンのデータキャッシュ
を使って実行されるので、通常、第二検索の待機状態は存在しない。
【0042】 本発明は、上述した2つの手法がアセンブリ言語にコード化されたとしてもこ
れら2手法よりもスタートコード走査時の効率が高いアルゴリズムを提供する。
このアルゴリズムの効率により使用可能となるCPU時間によって、プロセッサ
は他のタスクを処理することが可能となるので、所定の処理能力を持つマシンで
、より複雑で密度の高い成果を分散して生み出すことができる。例えば、本発明
によれば、画像内に他の画像を埋め込むソフトウェア、視覚的迫力があるがCP
U集中型のサーノフビデオ機能、見ながら録音、対話式ウェブアクセス、バック
グラウンド電子プログラムガイド(EPG)処理、HDTVビデオレンダリング
、動き補償ソフトウェア等の機能をより簡単に実行するためにCPU時間をより
多く使用できるようになる。
【0043】 本発明の事前パーサは、デコード用のMPEG−2データストリームと平行す
るように第二データストリームを生成するために使用される。この平行データス
トリームは、該MPEG−2データストリームの構造を効率的で使い易い形態で
記述し、様々なデコード段階における構文解析タスクの重複の排除を促進する。
事前パーサは、MPEG−2データストリーム入力を、都合の良い長さのサンプ
ルに分割する。次に、このサンプルの各々は、第二データストリームにおいて形
式及び長さについて特徴付けられる。この特徴付けは、MPEG−2データスト
リームのデコード及びレンダリングを支援するとともに構文解析の重複を排除す
る。
【0044】 また、本発明は、MPEG−2補間ケース−Dに関する2段階動き補償誤差が
補正される方法を含む。改善されたMPEG−2デコーダは、論理ゲート、マル
チプレクサ、及び加算器を備える。水平(h0)及び垂直(h1)の動きベクトル
成分のいずれもが、1/2画素補間(ケース−D)を必要とする場合、該マルチ
プレクサは、該加算器に定数−3(マイナス3)を転送し、そうでなければ、定
数ゼロが使用される。この加算器は、2段階予測器によって計算された予測画素
の補正項を含むように、逆離散コサイン変換に入力されるDC係数を変更する。
−0.357の補正値は、逆離散コサイン変換時に結果としての64の空間係数
全てに対し一様に配分される。これにより、統計的には、わずかに明るさを増す
補正項群となる。これは、2段階予測器によって形成されたわずかに暗い予測を
相殺する。出力フレームは、統計的には正しい画像となる。
【0045】 (発明を実施するための最良の形態) 上述したように、メモリコピー及び/又はソフトウェアオブジェクトの割振り
・割振り解除を多用するのが、ストリーミングデータ処理の問題を解決する従来
の技術手法であった。 図1は、オブジェクト割振りをわずかに使用するとともにこのオブジェクトの
多量のコピーを行なうストリーミング処理システムの構成を示す概要図である。
図1に示されるように、衛星アンテナ10によって、放送電波信号の形でストリ
ーミングデータが受信される。この信号は、ドライバ12に送られ、次にメモリ
14に送られる。入来データは、メモリに割振られコピーされる。このデータは
、メモリから読み出され、システムに使用する必要のあるデータを構文解析し修
正するモジュール15によって処理される。構文解析・修正段階の結果は、メモ
リ出力領域16にコピーされ、次にシステムで使用するためにモジュール17で
デコードされレンダリングされる。データパケットが処理されると、次の入来パ
ケット18の処理を開始する態勢を取り、処理を繰返す。 上記手法では、メモリに集中的な負担が掛かることが分かる。
【0046】 図2は、オブジェクト割振りを多用するとともにこのオブジェクトのわずかな
コピーを行なうストリーミング処理システムの構成を示す概要図である。図2に
示されるように、衛星アンテナ10によって、放送電波信号の形でストリーミン
グデータが受信される。この信号は、ドライバ12に送られ、次に入来データの
ローカルコピーを保持するメモリ24に送られる。このシステムは、入来データ
を割振りして入来データのI/Oオブジェクトを生成するモジュール26を備え
ており、次に、このI/Oオブジェクトは、モジュール25で構文解析され修正
される。処理が終わると、I/Oオブジェクトは、モジュール27から出力民生
機器(図示せず)に受け渡される。民生機器は、出力データを使用するとともに
、このオブジェクトが割振り解除され破棄された時点で、I/Oオブジェクトと
の関係が終了したことをシステムに通知する。その後、システムは、次の入来パ
ケット28の処理を開始する態勢を取り、この時点で処理が繰返される。 上記手法では、オブジェクト割振り・割振り解除をかなり行う必要のあること
が分かる。
【0047】 本発明は、コンピュータシステムにおける高帯域ストリーミングデータの最適
処理を可能とする方法及び装置を提供する。このシステムの全体的な目的は、演
算動作を最小限とすることによって、最大の性能を実現することにある。その結
果は、本明細書に記載された発明において、メモリコピー量を最小限とすること
により、更にオブジェクトの割振り及び割振り解除の回数を最小限とすることに
より達成される。
【0048】 図3は、本発明によるコンピュータにおいて高速ストリーミングデータの最適
処理・操作を行なうシステムの構成を示す概要図である。ストリーミングデータ
を処理しながら、メモリコピー回数及びオブジェクトの割振り及び割振り解除の
回数を低減するために本明細書に開示されたシステムに用いた手法・技術には以
下のものが挙げられる。 ・可能であればいつでも、メモリのコピーではなくメモリ参照オブジェクトを使
用する。本明細書では、このメモリ参照オブジェクトを、データブロックという
。 ・データブロックに関するリストを含む最高4つの個別の待ち行列又はリストの
使用。これら4つの待ち行列とは、以下のものである。 a)アイドル待ち行列30:アイドル待ち行列30は、現在使用されてい
ないデータブロックオブジェクトのキャッシュを保存するために使用される。ア
イドル待ち行列30によって、オブジェクトの再利用が促進され、これらのデー
タブロックオブジェクトの割振り及び割振り解除が最小限に抑えられる。 b)入力待ち行列31:入力待ち行列は、入来データブロックの各々が処
理可能な時まで、これら入来データブロックを保持する領域として使用される。 c)リンボー待ち行列32:リンボー待ち行列32は、出力待ち行列に入
れる前に、更に全体的な処理のために保持する必要のある単一データブロックよ
り大きなローカライズ即ち局所化されたストリーム用に使用される。 d)出力待ち行列33:出力待ち行列33は、入力待ち行列からリンボー
待ち行列で処理された後に最終的に出力待ち行列に置かれた処理済データブロッ
クを保持する待ち行列である。データブロックが出力待ち行列から取出されてこ
の取出されたデータがデコーダ又は事後処理ユニットに送られる時に、これらデ
ータブロックは、再利用のためにアイドル待ち行列上に戻される。このデータブ
ロックは、この時点では割振り解除されない。 ・マルチスレッディングによる分割された処理デューティ。3つの個別の処理ス
レッドが、デューティの分離を促進するために使用される。これら3つの処理ス
レッドは以下のものである。 a)入力スレッド34:入力スレッド34は、ストリーム媒体ソースから
入来データを取込み、データブロックをアイドル待ち行列から抽出することによ
ってデータブロックを構成し、入来データに対して参照メモリポインタを割当て
た後、新しいデータブロックを入力待ち行列上に置く。 b)処理スレッド35:処理スレッド35は、入力待ち行列からデータブ
ロックを取込み、出力のためにデータブロックを用意する必要のある時には、デ
ータを構文解析及び/又は修正することによって該ブロックを処理する。データ
の局所化ストリームに関する必要な全ての情報が、単一データブロック内に完全
に含まれていないと判定される(36)と、このデータブロックは、局所化スト
リームが完全な形となる(39)まで、リンボー待ち行列37、38に置かれる
。局所化ストリームが完全に処理されると、この完全に処理された局所化ストリ
ームを構成するデータブロックは、出力待ち行列に移される。 c)出力スレッド40:出力スレッド40は、出力待ち行列からデータブ
ロックを取込む役割を果たし、この取込みデータを下流側処理ユニットに受け渡
す操作を行なうためのモジュール41を備える。好ましい実施形態では、下流側
処理ユニットは、通常、デジタル音響/ビデオデコーダである。次に、対応する
データブロックは、入来データパケット/ストリームに再利用するために、アイ
ドル待ち行列42、43に戻される。
【0049】 これによってオブジェクトの再利用のサイクルが完成されるため、オブジェク
トの割振り及び割振り解除は、ほぼゼロに低減される。データブロックオブジェ
クトが割振りされる唯一のケースは、アイドル待ち行列が空になりアイドル待ち
行列からデータブロック調達の要求があった場合である。また、長時間アイドル
待ち行列上に置かれたデータブロックオブジェクトの数が非常に多くなった場合
にのみ、処理中にデータブロックの割振り解除がされる。これらの未使用データ
ブロックの1つ又はそれ以上の割振り解除は、入来データパケットの周期特性に
起因する頻繁な割振り及び割振り解除を引き起こすヒステリシスを生じないよう
に注意深く扱う必要がある。しかし、これは主に実行上の懸念点であり、本発明
のオペレーションに影響を与えるものではない。
【0050】 本発明の複雑性は、個別で固有のデューティを持つ3つの個別スレッドを使用
することによって最小限に抑えられる。メモリコピーは、入来データをコピーす
るのではなく入来ストリーミングデータパケットを参照することのみによって最
小限に抑えられる。データブロックオブジェクトは、どの位置で入力データが発
見されたか、入力データがどの位大きなものか、出力/処理済データをどこで事
後処理するか、そしてこれらの入力及び出力メモリ参照の各々の状況を表す非常
に小さなオブジェクトである。入力及び/又は出力が、時には実際に割振り及び
/又はコピーされる状態とすることは可能である。これらは、ルールではなく例
外であるが、このようなイベントを追跡する責務がデータブロックオブジェクト
自身にある。 データブロックの割振り及び割振り解除は、オブジェクト再利用センターとし
てのアイドル待ち行列の使用によってほとんどゼロに低減される。これは、デー
タが常に入来し処理され出力されるために、ストリーミングデータ処理用の非常
に有力な概念となる。データの移動が一定であるため、この概念の価値は非常に
高いものとなる。
【0051】 図4は、本発明によるコンピュータにおいて高速ストリーミングデータの最適
処理・操作を行なう搬送処理ミニコア50の構成を示す概要図である。以下の説
明は、ソフトウェアにおいてISO13818−1(www.mpeg.org
、www.ansi.org(ISO 13818−1))搬送ストリームを扱
うため、及びこれらの搬送ストリームをMPEGストリームの様々なフォーマッ
トに翻訳するための本発明による現時点で好ましい基本設計手法を示す。
【0052】 本発明のこの実施形態は、衛星及びグローバル放送電波搬送の領域における応
用を想定したものである。ミニコアの主な機能は、DVB搬送ストリーム等の入
力としてのISO13818−1搬送ストリームパケットを受信したり、ユーザ
の要求時、これらのパケットを他のMPEGフォーマットに翻訳したりすること
にある。また、ミニコアは、タイムスタンプ及びクロック基準情報を、このクロ
ック情報を出力インターフェース上の音響・ビデオストリームと関連付けるサイ
ドインターフェース上の該情報の使用機器に提供する。
【0053】 この搬送ミニコアは、以下のものをその出力インターフェース上に備える。 ・DVBビデオPIDの場合のゼロ長PESヘッダー付PES51。 ・入力ペイロード長及び64k/16ビット長フィールド制限に係りなく全ての
PESパケット長フィールドを含むように再構成された長−強化PES52。 ・排除される無関係な全てのパケットを含む基本ストリーム53。 ・構文解析/認証表示・タイムスタンプ、デコード・タイムスタンプ、搬送クロ
ック基準54(SCR/PCR)。 ・音響ストリーム及びビデオストリームのバイトインデックスに対する刻時情報
の相関関係。 これらの出力及び搬送データの入力は、Maicrosoft Visual C++「.lib」ファイル、「.h」ヘッダーファイル、及び「.dll」
ファイルとして本発明の好ましい実施形態において設定されている。
【0054】 (実施例) 以下の表は、本発明の好ましい実施形態のC++実行のソースコードリストで
ある。 表Bは、データブロック処理のために入力待ち行列から再利用されるとともに
、処理後、これらのデータブロックを出力待ち行列上に置くC++−特定バッフ
ァのソースコードリストである。
【0055】 表B.再利用バッファ処理ソースコードリスト
【表3】
【表4】
【表5】
【表6】
【表7】
【表8】
【表9】
【表10】
【表11】
【表12】
【表13】
【表14】
【表15】
【表16】
【表17】
【表18】
【表19】
【表20】
【表21】
【表22】
【表23】
【表24】
【表25】
【表26】
【表27】
【表28】
【0056】 表Cは、表Aにおける再利用バッファ処理クラスの定義のC++−特定の実行
に関するソースコードリストである。 表C.再利用バッファ処理クラスの定義−ソースコードリスト
【表29】
【表30】
【表31】
【表32】
【0057】 以下の表Dは、本明細書に開示されたシステムに使用されるグローバルオブジ
ェクトの定義のC++−特定の実行に関するソースコードリストである。 表D.グローバルオブジェクトの定義−ソースコードリスト
【表33】
【表34】
【表35】
【0058】 以下の表Eは、データブロックを監視するとともにデータブロックを追跡する
モジュールのC++−特定の実行のソースコードリストである。 表E.データブロック追跡−ソースコードリスト
【表36】
【表37】
【表38】
【表39】
【表40】
【表41】
【表42】
【表43】
【表44】
【表45】
【0059】 以下の表Fは、データブロック追跡のための定義に関するC++−特定の実行
のソースコードリストである。 表F.データブロック追跡の定義−ソースコードリスト
【表46】
【表47】
【表48】
【0060】 以下の表Gは、再利用バッファ処理の定義に関するC++−特定の実行のソー
スコードリストである。 表G.再利用バッファ処理の定義−ソースコードリスト
【表49】
【表50】
【表51】
【0061】 本発明は、明確でありながら比較的長期の課題、つまりMPEG−2における
スタートコードの位置探索の課題を解決するより効率的な手法としてのアルゴリ
ズムを提供する。現存するアルゴリズムの内でこの課題解決を有効に達成するも
のは、従来技術として考えることができる。本発明の1つの目的は、この明確な
目標を達成するために必要なCPU時間を低減することにある。本発明は、MP
EG−2データストリームに関して有用であるが、この標準規格に限定されるこ
となく他の標準規格に適用できることは、当業者であれば容易に考えられること
であろう。例えば、本発明の好ましい実施形態について実行された検索パターン
は、MPEG−2に直結したものであるが、このアルゴリズムの一般概念は、バ
ッファにおいて特異な3バイトパターンを検出する課題にも適用できる。この概
念は、一般的に如何なるパターン長の検索にも拡張できるが、特に、パターンが
奇数バイトである場合に有用である。
【0062】 本発明の現時点で好ましい実施形態は、特に、CPU命令群において以下の能
力を持つCPU上で展開する場合に有用である(但し、本発明は、このような形
式のプロセッサのみに限定されるものではない)。 ・所定のバイト値/ワード値/ダブルワード値に対する一致又は不一致を確認す
るために任意サイズとされたメモリブロックを走査する能力(例えば、80×8
6のSCAS命令)。好ましい実施形態では、ワード走査のみが必要とされる。
・同一性を確認するために、任意ではあるが同じサイズとされた2つのメモリブ
ロックを比較し、それらがバイト対バイトの比較で同一であるか否かを示す能力
(例えば、80×86のCMPS命令)。 ・単一マクロ命令として上記両機能を実行する能力(例えば、80×86のRE
PE/REPEM命令)。
【0063】 本発明の現時点での好ましい実施形態を実行するアルゴリズムに関するソース
コードは、米国ワシントン州レッドモンドのMicrosoft社によって製造
されたMicrosoft C++コンパイラに適合するフォーマットで以下の
表Aに示される。このアルゴリズムを説明するフローチャートは以下の通りであ
る。 ステップ0:エントリポイント。(呼出しパラメータによって)「バッファ終
端トリミング」は有効にされたか?そうでなければ、ステップ2に進む。 ステップ1:バッファの終端バイトが下記6つのパターンの何れかに一致した
かどうかを調べる。 00 00 00 00 00 01 一致する場合には、評価バッファのサイズを減少してこれらのバイトを取り除
く。この論理バッファサイズを減少したことは、呼び出しルーチンに通知する必
要があり、この通知によりこれらの「飛越しされた」バイトは、スタートコード
走査ルーチンに対する以降の呼び出しの際、再評価される。テスト状態がFAL
SEになるまでステップ1をループ化する。一部のケース(例えば、完全にゼロ
バイトから成るバッファのような場合)では、このトリミングによってバッファ
全体が使い尽くされた結果になる可能性があり、この特殊ケースでは、バッファ
の最後の1又は2バイトがゼロであるかどうかによって、バッファの元のサイズ
を1又は2バイトほど減らして、このバッファにはスタートコードは存在しない
ことを呼び出し側に返答すべきである点に留意する必要がある。(以下に含まれ
るソースコードに使用される実際のコードは、より効率的であるが記述がより難
しい同じ実効果持つアルゴリズムを使用する。当業者であれば、本明細書に示さ
れたいずれのアルゴリズムのオペレーションも評価し理解できると考える。)バ
ッファのサイズが、初期オフセットを考慮に入れた状態で6バイト未満の場合に
は、現在のサイズを減らしたバッファにはスタートコードは存在しないこと呼び
出し側に返答する。また、バッファのサイズが奇数の場合には、それを偶数にす
るように減少しこの情報を呼び出し側に戻すことによって、この付加的に「削除
された」バイトは、次回の呼び出しの際に再走査されることになる。
【0064】 ステップ2:現在のバッファ評価位置において最初のDワードがゼロかどうか
を調べる。そうでなければステップ5にスキップする。 ステップ3:最初の非ゼロワードが検出されるまで前方走査する。これは、ス
テップ5で定義されたようなワード走査である。非ゼロワードが検出される前に
、評価バッファの終端に到達した場合には、呼び出し側に返答する(「バッファ
終端トリミング」が有効化されていれば、このようなことは起こらない)。 ステップ4:評価バッファポインタを1ワード後退させる。この「先行」ゼロ
ワードがスタートコードの始まりであるかもしれないためである。 ステップ5:最初のゼロワードについて前方走査する(これは、ステップ4が
実行されるとその直後検出される)。この走査は、ワード走査である(「検索ポ
インタ」が、反復毎に1ワード即ち2バイト移動する)。バッファ終端に到達す
ると、終端ゼロワードは見つからないというフラグが検出されてステップ7に進
む。
【0065】 ステップ6:この時点で有効スタートコードの存在をチェックする。これは、
以下のルールに基づく。 最初の2つのバイトはゼロである。 三番目のバイトは1である。 これが、(スタートコード走査ルーチンに対する呼び出し側パラメータの
1つによって定義されたような)音響チャンネルである場合には、四番目のバイ
トが、0×C0から0×DFの範囲に含まれているかどうかを調べる。含まれて
いない場合には、これは有効なスタートコードではない。 これが音響チャンネルでない場合には、四番目のバイトが、0×C0から
0×DFの範囲に含まれていないことを調べる。含まれている場合には、これは
有効なスタートコードではない。 四番目のバイトがゼロである場合には、五番目及び六番目がゼロかどうか
を調べる。いずれもゼロである場合には、これは有効なスタートコードではない
。 この発見されたゼロワードが、有効なスタートコードでないと判定された場合
、ステップ5に戻る。また、この発見されたスタートコードのオフセットをロー
カル変数に記憶する。
【0066】 ステップ7:ステップ5で走査が開始された点(但し、ステップ6でのスター
トコードテストの失敗によって開始されたものではない)から、スタートコード
がステップ6で検出された(又はステップ5からこのステップに進んだ場合には
バッファ終端の)点まで評価バッファの一時的領域を定義する。このサブバッフ
ァを、ゼロワード範囲と呼ぶ。「現在位置」をこのゼロワード範囲の始点に対し
て設定する。 ステップ8:値00 01(これはビッグエンディアン方式のマシン上で0×
0001と表現され又はリトルエンディアン方式のマシンでは0×0100と表
現される)を持つ次のワードについて、ゼロワード範囲の内側に限定して、ワー
ド走査(定義に関してはステップ5を参照)のように前方走査する。発見できな
い場合には、ステップ10に進む。 ステップ9:ステップ6で定義されたルールを使って、これが有効スタートコ
ードかどうか調べるためにチェックする(但し、ポインタが、現在、潜在的スタ
ートコードに入った1つのバイトであることに留意)。スタートコードが発見さ
れた場合には、そのオフセットを呼び出し側に戻すリストに付記する。いずれの
場合にも、ステップ8に戻る。 ステップ10:プロセスが、(ステップ5でなく)ステップ6からステップ7
に進むと、ステップ6で発見されたスタートコードのオフセットを呼び出し側に
戻すリストに付記し、「現在のポインタ」をステップ6で発見されたスタートコ
ードに続くワードに対し設定し、ステップ2に戻る。さもなければ、呼び出し側
に返答する。
【0067】 (実施例) オフセットバッファ(スタートコードのオフセットが書込まれるバッファ)が
6つのエントリを保持できると仮定する。この例としてのソースバッファは、1
4のスタートコードを有する(各オフセットは16進法で表す)。実際のスター
トコードではない0×00 0×00及び0×00 0×01のバイトパターン
が存在可能であり、詳しくは、このような「偽性スタートコード」が検出され飛
越しされ、各スタートコードが実際にスタートコードであると確認される可能性
があると仮定する。
【0068】 入力時、バッファポインタは、ゼロに位置される(図5a参照)。 0×0010で検出される最初の配列0×00 0×00ワードを探す(図5
b参照)。 0×000から0×0010でゼロワード範囲を設定する(図5c参照)。こ
の範囲で0×00 0×01のワード配列バイトパターンを探す。存在しない場
合、オフセット0×0010が出力リストに設定され、現時点で1つのエントリ
をその出力リストを与える。以前のゼロワード範囲(即ちオフセット0×001
2)に後続する1つのワードから始めて、次の0×00 0×00のワード配列
バイトパターンを探す。これは、オフセット0×007Aで検出される(0×0
10及び0×0012間の差は図5cに示されていないが、実際には、左側のポ
インタは、2つのアドレス位置だけ右側に移動している点に留意)。
【0069】 ワード配列バイトパターン0×00 0×01についてこのゼロワード範囲を
走査する(図5d参照)。2つが0×0024及び0×0032で検出される。
0×0023及び0×0031がスタートコードであることを確認した後、これ
ら2つのオフセットを(これまで計3つを書込んだ)テーブルに加え、次にオフ
セット0×007Aに算入することにより、この出力テーブルには4つのエント
リが保持される。そして、次のワード配列バイトパターン0×00 0×00を
探し、それを0×00BEで検出する。 このゼロワード範囲の走査により、「奇数配列」のスタートコードがないこと
が明らかにされ、オフセット0×00BEが出力テーブルに加えられ、エントリ
の数は(6つの内)5つとなる。次のゼロワード範囲は、オフセット0×01C
6に対して取られる(図5e参照)。
【0070】 「奇数配列」スタートコードの走査により、0×0141でその1つを検出し
(0×142で検出される0×00 0×01パターン)、それを出力テーブル
に加え、出力テーブルには6つのエントリで満たされたことになる。これが出力
テーブルのサイズであるため、出力テーブルが6つのエントリを持つことを通知
すべく呼び出し側に返答する。 スタートコード走査ルーチンに対する次の呼び出しの際は、最後に検出された
スタートコードを「飛越し」するように0×0142の初期オフセットを持った
状態で開始する(図5f参照)。この条件では、初期オフセットは、常に偶数で
なくてはならず、奇数が渡された場合にはそれを増加して偶数にする。 次のワード配列バイトパターン0×00 0×00を探し、それを0×01C
6で検出する(図5g参照)。
【0071】 このゼロワード範囲の再走査で、「奇数配列」スタートコードはないと分かる
と、出力テーブルへの最初のエントリは、0×01C6となる(図5h参照)。
次のゼロワード範囲の探索により、0×01E2が境界になっていることが検出
される。 ここでも、その範囲に介在する「奇数配列」スタートコードは存在しないので
、出力テーブルへの二番目のエントリは、0×01E2となる(図5i参照)。
次のゼロワード範囲は、オフセット0×027Cに移行する。 この範囲には、1つの「奇数配列」スタートコードが存在するので、出力テー
ブルへの三番目のエントリは、0×0×022Bとなり、四番目のエントリは、
0×027Cとなる(図5j参照)。他のゼロワード範囲では、検索ポインタは
0×02D4に移される。 このゼロワード範囲では、0×029Dにスタートコードが埋め込まれている
(0×00 0×01パターンは、0×29Eで検出される)ので、出力テーブ
ルへの五番目及び六番目のエントリは、0×029D及び0×02D4となる。
テーブルが満たされたため、プロセスは呼び出し側に返答する。
【0072】 このバッファのスキャナに対する第三の呼び出しの際には、検索は、オフセッ
ト0×02D6で開始される(図5k参照)。 次のワード配列0×00 0×00パターンは、0×0306で発見される(
図5l参照)。 このゼロワード範囲の再走査により、「奇数配列」スタートコードが存在しな
いことが明らかにされると、出力テーブルへの最初のエントリは、0×0306
となる。0×00 0×00パターンについての次の走査は不調に終わり、この
事実について信号が出され、プロセスは、ここでのゼロワード範囲の「遠端」を
バッファ終端に移動する(図5m参照)。 ワード配列0×00 0×01パターンについてのこのサブバッファの再走査
により、0×0348で1つが検出されると、オフセット0×0347が出力テ
ーブルに加えられ、2つのエントリが出力テーブルの構成要素とされる。これは
、バッファの終端でありこれ以上の検索はないので、プロセスは、2つ更にスタ
ートコードが検出されたことを伝えるべく呼び出し側に返答する。
【0073】 表H. 本発明によるスタートコード走査のためのアルゴリズムのソースコード
リスト
【表52】
【表53】
【表54】
【表55】
【表56】
【表57】
【表58】
【表59】
【表60】
【0074】 本発明の現状で好ましい実施形態は、80×86/Pentium(登録商標
)のアーキテクチャを最適化する。当業者であれば、本発明が他のアーキテクチ
ャに使用できることは理解される所であると考える。本発明の好ましい実施形態
は、Intelプロセッサのアーキテクチャ、そのプロセッサの32ビット命令
、及び使用可能なアドレス指定モードのストリング命令及び他の機能の組み合せ
を用いることによって、メモリバッファ内のスタートコードの位置を高速で探し
出す。 本発明は、高速バッファオペレーションを可能とするホストプロセッサのアー
キテクチャに内蔵された機能を使用するため、アルゴリズムは、メモリバッファ
内のスタートコードの位置を非常に高い速度で探し出す能力がある。当業者であ
れば、様々な公知のハードウェア及び/又はソフトウェア技術も、このようなオ
ペレーションを実行するために使用することができることは理解される所である
と考える。
【0075】 本発明を使用して達成される性能の指標となる例として、MPEG−2ストリ
ームの20メガバイト捕捉信号が処理された。本発明を使用することにより、W
indows(登録商標)NT4.0を実行する266MHzPentium(
登録商標)マシン上で、2万を超えるスタートコードを記述したテキストファイ
ルが1秒未満で書込まれた。20メガバイトのMPEG−2ファイルが、既にデ
ィスクキャッシュにロードされている場合には、二番目及びそれ以降の実行の際
にもこの実行時間が達成された。そこでの最初の実際のアプリケーションにおい
て、本発明は、CPUの総使用量をほぼ60%まで低減した。
【0076】 本発明の他の実施形態では、MPEG−2データストリームにおける多種多様
な構造間で生じる移行を、後のMPEG−2デコード段階に通知する情報の二次
的チャンネルを生成する。この二次チャンネルにおける情報は、あらゆる処理段
階でMPEG−2データストリームのデコードを簡便にするために使用すること
ができる。これは、MPEG−2デコーダのソフトウェアによる実行に特に有用
である。
【0077】 図6において、MPEG−2システム100は、高精細度テレビ(HDTV)
ビデオソース102及びサラウンド・サウンド(SS)ソース104を備える。
既存のエンコーダ106は、工業標準規格MPEG−2仕様に従って、HDTV
及びSS信号をMPEG−2データストリーム108に圧縮する。このMPEG
−2データストリーム108は、光ディスクに記憶するか、或いは装置109で
表される限定された帯域幅の通信回線を介して伝送することができる。
【0078】 事前パーサ(事前構文解析ツール)110は、入来MPEG−2データストリ
ーム108をサンプリングし、それを一連のMPEG−2サンプル112として
出力する。事前パーサ110は、MPEG−2データストリームを解析して「注
意喚起」の記述及び通知を含む二次チャンネル114を出力する。実際には、こ
れら記述及び通知は、主メモリのテーブルに保存される。事前パーサ110は、
ソフトウェアで実行でき、MPEG−2サンプル及び記述子をサブルーチン間の
テーブル呼び出しに連絡する。二次チャンネル114は、MPEG−2サンプル
において様々なデータ構造移行が生じる場所を記述する。ソフトウェアで実行さ
れるMPEG−2デコーダ115は、二次チャンネル14における通知を使用し
てMPEG−2サンプル112をデコードする。このMPEG−2デコーダ11
5は、実行可能DLL型ディスクファイルに記憶させることができる。
【0079】 MPEG−2圧縮サンプル112のデコードは、二次チャンネルの情報の助け
を借りることなく行なうことができるが、MPEG−2デコーダは、より高価な
デジタル式ハードウェアで実施する必要があると思われる。このような二次チャ
ンネルの通知は、事前構文解析データの要素となり、MPEG−2圧縮サンプル
112における様々な構造的特徴の位置を特定する。このような特徴としては、
ESスタートコード、音響フレームヘッダー、PESヘッダー、及びはるかに一
般的な基本ペイロードが挙げられる。ソフトウェアで実行されるMPEG−2デ
コーダ115により、どちらかと言えば困難でCPUに集中的な負担が掛かる構
文解析ジョブが軽減される。
【0080】 MPEG−2デコーダ115は、3段階のフィルタとして図6に示されており
、第一段階のフィルタ116MPEG−2出力118及び事前パーサ出力120
を転送する。MPEG−2サンプル112の構文解析ジョブの大部分又は全てが
既に事前パーサで済まされているために、第一段階のフィルタ(A)116及び
第二段階のフィルタ(B)122では、MPEG−2サンプル112の構文解析
ジョブが省かれる。第二段階のフィルタ122は、修正したMPEG−2データ
ストリーム124及び更新した二次チャンネル126を、非圧縮化され再構成さ
れたHDTV及びSS信号130及び132を順に出力するレンダラー128等
の最終段階のフィルタに出力する。このレンダラーは二次チャンネル126で事
前構文解析情報を受け入れているために、レンダラーでもMPEG−2サンプル
112の構文解析ジョブが省かれる。
【0081】 フィルタ116、122の各々は、レンダリングフィルタであるにも係らず、
MPEG−2データストリームを修正することができる。この修正には、何らか
のデータ特徴の追加、削除、又は変更が含まれ、それによってランレングスを変
更することができる。これら各フィルタは、その修正MPEG−2データストリ
ームを次のフィルタに送り、このフィルタもそれ自身の変更をいくらか行うこと
ができる。
【0082】 MPEG−2データストリームの構文解析は、冗漫な誤りがちなものであり、
特にそれが必要でない場合にはこのジョブの重複は避けるべきである。本発明の
MPEG−2デコーダの実施形態では、事前構文解析を用いMPEG−2データ
ストリームが受信機又はデコードシステムに入力された時点で、一度だけこのジ
ョブを行なう。事前パーサによって、全ての適正長のMPEG−2データストリ
ームのサンプル毎に、記述子のリストが生成される。次に、この記述子リストは
、MPEG−2サンプル112、118及び124とともに二次チャンネル11
4、120及び126で運ばれる。MPEG−2サンプルを処理する各フィルタ
116、122及び128は、二次チャンネルの記述子リストをデイジーチェー
ン形式で更新する。二次チャンネルの記述子リストは、維持し易く、各フィルタ
に対しわずかな付加的な処理オーバーヘッドを加えるのみである。しかしながら
、構文解析を各フィルタ自身で行なうようにした各フィルタでの処理段階を必要
としないために、処理量は大幅に軽減される。
【0083】 事前構文解析データを持つデータストリームは、MPEG−2データを持つデ
ータストリームに平行に加えられる。この二次データストリームには、「記述子
」又は「通知」と呼ばれる16ビットの整数アレーが含まれる。通知は、不連続
点及び音響フレームサイズ変更等のMPEG−2データストリームに既に埋め込
まれている情報以上の情報を提供することを目的としたものである。二次チャン
ネルのこのような注意喚起情報により、MPEG−2データストリーム処理がよ
り簡易化される。
【0084】 記述子は、形式と長さとの両方を記述する。基本ペイロード、音響フレームヘ
ッダー、ESスタートコード、及びPESヘッダーのような4つの形式が最初に
定義された。16ビット整数は、形式及び長さをコード化するために使用される
。基本ペイロードの形式は、可変長で非常に長いものである。音響フレームヘッ
ダー形式は、可変長であるが短く、通常8バイトに過ぎない。ESスタートコー
ド形式は、通常、固定された4バイト長しかないものである。PESヘッダー形
式は、可変長であるが512バイト未満のものである。実際には、音響フレーム
ヘッダー、ESスタートコード、及びPESヘッダーの3つの分類に当てはまら
ない構造は全て基本ペイロード形式に含まれる。
【0085】 図7Aに示されるように、16ビット記述子200の最上位ビットがゼロの場
合、MPEG−2サンプルは、基本ペイロード形式である。残る15ビット14
−0は、サンプル長フィールド201におけるMPEG−2サンプル長を定める
。二次チャンネルは、多重連続的な基本ペイロード記述子を使用する。ゼロバイ
トのサンプル長を意味する全てゼロの基本ペイロード記述子としてもよい。この
ような全てゼロの記述子は、記述子アレーにおいてナル又はパディング要素とし
て使用することができる。 図7Bのように、他の記述子形式の全て及び全ての通知は、それらの16ビッ
ト値セットにおいて1の最上位ビットを持つ。記述子202において、形式フィ
ールド204のビット14−9は形式を定義し、サイズフィールド206のビッ
ト8−0はMPEG−2サンプル長を定義する。 図7Cに示されるように、ビット15−9が全て1の場合、記述子が通知ワー
ド208であることを定義し、通知コードフィールド210のビット8−0が、
正確な通知内容を定義する。
【0086】 オペレーションにおいて、各MPEG−2データストリームサンプルは、事前
パーサ110によって初期に主メモリ内に割振られた記述子アレー即ちテーブル
を有する。図8を検討する。各MPEG−2サンプルは、エントリとしての記述
子アレーによって各々定義された部分を持つ必要がある。従って、このような記
述子アレーは、MPEG−2全体を十分に特徴付けることが可能な16ビット記
述子の全てを、そして全ての通知を含めて保持するに十分大きさでなくてはなら
ない。よって、初期に必要とされるより大きな記述子アレーを割振り、未使用端
部をゼロで埋めておくのが好ましい。このようにすれば、フィルタ116、12
2及び128のような下流処理段階に、十分なスペースが与えられることになり
、新たな大きなテーブルへの再割振りを行うことによる時間又はCPUオーバー
ヘッドを浪費することなく、記述子テーブルに下流処理段階の成果を加えること
ができる。
【0087】 各通知は、負数でコード化されるのが好ましい。このようなコードは、通知コ
ード210(図7C)の下から9つのビットを取出してそれを1だけ増やした後
、その結果の符号を変えてそれを負にすることによって得られる。これによって
、「通知トークン」は、「−1」から「−512」の範囲となる。これら2つの
最初のものは、「−1」で非連続を示し、「−2」でMPEG−2に起こった何
らかの関心事項を示すように予め定義されている。「−1」が通知に受信される
と、受信プロセスは、その状態にマシンをリセットし、以降の特徴を以前の特徴
と全く関係ないものとみなす。構成された試作品において、「−2」通知コード
は、フレームサイズが音響データストリームにおいて変化した時に発行される。
【0088】 図7A乃至図7Bに図示された記述子は、オフセットではなく長さを定義する
のが好ましい。これにより、記述子を一定の16ビットとすることができ、記述
子アレーをより小さくすることができる。フィルタ116又は122がMPEG
−2サンプルに特徴を加えたりそれを取り去ったりする場合、対応する記述子が
、単に記述子アレーに加えられたチャンネルそこから削除されたりするだけであ
る。 MPEG−2サンプルの構成要素である特徴の何れかが、長さにおいて減少又
は拡大されたとしても、それに対応するわずかな記述子が更新されるだけで、そ
の他の記述子は影響されない。基本ペイロードの場合、単一の記述子を、いくつ
かの記述子に分割しなくてはならない可能性がある。これは、元の特徴が長さで
32768バイト未満であり、修正された特徴が、記述可能なサンプル長フィー
ルド201において15二進バイトより大きい場合に起こり得る。
【0089】 MPEG−2データストリームは、通常、連続的に処理される。そのため、「
オフセットカウンタ」を、各MPEG−2サンプル特徴の長さによって増大する
事前パーサ110に設けることができる。このようなオフセットカウンタの組み
込み操作は簡単である。 記述子は簡便であるので、テーブル内でのそれらの維持も簡単である。中間段
階での記述子テーブルの大幅な再構成は、DLL型ファイルに対する呼び出し時
の事前構文解析タスクが繰り返されるのと並行して行なうのが好ましい。
【0090】 図8は、単一データストリーム内にそれぞれ完全な形で含まれたペイロード、
ESヘッダー、及びPESヘッダーを有する典型的なMPEG−2ビデオデータ
ストリームサンプルである。事前構文解析がない場合、処理段階116、122
及び128の各々は、それら自身でMPEG−2の特徴境界の位置を探す必要が
ある。しかし、事前パーサ110によって提供されるような事前構文解析では、
各MPEG−2サンプルの開始時にゼロに初期化される「オフセットカウンタ」
が使用される。このオフセットカウンタは、記述子テーブルが順次走査されるの
と並行して各特長の長さに応じて漸増し、アドレスカウンタとして機能する。例
えば、PESヘッダーは、その記述子の先端から7つのビットに「0×8400
」を持つことになる。全てのサンプル特徴の長さは、他の特徴記述子を探しなが
ら加えることができる。図8において、PESヘッダーは、オフセット0×28
4(0×20+0×4+0×21A+0×4+0×42)に存在し、更に0×1
664(0×284+0×1C+0×70D+0×4+0×39+0×4+0×
C76)にも存在する。各特徴の長さは、迅速に求めることができる。図8は、
これらPESヘッダーのいずれもが同じ長さ(0×1C)のものであることを示
しているが、このようなケースばかりではない。ペイロードを累積するという目
標は簡便であり、入力サンプルの「飛越し」部分は、簡単に認識できる。MPE
G−2サンプルデータストリームの直接評価を行なう代わりに記述子テーブルを
使用することによって、以降の処理段階において処理時間を大幅に節約すること
ができる。
【0091】 ISO/IEC仕様13818−1は、PESヘッダーが他の特徴形式内に挿
入されることを容認している。本発明の実施形態では、基本ペイロード特徴の挿
入のみが容認される。よって、PESヘッダーは、それらが進入した特徴の一側
に又は他側に再配置される。このようなことが起こった場合、MPEG−2デー
タストリーム内の絶対位置における変化を補償するように、PESヘッダーの内
容を若干調整する必要がある。
【0092】 図9は、MPEG−2ビデオデコードプロセッサ100の機能ブロック図であ
る。入来MPEG−2データストリーム101は、非圧縮化のためのヘッダーパ
ーサ102によって受信される。MPEG及びJPEGにおける局所空間非圧縮
化方法は非常に類似している。画像データは、2次元正規直交系8×8DCTで
ブロック変換コード化される。これによって得られた63のAC変換係数は、統
計的にゼロの連続が増加するようにジグザグパターンにマップ化される。次に、
ベクトルの係数を、一様にスカラ量子化した後に、ランレングスコード化し、最
終的にランレングス記号は、標準的な(JPEG)手法又は修正ホフマン(MP
EG)手法を使って可変長コード化される。ロックDC係数のグローバルフレー
ム冗長性は、1D DPCMによって低減され、次に量子化及び可変長エントロ
ピーコード化される。
【0093】 ヘッダーパーサ1102は、圧縮MPEG−2ビデオビットストリーム110
4から、動きベクトル情報ストリーム1103を分離する。動きベクトル(MV
)計算器1106及び可変長デコーダ(VLD)1108は、分離された各スト
リームを受信する。ビットストリーム1104は、更にVLD1108で処理さ
れ、元のゼロ周波数(DC)及び最高63の非ゼロ周波数(AC)係数を再構成
する。VLD1108に含まれるランレングスデコーダ及び逆量子化により、D
C係数を含むF0ストリーム1110及びAC係数を含むF1.63ストリーム11
12の生成が促進される。これらDC及びAC係数は、更に処理されて周波数ド
メインに補正項が与えられる。逆離散コサイン変換器1114は、F0,F1.63
ストリーム1110/1112における離散コサインを、周波数ドメインインか
ら空間ドメインに戻すように変換する。空間ドメイン出力1116が生成される
【0094】 動きベクトル情報は、MV計算器1106における有効動きベクトル出力スト
リーム1118を計算するために使用される。予測器1120は、この有効動き
ベクトルを使ってアナログ加算器1122に転送される予測を構築する。記憶フ
レーム1124及び1126は、以前にデコードし記憶された参照画像を、後に
予測器1120によって利用できるようにする。MPEG−2補間ケースA−D
用に本明細書にリストされたサブルーチンは、典型的には、予測器の構成内で実
行される。それによって得られた画素から成る予測ブロックは、逆離散コサイン
変換の結果とアナログ加算器において組み合わされて最終的な再構成マイクロブ
ロックを生成し、その後、例えば、記憶フレーム1124及び1126として記
憶される。
【0095】 図10は、本発明の実施形態によるMPEG−2ビデオデコーダを示し、ここ
では参照番号1200でその全体が示される。MPEG−2ビデオデコード方法
1200は、丸め誤差の累積を防止する。これにより、MPEG−2補間ケース
−D用の改善された2段階1/2画素予測体系の使用が可能となる。また、本発
明の実施形態は、既に2段階1/2画素予測体系を使用して実行される、つまり
、逆離散コサイン変換に先立つ段階がソフトウェアで実行される場合の画像品質
を改善するためにも使用できる。 丸め誤差は、影響を受けた各マイクロブロックの全画素にわたって均等に分配
されると考えることができる。従って、丸め誤差の累積によって生じる可視的悪
影響を防止するために統計を用いることができる。全体としては、本発明の実施
形態では、MPEG−2補間ケース−D処理を必要とする全てのマイクロブロッ
クから丸め誤差を取り除く。このように、これら誤差全体が削除される。
【0096】 整数処理では、逆離散コサイン変換後の誤差値を取り除くことは不可能である
。幸い、MPEG−2デコード標準規格に定義された逆離散コサイン変換は、D
C係数に関して8の有効除算がある。これを利用して、整数値3としてケース−
D処理を必要とする全てのマイクロブロックから、逆離散コサイン変換の直前に
DC係数から0.375の補正項を取り去ることができる。結果としての24の
エネルギー差が、64の変換補正項の全てに配分される。これにより、2段階1
/2画素予測によって導き出された0.375誤差を消去する−3.375が統
計的に配分される。
【0097】 本発明の実施形態は、逆離散コサイン変換プロセスの前に、全てのケース(A
乃至D)のためのDC係数に対する適切な修正項を使用することによって、加算
平均演算時に補正項を加える必要性を排除する。これにより、グラフィック・ア
クセラレータの状態の単純なアルファ・ブレンディングユニットの使用し、MP
EG−2標準規格に適合する動き補償を、MPEG−2を使用して改善する必要
性なく行なうことを可能とする。 図10において、MPEG−2補間ケース−Dのための2段階動き予測では、
補正されていない場合には、可視的アーチファクトを生じる。本発明は、マルチ
プレクサと組み合わせた論理AND回路、及び加算器の組み合わせとして実施形
態に導入されている。水平(h0)及び垂直(h1)動きベクトル成分のいずれも
が、1/2画素補間(ケース−D)を必要とする場合には、マルチプレクサは、
定数マイナス3を加算器に転送し、他のケースでは、定数ゼロが使用される。加
算器は、マルチプレクサの結果をDC係数に加算して、2段階予測器によって計
算された予測画素についての補正項を含む新しいDC係数を形成する。 −0.375の補正値は、逆離散コサイン変換の過程で、得られた64の空間
係数の全てに均等に配分される。これにより、統計的には、若干暗い補正項のセ
ットとなる。これにより、2段階予測器によって形成された若干明るい予測値が
排除される。出力フレームは、統計的には正確な画像となる。
【0098】 図10の実施形態のデコーダ1200は、ヘッダーパーサ1204を使用して
MPEG−2データストリーム1202を受信する。ヘッダーパーサ1204は
、圧縮MPEG−2ビデオビットストリーム1208から、動きベクトル情報ス
トリーム1206を分離する。動きベクトル(MV)計算器1210は、垂直動
きベクトル成分h1出力1212、水平動きベクトル成分h0出力1214、及び
MV出力1216を生成する。ANDゲート1218は、マルチプレクサ122
0がマイナス3値1222又はゼロ値1224を選択するようにする。h0出力
1214及びh1出力が共に正しい場合には、マイナス3値1222が選択され
、加算器1226に送られる。プロセッサ1228は、可変長デコーダ(VLD
)、ランレングスデコーダ、及び逆量子化ユニットを備える。プロセッサは、直
流(DC)係数F0出力1230及び交流(AC)係数F1.63出力1232を生
成する。プロセッサ1228は、元のDC係数を再構成するとともに最高63の
AC係数を再構成する。逆離散コサイン変換器1234は、加算器1226によ
る補正後、離散コサインをF0,F1.63ストリーム1230/1232に変換す
る。空間ドメイン出力1236が生成される。
【0099】 次に、MPEG−2補間ケース−Dが普及する場合、一部の市販マイクロプロ
セッサの「pavgusb」を利用可能な2段階予測器1238を使用すること
ができる。特に、ケース−Dでは、以下のようにする。
【表61】
【0100】 このように、高レベルプログラミング命令文「avg(avg(P00,P01
,avg(P10,P11))」が使用でき、本発明の実施形態の実行に現時点で好
適である。しかし、これにより累積丸め誤差が生成されるが、この累積丸め誤差
は、空間ドメイン出力1236及び予測出力1240を組み合わせる加算器12
42において統計的に排除される。また、これらにより、イントラ画像間の2段
階予測器1238によって参照される一連の記憶フレーム1224及び1246
が作り出される。 本明細書において、本発明は好ましい実施形態を参照して説明されたが、本発
明の精神及び範囲を逸脱することなく他の応用を本明細書に示された実施形態に
代用できることは、当業者であれば容易に考え得る所であると考える。従って、
本発明は、特許請求の範囲のみによって限定されるべきである。
【図面の簡単な説明】
【図1】 オブジェクト割振りをわずかに使用するとともにこのオブジェクトの多量のコ
ピーを行なうストリーミング処理システムの構成を示す概要図である。
【図2】 オブジェクト割振りを多用するとともにこのオブジェクトのわずかなコピーを
行なうストリーミング処理システムの構成を示す概要図である。
【図3】 本発明によるコンピュータにおいて高速ストリーミングデータの最適処理・操
作を行なうシステムの構成を示す概要図である。
【図4】 本発明によるコンピュータにおいて高速ストリーミングデータの最適処理・操
作を行なう搬送処理ミニコアの構成を示す概要図である。
【図5a】 本発明によるスタートコードスキャナの例を示す図である。
【図5b】 本発明によるスタートコードスキャナの例を示す図である。
【図5c】 本発明によるスタートコードスキャナの例を示す図である。
【図5d】 本発明によるスタートコードスキャナの例を示す図である。
【図5e】 本発明によるスタートコードスキャナの例を示す図である。
【図5f】 本発明によるスタートコードスキャナの例を示す図である。
【図5g】 本発明によるスタートコードスキャナの例を示す図である。
【図5h】 本発明によるスタートコードスキャナの例を示す図である。
【図5i】 本発明によるスタートコードスキャナの例を示す図である。
【図5j】 本発明によるスタートコードスキャナの例を示す図である。
【図5k】 本発明によるスタートコードスキャナの例を示す図である。
【図5l】 本発明によるスタートコードスキャナの例を示す図である。
【図5m】 本発明によるスタートコードスキャナの例を示す図である。
【図6】 本発明の実施形態によるMPEG−2システムの機能ブロック図である。
【図7A】 基本ペイロード型MPEG−2サンプルに関する、図5のシステムに使用され
る16ビットの記述子ワードを示す図である。
【図7B】 基本ペイロード型MPEG−2サンプル以外のものに関する、図5のシステム
に使用される16ビットの記述子ワードを示す図である。
【図7C】 通知に関する、図5のシステムに使用される16ビットの記述子ワードを示す
図である。
【図8】 MPEG−2サンプル及び対応する記述子アレーを示す図である。
【図9】 MPEG−2ビデオデコードプロセッサの機能ブロック図である。
【図10】 本発明の実施形態による2段階の1/2画素予測を含むMPEG−2デコーダ
の機能ブロック図である。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 09/342,527 (32)優先日 平成11年6月29日(1999.6.29) (33)優先権主張国 米国(US) (31)優先権主張番号 09/467,552 (32)優先日 平成11年12月10日(1999.12.10) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AL,AM,AT,AU,AZ,BA, BB,BG,BR,BY,CA,CH,CN,CU,C Z,DE,DK,EE,ES,FI,GB,GD,GE ,GH,GM,HR,HU,ID,IL,IN,IS, JP,KE,KG,KP,KR,KZ,LC,LK,L R,LS,LT,LU,LV,MD,MG,MK,MN ,MW,MX,NO,NZ,PL,PT,RO,RU, SD,SE,SG,SI,SK,SL,TJ,TM,T R,TT,UA,UG,UZ,VN,YU,ZA,ZW (72)発明者 ランガー ランディー アメリカ合衆国 ワシントン州 98366 ポート オーチャード セリースト コー ト サウス イースト 3785 (72)発明者 ジグモント ウルリッヒ ドイツ連邦共和国 デー−76133 カルス ルール ヴィクトルラシュトラッセ 6 Fターム(参考) 5B098 GA05 GB13 5C059 LB18 MA00 MA23 MC11 MC32 MC34 ME05 NN15 RB01 RC16 RC28 SS02 SS11 UA02

Claims (48)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータシステムにおけるストリーミングデータを処理
    する方法であって、 メモリコピーを最小限にする段階、及び オブジェクトの割振り及び割振り解除を最小限にする段階を含むことを特徴と
    する方法。
  2. 【請求項2】 可能な時はいつでもメモリのコピーではなくメモリ参照オブ
    ジェクトを使用する段階更に含むことを特徴とする請求項1に記載の方法。
  3. 【請求項3】 データブロックに関するリストを含む複数の個別の待ち行列
    を使用する段階を更に含むことを特徴とする請求項1及び2のいずれかに記載の
    方法。
  4. 【請求項4】 前記待ち行列が、 現在使用されていないデータブロックオブジェクトのキャッシュを保持して、
    オブジェクトの再利用を促進するとともに前記データブロックオブジェクトの割
    振り及び割振り解除を最小限にするためのアイドル待ち行列、 各ブロックが処理可能となるまで、入来データブロックの保持領域として使用
    するための入力待ち行列、 出力待ち行列に置かれる前に更にグローバル処理を行なうために保持する必要
    がある、単一データブロックより大きなストリームを局所化するために使用する
    リンボー待ち行列、及び データブロックが入力待ち行列からリンボー待ち行列で処理され最終的に前記
    出力待ち行列に置かれた後に、これら処理されたデータブロックを保持するため
    の出力待ち行列のいずれかを含むことを特徴とする請求項3に記載の方法。
  5. 【請求項5】 データブロックが前記出力待ち行列から取込まれその取込ま
    れたデータがデコーダ又は事後処理ユニットに送られる時に、前記データブロッ
    クを再利用のために前記アイドル待ち行列上に置く段階を更に含むことを特徴と
    する請求項4に記載の方法。
  6. 【請求項6】 マルチスレッディングによる処理デューティを分割する段階
    を含むことを特徴とする請求項1乃至5のいずれかに記載の方法。
  7. 【請求項7】 ストリーミング媒体ソースから入来メモリを取込み、データ
    ブロックをアイドル待ち行列から抽出することによってデータブロックを構成し
    、入来メモリに対して参照メモリポインタを割当て、新しいデータブロックを入
    力待ち行列上に置くための入力スレッド、 入力待ち行列からデータブロックを取込み、出力のため前記データブロックを
    用意する必要のある時には、前記データを構文解析又は修正することによって前
    記データブロックを処理し、データの局所化ストリームに関する必要な全ての情
    報が、単一データブロック内に完全に含まれていないと判定されると、前記デー
    タブロックを、前記局所化ストリームが完全な形となるまで、リンボー待ち行列
    に置くとともに、前記局所化ストリームが完全に処理されると、前記完全に処理
    された局所化ストリームを構成する前記データブロックを、出力待ち行列に移す
    ための処理スレッド、 前記出力待ち行列からデータブロックを取込むとともに、処理済データを下流
    側処理ユニットに受け渡し、更に、これらの対応するデータブロックを、入来デ
    ータに再利用するために前記アイドル待ち行列に戻すための出力スレッドのいず
    れかを含む個々の処理スレッドをデューディの分割を促進するために準備する段
    階を更に含むことを特徴とする請求項6に記載の方法。
  8. 【請求項8】 入来データをコピーするのではなく入来ストリーミングデー
    タパケットを参照することだけを行なうことによって、メモリコピーを最小限に
    することを特徴とする請求項1乃至7のいずれかに記載の方法。
  9. 【請求項9】 どの位置で入力データが発見されたか、出力データをどこで
    事後処理するか、及び前記入力及び出力メモリ参照の各々の状況を参照するため
    のデータブロックオブジェクトを準備する段階を更に含むことを特徴とする請求
    項1乃至8のいずれかに記載の方法。
  10. 【請求項10】 オブジェクトの再利用のためのアイドル待ち行列を準備す
    る段階を更に含むことを特徴とする請求項1乃至9に記載の方法。
  11. 【請求項11】 コンピュータシステムにおけるストリーミングデータを処
    理する装置であって、 メモリコピーを最小限にする手段、及び オブジェクトの割振り及び割振り解除を最小限にする手段を備えたことを特徴
    とする装置。
  12. 【請求項12】 データブロックに関するリストを含む複数の個別の待ち行
    列を更に備えたことを特徴とする請求項11に記載の装置。
  13. 【請求項13】 前記待ち行列が、 現在使用されていないデータブロックオブジェクトのキャッシュを保持して、
    オブジェクトの再利用を促進するとともに前記データブロックオブジェクトの割
    振り及び割振り解除を最小限にするためのアイドル待ち行列、 各ブロックが処理可能となるまで、入来データブロックの保持領域として使用
    するための入力待ち行列、 出力待ち行列に置かれる前に更にグローバル処理を行なうために保持する必要
    がある、単一データブロックより大きなストリームを局所化するために使用する
    リンボー待ち行列、及び データブロックが入力待ち行列からリンボー待ち行列で処理され最終的に前記
    出力待ち行列に置かれた後に、これら処理されたデータブロックを保持するため
    の出力待ち行列のいずれかを備えたことを特徴とする請求項12に記載の装置。
  14. 【請求項14】 データブロックが前記出力待ち行列から取込まれその取込
    まれたデータがデコーダ又は事後処理ユニットに送られる時に、前記データブロ
    ックを再利用のために前記アイドル待ち行列上に置くための手段を更に備えたこ
    とを特徴とする請求項13に記載の装置。
  15. 【請求項15】 ストリーミング媒体ソースから入来メモリを取込み、デー
    タブロックをアイドル待ち行列から抽出することによってデータブロックを構成
    し、入来メモリに対して参照メモリポインタを割当て、新しいデータブロックを
    入力待ち行列上に置くための入力スレッド、 入力待ち行列からデータブロックを取込み、出力のため前記データブロックを
    用意する必要のある時には、前記データを構文解析又は修正することによって前
    記データブロックを処理し、データの局所化ストリームに関する必要な全ての情
    報が、単一データブロック内に完全に含まれていないと判定されると、前記デー
    タブロックを、前記局所化ストリームが完全な形となるまで、リンボー待ち行列
    に置くとともに、前記局所化ストリームが完全に処理されると、前記完全に処理
    された局所化ストリームを構成する前記データブロックを、出力待ち行列に移す
    ための処理スレッド、 前記出力待ち行列からデータブロックを取込むとともに、処理済データを下流
    側処理ユニットに受け渡し、更に、これらの対応するデータブロックを、入来デ
    ータに再利用するために前記アイドル待ち行列に戻すための出力スレッドのいず
    れかを含む、デューティの分割を促進するための個々の処理スレッドを更に備え
    たことを特徴とする請求項11乃至14のいずれかに記載の装置。
  16. 【請求項16】 どの位置で入力データが発見されたか、出力データをどこ
    で事後処理するか、及び前記入力及び出力メモリ参照の各々の状況を参照するた
    めのデータブロックオブジェクトを更に備えたことを特徴とする請求項11乃至
    15のいずれかに記載の装置。
  17. 【請求項17】 オブジェクトの再利用のためのアイドル待ち行列を更に備
    えたことを特徴とする請求項11乃至16のいずれかに記載の装置。
  18. 【請求項18】 データストリームにおけるスタートコードを走査するため
    の方法であって、 ワードによる方法で入力バッファを走査し、ワード境界を確認する段階、 前記入力バッファを走査し、最初のスタートコードを確認する段階、 現在の走査の開始点から前記最初のスタートコードまでの範囲を持つゼロワー
    ド範囲を設定する段階、 前記最初のスタートコードに対するオフセットを記憶する段階、 前記ゼロワード範囲内で走査し、この範囲における他のスタートコードを確認
    する段階、 前記最初のスタートコードとともに前記他のスタートコードに関するオフセッ
    トを順次記憶する段階、 前記最初のゼロワード範囲が前記入力バッファの下位集合である場合には、次
    のゼロワード範囲を定める段階、及び 前記入力バッファ内の全てのスタートコードが確認され、前記スタートコード
    に関するオフセットが順次記憶されるまで継続する段階を含むことを特徴とする
    方法。
  19. 【請求項19】 データストリームにおけるスタートコードの位置を探し出
    すための方法であって、 処理バッファ内にスタートポインタを設定する段階を含むとともに、 前記スタートポインタによって指された初めからn番目までのバイトが全
    てゼロである場合、最初の非ゼロワードの位置を探し出す段階と、 前記バッファの終端に到達した場合、呼び出し側に返答する段階と、 前記バッファの終端に到達していない場合には、ゼロワード走査を終了し
    た前記非ゼロワードより1だけ少ないワードに前記スタートポインタを設定する
    段階と、 最初のワード配列ゼロワードを検出するために走査する段階と、 前記ゼロワードに続くバイトが1であり、前記1のバイトに続くバイトが
    正当なスタートコードであり、前記スタートコード及びそれに続く2つのバイト
    から成る3つのバイトが全てゼロでないことを確認する段階と、 前記最初のゼロワードに続くバイトが正当なスタートコードの評価基準を
    満足しない場合、前記最初のゼロワードを飛越し、前記処理バッファの終端でな
    い限り、次のゼロワードを探す段階と、 スタートコードが発見された場合又は走査が前記処理バッファの終端にあ
    る場合、前記スタートポインタから、実際正当なスタートコードであると判定さ
    れたゼロワード走査終了位置又は前記処理バッファの終端までの前記処理バッフ
    ァの領域をゼロワード範囲として定める段階と、 前記ゼロワード範囲の二番目のワードから始めて、0×00 0×01の
    パターンについて前記ゼロワード範囲を再走査する段階と、 前記ゼロワード範囲において検出されたスタートコードを示す前記パター
    ンの発生毎に、前のバイトがゼロバイトであったこと、続くバイトが前記チャン
    ネル形式に対し正当なものであること、及び、前記発見された0×00 0×0
    1パターンに続く3つのバイトが全てゼロでないことを判定する段階と、 スタートコード毎に、スタートコードオフセットの受け渡しリストにエン
    トリを加える段階とから成り、前記処理バッファにおける全てのスタートコード
    の順序付けされたリストがオフセットアレーの限界まで生成されるようにした段
    階を、ループ化した状態で前記処理バッファが完全に使い尽くされるまで実行す
    ることを特徴とする方法。
  20. 【請求項20】 前記ゼロワード範囲内に0×00 0×01の配列ワード
    があるとすればその全ての処理が完了した時、現在のゼロワード範囲が前記処理
    バッファの終端に達しているかどうかを判定する段階、 現在のゼロワード範囲が前記処理バッファの終端に達している場合、呼び出し
    側に返答する段階、 現在のゼロワード範囲が前記処理バッファの終端に達していない場合、前記現
    在のゼロワード範囲の端部を定めるスタートコードを示す前記パターンのオフセ
    ットを、前記スタートコードオフセットのリストに加える段階、 前記現在のゼロワード範囲のゼロワードに続くワードに、前記スタートポイン
    タを設定する段階、及び 次の繰り返しを行なう段階を更に含むことを特徴とする請求項19に記載の方
    法。
  21. 【請求項21】 前記オフセットアレーの構成要素よりも多くのスタートコ
    ードが前記処理バッファ内に存在する可能性がある場合、処理バッファオフセッ
    トを、最後に発見されたスタートコードオフセットに続くワードとなるように設
    定することによって、前記各段階を前記処理バッファに対して繰り返すことがで
    きるようにしたことを特徴とする請求項19及び20のいずれかに記載の方法。
  22. 【請求項22】 呼び出し時、前記処理バッファに対するポインタ、実際に
    処理されるサブバッファの開始点を表す前記処理バッファへの任意のオフセット
    、前記処理バッファの長さ、発見された全てのスタートコードの前記処理バッフ
    ァへのオフセットが記憶されるスタートコードアレーに対するポインタ、前記ス
    タートコードアレー内の構成要素数、前記データストリームが音響チャンネルか
    ビデオチャンネルかを示すフラグ、及びバッファ終端トリミングを実行すべきか
    否かのフラグが受け渡されることを特徴とする請求項19乃至21のいずれかに
    記載の方法。
  23. 【請求項23】 バッファ終端をトリミングする段階を更に含み、前記バッ
    ファ終端をトリミングする段階は、 前記処理バッファ終端の特定バイトパターンの最長アレーを探す段階、及び 前記特定バイトパターンが検出された場合、前記特定バイトパターン終端のバ
    イトを取除くように前記処理バッファの長さを減少する段階を含むことを特徴と
    する請求項19乃至22のいずれかに記載の方法。
  24. 【請求項24】 前記バッファのサイズが、バッファ終端トリミング後の初
    期オフセットによって増加されたとすれば、そのサイズが6バイト未満であるか
    どうかを判定する段階、及び 前記サイズが6バイト未満である場合、現在のサイズを減少したバッファにス
    タートコードは存在しないことを呼び出し側に返答する段階を更に含むことを特
    徴とする請求項23に記載の方法。
  25. 【請求項25】 データストリームにおけるスタートコードの位置を探し出
    すための方法であって、 処理バッファのワードによる走査を実行し、最初のスタートコードを確認する
    段階、 前記最初のスタートコードに関するオフセット値を記憶する段階、 前記最初のスタートコードに基づきゼロワード範囲を設定する段階、 前記ゼロワード範囲内を走査し、他のスタートコードを確認する段階、及び 前記最初のスタートコードとともに前記他のスタートコードに関するオフセッ
    ト値を順次記憶する段階を含むことを特徴とする方法。
  26. 【請求項26】 前記最初のゼロワード範囲の端部で始まる他のゼロワード
    範囲を設定する段階、及び 前記バッファが使い尽くされるまで、前記他のゼロワード範囲の各々にあるス
    タートコードを確認して記憶する段階を含むことを特徴とする請求項25に記載
    の方法。
  27. 【請求項27】 データストリームにおけるスタートコード走査のための装
    置であって、 入力バッファ、及び ワードによる方法で前記入力バッファを走査し、ワード境界を確認するための
    スキャナを備え、前記スキャナは、最初のスタートコードを確認するために前記
    入力バッファを走査するとともに、 現在の走査の開始点から前記最初のスタートコードまでの範囲を持つゼロワー
    ド範囲を設定する手段、及び 前記最初のスタートコードに対するオフセットを記憶するためのキャッシュを
    備え、 前記スキャナは、前記ゼロワード範囲における他のスタートコードを確認する
    ためにこの範囲内で走査し、 前記キャッシュは、前記最初のスタートコードとともに前記他のスタートコー
    ドに関するオフセットを順次記憶し、更に 前記最初のゼロワード範囲が前記入力バッファの下位集合である場合には、次
    のゼロワード範囲を定める手段を備え、 前記入力バッファ内の全てのスタートコードが確認され、前記スタートコード
    に関するオフセットが順次記憶されるまで動作を継続するようにしたことを特徴
    とする装置。
  28. 【請求項28】 データストリームにおけるスタートコードの位置を探し出
    すための装置であって、 処理バッファ、 前記処理バッファ内のスタートポインタ、及び プロセッサを備え、前記プロセッサは、 前記スタートポインタによって指された初めからn番目までのバイトが全
    てゼロである場合、最初の非ゼロワードの位置を探し出す段階と、 前記バッファの終端に到達した場合、呼び出し側に返答する段階と、 前記バッファの終端に到達していない場合には、ゼロワード走査を終了し
    た前記非ゼロワードより1だけ少ないワードに前記スタートポインタを設定する
    段階と、 最初のワード配列ゼロワードを検出するために走査する段階とから成る各
    段階を、前記処理バッファが完全に使い尽くされるまで実行し、 前記最初のゼロワードが検出された場合、前記スキャナは、後続のバイトが1
    の値のバイトであること、前記1のバイトに続くバイトが処理されているチャン
    ネル形式に対して正当であること、及び、前記1のバイトに続く3つのバイトが
    全てゼロでないことを確認し、 前記最初のゼロワードが検出されない場合、前記スキャナは、前記処理バッフ
    ァの終端でない限り、次のゼロワードを探し、 スタートコードが発見された場合又は走査が前記処理バッファの終端にある場
    合、前記スキャナは、前記スタートポインタから、前記発見されたスタートコー
    ドの位置又は前記処理バッファの終端までの前記処理バッファの領域をゼロワー
    ド範囲として確認し、且つ 前記スキャナは、前記ゼロワード範囲の二番目のワードから始めて、スタート
    コードを示す0×00 0×01のワード配列パターンについて前記ゼロワード
    範囲を再走査し、更に 前記ゼロワード範囲において検出されたスタートコードを示す前記パターンの
    発生毎に、前のバイトがゼロバイトであったこと、続くバイトが前記チャンネル
    形式に対し正当なものであること、及び、前記発見された0×00 0×01ワ
    ードに続く3つのバイトが全てゼロでないことを判定する手段、及び スタートコード毎に、スタートコードオフセットの受け渡しリストにエントリ
    を加える手段を備え、 前記処理バッファにおける全てのスタートコードの順序付けされたリストがオ
    フセットアレーの限界まで生成されるようにしたことを特徴とする装置。
  29. 【請求項29】 前記ゼロワード範囲内にスタートコードを示す前記パター
    ンがあるとすればそのパターン全ての処理が完了した時、現在のゼロワード範囲
    が前記処理バッファの終端に達しているかどうかを判定するとともに、現在のゼ
    ロワード範囲が前記処理バッファの終端に達している場合、呼び出し側に返答し
    、 現在のゼロワード範囲が前記処理バッファの終端に達していない場合、前記
    現在のゼロワード範囲の端部を定めるスタートコードを示す前記パターンのオフ
    セットを、前記スタートコードオフセットのリストに加える手段、 前記現在のゼロワード範囲のゼロワードに続くワードに、前記スタートポイン
    タを設定する手段、及び 次の繰り返しを行なう手段を更に含むことを特徴とする請求項28に記載の装
    置。
  30. 【請求項30】 前記オフセットアレーの構成要素よりも多くのスタートコ
    ードが前記処理バッファ内に存在する可能性がある場合、処理バッファオフセッ
    トを、最後に発見されたスタートコードオフセットに続くワードとなるように設
    定する手段を更に備えたことを特徴とする請求項28及び29のいずれかに記載
    の装置。
  31. 【請求項31】 前記装置のオペレーション開始時、 前記処理バッファに対するポインタ、 実際に処理されるサブバッファの開始点を表す前記処理バッファへの任意のオ
    フセット、 前記処理バッファの長さ、 発見された全てのスタートコードの前記処理バッファへのオフセットが記憶さ
    れるスタートコードアレーに対するポインタ、 前記スタートコードアレー内の構成要素数、 前記データストリームが音響チャンネルかビデオチャンネルかを示すフラグ、
    及び バッファ終端トリミングを実行すべきか否かのフラグが受け渡されることを特
    徴とする請求項28乃至30のいずれかに記載の装置。
  32. 【請求項32】 バッファ終端をトリミングするためのモジュールを更に備
    え、前記モジュールは、 前記処理バッファ終端の特定バイトパターンの最長アレーを探すための手段、
    及び 前記特定バイトパターンが検出された場合、前記特定バイトパターン終端のバ
    イトを取除くように前記処理バッファの長さを減少するための手段を有すること
    を特徴とする請求項28乃至31のいずれかに記載の装置。
  33. 【請求項33】 前記特定バイトパターンが前記処理バッファの終端に一致
    しない限り動作を継続する手段、 初期オフセットを考慮に入れて、前記処理バッファの現在の長さが、6バイト未
    満であるかどうかを判定する手段を備え、前記長さが6バイト未満である場合、
    前記スキャナは、作動を終了して前記バッファでスタートコードが検出されなか
    ったことを呼び出し側に返答し、且つ 前記処理バッファの現在の長さが奇数である場合、前記処理バッファ長さを減
    少させて偶数にするための手段を更に備えたことを特徴とする請求項32に記載
    の装置。
  34. 【請求項34】 データストリームにおけるスタートコードの位置を探し出
    すための装置であって、 処理バッファのワードによる走査を実行し、最初のスタートコードを確認する
    ためのプロセッサ、及び 前記最初のスタートコードに関するオフセット値を記憶するためのキャッシュ
    を備え、 前記プロセッサは、前記最初のスタートコードに基づき最初のゼロワード範囲
    を設定するとともに、 前記プロセッサは、前記最初のゼロワード範囲内を走査し、他のスタートコー
    ドを確認し、且つ 前記キャッシュは、前記最初のスタートコードとともに前記他のスタートコー
    ドに関するオフセット値を順次記憶することを特徴とする装置。
  35. 【請求項35】 MPEG−2データストリームをデコードするための方法
    であって、特徴のシーケンスを含む入力MPEG−2データストリームの固定長
    サンプルを取込む段階、 対応する前記特徴のシーケンスの各々の形式及び長さを特徴付ける個別の記述
    子を含む記述子アレーを作る段階、及び 各固定長サンプルを、それに対応する前記記述子アレーの1つとともに後続の
    MPEG−2デコード段階に転送する段階を含み、 前記後続のMPEG−2デコード段階では、前記入力MPEG−2データスト
    リームを構文解析するタスクが省略されることを特徴とする方法。
  36. 【請求項36】 前記固定長サンプル内の特定の特徴を、前記固定長サンプ
    ルが他のMPEG−2デコード段階に受け渡される前に、増す及び/又は減少す
    る段階、及び 前記特定の特徴の各々に対応する前記記述子アレー内の記述子を修正し、前記
    記述子がその対応する前記特定の特徴を正確に特徴付けるように維持する段階を
    更に含むことを特徴とする請求項35に記載の方法。
  37. 【請求項37】 前記サンプルの走査に並行して、対応する記述子の各々に
    特徴付けられる各特徴の長さを連続的に増加するオフセットカウンタを維持する
    段階を更に含むことを特徴とする請求項35及び36のいずれかに記載の方法。
  38. 【請求項38】 特徴のシーケンスを含む入力MPEG−2データストリー
    ムを受信するとともに、固定長MPEG−2サンプル及び対応する前記特徴のシ
    ーケンスの各々の形式及び長さを特徴付ける個別の記述子を含む記述子アレーを
    出力するように接続された事前パーサを備えたことを特徴とするMPEG−2シ
    ステム。
  39. 【請求項39】 固定長MPEG−2サンプル及び前記事前パーサからの記
    述子アレーの両方を受信するように接続され、前記記述子アレーに含まれた複数
    の対応する長さの特徴及び形式の特徴に基づいて、前記MPEG−2サンプルを
    デコードする第一段階フィルタを更に備えたことを特徴とする請求項38に記載
    のMPEG−2システム。
  40. 【請求項40】 第一MPEG−2サンプル及び前記事前パーサからの第一
    記述子アレーを受信するように接続され、前記記述子アレーに含まれた複数の対
    応する長さの特徴及び形式の特徴に基づいて、前記第一MPEG−2サンプルを
    順次デコードする第一段階フィルタ、及び 第二MPEG−2サンプル及び前記第一段階フィルタからの第二記述子アレー
    を受信するように接続され、前記第二記述子アレーに含まれた複数の対応する長
    さの特徴及び形式の特徴に基づいて、前記第二MPEG−2サンプルを順次デコ
    ードする第二段階フィルタを更に備えたことを特徴とする請求項38に記載のM
    PEG−2システム。
  41. 【請求項41】 MPEG−2データストリームを非圧縮化する方法であっ
    て、 MPEG−2データストリームを、動きベクトルデータストリーム及び係数デ
    ータストリームに分離する段階、 予測フレームが後続の予測での参照フレームとして使用される場合に丸め誤差
    を作り出す2段階1/2画素予測プロセスを、前記動きベクトルデータストリー
    ム上で使用する段階、及び 前記係数データストリームを、逆離散コサイン変換段階に入力する前に、記憶
    フレームにおけるポンピングアーチファクトが排除されるように修正する段階を
    含むことを特徴とする方法。
  42. 【請求項42】 前記修正する段階は、前記離散コサイン変換段階で、動き
    ベクトル計算器から出力された垂直動きベクトル成分h1及び水平動きベクトル
    成分h0に基づき修正されたDC係数を受信するようにしたことを特徴とする請
    求項41に記載の方法。
  43. 【請求項43】 前記修正する段階は、前記離散コサイン変換段階で、前記
    垂直動きベクトル成分h1及び前記水平動きベクトル成分h0の両者が、MPEG
    −21/2画素補間ケース−Dの状態を示す場合、定数によって修正されたDC
    係数を受信するようにしたことを特徴とする請求項42に記載の方法。
  44. 【請求項44】 可変長デコーダ、ランレングスデコーダ及び逆量子化を用
    いて、前記係数データストリームからDC係数及び複数のAC係数を引き出す段
    階、 逆離散コサインを変換する段階、 前記変換する段階の前に、前記DC係数に定数を加える段階、及び 前記動きベクトルデータストリームからの動きベクトルを計算し、垂直動きベ
    クトル成分h1及び水平動きベクトル成分h0を生成する段階を更に含み、 前記垂直動きベクトル成分h1及び前記水平動きベクトル成分h0のいずれの論
    理積も正しい場合、前記加える段階では、マイナス3の定数が前記DC係数に加
    えられ、そうでない場合には、ゼロの定数が加えられることを特徴とする請求項
    41乃至43に記載の方法。
  45. 【請求項45】 前記加える段階では、前記変換する段階のために、2段階
    予測によって計算された一連の予測画素に対する補正項を含む新しいDC係数が
    形成されることを特徴とする請求項44に記載の方法。
  46. 【請求項46】 MPEG−2データストリームを、動きベクトルデータス
    トリーム及び係数データストリームに分離するためのヘッダーパーサ、 前記動きベクトルデータストリームを受信するように接続され、且つ、垂直動
    きベクトル成分h1及び水平動きベクトル成分h0を提供するための動きベクトル
    計算器、 前記係数データストリームを受信するように接続され、且つ、可変長デコーダ
    、ランレングスデコーダ及び逆量子化ユニットを用いてDC係数及び複数のAC
    係数を引き出す係数デコーダ、 前記動きベクトル計算器から動きベクトル出力を受信するように接続され、且
    つ、予測フレームが後続の予測での参照フレームとして使用される場合に生じる
    丸め誤差を有する予測フレームを提供する2段階1/2画素予測プロセッサ、 前記DC係数と前記垂直動きベクトル成分h1及び前記水平動きベクトル成分
    0とを受信するように接続されるとともに、前記DC係数を修正するために設
    けられ、前記垂直動きベクトル成分h1及び前記水平動きベクトル成分h0に依存
    する修正DC係数を生成する論理ユニット、 前記論理ユニットからの前記修正DC係数及び前記係数デコーダからの複数の
    AC係数を受信するように接続された逆離散コサイン変換器、及び 前記2段階1/2画素予測プロセッサと逆離散コサイン変換器との出力を合計
    する加算器を備え、 前記DC係数が、前記逆離散コサイン変換器に入力する前に、前記2段階1/
    2画素予測プロセッサにおいて生じた丸め誤差によって引き起こされる前記フレ
    ームにおけるポンピングアーチファクトが排除されるように修正されることを特
    徴とするMPEG−2デコーダ。
  47. 【請求項47】 前記論理ユニットは、前記垂直動きベクトル成分h1及び
    前記水平動きベクトル成分h0のいずれもが正しい場合、前記加算器が、マイナ
    ス3の定数を使用してそれを前記DC係数に加え、そうでない場合には、ゼロの
    定数を加えるようにすることを特徴とする請求項46に記載のMPEG−2デコ
    ーダ。
  48. 【請求項48】 前記論理ユニットは、前記修正DC係数が、前記2段階1
    /2画素予測プロセッサによって計算された一連の予測画素に対する補正項を含
    むようにすることを特徴とする請求項46又は47に記載のMPEG−2デコー
    ダ。
JP2000613199A 1999-04-01 2000-03-31 コンピュータにおける高速ストリーミング媒体の処理装置及び方法 Pending JP2002542549A (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US09/283,947 US6366970B1 (en) 1999-04-01 1999-04-01 Optimal handling and manipulation of high-speed streaming media in a computing device
US09/287,535 US6373898B1 (en) 1999-04-06 1999-04-06 High-speed start code scanner for MPEG-2 data streams
US34252799A 1999-06-29 1999-06-29
US09/467,552 US6567557B1 (en) 1999-12-10 1999-12-10 Method for preventing dual-step half-pixel motion compensation accumulation errors in prediction-rich MPEG-2 sequences
US09/283,947 1999-12-10
US09/287,535 1999-12-10
US09/342,527 1999-12-10
US09/467,552 1999-12-10
PCT/US2000/008771 WO2000064186A2 (en) 1999-04-01 2000-03-31 Memory management method for high speed streaming data processing in a computer device

Publications (1)

Publication Number Publication Date
JP2002542549A true JP2002542549A (ja) 2002-12-10

Family

ID=27501365

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000613199A Pending JP2002542549A (ja) 1999-04-01 2000-03-31 コンピュータにおける高速ストリーミング媒体の処理装置及び方法

Country Status (5)

Country Link
EP (2) EP1276331A3 (ja)
JP (1) JP2002542549A (ja)
AU (1) AU4189700A (ja)
GB (1) GB2363279B (ja)
WO (1) WO2000064186A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008118616A (ja) * 2006-11-02 2008-05-22 Intervideo Inc マルチスレッドビデオデコーディングのための方法および装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2364025B1 (en) 2000-08-15 2015-09-16 Microsoft Technology Licensing, LLC Methods, systems and data structures for timecoding media samples
US20020089602A1 (en) 2000-10-18 2002-07-11 Sullivan Gary J. Compressed timing indicators for media samples
DE10140289A1 (de) * 2001-08-16 2003-02-27 Technotrend Ag Verfahren und Vorrichtung zur Bandbreitenreduzierung
US7149247B2 (en) 2002-01-22 2006-12-12 Microsoft Corporation Methods and systems for encoding and decoding video data to enable random access and splicing
DE60332175D1 (de) * 2002-01-22 2010-05-27 Microsoft Corp Verfahren und System zur Verhinderung von Startkode-Emulation und Stopfdaten
WO2003090470A2 (en) 2002-04-19 2003-10-30 Microsoft Corporation Methods and systems for preventing start code emulation at non-byte aligned and/or bit-shifted locations
US7924921B2 (en) 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
US7839930B2 (en) 2003-11-13 2010-11-23 Microsoft Corporation Signaling valid entry points in a video stream
US7609762B2 (en) 2003-09-07 2009-10-27 Microsoft Corporation Signaling for entry point frames with predicted first field
US7852919B2 (en) 2003-09-07 2010-12-14 Microsoft Corporation Field start code for entry point frames with predicted first field
US10158958B2 (en) 2010-03-23 2018-12-18 Dolby Laboratories Licensing Corporation Techniques for localized perceptual audio
WO2011119401A2 (en) * 2010-03-23 2011-09-29 Dolby Laboratories Licensing Corporation Techniques for localized perceptual audio
US10271069B2 (en) 2016-08-31 2019-04-23 Microsoft Technology Licensing, Llc Selective use of start code emulation prevention

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW224553B (en) * 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
WO1995035628A1 (en) * 1994-06-17 1995-12-28 Snell & Wilcox Limited Video compression
US5566089A (en) * 1994-10-26 1996-10-15 General Instrument Corporation Of Delaware Syntax parser for a video decompression processor
US5638128A (en) * 1994-11-08 1997-06-10 General Instrument Corporation Of Delaware Pixel interpolation filters for video decompression processor
KR960036641A (ko) * 1995-03-21 1996-10-28 김광호 저속의 비디오비트열을 복호하는 고속용 복호화장치
US5650823A (en) * 1995-03-27 1997-07-22 International Business Machines Corporation Half pel motion estimation method for B pictures
EP0872798A1 (en) * 1997-03-21 1998-10-21 CANAL+ Société Anonyme Computer memory organization
GB9717715D0 (en) * 1997-08-22 1997-10-29 Philips Electronics Nv Data processor with localised memory reclamation
JPH11136225A (ja) * 1997-10-30 1999-05-21 Matsushita Electric Ind Co Ltd ビットストリームにおけるスタートコードを検出する方法および装置
GB9807208D0 (en) * 1998-04-03 1998-06-03 Nds Ltd Method and apparatus for detecting a sequence in a bitstream

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008118616A (ja) * 2006-11-02 2008-05-22 Intervideo Inc マルチスレッドビデオデコーディングのための方法および装置

Also Published As

Publication number Publication date
WO2000064186A2 (en) 2000-10-26
WO2000064186A3 (en) 2001-03-01
GB0123396D0 (en) 2001-11-21
EP1276331A3 (en) 2005-06-01
AU4189700A (en) 2000-11-02
GB2363279A (en) 2001-12-12
GB2363279B (en) 2003-10-22
EP1166566A2 (en) 2002-01-02
EP1276331A2 (en) 2003-01-15

Similar Documents

Publication Publication Date Title
US10397592B2 (en) Method and apparatus for multi-threaded video decoding
JP5047740B2 (ja) 圧縮ノーマル・プレイ・ビデオ・ビットストリームから、トリック・プレイ・ビデオ・ストリームを作成するシステムおよび方法
US7158571B2 (en) System and method for balancing video encoding tasks between multiple processors
US6414996B1 (en) System, method and apparatus for an instruction driven digital video processor
US6490324B1 (en) System, method and apparatus for a variable output video decoder
KR19980042224A (ko) 트랜스포트, 복호화, 시스템 제어기 기능용 통합 메모리를 가지는 엠피이지 복호화기 시스템 및 방법
CN1302512A (zh) 对数字编码视频信号进行译码的可变长度译码器
US7227589B1 (en) Method and apparatus for video decoding on a multiprocessor system
US20090016438A1 (en) Method and apparatus for a motion compensation instruction generator
JP2002542549A (ja) コンピュータにおける高速ストリーミング媒体の処理装置及び方法
US20160044320A1 (en) Method and Apparatus for Manipulating MPEG Video
JP2000295616A (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法及びプログラム記録媒体
JP3852366B2 (ja) 符号化装置および方法、復号装置および方法、並びにプログラム
EP1024668B1 (en) Method and apparatus for a motion compensation instruction generator
KR20020065908A (ko) 화상 재생 방법과 화상 처리 방법, 및 이들 방법을 이용가능한 화상 재생 장치, 화상 처리 장치, 텔레비전 수상기
KR101057590B1 (ko) 화상들의 그룹 내로의 임의 접근을 제공하도록 화상들의그룹을 재구성하는 방법
US8873619B1 (en) Codec encoder and decoder for video information
TWI794076B (zh) 多媒體資源中軌道資料的處理方法、裝置、媒體及設備
Bala et al. Experiences with software MPEG-2 video decompression on an SMP PC
KR100449200B1 (ko) 컴퓨터 구현 방법, 트릭재생 스트림 생성 시스템
JP2001238167A (ja) 画像再生方法とこの方法を利用可能な画像再生装置およびテレビジョン受像機
Yung et al. Parallelization of the H. 261 video coding algorithm on the IBM