JP4448334B2 - バイト整列されていない(non−byte−alignedpositions)のポジション、および/またはビット・シフトされたポジション(bit−siftedpositions)を含む位置におけるスタート・コード・エミュレーションを防ぐための方法およびシステム - Google Patents

バイト整列されていない(non−byte−alignedpositions)のポジション、および/またはビット・シフトされたポジション(bit−siftedpositions)を含む位置におけるスタート・コード・エミュレーションを防ぐための方法およびシステム Download PDF

Info

Publication number
JP4448334B2
JP4448334B2 JP2003587115A JP2003587115A JP4448334B2 JP 4448334 B2 JP4448334 B2 JP 4448334B2 JP 2003587115 A JP2003587115 A JP 2003587115A JP 2003587115 A JP2003587115 A JP 2003587115A JP 4448334 B2 JP4448334 B2 JP 4448334B2
Authority
JP
Japan
Prior art keywords
data
start code
byte
pattern
bytes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003587115A
Other languages
English (en)
Other versions
JP2005523659A5 (ja
JP2005523659A (ja
Inventor
ジェイ. サリバン ゲアリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005523659A publication Critical patent/JP2005523659A/ja
Publication of JP2005523659A5 publication Critical patent/JP2005523659A5/ja
Application granted granted Critical
Publication of JP4448334B2 publication Critical patent/JP4448334B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0602Systems characterised by the synchronising information used
    • H04J3/0605Special codes used as synchronising signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • 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)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、スタート・コード・エミュレーション(start code emulation)およびデータのスタッフィング(data stuffing)を防ぐための方法およびシステムに関する。
デジタル・データは通常、ある種類の送信機からある種類の受信機に送信される。送信機は通常、送信用のデータをエンコードするエンコーダを含み、受信機は通常、受信するデータをデコードするデコーダを含んでいる。デジタル・データには、ビデオ・データ、オーディオ・データ、オーディオ/ビデオ・データ、テキスト・データ、コンピュータ実行可能プログラム・データ、アーカイブ・データ、データベース情報など、さまざまな種類がある。デジタル・データが送信される場合、通常はある種類のチャネルで送信される。同等に、コンピュータ・メモリまたは任意の記憶装置あるいは記憶媒体は、本明細書の目的に適った伝送チャネルと見なすことができる。
デジタル・データが送信される場合、チャネルにおけるデータ内の特定のポイントを見つけられることが重要である。これは、チャネル経由の、データの送信時のエラーまたは損失(loss)からの回復(recovery:正常に戻ること)を可能にするポイント、ストリーム全体の先頭以外の位置においてデコード・プロセスを開始できるポイント、またはさまざまな目的に使用されるデータの各種タイプの検索を可能にするポイント、を見つけ出すなどのような多種多様な目的のために行われる。したがって、たとえば、デコーダ側において、デコーダおよびデジタル・データを処理するその他のコンポーネントは多くの場合、データが適切に処理されるようにデータのコンテクストを認識しておく必要がある。このことは、送信された第1ビットで開始することができ、デコーダがエラーを全く生じることなく実行できる場合には、さほど重要にはならないであろう。この状況においては、単にデータのフォーマットが何であるかを知ることにより送信された情報をデコーダが追跡できることが理想的である。残念なことに、この理想的な状況は頻繁に発生するものではない。エラーその他の不測の事態は確実に発生し、これは、デジタル・データを送受信するシステムを設計し、使用する人々に対して課題を提供する。データのブロードキャスト・ストリームを、それが進行中において受信するような、いくつかの場合に、デコーダは、データ送信の最初の時点で、起動することができないこともある。データ・フォーマットの解析によってポイントを突き止めるには、デコーダにおいて膨大量の複雑な処理が必要になることもある。
多くの種類のチャネル環境において、そのような問題は、データにいわゆる再同期マーカーを提供することによって対処される。再同期マーカーは、システムがそのデコード・プロセスを開始したり、エラーから回復したり(recover)することができる機構を提供する。たとえば、デジタル・データが一連のビットまたはバイトとしてストリーミングされる場合、ストリーム内に再同期マーカーを備えることで、送信時にエラーが発生したときに、そこから回復する(recover)参照ポイントをデコーダにもたらすことができる。
再同期マーカーが採用されることになる方法の一つは、スタート・コードのコンテクストの中にある。スタート・コードは、固有値を持つ複数のビットまたは複数のバイトのストリングである。一般に、多くのシステムはバイトを保持する傾向にあるため(たとえばH.222.0/MPEG−2システム)、スタート・コードは一意の値をとるバイトのストリングとして定義することができる。一意のバイトのストリングは、その存在が再同期ポイントを示すパターンを提供する。再同期ポイントは通常、単独に(独立して)デコード可能な量のデータの先頭または境界を示す。たとえば、H.262/MPEG−2ビデオ・データにおいて、再同期ポイントは、スライス(つまり単独でデコード可能なピクチャの領域)の開始、ピクチャの開始、GOP(つまり「ピクチャのグループ」または単独でデコード可能なピクチャのシーケンス)の開始、または新しいビデオ・シーケンスの開始を示すことができる。デジタル・ビデオ・ストリームは、また、スタート・コードを先行させたいわゆる付属(ancillary data)または補足データ(supplemental data)を含めることができる。
場合によっては、スタート・コードはビデオ・ストリームのようなデータ・ストリーム内だけでなく、システムの多重レベルによっても使用される。H.222.0/MPEG−2 Sytem仕様は、スタート・コードを使用し、システム・レベル情報およびオーディオ情報でインターリーブされたビデオ・データのストリームを搬送するシステムの例である。
スタート・コードは、データ・ストリーム内の再同期ポイントを提供する限りにおいて重要となり得るため、実際にスタート・コードを表すよう意図していない位置のデータ・ストリームにおいてスタート・コードをエミュレートすることを回避することが望ましい。
たとえば、次のような状況を考察する。スタート・コードは、新しいデータの単位の開始を識別できるビットまたはバイトの固有のパターンを定義する。その複数のスタート・コードの間に任意のデータを送信している場合、任意のデータはスタート・コードとして使用しているものと同じパターンをその中に含むことがありうる。たとえば、搬送されているデータが完全にランダムであると仮定した場合、スタート・コードの長さがKビットであれば、一部の特定のビット・ロケーション(ビット位置)において開始するビットにスタート・コードを偶然にエミュレートする確率は1/2である。
場合によっては、スタート・コード内のビット数が大きければ、スタート・コードが偶然にエミュレートされる可能性はかなり低いと判断することができる。そのような状況において、偶然のスタート・コード・エミュレーションの影響があまり重大ではない場合、偶然のスタート・コード・エミュレーションを確実に防止する処置をとることは不要であると判断されてよい。これは、一部のオーディオ・データ・フォーマットに関する状況である。通常、これらのフォーマットは、毎秒ビットで測定される非常に高いビットレートは使用しないため、スタート・コードが特定の時間間隔で偶然にエミュレートされる可能性はあまり高くない。ビデオ・データについて言えば、ビデオ・データの伝送の場合、ビットレートは通常これよりはるかに高いため、このことは一般に当てはまらない。
(おそらくは1つだけを例外として)従来の主要なビデオ・コーディング規格では、データ・ペイロード内のビデオ構文フォーマットはスタート・コードのエミュレーションを防ぐように設計されてきた。つまり、どのような種類のデータ要素がビデオ構文を構成するか分かっている場合、偶然のスタート・コードが発生しないように構文を注意深く設計することができる。たとえば、従来のビデオ・コーディング規格のスタート・コードは、後に1のビットが続く0のビットの長ストリングで開始する。この長ストリングは、後に1つの1のビットが続く23の0のビットを含む。送信されるデータのほとんどが、可変長コード(ハフマン符号と略称されることが多い)を使用してエントロピー・コーディングされると仮定する。可変調コード(VLC)は、本明細書において例示のため、表された記号のセットから選択するために使用される可変深さのツリー構造のコードとして定義される。バイナリ・ツリーVLCを使用する1つの技法は、有効なシンボルを表すルートからすべてのリーフまでのツリー内のパスが、そのどこかに常に「1」を持ち、しかもツリー構造が深すぎないことを確認することである。
したがって、たとえば、すべての可変長コード・ストリングが10ビット以下の長さであり、そのようなストリングがすべてその中に少なくとも1つの1の値をとるビットを持つことが分かっている場合、VLCからのコーディングされたデータのシーケンスが連続するゼロの値をとるビットを18よりも多く含む可能性はないことが分かる。つまり、最悪のシナリオは、0000000001が後に続く1000000000であろう。したがって、構文(syntax)を注意深く設計し、すべての0および1の値を持つビットの位置を検査して行(row)内で発生しうる0の数を突き止めるならば、構文内でそれまで発生したものよりも長い0のストリングを含むスタート・コードを使用することができる。たとえば、構文(syntax)を、スタート・コードではない場所に有効な構文が23個の0を決して含められないように、設計することができる。したがって、23個の0の発生はすべてスタート・コードであり、デコーダは正確にスタート・コードを検出できるはずである。
上記の操作(operation)は単純に見えるが、その操作を実行することは、スタート・コード・パターンが偶然に送信されないことを確実にするため、送信される可能性のあるすべてのデータを(ビット・レベルで)、送信される可能性のあるすべての順序で検査する必要があるため、かなり困難な取り組みとなる可能性がある。これは、間違いを生じやすい、困難な構文設計の方法である。
このビット・レベルの検査の設計プロセスは、一般に、過去において、多くのビデオ・コーディング仕様が従来設計されてきた方法(つまり、H.261、MPEG−1、H.262/MPEG−2、ほとんどのH.263、およびMPEG−4)を説明している。その1つの例外は、ITU−T勧告H.263の付録Eである。これは算術コーディングと呼ばれる手法を使用して、数学的仕様からアルゴリズム的に圧縮されたビットを生成する。ここで、生成されたビットを検査するエントロピー・エンコーダの最後に、付加的なプロセス(extra process)があり、エンコーダ側で、行内の0が多すぎる場合に、あらかじめ決められた0の数に達する前に、「マーカー」ビット(1のビット)が挿入される。デコーダ側では、デコーダがゼロを総計し、ゼロの数がクリティカルな水準に達した場合に、実際のスタート・コードが発生したことを認識する。デコードは、クリティカルな水準よりもゼロが1つ少ないことを検出した場合、その後に続く1ビットはスタート・コード・エミュレーションを防ぐために挿入されたマーカー・ビットであることを認識し、そのビットを廃棄して、その次のビットを実際のデータの継続と見なす。
この解決策での問題は、エンコーダおよびデコーダにビット・レベルで着信データを検査させ、処理させるという点にある。処理中のデータの位置を単一のビット・ポジションごとに、分析してシフトすることは困難になり、デコーダに望ましくない重い負担をかける可能性がある。ビット単位のシフトは、プロセッサの負荷が高い操作(processor-intensive operation)でもある。
参考文献Gary Sullivan「On Random. Access and Bitstream Format for JVT Video」JVT-B063(2002年1月)は、スタート・コードとスタート・コード・エミュレーション防止を説明する。このスタート・コード・エミュレーション防止は「バイト指向の方式」での処理を使用し、「ペイロード・データのN+1バイトの文字列が、全スタート・コード・プレフィックスにマッチしている場合、あるいはスタート・コード・プレフィックスの最初のNのバイト+エミュレーション・防止バイトの値にマッチしている場合、エミュレーション・防止データの1バイト」(JVT-B063のpage 3)を挿入すること含んでいる。
したがって、本発明は、スタート・コード・エミュレーションを防止するための改善された方法およびシステムを提供することに関連付けられた懸念事項に端を発したものである。
ビット・レベルよりも高度のグラニュラリティ・レベルで実行される操作(operation)による、スタート・コード・エミュレーション防止の手法を提供する方法およびシステムについて説明される。ビット・レベル以外のレベルで操作することにより、処理効率を高めることができる。1つまたは複数の実施例に従い、スタート・コード・エミュレーション防止の方法は、シングル・ビットよりも大きい固定サイズのデータ部分に関連してデータ・パターンを探す。特定のパターンが見つかった場合、スタート・コード・エミュレーションを防ぐために、スタート・コード・エミュレーション防止データが挿入される。挿入されるデータはシングル・ビットよりも大きく、一部の実施例においては、1バイトで構成されている。デコーダは、スタート・コード・エミュレーション防止データが挿入されているデータをデコードすると、正規のスタート・コードを容易に識別することができ、スタート・コード・エミュレーション防止データを削除して搬送の対象となっていた元のデータを提供することができる。
さまざまな実施例において、スタート・コード・エミュレーション防止を行うことができ、それは、バイト境界のようなデータ境界以外の位置でのスタート・コード値の偶然のエミュレーションを防止する。これらの実施例は、処理されるデータのデータ整列境界(data alignment boundaries)を必ずしも保持しないシステムと関連して、使用することができる。一部のシステムでは、前述の技法は、データ境界が失われた場合にデコーダ・システムが回復できる基盤(basis)をもたらすことができる。
さらに、ペイロード・データを整数値のバイト・サイズに大きさを切り上げて、デコーダが容易に検出できる方法で、フィラー・データを追加することができるデータ・スタッフィング方法について説明される。
概要
以下に説明される方法およびシステムは、ビット・レベルよりも高度のグラニュラリティ・のレベルでのスタート・コード・エミュレーション防止の手法を提供する。ビット・レベルよりも高度のレベルで操作することにより、処理効率を高めることができる。本明細書に照らして、ビット・レベルよりも高いレベルで操作するということは、単一ビットよりも大きい固定サイズのデータ部分に関連してデータ・パターンを探すプロセスに注目させることを意図している。たとえば、固定サイズのデータ部分は、バイト(つまり8ビット)、「ワード」(つまり16ビット)、「ダブル・ワード」(つまり32ビット)などを含むことができる。したがって、本発明の技法は、バイト、ワードなどの中のパターンを探すことができる。
さらに、ペイロード・データを、バイト量などの、データ単位サイズの整数倍に大きさを切り上げることができ、およびデコーダが容易に検出できる方法でフィラー・データ(filler data)を追加することができる、データ・スタッフィング方法について説明される。
さまざまな実施例において、スタート・コード・エミュレーション防止を行うことができ、それは、バイト境界のようなデータ境界以外の場所でのスタート・コード値の偶然のエミュレーションを防止する。これらの実施例は、処理されるデータのデータ整列境界を必ずしも保持しないシステムと関連して、使用することができる。一部のシステムでは、前述の技法は、データ境界が失われた場合にデコーダ・システムが回復できる基盤(basis)をもたらすことができる。
さらに、以下に示される例はビデオ・データに関連して説明されているが、本発明の技法は、通常エンコードされたり、デコードされたりするすべてのタイプのデータ、および、それに関してスタート・コード・エミュレーション防止が望ましいかまたは必要である、タイプのデータに関連して採用することができることを理解されたい。そのようなデータの例には、オーディオ・データ、オーディオ/ビデオ・データ、などが含まれる。
図1は、1つの実施例による方法のステップを説明する流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで、実施することができる。図を使用して説明されている実施例において、その方法は、ソフトウェアで、少なくとも一部が実装される。さらに読者は、この方法が、1つの指定された「エンコーダ」と1つの指定された「デコーダ」という、2つの異なる分岐を持つものとして示されていることに留意されたい。「エンコーダ」の分岐は、エンコーダによって、またはエンコーダと関連して実行されるステップを表している。同様に、「デコーダ」の分岐は、デコーダによって、またはデコーダと関連して実行されるステップを表している。
ステップ100において、スタート・コードの後に送信することを意図したデータ量が取得または生成される。データは、任意の適切なデータを含むことができる。そのようなデータのタイプの例には、ビデオ・データ、オーディオ・データ、オーディオ/ビデオ・データなどの量が含まれるが、これらに限定されることはない。ステップ101において、データの前にスタート・コードがつけられる。このステップは、ステップ100において取得または生成されたデータに、スタート・コードを効果的に追加する。ステップ102において、固定サイズ・データ部分の1つまたは複数のパターンを求めて着信データが検査または検索される。図を使用して説明されている実施例において、検索されるパターン(複数の場合もある)は少なくとも2つの固定サイズのデータ部分を含み、個々の各データ部分は少なくとも2ビットを含む。ステップ104において、パターンが見つかったかどうかが決定される。パターンが見つからなかった場合、この方法はステップ108に分岐し、そこでデータが送信される。
それに対して、パターンが見つかった場合、ステップ106において、パターンを含むデータに関連してスタート・コード・エミュレーション防止データが挿入される。図を使用して説明されている実施例において、スタート・コード・エミュレーション防止データの個々のインスタンス(実際例)は、1ビット以上を含んでいる。スタート・コード・エミュレーション防止データは、個々の固定サイズ・データ部分にビット数が等しいデータ量を含むことが望ましい。したがって、固定サイズ・データ部分が8ビット(バイトと呼ばれるデータの量)から構成される場合、スタート・コード・エミュレーション防止データは8ビットより構成される。スタート・コード・エミュレーション防止データが挿入された後、ステップ108において、データが送信される。ステップ110において、次のスタート・コードの前に送信すべき追加データがあるかどうか決定される。追加データがある場合、方法はステップ102に戻り、前述のように進行する。追加データがない場合、方法は、ステップ111において、送信する追加データがあるかどうかを決定できる。追加データがある場合、方法はステップ100に分岐して戻る。追加データがない場合、方法は、ステップ112において、終了することができる。
論題はそれるが、次のような状況を考察する。この特定の技術の使用の一例が、スタート・コードを「スタート・コード・プレフィックス」と「スタート・コード・タイプ」サフィックスに分割するものであることに留意されたい。ここでプレフィックスは単一の固有の値のストリングで、サフィックスはスタート・コードの後に続くデータのタイプを示している。特に、これはMPEG−2スタート・コードの構造である。プレフィックス/サフィックス構造を特殊事例として含む使用のさらに一般的な形態は、1つまたは複数のスタート・コード・パターンを備える汎用概念である。その結果、1つまたは複数のエミュレーション防止パターンを有することもできる。さまざまなスタート・コード・パターンがさまざまなエミュレーション防止パターンと区別され、すべてのスタート・コード・パターンがペイロード・データの処理において回避される限り、この方式は適切に機能する。さらに、必ずしも、スタート・コード・パターンがすべて同じ長さであると想定する必要はない。
デコーダ側において、次のような状況を考察する。スタート・コード・エミュレーション防止データがエンコーダによって挿入された後、他のデータの適切な解釈のために、あるポイントにおいてこれを識別し、削除または無視することができる。さらに、デコーダが送信されたデータを受け取る際に、正規のスタート・コードを探すことができると考える。デコーダが正規のスタート・コードを見つけると、データ境界を定義したスタート・コードが位置する場所を認識する。ここで、デコーダは、実際のデータをさらに処理できるように、スタート・コード・エミュレーション防止データを探して削除することを続行することができる。
具体的には、ステップ114において、スタート・コードのエミュレーションを回避するエンコーダによって、処理された送信データが受け取られ、ステップ118において、スタート・コードを見つけるためにデータが処理される。スタート・コードが見つけられて適切に処理される(たとえば、読み取られて廃棄される)と、ステップ120において、スタート・コード・エミュレーション防止データを識別するためにデータが検索される。スタート・コード・エミュレーション防止データが見つかると、ステップ122において、スタート・コード・エミュレーション防止データが削除される。スタート・コード・エミュレーション防止データが削除されると、データは、受信したデータのタイプに特有な方法で処理することができる。たとえば、データは、ステップ124に示されているように、消費者の装置によって消費することができる。
第1の例示的な方法
以下に説明する方法は、図1に示して説明した方法の1つの具体例を表している。以下に説明する方法において、ペイロード・データのN+1バイトのストリングがスタート・コード・プレフィックス全体と一致するか、またはスタート・コード・プレフィックスの最初のNバイトにエミュレーション防止バイトの値を加えたものと一致する場合には必ず、エミュレーション防止データのバイトが挿入される。この方法は、「第2の例示的な方法」の項目で説明されている方法に比べてデータを追加する頻度が低いため、ペイロード・データを送信するための送信能力の要件が軽減される。
「発明が解決しようとする課題」で言及された、参考文献「JVT-B063」は、その第1の例示的なあるインプリメンテーションについての詳細を提供する。
MPEG−2のスタート・コード・プレフィックス構造は、バイト整列されたポジション(byte-aligned position)において開始し、23個の0があり、その後に1が続く。このスタート・コード・プレフィックスは、以下のように表される。
00000000 00000000 00000001
この構造は、同じ値を持ついくつかの、N個のバイトと、その後に続く異なる値の別のいくつかのバイトで構成されるパターンとして、一般化することができる。MPEG−2において、N=2、かつ最初の2バイトが0(以下で「W」と呼ぶ)、かつ最後のバイトが1(以下で「X」と呼ぶ)であると言うことができる。したがって、スタート・コード・プレフィックスは、次のパターンを持つ。
WWX
これらの3つのバイトの後、MPEG−2では別のバイトが続き、それがどの種類のスタート・コードであるか識別する。この後に続くバイトを、「Y」と呼ぶ。基本的に、スタート・コードはスタート・コード・プレフィックスWWXと、その後に続くスタート・コードのタイプを識別するバイトYで構成される。MPEG−2スタート・コード全体は、次のように表すことができる。
WWXY
スタート・コード・プレフィックス(WWX)は固定値を持つが、Yはスタート・コードのタイプを示すいくつかの異なる値を持つ(たとえば、スライス、ピクチャ、GOP、シーケンス、システムなど)。
1つの実施例によれば、データはパターンWWXを探して処理される。WWXパターンが見つかった場合、スタート・コード・エミュレーションを防ぐためにスタート・コード・エミュレーション防止データが挿入される。ここで、スタート・コード・エミュレーション防止データは、WおよびXバイトの値と区別される値を持つバイトZを含んでいる。したがって、エンコーダがデータのバイトを検査してパターンWWXを認識すると仮定する。データ内のこのパターンの検出に対応して、エンコーダは
WWZX
のパターンを提供するために、値Zを持つバイトを挿入する
この時点で、エンコーダは、デコーダによって送信されて処理されているペイロード・データが偶然にスタート・コードまたはスタート・コード・プレフィックスをエミュレートすることはないと確認している。ここで、次のような状況を考える。ペイロード・データには、WWXパターンを任意に含むことによってスタート・コード・プレフィックスをエミュレートする可能性があると同時に、そのペイロード・データがスタート・コード・エミュレーション防止データを含むデータを任意にエミュレートする可能性もある。つまり、ペイロード・データは本質的にパターンWWZXを含む可能性もある。もしこれに該当し、しかもエンコーダが何も行わなかった場合、デコーダがスタート・コード・エミュレーション防止データを削除しようと試みると、この場合実際のデータであるZバイトを削除することになる。
したがって説明されている実施例において、エンコーダは、ペイロード・データがスタート・コードまたはスタート・コード・プレフィックスをエミュレートしないように構成されるだけではなく、スタート・コード・エミュレーション防止データの使用によって生じるデータ・パターンをデータがエミュレートないように構成される。具体的には、この例において、エンコーダがパターンWWZを識別した場合、第2のWとZの間に値Zを持つバイトを挿入して、次のパターンを提供する(挿入されたバイトZは以下に示されている最初のZ)。
WWZZ
ここで、処理されるデータについてデコーダの観点から考察する。デコーダが、後にZまたはXが続くWWZで構成されるバイトのパターンを見つけると、最初のZがエンコーダによって挿入されたエミュレーション防止バイトであることを認識する。したがって、デコーダは最初のZを廃棄することができる。このようにして、この例においては、エミュレーション防止バイトを挿入できる2つの状況がある。第1の状況は、データがスタート・コードまたはスタート・コード・プレフィックスを偶然にエミュレートしてしまう場合である。第2の状況は、データが、エミュレーション防止バイトを挿入させたデータを偶然にエミュレートしてしまう場合である。
いずれの場合も、デコーダは単に、適切なパターンを探して、エミュレーション防止バイトを廃棄し、データを通常通りに処理することができる。
前述の処理をさらにプログラム的に説明するため、次のような状況を考える。エンコーダ側において、同じ値WのN以上のバイトおよび異なる値Xから成る最終バイトを含むスタート・コード・プレフィックスで始まり、その後に値Yを持つ1バイトの識別スタート・コード・タイプ・サフィックスが続く、BバイトのパケットP[]を送信するために、値Zを持つエミュレーション防止バイトを挿入する次の擬似コード・プロセス(ここでW、X、Y、およびZは相互に異なる値を持ち、P[B−1]はWと等しくない)を操作する。ここで、チャネルを満たすために送信する付加的なデータ(extra data)の量はEによって指定される。
Figure 0004448334
上記の擬似コードにおいて、関数「send_byte()」はデータの構成単位(unit)の送信を操作すると仮定される(図1のプロセス108を参照)。
デコーダ側において、パケットを受け取ると、同じ値WのN以上のバイトおよび異なる値Xの最終バイトから成る既知のスタート・コード・プレフィックスをデコーダが既に見つけて、読み取り、廃棄してしまったと仮定する。さらに、不明のシングル・バイトのスタート・コード・タイプ・サフィックスを変数Yに読み込み、ペイロード・データのパケットをアレイP[]に読み込んで、ペイロード・データの量を決定し、変数Bに量表示を入れて、その間に値Zを持つエミュレーション防止バイトを削除する、と仮定する(ここでW、X、Y、およびZは相互に異なる値を持ち、P[B−1]はWと等しくない)。
Figure 0004448334
上記の擬似コードにおいて、関数「receive_byte()」はデータの構成単位の受信を操作すると仮定され、関数「more_data()」は受信すべきデータの構成単位がさらにあるかどうかを決定すると仮定される(これらの2つの関数は図1のプロセス114に含まれる)。
前述の方法により、スタート・コードに先立って任意の量のW値のスタッフィングが可能になる。W値プレフィックスの数をNに固定する公式化も同等に可能である。
第2の例示的な方法
以下に説明する方法は、図1に示して説明した方法のもう1つの具体例を表している。ここで方法は、ペイロードのデータのNバイトのストリングが、後続のペイロード・データの値にはかかわりなく、スタート・コード・プレフィックスの最初のNバイトと一致する場合に必ず、エミュレーション防止データから成るバイトを挿入する。上記の例の名称を使用すると、データが後に何らかの値を伴うパターン「WW」を含む場合、この方法は、エミュレーション防止バイトを挿入する。したがって、エンコーダは、パターンWWを識別すると、
WWZ
のパターンを提供するように、エミュレーション防止バイトを挿入する。
第1の説明された方法と、直前に説明した方法との違いは、第1の方法が最初のN+1バイトを探してエミュレーション防止バイトを挿入する位置を確認するのに対して、直前に説明した方法が最初のNバイトを探すという点である。
第1の方法は、送信される付加的なデータ(extra data)の量を減らすが、直前に説明した方法ではより簡単な規則を使用して操作する。したがって、この2つの方法は全体として、送信されるデータの量を減らすこと、規則の複雑さを軽減することの選択肢を提供する。第1の説明された方法を使用すると、第2の説明された方法と比較してデータの量が軽減される。第2の説明された方法を使用すると、より簡単な規則が利用される。
前述の処理をさらにプログラム的に説明するため、次のような状況を考える。エンコーダ側において、正確に同じ値WのNバイトおよび異なる値Xの
最終バイトを含むスタート・コード・プレフィックスで始まり、値Yを持つ1バイトの識別スタート・コード・タイプ・サフィックスが後に続く、BバイトのパケットP[]を送信するために、値Zを持つエミュレーション防止バイトを挿入する次の擬似コード・プロセス(ここでW、X、Y、およびZは相互に異なる値を持ち、P[B−1]はWと等しくない)を操作する。
Figure 0004448334
上記の擬似コードにおいて、関数「send_byte()」はデータの構成単位の送信を操作すると仮定される(図1のプロセス108を参照)。
デコーダ側において、パケットを受け取ると、デコーダが既に、正確に同じ値WのNバイトおよび異なる値Xの最終バイトから成る既知のスタート・コード・プレフィックスを見つけ、読み込み、廃棄していると仮定し、さらに未知のシングル・バイト・スタート・コード・タイプ・サフィックスを変数Yに読み込み、ペイロード・データのパケットをアレイP[]に読み込んで、ペイロード・データの量を決定し、変数Bに量表示を入れて、その間に値Zを持つエミュレーション防止バイトを削除すると仮定する(ここでW、X、Y、およびZは相互に異なる値を持ち、P[B−1]はWと等しくない)。
Figure 0004448334
上記の擬似コードにおいて、関数「receive_byte()」はデータの構成単位の受信を操作すると仮定され、関数「more_data()」は受信すべきデータの構成単位がさらにあるかどうかを決定すると仮定される(これらの2つの関数は図1のプロセス114に含まれる)。
前述の方法は、第2の説明された方法では約1/256、第1の説明された方法では約1/256(N+1)だけ、理想的ランダム入力ペイロード・データ中の数量を膨張させると考えられている。これらの数量は、Nが大きい場合(たとえば2以上、MPEG−2スタート・コードの場合にN=2であることに留意)には小さくなる。ペイロードの最悪の場合の膨張係数は、第2の説明された方法では1/N、第1の説明された方法では1/(N+1)と考えられている。Nが増加した場合、ペイロード膨張係数は統計的分析および最悪例解析のいずれでも減少するが、スタート・コード自体に使用されるデータの量は増加する。
前述のエミュレーション防止プロセスは、パケット内のデータの量を送信の開始前に認識しているかどうかには左右されないことを理解されたい。したがって、これが重大な遅延を加えることはない。
この第2の説明された方法の定式化は、挿入されるエミュレーション防止バイトが値Zを持つシングル・バイトであることを仮定する。挿入されるデータの最初のバイトがWまたはXと等しくない限りにおいて(等しい場合は有効なスタート・コードをエミュレートするか、またはプレフィックスの開始の継続に見えてしまう)、代わりに、任意の値または複数の値、あるいはエミュレーション防止データの1つまたは複数の値のストリングを使用することもできる。
これらのエミュレーション防止バイトに情報を伝達することもできる(たとえば、H.263型のGOBフレームID/ピクチャ・シーケンス番号など、あるいはおそらくMSBを「1」に設定し他の7ビットを使用してASCII文字を送信する)。
デコーダ側でパケットの末尾に何が起こっているかを考えた場合、データ・パケット・ペイロールの最終バイトがWではなければ操作をより簡単に制御できることが分かる。これはつまり、スタート・コードの前に送信された最終バイトがエミュレーション防止バイトになる必要は全くなく、ペイロード・データの末尾と次のスタート・コードのWに等しいバイトのシーケンスの開始との間にデコーダによって検出可能境界が配置されるということである。これをこの事例に強制することで、ペイロードの末尾で次のスタート・コードの前に任意の量のWバイト(たとえばゼロの値を有するバイト)を、ペイロードの末尾の位置を見失うことなくスタッフィングすることもできる。
データ・スタッフィング
通常、ビデオ・データの場合、データ・ペイロードとして送信されるそのデータは整数のバイト数にならないことがある。たとえば、2つのスタート・コードの間に送信される627ビットがあるとする。しかし、システム多重化レベルは、バイトで動作することがある。これは、MPEG−2仕様について当てはまる。送信エラーによって生成された誤ったスタート・コード・パターンの検出を可能にする、あるいはペイロードの先頭のデータ内容の簡単なデコーディング・プロセスを可能にするなどの他の理由も、パケットが、複数のバイトのような整数のデータ構成単位数を含むよう求める要望を正当化する。したがって、627ビットのデータを搬送するためにはもう少し多くのデータを送信しなければならない。次に、整数のバイト数にするためにいかにしてデータを水増し(pad out)するかが問題となる。
付加的なフィラー・データ(extra filler data)を単に送信することが有用になる他の状況もある。たとえば、チャネルが1メガビット/秒の容量を持ち、送信されるペイロード・データの量が900キロビット/秒しかない場合、そのチャネルをフィラー・データで充てんする(pad)必要があるか、または充てんすることを望む可能性がある。
1つの実施例によると、データ・スタッフィング技法は、付加データ(extra data)が、チャネルに追加されることを可能とし、実質的に、ペイロード・データを埋められるようにする。
図2は、スタート・コードがゼロに等しいビットのストリングから始まると仮定された1つの実施例によるデータ・スタッフィングの方法のステップを説明する流れ図である。ステップ200において、送信対象となるデータの最後の場所が確立される。ステップ202において、ペイロード・データの最終ビットの後に「1」ビットが挿入される。ステップ204において、整数のバイト数を送信するために必要な追加ビットの数が決定される。ステップ206において、挿入された「1」ビットの後に必要な数の「0」ビットが挿入される。ステップ208において、任意の望ましいバイト数のフィラー・データが追加される。フィラー・データは、真のペイロード・データおよび意図的なスタート・コードの場所をめぐる混乱を避けるために設計された任意のデータ・パターンで構成することができる。これは通常、値「0」のバイトを挿入することにより実装される。
例として、次のような状況を考察する。627ビットが送信されると仮定する。ここで、ステップ202において、627番目のビットの後に「1」ビットが挿入される。次にステップ204において、整数のバイト数(ここでは79バイト)を提供するためにさらに4ビットが必要であると決定される。したがって、ステップ206において、挿入された「1」ビットの後に4つの「0」つまり0000が挿入される。ここで、整数のバイト数を確立してあるので、ステップ208において必要があれば任意の望ましいバイト数のフィラー・データを追加することができる。この特定の例において、0の値を持つバイトを挿入することができる。フィラー・データは、フィラー・データとしてそのまま使用することも、あるいはデコーダが何らかの目的で使用できる情報を含めるなどの目的に使用することができる。
ここで、デコーダにおける状況を考察する。デコーダは、スタッフィングされたデータを受け取り、データの最後で開始してデータ全体を逆方向に調べることができる。「1」ビットを持つバイトに到達するまで、デコーダが最初に認識するバイトはすべて0バイトとなる。「1」ビットは、ペイロードまたは実際のデータの場所をデコーダに知らせる。したがってデコーダは、挿入された「1」ビットを検出すると、実際のデータがどこで終わるかを正確に決定することができる。
このようにして、前述の技法を送信されるビットの数を「切り上げる」ために使用して、送信されるビットの数が整数のデータ構成単位数で構成されるようにすることができる。さらに、これらの技法を使用して、ペイロード・データの先頭を指定するスタート・コードの間にフィラー・データをスタッフィングすることができる。
境界で整列されていないポジションでのスタート・コード・エミュレーション防止
前述の実施例は、データの境界整列(data's boundary alignment)またはバイト整列(byte alignment)を保持するように設計されているシステムにおいて良好に機能する。しかし、データ境界整列を常には把握していないシステムも一部ある。
たとえば、ITU−T H.320と呼ばれるそのようなシステムにおいて、システム内のデータの各バイトがデータ・ストリームの開始に対してどこで開始するかを見失うことがありうる。これは、データがバイトではなくビットのシーケンスとして送信され、時折未知量のデータ損失が発生する可能性があるためである。システムがバイト整列の追跡を失った場合、およびエミュレーション防止がバイトの境界で開始するエミュレーションしか防止しない場合、システムがバイト整列を回復する能力が損なわれる可能性がある。たとえば、システムがバイト境界におけるスタート・コード・エミュレーションしか防止しない場合、スタート・コード・エミュレーションがバイト境界以外の場所で発生する可能性がある。つまり、バイト境界におけるスタート・コード・エミュレーション防止に対してエンコードしていたシステムは、バイト境界以外の場所で発生したビット・シフトされたスタート・コード・エミュレーションに注意を払わなかった可能性もある。バイト境界位置を維持または保持するシステムでは、これは問題とはならない。それは、これらのシステムがバイト境界のある場所を認識しているので、単にバイト境界を見つけて実際のスタート・コードを探すことができるからである。実際のスタート・コードが検出されると、システムは前述のように、回復することができる。バイト境界が失われてしまったシステムにおいては、理由のいかんにかかわらず、そのシステムが、ビット・シフト位置で発生するエミュレートされたスタート・コードを使用して、回復しようと試みることがあるので、これは問題となる可能性がある。具体的には、バイト境界が失われると、システムは元のバイト境界に対していくつかの任意の整列ポジションで開始するスタート・コード・パターンに適合するデータを探そうと試みることができる。そのようなデータが実際のスタート・コードではなく、ビット・シフトされた場所でエミュレートされたスタート・コードである場合、この場所から回復することは、システムが適正に回復する能力を著しく妨げるおそれがある。
以下に説明する実施例は、バイト境界などのように、データ境界で必ずしも開始しない場所におけるスタート・コード・エミュレーションを防止する方法およびシステムを提供することを目的としている。したがって、これらの方法およびシステムは、データ境界位置においてデータ整列を必ずしも保持しないシステムと関連して有利に採用することができる。さらに、何らかの理由でデータ境界を見失ってしまったシステムにおいて、本発明の方法およびシステムは、正規のスタート・コードのみを使用してシステムが適正に、回復する方法を提供することができる。
初期割り込み
説明する最初の手法は、「初期割り込み(early interruption)」法と呼ばれる。ここで、初期割り込み法は、シフトされたスタート・コードのバージョンが発生する可能性が生じる前に潜在的スタート・コード・エミュレーションを割り込ませることを目的としている。これは、スタート・コード設計内のビットのパターンを、データバイトの開始に対して、そのスタート・コードの各シフト・ポジションごとに詳細に分析することにより行われる。次に、バイト整列されたスタート・コードが発生し得るときのみに特別なエミュレーション防止バイトを挿入するのではなく、手法は、データ境界(この場合はバイト境界)に対してシフトされる各ポジションにおけるスタート・コード・パターンの整列されていないエミュレーション(non-aligned emulation)を防止するような方法でエミュレーション防止バイトを挿入する。
真のスタート・コードの検出は、データ境界またはバイト境界に対してデータの真の整列を検出する能力をもたらすことができる。これは、スタート・コードが通常、データまたはバイト境界で開始するように常に設計されているためである。データ内の真のスタート・コードの位置を検出した後、受信機は各バイトの開始位置についてのこの認識を使用して、スタート・コードおよびスタート・コード・エミュレーション防止データからペイロード・データを分離するデコーディング・プロセスを補助することができる。これは、デコーダが、送信データ内のスタート・コード・パターンのエミュレーションを防止するために使用される方法を認識するように設計することができるためである。
図3は、1つの実施例による方法を説明する流れ図である。図示されている方法は、スタート・コードがビット・シフト・ポジションにおいてエミュレートされないようにするためにスタート・コード・エミュレーション防止がどのように実施されるかの例を示している。
ステップ300において、1つまたは複数のデータ境界に対してスタート・コードの少なくとも一部が複数回、ビット単位でシフトされる。1つの実施例において、ビット単位でシフトされたスタート・コードの部分は、スタート・コード・プレフィックスを含んでいる。ステップ302において、少なくとも1つのデータ境界に対して、すべてのビット・シフト・ポジションごとに発生するスタート・コード部分内の1つまたは複数の特徴的なパターンが識別される。ステップ304において、スタート・コード・エミュレーション防止データの挿入を実施するために、検索パターンとしてステップ302で識別された特徴的なパターンが使用される。
これがどのように行われるかを示す1つの例として、図4に関連して次のような状況を考える。
N=2として、0x00(「0x」が16進数値を示すC言語の表記法を使用、0x00はゼロに等しい16進バイト値を示す)の値を持つNバイトとして構成され、0x01の値を持つ1バイトが後に続くスタート・コード・プレフィックスについて検討する。たとえば、図4において、例示的なスタート・コード・プレフィックスが、示され、その先頭が実線角括弧によって示されているデータ境界と一致している。したがって、スタート・コード・プレフィックスの最初のバイトは最初の8つのゼロで構成され、第2のバイトはその次の8つのゼロで構成され、以下同様である。最初の8つのゼロに先行しているのは、先行データの任意の未知の値を示す「x」の値のバイトである。ここで、このスタート・コード・プレフィックスまたは部分が、指示されているデータ境界に対してビット単位でシフトされると(ビット単位のシフトの1つを図4の上図の下に例示)、破線角括弧で示される特徴的なパターンが現れる。スタート・コード・プレフィックスの、バイトの先頭に対してシフトされた各ポジションによって作成されたビットのパターンを調べることによって、この場合、シフトされたこのスタート・コードのコピーを含むデータのシーケンスには、0x00の値を持つ少なくともNバイトが常に存在すると決定することができる。したがって、エミュレートされたビット・シフトスタート・コード・プレフィックスの特徴的なパターンは、0x00の値を持つNバイトの存在である。任意の単一の整列ポジションにおけるこのパターンの防止がすべての整列ポジションにおけるスタート・コードの発生を防止することになるので、この特徴的なパターンは、ここで、スタート・コード・エミュレーション防止データ挿入を実施するための検索パターンとして使用することができる。
さらに具体的に、先に「第1の例示的方法」の項目で説明されている方法について検討する。そこでは、値0x00のNバイトの後に値0x01またはZが続くパターンを含んでいた場合、エミュレーション防止バイトZが挿入される。したがって、新しいパターンは、値0x00のNバイトに続いて値Zを持つバイト、さらに続いて値0x01またはZを持つバイトを含むものになる(長さN+1の2つのパターンのいずれかが発生すると必ず、1バイトだけ、入力データ長の拡張が行われる)。
現在説明している初期割り込み方法に従って、バイト整列されたポジションのスタート・コード・プレフィックスのみではなく、スタート・コード・プレフィックスまたは部分についてのすべてのシフトされたバージョンを防止することが求められている。そのため、この方法に従い、この特定の例に関連して、値Zを持つエミュレーション防止バイトが値0x00を持つNバイトのシーケンスの最終バイトの前に挿入される。これにより、値0x00のNバイトの任意のシーケンスを防止し、さらにバイト整列ポジショニングに関してスタート・コードの各シフトされたコピーをすべて防止する。この例において、パターンが検査され、エミュレーション防止バイトはバイト整列されたポジションにのみ挿入される。例として、ビット・シフトスタート・コード・プレフィックスを含むシーケンスの最終バイトの前にエミュレーション防止バイト(「Z」と示された値を持つ8ビットで表示)を挿入されたN=2のシーケンスを示す図5を検討する。図5では明示的に示されていないが、「x」値として記号で表されている最終4ビットの少なくとも1つがゼロと等しくないことが図5で例示のために仮定されている(そうでなければ、エミュレーション防止プロセスは「x」値として記号で表されている最終4ビットを含むバイトの直後の位置に別のエミュレーション防止バイトを挿入してしまう)。
したがって、この方法は、スタート・コード・プレフィックスのビット・シフト・ポジション位置をすべて認識し、すべてのビット・シフトされたスタート・コード・プレフィックス・エミュレーションを防止する態様で、シーケンスに対して割り込み処理をする。これは、エンコーダがバイト境界に整列されたポジションにおいてのみ特徴的なパターンを検索して完全なバイト単位のみでエミュレーション防止データを挿入するので、エンコーダのビット単位の処理を必要とすることなく、達成される。
さらに、エンコーダは、エミュレーション防止データが既に挿入されているデータをペイロード・データがエミュレートするような状況を回避するために、エミュレーション防止バイトを挿入することもできる。たとえば、エンコーダが0x00の値を持つN−1バイトと後に続くエミュレーション防止バイトの値(つまりZ)を持つバイトを検出すると、エンコーダはエミュレーション防止バイトを挿入する。
あるいは、データ・ペイロードが0x00に等しいN−1データバイト、その後にZに等しいバイト、さらにその後に0x00に等しいバイトが続くシーケンスを含む場合、エンコーダはこの目的でバイトを挿入するだけが可能である。これは、挿入されるエミュレーション防止データの量を軽減するが、エンコーダおよびデコーダにおける可変長シーケンス処理が必要になる。
したがって、この特定の例の場合、初期割り込みの方法は、前述の特定のスタート・コード・プレフィックス値について以下の表のようにまとめることができる。
Figure 0004448334
ここで、デコーダの観点から状況を考察する。デコーダにおいては、0x00の値を持つNバイトをデコーダが検出するときはいつも、スタート・コードではないビット・シフト位置を含むすべての場所でこの状況が発生することをエンコーダが防止しているので、デコーダはこの検出が真のスタート・コード・プレフィックスでなければならないと認識する。真のスタート・コードを検出するための特徴的なパターンは、バイト境界に対して任意の整列ポジションであっても開始するときに発見できるため、デコーダはビット単位の処理を使用せずにこのスタート・コードの検出を実行することができる。デコーダは、真のスタート・コードがどこにあるかを認識すると、バイト整列を認識する。これは、スタート・コードがバイト整列されたポジションで開始するためである。したがって、この特定の例において、デコーダは、0x00ではない次のバイトがスタート・コード・プレフィックスの末尾を含むことを認識する。次にデコーダは、スタート・コード・プレフィックスを終了するビットのパターンを探して(この場合は「1」ビット)、その後に真のペイロード・データを見つけることができる。
さらに、スタート・コード・プレフィックスの位置を突き止めることによってデコーダがバイト整列(byte alignment)を認識すると、挿入されたエミュレーション防止データを容易に見つけることができることを考慮されたい。デコーダは、エミュレーション防止バイトがバイト整列されたポジションに挿入されている事実に基づいて、これの作業を行う。デコーダはバイト整列を認識しているので、バイト境界においてエミュレーション防止データ・パターンを探すことができる。つまり、上記の表で説明したバイト境界における置換パターンを探すことができる。デコーダは次に、エミュレーション防止データを削除して、そのデコーディング・プロセスを進める。
前述の方法は、エミュレーション防止処理を実行するエンコーダがすべてのビット・シフト・ポジションにおけるエミュレーションを防止するにも係わらず、バイト・レベルでデータ・シーケンスを調べて、バイト・レベルのみでそのデータを操作することによってこれを行い、この結果、このプロセスにおいてビット単位の操作を行うという複雑さを軽減することができるため、有利である。真の開始コードの存在をデコーダについても、各バイトに対して実行される操作によって、同様のことが当てはまる。デコーダは次にバイト整列を回復して、各バイトに対して実行される操作によってエミュレーション防止データの削除を実行することができる。
この最初の初期割り込みの方法を、「第1の例示的な方法」の項目で説明されている方法と比較および対照させて、次の事項を考察する。初期割り込みの方法の1つの欠点は、より短いパターンを探すため(たとえば、N+1バイトよりもNバイト)、データを挿入する頻度が高くなることである。しかし、これについては何らかの対処方法がある。具体的には、Nの値を増大させることができる。つまり、3バイトのスタート・コード・プフィックスを使用するのではなく、4バイトのスタート・コード・プレフィックスを使用することもできる。ただし、これはシステムで挿入する必要のある別種のデータの量を増加させる。つまり、エンコーダがスタート・コードを挿入する場合、より長いスタート・コードを挿入するので、追加データの量の増大という点からコストがより高くなる。しかし、この初期割り込みの方法の1つの利点は、デコーダがバイト整列を回復することを可能にすることである。
初期割り込みの方法の第2の実施例は、第1の説明されている設計で置き換えられる複数パターンに共通な代替パターンに対してパターン突合せおよびパターンの置換の検索を実行するものとなる。この代替実施例の一例を、以下の表に示す。
Figure 0004448334
この第2の初期割り込みの方法において、すべてのシフトされたポジションのスタート・コード・エミュレーションを防止するには、単一の検索パターン(N−1バイトは0x00に等しい)で十分である。このパターンが、第1の初期割り込みの方法を説明する表の2つの行に示された2つのパターンに共通するためである。
この第2の状況をデコーダの観点から検討すると、真のスタート・コード・プレフィックスの検出は変更されていない。これには、第1の初期割り込みの場合と同様に0x00の値を持つNバイトの存在を認識することが含まれている。さらに、第1の初期割り込みの方法と同様に、デコーダは真のスタート・コードがどこにあるかをいったん認識すると、真のスタート・コードがバイト整列されたポジションで始まるので、デコーダはバイト整列位置を認識し、置換パターンを探すことによって挿入されたエミュレーション防止データを容易に見つけ出すことができ、それからエミュレーション防止データを削除してそのデコーディング・プロセスを進めることができる。
この第2の初期割り込みの方法は、第1の初期割り込みの方法と比較すると、パターン検索プロセスによる認識に必要なパターンの数が少なくてすむ。その結果、検索プロセスの複雑さが軽減されるが、より短いパターンへの突合せが使用されるため、挿入されるエミュレーション防止データの量は増加する。
第1の初期割り込みの方法の場合と同様に、追加されるエミュレーション防止データの量はNの値を増大させることで減らすことができるが、これは実際のスタート・コードデータの量を増やすことになる。
重要な点は、以下である。すなわち、第2の初期割り込みは、(各々複数パターンを使用する「第1の例示的な方法」および第1の初期割り込みの方法とは対照的に)複数のより長いパターンではなく単一の短いパターンへのパターン突合せを使用するという点で、「第2の例示的な方法」の項目で説明されている方法と、構造上、同様である。特に、これらの複数の方法を検討した結果、バイト境界に対して整列についての任意シフト・ポジションにおける、長さN+1のスタート・コード・プレフィックスのエミュレーションを防止するための第2の初期割り込みの方法のエンコーディング・パターン検索および置換のプロセスは、バイト境界に整列されたポジションにおける長さNのスタート・コード・プレフィックスのエミュレーションを防止するための「第2の例示的な方法」のエンコーディング・パターン検索および置換のプロセスと全く同じである。この特性(property)は以下のセクションで使用される。
複数の長さが異なるスタート・コード(Multiple Length Start Codes)を使用するエミュレーション防止
前述の初期割り込みの方法は、開始位置がデータ境界と一致しない任意のビット・シフト・ポジションにおけるスタート・コード・エミュレーションを防止することに関連して、バイト整列が失われた場合に、回復を可能にするという課題の解決策をもたらす。ただし、これらの方法は、整列されたポジションにおいて発生するスタート・コードのエミュレーションのみを防止するために必要以上の頻度でエミュレーション防止データを追加するという犠牲を払って、これを行う。以下に説明する実施例において、初期割り込みの方法と同様の方法で整列の回復を可能にし、しかも挿入されるエミュレーション防止データおよびスタート・コードデータの合計量を軽減する手法が提供される。具体的な解決策について説明する前に、以下の実態を考察する。
スタート・コードが送信されるデータのタイプには多種多様なものがある。たとえば、ビデオ・データの場合、GOPごと、ピクチャごと、および各ピクチャの個別にデコード可能な各領域内(つまりスライス・スタート・コード)のスタート・コードを送信することが一般的である。I−ピクチャ、P−ピクチャ、およびB−ピクチャのようなさまざまなピクチャのタイプがある。したがって、1つの特定のシステム内にはさまざまなタイプのスタート・コードがある可能性がある。それらのスタート・コードの中には、他よりもかなり高い頻度で発生するものもある。たとえば、スライス上のスタート・コードは、GOPまたはシーケンス上のスタート・コードよりもはるかに高い頻度で発生する。
このことを考慮すると、システムを設計する場合には、高い頻度で発生するスタート・コードを、より低い頻度で発生するスタート・コードよりも短くすることが望ましいと考えられる。以下に説明する実施例により、スタート・コード・プレフィックスの2つまたはそれ以上の異なる長さの区別がつけられる。長さのより長いスタート・コード・プレフィックスの場合、ペイロード・コンテンツ内のビット・シフトされたエミュレーションは防止される。これは、長さのより長いスタート・コード・プレフィックスに対する初期割り込みの方法を採用することで行われる。長さのより短いスタート・コード・プレフィックスの場合、そのようなスタート・コードのバイト整列エミュレーションのみが防止される。そのようなシステムにおいて、より長いスタート・コードが短いスタート・コードよりも著しく低い頻度で送信されて、平均のスタート・コード長が短いスタート・コードの長さに、近づく場合、効率をさらに高めることができる。
この解決策により、バイト整列を保持しない環境でデータが使用される場合、データ内でより長いスタート・コードを検索することによりバイト整列を回復することができる。より長いスタート・コードが見つけられてバイト整列が回復されると、それに続く短いスタート・コードの位置もバイト指向の検索のみによって見つけることができる。
これがどのように実施されるかを示す1つの例として、次のような状況を考察する。この例において、より長いスタート・コード・プレフィックスの長さはN+1と示され、より短いスタート・コード・プレフィックスの長さはN+1と示される。
この例において、またバイト整列を保持しないシステムにおいても、使用されるスタート・コード・プレフィックスの特定の構造により、より長いビット・シフトスタート・コードは値0x00を持つNバイトのバイト指向検索を使用してデータ・ストリーム内で検出することができる。これらの特定のスタート・コード値により、バイト指向検出を容易に行うことができる。
具体的には、好ましい実施例の方法は、N=N+1を設定することである。次に、1つのエミュレーション防止プロセスは、以下の表に示すようにまとめることができる。
Figure 0004448334
上記の表において、第1行は置換する第1のパターン、およびバイト整列されたポジションにおける短いスタート・コードのエミュレーションを防止する置換パターン、を説明している。第2行は、第2のパターンと、バイト整列されたポジションおよびバイト整列されていないポジション(byte-aligned and non-byte-aligned positions)における長いスタート・コードのエミュレーションを防止する置換パターンを説明している。第3行は、第3のパターンと、エミュレーション防止プロセスによって挿入された値Zのバイトとデータ・ペイロード内の値0x00のNバイトに続いて自然に生じた値Zの他のバイトとを区別する方法を提供する置換パターン、を説明している。このことは、引き続き、データ・ペイロードの終わりの位置または次のスタート・コードの位置を識別できるデコーダの機能を損なうことなく、エンコーダが任意の数のゼロの値をとるバイトをスタート・コードの直前に挿入できることに留意されたい。実際、そのようなゼロの挿入は、エンコーダが、一部のより短いスタート・コードの前にいくつかのゼロの値をとるバイトを挿入するように選択する場合、バイト整列の迅速な回復を追加することになる。
あるいは、前述のプロセスにおける第3行は、値0x00の入力データのNバイトに続いて値Zの1バイト、さらに値0x01の入力データバイトが続く場合に限り、値Zの付加的なバイト(extra byte)が挿入されるように変更することもできる。これは、エンコーダおよびデコーダにおける可変長シーケンス処理が必要になるけれども、挿入されるエミュレーション防止データの量を軽減する。
この第1の方法は、エミュレーション防止に必要とされるデータの量を、より短いスタート・コード値の非整列エミュレーションを防止するために必要な量から、(約
Figure 0004448334
から約
Figure 0004448334
にエミュレーション防止プロセスデータ膨張係数を減少して)約171分の1に低減される量まで低減する。
図6は、異なる長さを持つスタート・コードまたはスタート・コード・プレフィックスを含むことのできるデータに関連してエミュレーション防止データを使用する実施例による方法のステップについて説明する流れ図である。方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装することができる。図を使用して説明されている実施例において、方法は、適切に構成されたエンコーダによって実装される。
ステップ600において、異なる長さのスタート・コードに関連付けられているパターンが検索される。異なる長さを適切な数だけ使用することができる。上記の例においては、2つの別個の長さを持つスタート・コードが使用される。第1のパターン・タイプの検出に対応して、ステップ602においてエミュレーション防止データが挿入され、第1の長さを持つスタート・コードのエミュレーションが防止される。ここで、第1のパターン・タイプは、より短いスタート・コードに関連付けられているものにすること、および上記の表の第1行の「置換するパターン」列に表示されているパターンによって例示することができる。さらに、この特定のパターンおよびこの特定の例の対応するエミュレーション防止データは、上記の表の第1行の「置換パターン」列に表示されているパターンによって例示することができる。
第2のパターン・タイプの検出に対応して、ステップ604においてエミュレーション防止データが挿入され、第2の長さを持つスタート・コードのエミュレーションが防止される。ここで、第2のパターン・タイプは、より長いスタート・コードに関連付けられているものにすること、および上記の表の第2行の「置換するパターン」列に表示されているパターンによって例示することもできる。さらに、この特定のパターンおよびこの特定の例の対応するエミュレーション防止データは、上記の表の第2行の「置換パターン」列に表示されているパターンによって例示することができる。
この方法はさらに、エミュレーション防止プロセスによって挿入された値Zのバイトおよびデータ・ペイロード内の値0x00のNバイトに続いて自然に生じた値Zの他のバイトを区別する方法、流れ図はこのことを具体的に示していなが、有利に提供する。
ここで、デコーダ側において発生する状況を考察する。デコーダ側では、バイト整列が失われた場合、回復が、長いスタート・コード・プレフィックスを探すデコーダによって、行われる。エンコーダで行われるエミュレーション防止処理のために、長いスタート・コード・プレフィックスのエミュレーションはすべてのビット・シフトされたポジションにおいて防止されることに留意されたい。したがって、デコーダは真の長いスタート・コード・プレフィックスに対応するパターンを検出すると、真のスタート・コードの位置を突き止めたことになる。真の長いスタート・コードを見つけることにより、バイト整列は回復されることが分かる。つまり、真の長いスタート・コードがバイト整列位置で生じているため、長いスタート・コードを見つけることでバイト整列を確立する。デコーダは、バイト整列を回復すると、より短いスタート・コードを正規のバイト整列されたポジションにおいてのみ探すことができる。このプロセスに関連して、デコーダは前述の方法で、エミュレーション防止データを削除する作業に取りかかることができる。
前述の処理は、バイト整列が失われた場合に、バイト整列の回復のための機構が提供されるという点において有利である。さらに、異なる長さの開始コードまたは開始コード・プレフィックスが使用されるということに起因して、説明されている方法は、最も高い頻度で使用されるスタート・コード・プレフィックスは、低い頻度で使用されるスタート・コード・プレフィックスよりも短くされているので、データ・ストリームに付加的な情報(extra information)の負担をかけずにすむ。 前述の第2の初期割り込みの方法の場合と同様に、パターンの長さを短くすることにより、エンコーダおよびデコーダによって検索する必要のあるパターンの数を減らすことも可能になる。この場合、異なる長さのスタート・コードのエミュレーションを防止するためにテストされるパターンは同じにすることができ、プロセスの一部のステップを結合することが可能になる。たとえば、ステップ602において第1のパターン・タイプの検出に使用されるパターンと、ステップ604において第2のパターン・タイプの検出に使用されるパターンが同じパターンであれば、ステップ602とステップ604は組み合わせることができる。ステップを組み合わせるこの機能を明らかにする、長さが異なる複数のスタート・コード(multiple length start codes)を使用する第2のエミュレーション防止プロセスを、以下の表に示す。このプロセスは、(長さN+2になる)長さN+1の整列されていないスタート・コードのエミュレーションを防止する第2の初期割り込みの方法に対応し、さらに長さN+1のバイト整列されたスタート・コードのエミュレーションを防止する第2の例示的な方法にも対応する。したがって、単一パターンの検索および置換は、両方のタイプのスタート・コード・エミュレーションを防止するために十分であることになる。
Figure 0004448334
長さが異なる複数のスタート・コードを使用するこの第2のエミュレーション防止プロセスは、検出して置換する必要のあるパターンの数を減らすので、パターン検索と置換のプロセスを簡略にする。ただし、より短いパターンへの突合せが使用されるため、挿入されるエミュレーション防止データの量は増加する。挿入されるエミュレーション防止データの量は、前述の長さが異なる複数のスタート・コードを使用する第1のエミュレーション防止プロセスに対して(約
Figure 0004448334
から約
Figure 0004448334
にエミュレーション防止プロセスデータ膨張係数を増大させて)約3/16=1/5.33だけ増加する。
拡張機能
特定のパターンを検出することがいかに容易であるかに関し、処理効率を高めるために採用できる拡張機能がいくつかある。以下に示す例のため、スタート・コード・プレフィックスは、値W=0x00を持つ特定数のバイトに続いて値X=0x01を持つ(一つの)バイトで構成されると仮定する。ただし、以下に説明される原則は、例に示されている値とは異なる値を持つ他のスタート・コード・プレフィックスに関連して、採用することもできることを理解されたい。
第1の拡張機能は、次のとおりである。前述の表記(W、X、およびZ)を使用して、ZおよびX、またはZおよびWはわずか単一ビットの値だけ異なるように選択することができる。このことは、エンコーダおよびデコーダがデータのストリームの2つの値のいずれかを容易に検出することを可能にする。1ビット値だけ異なるZおよびXを持つことの有用性を示すために、データの受信側によって行われる処理を考察する。デコーダが、スタート・コードを検出してエミュレーション防止データを削除するためにデータ・ストリームを検索しているとき、Nまたはそれ以上のバイトの値W=0x00を検出した後、入力データの次のバイトがZまたはXと等しいかどうかのテストを実行する場合がある。ZおよびXが1ビットよりも大きい値の相違がある場合は、擬似Cプログラミング構成体を使用して説明すると、次のようにテストが行われる。
Figure 0004448334
ただし、ZおよびXが1ビット値だけ異なる場合は、擬似Cプログラミング構成体を使用してXが0x01、Zが0x81であると仮定すると、テストは次のように行われる。
Figure 0004448334
第2の拡張機能は、前述のエミュレーション防止プロセスのうちの1つが3つのパターンを区別していることを認識する。1つがこれらのパターンを最小ビット数だけ相互に異なるようにすれば、3つのパターンを区別するために2ビットを要する。ただし、2ビットは4つのオブジェクトまたはパターンを区別するために十分である。ここで、区別する必要があるのは3つのパターンだけであるため、システムが通常のデータに使用しない第4のパターンがあることは有利になり得る。エンコーダが、2または3の値と等しいエミュレーション防止バイトを設定するように構成される場合、これはシステムが単に各パターンの2つの最下位ビットに注目するだけで上記の3つのパターンを区別できるということである。たとえば、Wが0x00に等しい場合、Xは0x01に等しく、Zは0x02に等しい。次に、2つの最下位ビットが0である場合、これは初期バイト値Wの繰り返しである。2つの最下位ビットが1である場合、これは最終バイト値Xである。2つの最下位ビットが2である場合、これはエミュレーション防止値Zである。他の値、つまり値3は、通常のデータ以外の特殊値として処理することができる。したがって、デコーダにおいては、2つの最下位ビットを除いては全く同じであるので、3つのパターンを探すのではなく、4つのパターンを探して非常に簡単に見つけることができる。このことは、エンコーダおよびデコーダにおける処理をスピードアップして処理を簡略化することを可能にする。
このようにして、3つの値のシーケンスをエミュレーション防止プロセスに置き換える代わりに、システムは4つの値のシーケンスを置き換えることができる。これらの4つのシーケンスは、2つのビットの値だけで相互に区別される。言い換えれば、(現時点でW=0x00、X=0x01、Z=0x81と仮定して)入力データがこれらの特殊値の1つを持つかどうかを検出するためのエンコーダまたはデコーダの検出プロセスは、次のように簡略化できる。
Figure 0004448334
第4の特殊バイト値(この場合は0x80)は、別のタイプのスタート・コードなどさまざまな目的で使用することも、システムに未使用のままにしておくこともできる。
第3の実施例として、次のような状況を考察する。データ・ペイロードの末尾の後にWの値を持つバイトでスペースを充填すること(padding)は、Wのシーケンスの後に到着する次の値がXであり、このことは真のスタート・コード・プレフィックスを示しているので、充填する複数の値の間にエミュレーション防止バイトを挿入する必要なく、行うことができる。これにより、特殊な境界(32ビットDWORD境界または固定長パケット境界など)への整列、あるいは情報を送信する必要がない場合に一定のビット・レート・チャネルを単に満たすためなど、何らかの目的で「スタッフィング」の任意の整数バイト数を伝送チャネルに充てんすることができる。
充填することのもう1つの利点は、スタート・コードの値がこれを許可するように選択されている場合、エンコーダが、バイト整列を失った際にバイト境界に再同期するために、充填できるようになっていることである。したがって、エンコーダは、デコーダによりバイト整列を回復できるように、1つまたは複数の付加的な充填バイト(extra padding byte)をどの程度の頻度で送信するかに対しての決定権を有することができる。エンコーダには、すべてのスタート・コードの前に特別な充填を追加して頻繁にバイト整列の回復を行えるようにするものも、また低い頻度でこれを行うように選択するものもある。
W=0x00かつX=0x01の場合に特に興味深いZの値は、Z=0x80、0x02、0x81、および0x03である。
バイト整列の回復のために追加される付加的な充填バイトのフォーマット仕様は、最小頻度を指定することができ、また、付加的な充填を、データ・ストリーム内のスタート・コードの特定タイプに関連付けることもできる(圧縮ビデオ・データの各ピクチャの先頭に充填するなど、ただしMPEG−2またはH.263ビデオのスライスまたはGOBスタート・コードとして知られているような低レベルスタート・コードの前に充填することは必要ない)。
例示的なコンピューティング環境
図7は、以下に説明するシステムおよび関連する方法を実施できる適切なコンピューティング環境700の例を示している。
コンピューティング環境700は、適切なコンピューティング環境の一例に過ぎず、前述のエンコーディング/デコーディング・システムの使用または機能の範囲に関していかなる制限を加えることも意図するものではない。さらに、コンピューティング環境700は、例示的なコンピューティング環境700に示された1つのコンポーネントまたはその組み合わせに関して依存関係または要件を有するものと解釈すべきではない。
数多くの他の一般的用途または特殊用途のコンピューティング・システム環境または構成で、前述のさまざまな実施例を実現することができる。メディア処理システムと共に使用するために最適な既知のコンピューティング・システム、環境、および/または構成の例としては、パーソナル・コンピュータ、サーバー・コンピュータ、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ装置、マイクロ・プロセッサ・システム、マイクロ・プロ・セッサ・ベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニ・コンピュータ、メイン・フレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などがあげられるが、これらに限定されることはない。
特定の実装において、システムおよびその関連する方法は、コンピュータによって実行されるプログラム・モジュールなど、コンピュータ実行可能命令の一般的なコンテクストに即して十分に説明される。一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本実施例はさらに、タスクが通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラム・モジュールは、メモリ記憶装置を含むローカルおよびリモートのコンピュータ・ストレージ媒体に配置される。説明されるコンピューティング・システムのコンポーネントは、前述のように機能するエンコーダおよびデコーダを実装するために使用することができる。
図7に示される実施例によれば、コンピューティング・システム700は、1つまたは複数のプロセッサまたは処理装置702、システム・メモリ704、およびシステム・メモリ704を含むさまざまなシステム・コンポーネントをプロセッサ702に結合するシステム・バス706を含むことが示されている。
バス706は、メモリ・バスまたはメモリ・コントローラ、周辺バス、AGP(accelerated graphics port)、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを始めとする、1つまたは複数の各種バス構造を表すことを意図している。限定的ではなく例示的に、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、およびメザニン・バスとしても知られるPeripheral Component Interconnect(PCI)バスが含まれている。
コンピュータ700は通常、各種のコンピュータ可読媒体を含んでいる。そのような媒体は、コンピュータ700がローカルおよび/またはリモートにアクセスできる任意の使用可能な媒体であってもよく、揮発性および不揮発性媒体、取り外し可能および固定の媒体を含んでいる。
図7において、システム・メモリ704は、ランダム・アクセス・メモリ(RAM)710のような揮発性メモリ、および/または読み取り専用メモリ(ROM)708のような不揮発性メモリの形態をとるコンピュータ可読媒体を含んでいる。起動時などにコンピュータ700内の構成要素間の情報の転送を助ける基本ルーチンを含むBIOS(basic input/output system)712は、ROM708に格納される。RAM710は通常、処理装置702によって即時アクセス可能および/または現在操作中のデータおよび/またはプログラム・モジュールを含んでいる。
コンピュータ700はさらに、他の取り外し可能/固定、揮発性/不揮発性のコンピュータ記憶媒体も含めることができる。一例として、図7は、固定の不揮発性磁気媒体(図示せず、通常は「ハード・ドライブ」と呼ばれる)との間の書き込みおよび読み取りを行うハードディスク・ドライブ728、取り外し可能の不揮発性磁気ディスク732(「フロッピー(登録商標)ディスク」など)との間の書き込みおよび読み取りを行う磁気ディスク・ドライブ730、およびCD−ROM、DVD−ROMその他の光媒体など、取り外し可能の不揮発性光ディスク・ドライブ736との間の書き込みおよび/または読み取りを行う光ディスク・ドライブ734を示している。ハードディスク・ドライブ728、磁気ディスク・ドライブ730、および光ディスク・ドライブ734は、それぞれ1つまたは複数のインターフェース726によってバス706に接続されている。
ドライブおよびその関連するコンピュータ可読媒体は、コンピュータ700のコンピュータ可読命令、データ構造、プログラム・モジュール、およびその他のデータの不揮発性記憶装置を提供する。本明細書に記載の模範的な環境では、ハードディスク728、取り外し可能磁気ディスク732、および取り外し可能光ディスク736を採用しているが、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)などの、コンピュータによりアクセス可能なデータを格納できる他の種類のコンピュータ可読媒体も、模範的なオペレーティング環境に使用できることは当業者であれば理解するであろう。
多数のプログラム・モジュールは、限定的ではなく例示的にオペレーティング・システム714、1つまたは複数のアプリケーション・プログラム716(マルチメディア・アプリケーション・プログラム724など)、その他のプログラム・モジュール718、およびプログラム・データ720を含む、ハードディスク728、磁気ディスク732、光ディスク736、ROM708に格納することができる。ユーザは、キーボード738およびポインティング・デバイス740(「マウス」など)のような入力装置を介してコンピュータ700にコマンドおよび情報を入力することができる。他の入力装置としては、オーディオ/ビデオ入力装置753、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラ・アンテナ、シリアル・ポート、スキャナなど(図示せず)が含まれる。上記およびその他の入力装置は、バス706に結合されている入力インターフェース742を介して処理装置702に接続されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)など他のインターフェースおよびバス構造によって接続することもできる。
モニタ756またはその他の種類の表示装置も、ビデオ・アダプタまたはビデオ/グラフィックス・カード744などのインターフェースを介してバス706に接続される。モニタに加えて、パーソナル・コンピュータは通常、出力周辺インターフェース746を介して接続できるスピーカおよびプリンタなど、他の周辺出力装置(図示せず)を含んでいる。
コンピュータ700は、リモート・コンピュータ750など、1つまたは複数のリモート・コンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモート・コンピュータ750は、コンピュータに関連して本明細書で説明されている構成要素および機能の多くまたはすべてを含めることができる。
図7に示されているように、コンピューティング・システム700は、ローカル・エリア・ネットワーク(LAN)751および一般的なワイド・エリア・ネットワーク(WAN)752を介してリモート装置(リモート・コンピュータ750など)に結合されている。そのようなネットワーク環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットで一般化している。
LANネットワーク環境に使用される場合、コンピュータ700は適切なネットワーク・インターフェースまたはアダプタ748を介してLAN751に接続される。WANネットワーク環境で使用される場合、コンピュータ700は通常、モデム754またはWAN752にわたる通信を確立するための他の手段を含んでいる。モデム754は、内蔵または外付けであってもよく、ユーザ入力インターフェース742または他の適切な機構を介してシステム・バス706に接続することができる。
ネットワーク化された環境において、パーソナル・コンピュータ700に関連して示されるプログラム・モジュール、またはその部分は、リモート記憶装置に格納することもできる。限定的ではなく例示的に、図7では、リモート・アプリケーション・プログラム716をリモート・コンピュータ750のメモリ素子に常駐するものとして示している。図示され説明されているネットワーク接続が例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されたい。
結論
前述の方法およびシステムの一部は、ビット・レベル以外のレベルにおいてスタート・コード・エミュレーション防止を提供することができる。これは、処理の複雑さを緩和することができるので有利である。さらに、一部の実施例は、必要に応じて整数バイト数が確実に送信されるようにできるデータ・スタッフィングのための簡単明瞭な方法を提供する。さらに、さまざまな実施例が、必ずしもデータ境界と一致しないビット・シフトされたポジションでのスタート・コード・エミュレーション防止を提供することができる。さらにもう1つ実施例では、さまざまな処理効率を達成することができ、しかもデータ境界が失われた場合にデータ境界整列を回復できる機構を提供することができる。さらに他の利点も、当業者には明らかとなろう。
本発明について構造的機能および/または方法論的ステップに特有の表現で説明してきたが、添付の請求の範囲に定義されている本発明が、説明されている特定の機能またはステップに必ずしも限定されないことを理解されたい。むしろ、特定の機能およびステップは、特許請求された本発明を実装する好ましい形態として開示されている。
1つの実施例による方法のステップを説明する流れ図である。 1つの実施例による方法のステップを説明する流れ図である。 1つの実施例による方法のステップを説明する流れ図である。 1つの実施例による処理方法の1つの態様を表す図である。 1つの実施例による処理方法の1つの態様を表す図である。 1つの実施例による方法のステップを説明する流れ図である。 1つまたは複数の実施例が関連して実装されるコンピューティング環境についての高度のレベルの図である。

Claims (18)

  1. データ・ストリーム内に少なくとも1つのスタート・コードを備える符号化データを受信すること、
    前記符号化データは、前記スタート・コードのパターンに関連して、符号化データ上にエミュレーション防止データ挿入を実施するための検索パターンとして特徴的なパターンを使用するエンコーダからもたらされ、当該特徴的なパターンは、前記スタート・コードのパターンの複数のビット単位シフトのうちの任意の1つに発生する複数のバイト、および1つまたは複数のバイト整列位置と相対的なあらゆるビット・シフトされた位置で前記スタート・コードのパターンのエミュレーションを防止するように識別される複数のバイトを含み、前記受信データのバイト境界で、スタート・コードのパターンの位置に基づいてバイト整列を回復すること、
    エミュレーション防止バイトを備える複数のバイトのパターンを、前記受信したデータ内の前記1つまたは複数のバイト整列された位置で、検索すること、および
    前記受信データ内に前記エミュレーション防止バイトを備える複数のバイトからなる前記パターンの発見に応答して、前記受信データから前記エミュレーション防止バイトを削除すること
    を備えることを特徴とする復号化用に符号化データを準備する方法。
  2. 前記エミュレーション防止バイトを備える複数のバイトからなる前記パターンは、前記エミュレーション防止データの挿入期間、前記エンコーダによって使用される置き換えパターンに等しいことを特徴とする請求項1に記載の方法。
  3. 前記特徴的なパターンからなる前記複数のバイトのそれぞれは、0x00の値を有し、前記データ内に前記特徴的なパターンが発見された場合、前記エミュレーション防止バイトを備える複数のバイトからなる前記パターンは、
    それぞれ値が0x00に等しいN−1バイト、続いて、前記エミュレーション防止バイト、続いて、値が0x00に等しいN番目のバイト
    の置換パターンであることを特徴とする請求項1に記載の方法。
  4. 符号化データ・ストリームとして配信用データをフォーマットする方法であって、
    符号化されているデータ内で、複数のデータを含む、1つまたは複数の検索パターンを検索すること、および
    前記符号化されている前記データ内で前記1つまたは複数の検索パターンが発見された場合、前記発見されたパターンを符号化されたデータ・ストリーム内で、前記発見されたパターンのデータとエミュレーション防止バイトを備える置換パターンに置換すること、
    を備え、
    スタート・コードのパターンに関連して、符号化されている前記データ上にエミュレーション防止データの挿入を実施するための前記1つまたは複数の検索パターンのうちの1つとして特徴的なパターンが使用され、当該特徴的なパターンは、前記スタート・コードのパターンの複数のビット単位シフトのうちの任意の1つに発生する複数のバイト、および1つまたは複数のバイト整列位置と相対的なあらゆるビット・シフトされた位置で前記スタート・コードのパターンのエミュレーションを防止するように識別される複数のバイトを含み、これにより、バイト境界で前記スタート・コードの位置に基づいて、デコーダでバイト整列を回復するのを容易にする
    ことを特徴とする方法。
  5. 前記特徴的なパターンからなる前記複数のバイトのそれぞれは、0x00の値を有し、符号化されている前記データ内に前記特徴的なパターンが発見された場合、前記置換パターンは、
    それぞれ値が0x00に等しいN−1バイト、続いて、前記エミュレーション防止バイト、続いて、値が0x00に等しいN番目のバイト
    であることを特徴とする請求項4に記載の方法。
  6. 前記バイト整列の回復を容易にするために、前記スタート・コード・パターンとしてスタート・コード・プレフィックスを後続する充填バイトを送ることをさらに備えることを特徴とする請求項4に記載の方法。
  7. 前記送ることの前に、スタート・コード・タイプに依存して前記充填バイトを送るべきか否かを決定することを特徴とする請求項6に記載の方法。
  8. 前記符号化データは、ビデオ・データを備えることを特徴とする請求項1乃至7のいずれかに記載の方法。
  9. 前記符号化データは、オーディオ・データを備えることを特徴とする請求項1乃至7のいずれかに記載の方法。
  10. 前記エミュレーション防止バイトは、0x03に等しいことを特徴とする請求項1乃至7のいずれかに記載の方法。
  11. 前記スタート・コード・パターンは、スタート・コード・プレフィックスを備えることを特徴とする請求項1乃至5のいずれかに記載の方法。
  12. 前記スタート・コード・プレフィックスは、複数の連続する0からなる文字列を備えることを特徴とする請求項11に記載の方法。
  13. 前記スタート・コード・プレフィックスは、直後に1を後続する複数の連続する0からなる文字列を備えることを特徴とする請求項11に記載の方法。
  14. 前記スタート・コード・パターンの前記位置は、直後に1を後続する31個の連続する0からなる文字列で指し示されることを特徴とする請求項1乃至5のいずれかに記載の方法。
  15. 前記特徴的なパターンは、3つの0の値のバイトを有することを特徴とする請求項1乃至7のいずれかに記載の方法。
  16. 請求項1乃至15のいずれかに記載の方法を、1つまたは複数のコンピュータに実行させるコンピュータ実行可能命令コードを格納している1つまたは複数のコンピュータ読み取り可能な記憶媒体。
  17. データ・ストリーム内に少なくとも1つのスタート・コードを備える符号化データを受信する手段、
    前記符号化データは、前記スタート・コードのパターンに関連して、符号化データ上にエミュレーション防止データ挿入を実施するための検索パターンとして特徴的なパターンを使用するエンコーダからもたらされ、当該特徴的なパターンは、前記スタート・コードのパターンの複数のビット単位シフトのうちの任意の1つに発生する複数のバイト、および1つまたは複数のバイト整列位置と相対的なあらゆるビット・シフトされた位置で前記スタート・コードのパターンのエミュレーションを防止するように識別される複数のバイトを含み、前記受信データのバイト境界で、スタート・コードのパターンの位置に基づいてバイト整列を回復する手段、
    エミュレーション防止バイトを備える複数のバイトのパターンを、前記受信したデータ内の前記1つまたは複数のバイト整列された位置で、検索する手段、および
    前記受信データ内に前記エミュレーション防止バイトを備える複数のバイトからなる前記パターンの発見に応答して、前記受信データから前記エミュレーション防止バイトを削除する手段
    を備えることを特徴とするデコーダ。
  18. 符号化されているデータ内で、複数のデータを含む、1つまたは複数の検索パターンを検索する手段、および
    前記符号化されている前記データ内で前記1つまたは複数の検索パターンが発見された場合、前記発見されたパターンを符号化されたデータ・ストリーム内で、前記発見されたパターンのデータとエミュレーション防止バイトを備える置換パターンに置換する手段
    を備え、
    スタート・コードのパターンに関連して、符号化されている前記データ上にエミュレーション防止データの挿入を実施するための前記1つまたは複数の検索パターンのうちの1つとして特徴的なパターンが使用され、当該特徴的なパターンは、前記スタート・コードのパターンの複数のビット単位シフトのうちの任意の1つに発生する複数のバイト、および1つまたは複数のバイト整列位置と相対的なあらゆるビット・シフトされた位置で前記スタート・コードのパターンのエミュレーションを防止するように識別される複数のバイトを含み、これにより、バイト境界で前記スタート・コードの位置に基づいて、デコーダでバイト整列を回復するのを容易にする
    ことを特徴とするエンコーダ。
JP2003587115A 2002-04-19 2003-04-18 バイト整列されていない(non−byte−alignedpositions)のポジション、および/またはビット・シフトされたポジション(bit−siftedpositions)を含む位置におけるスタート・コード・エミュレーションを防ぐための方法およびシステム Expired - Lifetime JP4448334B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US37419202P 2002-04-19 2002-04-19
PCT/US2003/012226 WO2003090470A2 (en) 2002-04-19 2003-04-18 Methods and systems for preventing start code emulation at non-byte aligned and/or bit-shifted locations

Publications (3)

Publication Number Publication Date
JP2005523659A JP2005523659A (ja) 2005-08-04
JP2005523659A5 JP2005523659A5 (ja) 2008-09-25
JP4448334B2 true JP4448334B2 (ja) 2010-04-07

Family

ID=29251157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003587115A Expired - Lifetime JP4448334B2 (ja) 2002-04-19 2003-04-18 バイト整列されていない(non−byte−alignedpositions)のポジション、および/またはビット・シフトされたポジション(bit−siftedpositions)を含む位置におけるスタート・コード・エミュレーションを防ぐための方法およびシステム

Country Status (8)

Country Link
US (1) US7248740B2 (ja)
EP (1) EP1500278B1 (ja)
JP (1) JP4448334B2 (ja)
KR (1) KR100895932B1 (ja)
CN (1) CN100499824C (ja)
HK (1) HK1075565A1 (ja)
TW (1) TWI310137B (ja)
WO (1) WO2003090470A2 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4703114B2 (ja) * 2002-01-22 2011-06-15 マイクロソフト コーポレーション 開始符号エミュレーションの防止およびデータ充填のための方法およびシステム
US7305036B2 (en) * 2002-05-14 2007-12-04 Broadcom Corporation System and method for entropy code preprocessing
US20040067042A1 (en) * 2002-10-07 2004-04-08 Hughes Robert K. Extended time-code for multimedia presentations
US8427494B2 (en) * 2004-01-30 2013-04-23 Nvidia Corporation Variable-length coding data transfer interface
US8023564B2 (en) * 2004-02-04 2011-09-20 Broadcom Corporaiton System and method for providing data starting from start codes aligned with byte boundaries in multiple byte words
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
JP4444762B2 (ja) * 2004-08-25 2010-03-31 パナソニック株式会社 デマルチプレクサ
US7340441B1 (en) 2004-12-17 2008-03-04 The Mathworks, Inc. Search directions in pattern search via rotation
US7953224B2 (en) * 2005-05-20 2011-05-31 Microsoft Corporation MPEG-4 encryption enabling transcoding without decryption
US8081755B2 (en) * 2005-05-20 2011-12-20 Microsoft Corporation JPEG2000 syntax-compliant encryption with full scalability
WO2007034634A1 (ja) * 2005-09-20 2007-03-29 Pioneer Corporation デジタル放送受信機
JP4229149B2 (ja) * 2006-07-13 2009-02-25 ソニー株式会社 ビデオ信号処理装置およびビデオ信号処理方法、ビデオ信号符号化装置およびビデオ信号符号化方法、並びにプログラム
JP5557373B2 (ja) 2006-11-21 2014-07-23 アボット ラボラトリーズ 薬剤溶出性コーティングにおけるテトラフルオロエチレン、ヘキサフルオロプロピレン、及びフッ化ビニリデンのターポリマーの使用
US7974307B2 (en) * 2006-11-30 2011-07-05 Vestel Elektronik Sanayi Ve Ticaret A.S. Methods and apparatus for data decoding/encoding and for searching for/inserting stuffing bytes
KR100841338B1 (ko) 2007-02-27 2008-06-26 삼성전자주식회사 비디오 디코더를 위한 에뮬레이션 방지 바이트 제거 장치
US9503777B2 (en) * 2007-06-05 2016-11-22 Broadcom Corporation Method and system for unified start code emulation prevention bits processing for AVS
US8725504B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Inverse quantization in audio decoding
US8726125B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Reducing interpolation error
US8477852B2 (en) * 2007-06-20 2013-07-02 Nvidia Corporation Uniform video decoding and display
US8576918B2 (en) * 2007-07-09 2013-11-05 Broadcom Corporation Method and apparatus for signaling and decoding AVS1-P2 bitstreams of different versions
US8849051B2 (en) * 2007-09-17 2014-09-30 Nvidia Corporation Decoding variable length codes in JPEG applications
US8502709B2 (en) * 2007-09-17 2013-08-06 Nvidia Corporation Decoding variable length codes in media applications
US8704834B2 (en) * 2007-12-03 2014-04-22 Nvidia Corporation Synchronization of video input data streams and video output data streams
US8687875B2 (en) * 2007-12-03 2014-04-01 Nvidia Corporation Comparator based acceleration for media quantization
US8934539B2 (en) 2007-12-03 2015-01-13 Nvidia Corporation Vector processor acceleration for media quantization
TWI361009B (en) 2008-03-06 2012-03-21 Realtek Semiconductor Corp Method and apparatus for processing audio/vedio bi
CN101534438B (zh) * 2008-03-14 2013-02-13 瑞昱半导体股份有限公司 影音位流处理方法及装置
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US8370887B2 (en) 2008-05-30 2013-02-05 Microsoft Corporation Media streaming with enhanced seek operation
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US9307267B2 (en) 2008-12-11 2016-04-05 Nvidia Corporation Techniques for scalable dynamic data encoding and decoding
US8897377B2 (en) * 2009-12-31 2014-11-25 Broadcom Corporation Transcoding multiple media elements for independent wireless delivery
CN101800892B (zh) * 2010-03-04 2013-03-06 青岛海信信芯科技有限公司 多媒体码流识别的方法和装置
US9325999B2 (en) * 2011-03-10 2016-04-26 Sharp Kabushiki Kaisha Video decoder for slices
US10230989B2 (en) * 2011-06-21 2019-03-12 Texas Instruments Incorporated Method and apparatus for video encoding and/or decoding to prevent start code confusion
TWI455020B (zh) * 2012-01-31 2014-10-01 Mstar Semiconductor Inc 資料包裝裝置及資料包裝方法
CN102802023B (zh) * 2012-08-29 2014-08-27 上海国茂数字技术有限公司 一种快速防止出现伪起始码的方法及装置
US9336072B2 (en) 2014-02-07 2016-05-10 Ralph Moore Event group extensions, systems, and methods
US9854261B2 (en) * 2015-01-06 2017-12-26 Microsoft Technology Licensing, Llc. Detecting markers in an encoded video signal
US10271069B2 (en) 2016-08-31 2019-04-23 Microsoft Technology Licensing, Llc Selective use of start code emulation prevention
CN106933767B (zh) * 2017-03-10 2020-04-24 重庆湃芯创智微电子有限公司 一种适用于jesd204b协议的逗号检测和字对齐方法及系统
US11375332B2 (en) 2018-04-09 2022-06-28 Dolby International Ab Methods, apparatus and systems for three degrees of freedom (3DoF+) extension of MPEG-H 3D audio
CA3168578A1 (en) 2018-04-09 2019-10-17 Dolby International Ab Methods, apparatus and systems for three degrees of freedom (3dof+) extension of mpeg-h 3d audio
CN112486885B (zh) * 2020-12-07 2024-06-07 珠海优特智厨科技有限公司 数据帧的生成方法、存储介质及计算机设备
KR102477168B1 (ko) * 2021-02-02 2022-12-14 엘아이지넥스원 주식회사 디지털 시리얼 데이터 통신 장치 간에 노이즈 간섭에 따른 데이터 왜곡 복원 방법

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847877A (en) * 1986-11-28 1989-07-11 International Business Machines Corporation Method and apparatus for detecting a predetermined bit pattern within a serial bit stream
JP2674059B2 (ja) 1988-02-09 1997-11-05 キヤノン株式会社 カラー画像データ伝送方法
CA2043670C (en) 1990-06-05 2002-01-08 Wiebe De Haan Method of transmitting a picture sequence of a full-motion video scene, and a medium for said transmission
GB9012538D0 (en) 1990-06-05 1990-07-25 Philips Nv Coding of video signals
US5603012A (en) * 1992-06-30 1997-02-11 Discovision Associates Start code detector
US5699123A (en) * 1993-10-20 1997-12-16 Victor Company Of Japan, Ltd. Television receiver with an adjustable frame size
US5784110A (en) 1993-11-30 1998-07-21 General Electric Company Data processor for assembling transport data packets
ES2171447T3 (es) 1993-11-30 2002-09-16 Gen Electric Indicador de palabra de datos en un sistema para el ensamblaje de paquetes de datos para su transporte.
JP3474005B2 (ja) 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US5825929A (en) 1995-10-05 1998-10-20 Microsoft Corporation Transformation block optimization method
JPH09182067A (ja) 1995-10-27 1997-07-11 Toshiba Corp 画像符号化/復号化装置
EP1755258A3 (en) 1996-03-18 2008-04-02 Kabushiki Kaisha Toshiba Coding and decoding system
US5870444A (en) 1996-04-23 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for performing very fast message synchronization
US5661665A (en) 1996-06-26 1997-08-26 Microsoft Corporation Multi-media synchronization
DE69719828T2 (de) 1996-07-05 2003-12-24 Matsushita Electric Ind Co Ltd Verfahren zum Anzeigezeitstempeln und zur Synchronisation mehrerer Videoobjektebenen
JPH1066036A (ja) 1996-08-15 1998-03-06 Oki Electric Ind Co Ltd Tv方式変換装置
US5898897A (en) * 1996-10-18 1999-04-27 Samsung Electronics Company, Ltd. Bit stream signal feature detection in a signal processing system
JP4013286B2 (ja) 1997-01-22 2007-11-28 松下電器産業株式会社 画像符号化装置と画像復号化装置
US5955977A (en) 1997-03-31 1999-09-21 Sharp Laboratories Of America, Inc. System for avoiding start code emulation and long carry-over propagation
JPH11110915A (ja) 1997-09-30 1999-04-23 Sony Corp 信号記録再生装置及び方法
US5946043A (en) 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
GB9807208D0 (en) 1998-04-03 1998-06-03 Nds Ltd Method and apparatus for detecting a sequence in a bitstream
WO1999056472A1 (en) * 1998-04-24 1999-11-04 Rockwell Science Center, Llc N-bit video coder and method of extending an 8-bit mpeg video coder
EP1018840A3 (en) 1998-12-08 2005-12-21 Canon Kabushiki Kaisha Digital receiving apparatus and method
WO2000046995A1 (en) 1999-02-05 2000-08-10 Sony Corporation Encoding system, encoding method, decoding system, decoding method, multiplexing device, multiplexing method, display system and display method
US6499060B1 (en) 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
JP4292654B2 (ja) 1999-03-19 2009-07-08 ソニー株式会社 記録装置および方法、再生装置および方法、並びに記録媒体
EP1166566A2 (en) 1999-04-01 2002-01-02 Ravisent Technologies, Inc. Memory management method for high speed streaming data processing in a computer device
GB2353653B (en) 1999-08-26 2003-12-31 Sony Uk Ltd Signal processor
JP3694888B2 (ja) 1999-12-03 2005-09-14 ソニー株式会社 復号装置および方法、符号化装置および方法、情報処理装置および方法、並びに記録媒体
GB9930788D0 (en) 1999-12-30 2000-02-16 Koninkl Philips Electronics Nv Method and apparatus for converting data streams
JP4703114B2 (ja) 2002-01-22 2011-06-15 マイクロソフト コーポレーション 開始符号エミュレーションの防止およびデータ充填のための方法およびシステム

Also Published As

Publication number Publication date
EP1500278B1 (en) 2014-08-27
TWI310137B (en) 2009-05-21
CN1656821A (zh) 2005-08-17
KR100895932B1 (ko) 2009-05-07
JP2005523659A (ja) 2005-08-04
EP1500278A2 (en) 2005-01-26
KR20040099461A (ko) 2004-11-26
WO2003090470A2 (en) 2003-10-30
CN100499824C (zh) 2009-06-10
US7248740B2 (en) 2007-07-24
WO2003090470A3 (en) 2004-03-11
TW200404229A (en) 2004-03-16
HK1075565A1 (en) 2005-12-16
US20040030665A1 (en) 2004-02-12

Similar Documents

Publication Publication Date Title
JP4448334B2 (ja) バイト整列されていない(non−byte−alignedpositions)のポジション、および/またはビット・シフトされたポジション(bit−siftedpositions)を含む位置におけるスタート・コード・エミュレーションを防ぐための方法およびシステム
JP5175371B2 (ja) 開始符号エミュレーションの防止およびデータ充填のための方法およびシステム
US6606040B2 (en) Method and apparatus for adaptive data compression
US5376969A (en) Method and apparatus for conveying compressed video data over a noisy communication channel
US20040247033A1 (en) Video data coding/decoding apparatus and method
US6771193B2 (en) System and methods for embedding additional data in compressed data streams
US7165207B2 (en) Robust signal coding
KR20020070199A (ko) 멀티미디어 메타데이터의 오류 내성 부호화/복호화 장치및 방법
JPH10178419A (ja) 誤り訂正方法および装置
JP3408957B2 (ja) 可変長符号化データ伝送装置、送信側装置、受信側装置およびその方法
KR20040075956A (ko) 시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및시스템
US20030043806A1 (en) Method and system for delineating data segments subjected to data compression
KR100443012B1 (ko) 압축데이터의 바이트열 복원 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080829

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081127

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090818

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100122

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

Free format text: PAYMENT UNTIL: 20130129

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4448334

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140129

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term