プログラムされたコンピュータによって実行される方法であって、データストリーム内の符号化されたデータを取得するステップであって、第1の開始コードが前記データストリーム内の前記符号化されたデータの前にあり、第2の開始コード又は前記データストリームの終端が前記データストリーム内の前記符号化されたデータに続く、ステップと、前記第1の開始コードと前記第2の開始コード又は前記データストリームの終端との間の前記符号化されたデータに対し、エミュレーション防止バイトを必要に応じて前記符号化されたデータに挿入して開始コードエミュレーションを防止するステップであって、前記符号化されたデータ全体について複数バイトの第1のパターンを検索するステップであって、前記第1のパターンは複数バイトを含む開始コードプレフィックスの少なくとも一部を含む、ステップ、および前記符号化されたデータ内で前記第1のパターンを発見するのに応答して、前記第1のパターンを前記符号化されたデータ内の置換パターンに置き換えるステップであって、前記置換パターンは開始コードエミュレーションを防止するためのエミュレーション防止バイトとともに前記第1のパターン内に複数バイトを含む、ステップを含む防止するステップとを有することを特徴とする方法。前記符号化されたデータはビデオデータを含むことを特徴とする請求項1に記載の方法。前記符号化されたデータはオーディオデータを含むことを特徴とする請求項1に記載の方法。前記第1のパターンは少なくとも3バイトを含むことを特徴とする請求項1に記載の方法。前記少なくとも3バイトは、第1および第2バイトを含む少なくとも2バイトがゼロに相当し、第3バイトの上位6ビットがゼロであることを特徴とする請求項4に記載の方法。前記エミュレーション防止バイトは0x03に相当することを特徴とする請求項1に記載の方法。前記第1のパターンは完全な開始コードプレフィックスを含むことを特徴とする請求項1に記載の方法。前記開始コードプレフィックスは、直後に0x01に相当するバイトが続く0x00に相当する2バイトからなることを特徴とする請求項1に記載の方法。前記第1のパターンを前記置換パターンに置き換えるステップは前記開始コードプレフィックスのエミュレーションを防止することを特徴とする請求項1に記載の方法。前記検索するステップは、前記符号化されたデータのバイトと前記第1のパターンの複数バイトとの比較を含むことを特徴とする請求項1に記載の方法。ビデオエンコーダとして機能するコンピュータシステムであって、データストリーム内の符号化されたデータを取得する手段であって、第1の開始コードが前記データストリーム内の前記符号化されたデータの前にあり、第2の開始コード又は前記データストリームの終端が前記データストリーム内の前記符号化されたデータに続く、取得する手段と、前記第1の開始コードと前記第2の開始コード又は前記データストリームの終端との間の前記符号化されたデータに対し、エミュレーション防止バイトを必要に応じて前記符号化されたデータに挿入して開始コードエミュレーションを防止する手段であって、前記符号化されたデータ全体について複数バイトの第1のパターンを検索する手段であって、前記第1のパターンは複数バイトを含む開始コードプレフィックスの少なくとも一部を含む、検索する手段、および前記符号化されたデータ内で前記第1のパターンを発見するのに応答して、前記第1のパターンを前記符号化されたデータ内の置換パターンに置き換える手段であって、前記置換パターンは開始コードエミュレーションを防止するためのエミュレーション防止バイトとともに前記第1のパターン内に複数バイトを含む、置き換える手段を含む防止する手段とを備えたことを特徴とするコンピュータシステム。前記第1のパターンは少なくとも3バイトを含むことを特徴とする請求項11に記載のコンピュータシステム。前記少なくとも3バイトは、第1および第2バイトを含む少なくとも2バイトがゼロに相当し、第3バイトの上位6ビットがゼロであることを特徴とする請求項11に記載のコンピュータシステム。前記エミュレーション防止バイトは0x03に相当することを特徴とする請求項11に記載のコンピュータシステム。前記開始コードプレフィックスは、直後に0x01に相当するバイトが続く0x00に相当する2バイトからなることを特徴とする請求項11に記載のコンピュータシステム。前記第1のパターンを前記置換パターンに置き換える手段は、前記開始コードプレフィックスのエミュレーションを防止することを特徴とする請求項11に記載のコンピュータシステム。前記置換パターンは、前記第1のパターンと前記第1のパターンの2バイトの間に挿入された前記エミュレーション防止バイトとからなることを特徴とする請求項11に記載のコンピュータシステム。前述した操作は単純明快に見えるが、この操作は、開始符号パターンが偶然に送信される可能性がないことを保証するため、可能なデータのすべてをビットレベルで、データが送信される可能なすべての順序で点検しなければならないため、かなり困難な目論見になる可能性がある。これは、誤りが生じやすい困難な構文設計方法である。このビットレベル点検の設計プロセスは、一般に、多くのビデオ符号化規格が過去に設計されてきたやり方を述べているすなわち、H.261、MPEG-1、H.262/MPEG-2、H.263のほとんど、およびMPEG-4。それの唯一の例外が、数学的な仕様からアルゴリズム的手法で圧縮ビットを生成する算術符号化と呼ばれる技術を使用する非特許文献1。この場合、生成されたビットを点検するエントロピー符号器の終りに追加のプロセスが存在し、符号器側において、過度に多くの連続する0が存在する場合、所定の数の0が見つかる前にマーカビット1のビットが挿入される。復号器側で、復号器は、ゼロを数え上げ、臨界数のゼロを見つけた場合、本当の開始符号を見つけたことが分かる。復号器が、臨界数より少ないゼロを見つけた場合、復号器は、後続の1のビットが、開始符号エミュレーションを回避するために挿入されたマーカビットであることが分かり、そのビットを破棄し、後続のビットを実データの続きとして受け取る。この解決策の問題は、この解決策が、符号器および復号器にビットレベルで着信データを点検させ、処理させることである。単一のビット位置で処理されているデータの場所を分析し、移動させることは、困難になり、復号器に望ましくない形で負担をかける可能性がある。ビットに関して移動させることも、プロセッサを集中的に使用する操作である。したがって、本発明は、開始符号エミュレーションを防止するための改良された方法およびシステムを提供することに関連する関心から生じている。ビットレベルより粗い細分性で実行される操作による、開始符号エミュレーション防止へのアプローチを提供する方法およびシステムを説明する。ビットレベル以外のレベルで操作を行うことにより、処理効率を高めることができる。1つまたは複数の実施形態によれば、開始符号エミュレーション防止方法は、単一のビットより大きい固定サイズのデータ部分に関するデータパターンを探す。特定のパターンが見つかった場合、開始符号エミュレーション防止データが、開始符号エミュレーションを防止するように挿入される。挿入されるデータは、単一のビットより大きく、一部の実施形態では、1バイトを含む。復号器は、開始符号エミュレーション防止データが挿入されているデータを復号した際、正規の開始符号を容易に特定することができ、次に、開始符号エミュレーション防止データを除去して、伝えられることが意図されていた元のデータを提供することができる。さらに、ペイロードデータのサイズを切り上げて整数のバイトサイズにすることを可能にし、次に、復号器が容易に検出できる形で充填データを追加することを可能にするデータ充填方法を説明する。概要ビットレベルよりも粗い細分性で開始符号エミュレーション防止へのアプローチを提供する方法およびシステムを以下に説明する。ビットレベルよりも高いレベルで操作を行うことにより、処理効率を高めることができる。本明細書の文脈では、ビットレベルより高いレベルで操作を行うとは、単一のビットより大きい固定サイズのデータ部分に関するデータパターンを探すプロセスを指すものとする。例えば、固定サイズのデータ部分には、バイトすなわち、8ビット、ワードすなわち、16ビット、ダブルワード32ビットなどが含まれる可能性がある。したがって、本発明の技術は、バイト、ワードなどの範囲内で、またそれらの間でパターンを探すことができる。さらに、ペイロードデータのサイズを切り上げてバイト量などの整数のデータ単位サイズにすることを可能にし、復号器が容易に検出できる形で充填データを追加することを可能にするデータ充填方法を説明する。さらに、以下に提供する例は、ビデオデータの文脈において説明しているが、本発明の技術は、通常、符号化および復号が行われ、開始符号エミュレーション防止が望ましい、または必要であるあらゆるタイプのデータに関連して使用できることを認識して、理解されたい。そのようなデータの例には、オーディオデータ、オーディオ/ビデオデータなどが含まれる。図1は、一実施形態による方法におけるステップを説明する流れ図である。方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、または以上の組み合わせで実装することができる。図示し、説明する実施形態では、方法は、少なくとも部分的にソフトウェアで実装される。さらに、方法は、2つの異なる分岐、すなわち、符号器として示された分岐と復号器として示された分岐を有するものとして図示されていることに、読者は留意されたい。符号器分岐は、符号器により、または符号器に関連して実行されるステップを示している。同様に、復号器分岐は、復号器により、または復号器に関連して実行されるステップを示している。ステップ100で、開始符号の後に伝送が予定される量のデータを取得するか、または生成する。データは、任意の適切なデータを含むことが可能である。データのタイプの例には、限定としてではなく、様々な量のビデオデータ、オーディオデータ、オーディオ/ビデオデータなどが含まれる。ステップ101で、データの前に開始符号を付ける。このステップは、実質的に、ステップ100で取得された、または生成されたデータに開始符号を追加する。ステップ102で、固定サイズのデータ部分の1つまたは複数のパターンについて着信データを調べるか、または探索する。図示し、説明する実施形態では、探索されるパターンは、少なくとも2つの固定サイズのデータ部分を含み、それぞれの個別データ部分は、少なくとも2ビットを含む。ステップ104は、パターンが見つかったかどうかを判定する。パターンが見つからなかった場合、方法は、ステップ108に分岐し、データを伝送することが可能である。反対に、パターンが見つかった場合、ステップ106で、パターンを含むデータに関して開始符号エミュレーション防止データを挿入する。図示し、説明する実施形態では、開始符号エミュレーション防止データの個々のインスタンスは、複数のビットを含む。好ましくは、開始符号エミュレーション防止データは、個別の固定サイズのデータ部分とビット数が等しいデータ量を含む。したがって、固定サイズのデータ部分が8ビットバイトと呼ばれるデータ量を含む場合、開始符号エミュレーション防止データは8ビットを含む。開始符号エミュレーション防止データが挿入された後、ステップ108で、データを伝送する。ステップ110で、次の開始符号より前に伝送されるべき追加のデータが存在するかどうかを判定する。存在する場合、方法は、ステップ102に戻り、前述したとおりに行われる。存在しない場合、方法は、ステップ111で、伝送されるべき追加のデータが存在するかどうかを判定することができる。存在する場合、方法は、分岐してステップ100に戻る。存在しない場合、方法は、ステップ112で終了することが可能である。話はそれるが、次のことを考察してみる。この特定の技術の用法の一例が、開始符号を開始符号プレフィックスと開始符号タイプサフィックスに分離することであり、ただし、プレフィックスは、単一の固有なストリングの値であり、サフィックスは、開始符号の後に続くデータのタイプを示すことに留意されたい。詳細には、これは、MPEG2およびH.264/AVCの開始符号の構造であり、以下の第1の例示的な方法という題名のセクションで使用する構造である。プレフィックス/サフィックス構造を特例として包含するさらに一般的な形態の用法は、1つまたは複数の開始符号パターンを有することの一般的な概念である。その場合、1つまたは複数のエミュレーション防止パターンも有することが可能である。様々な開始符号パターンが様々なエミュレーション防止パターンとは全く異なっており、それらのパターンのすべてがペイロードデータの処理において回避される限り、スキームは、相応に機能する。さらに、開始符号パターンがすべて同じ長さであると必ずしも想定すべきではない。これは、特定の場合において重要であり得る。というのは、例えば、H.264/AVCの使用は、複数の長さの開始符号を使用しているものと解釈することができるからである。復号器側で、次のことを考察してみる。開始符号エミュレーション防止データは、符号器によって挿入された後、その他のデータの適切な解釈のために何らかの時点で特定し、および除去し、または無視することが可能である。復号器は伝送されたデータを受け取ると、正規の開始符号を探すことができることも考察してみる。復号器は、正規の開始符号を見つけると、どこに開始符号が画定するデータ境界が位置しているかが分かる。次に、復号器は、開始符号エミュレーション防止データを探して、除去することに取りかかり、実データをさらに処理することができる。具体的には、ステップ114で、開始符号のエミュレーションを防止するように符号器によって処理された伝送データを受け取る。ステップ118で、データを処理して開始符号を見つける。開始符号が見つかり、適切に処理される例えば、読み取られ、破棄されると、ステップ120で、データを探索して開始符号エミュレーション防止データを特定する。開始符号エミュレーション防止データが見つかると、ステップ122で、その開始符号エミュレーション防止データを除去する。開始符号エミュレーション防止データが除去されると、受け取られたデータのタイプにとって典型的な方法でデータを処理することができる。例えば、データは、ステップ124におけるように、コンシューマ装置によって消費される可能性がある。第1の例示的な方法以下に説明する方法は、図1に示し、および説明する方法の一具体例だけを示している。以下に説明する方法では、ペイロードデータのN1バイトのストリングが、開始符号プレフィックス全体に一致した場合、または開始符号プレフィックスの最初のN個のバイトにエミュレーション防止バイトの値を加えたものに一致した場合にはいつでも、エミュレーション防止データのバイトは挿入される。この方法は、第2の例示的な方法という題名のセクションで説明する方法より低い頻度でデータを追加し、したがって、ペイロードデータを送信する伝送能力要件を低くする。MPEG-2開始符号プレフィックス構造は、バイト整合の位置で開始し、23個の0の後に1個の1が続く。この開始符号プレフィックスは、以下のとおり示される。すなわち、000000000000000000000001この構造は、同じ値を有する何らかの複数バイトNに続いて、異なる値を有する他の何らかの単一バイトを含むパターンとして一般化することができる。MPEG-2において、N=2であり、最初の2つのバイトは0であり以下にWと呼ぶ、最後のバイトは1である以下にXと呼ぶと述べることができる。したがって、開始符号プレフィックスは、以下のパターンを有する。すなわち、WWX以上3つのバイトの後、MPEG-2では、別のバイトが後に続き、それがどのような種類の開始符号であるかを明らかにする。この後続のバイトをYと呼ぶ。したがって、基本的に、開始符号は、開始符号プレフィックスWWXと、開始符号のタイプを明らかにする後続する単一バイトYから成る。MPEG-2開始符号全体は、以下のとおり表現することができる。すなわち、WWXY開始符号プレフィックスWWXは固定値を有するが、Yは、開始符号のタイプ例えば、スライス、ピクチャ、GOP、シーケンス、システムなどを示すいくつかの異なる値を有する。一実施形態によれば、データは、パターンWWXを探して処理される。WWXパターンが見つかった場合、開始符号エミュレーションを防止するように開始符号エミュレーション防止データが挿入される。この場合、開始符号エミュレーション防止データは、WバイトおよびXバイトの値とは異なる値を有するバイトZを含む。したがって、符号器がデータバイトを点検しており、パターンWWXに気付くものと想定されたい。データの中でこのパターンを見つけたことに応答して、符号器は、値Zを有するバイトを挿入して以下のパターンを提供する。すなわち、WWZXこの時点で、符号器は、復号器によって伝送され、処理されるべきペイロードデータが、開始符号または開始符号プレフィックスを偶然にエミュレートしないことを保証している。ここで、次のことを考察してみる。ペイロードデータは、WWXパターンを任意に含むことによって開始符号プレフィックスをエミュレートする機会性を有するのと全く同様に、開始符号エミュレーション防止データを含むデータを任意にエミュレートする機会性も有する。つまり、ペイロードデータは、本質的にパターンWWZXを含む可能性がある。これが該当し、符号器が何もしないことになった場合、復号器が開始符号エミュレーション防止データを除去しようと試みる際、復号器は、このケースでは実データであるZバイトを除去する。したがって、説明する実施形態では、符号器は、ペイロードデータが開始符号または開始符号プレフィックスをエミュレートすることを防止するように構成されるだけでなく、データが開始符号エミュレーション防止データの使用からもたらされるデータパターンをエミュレートすることを防止するようにも構成される。具体的には、この例では、符号器は、パターンWWZを特定した場合、値Zを有するバイトを第2のWとZの中間に挿入して以下のパターン挿入されるバイトZは、以下で表れる最初のZであるを提供する。すなわち、WWZZ次に、処理されるデータを復号器の観点から考察してみる。復号器は、WWZに続いてZまたはXを含む何らかのバイトパターンを見つけた場合、最初のZが、符号器によって挿入されたエミュレーション防止バイトであることが分かる。したがって、復号器は、最初のZを破棄することができる。したがって、この例では、エミュレーション防止バイトを挿入することが可能な2つの状況が存在する。第1の状況は、データが、開始符号または開始符号プレフィックスを偶然にエミュレートする場合である。第2の状況は、データが、エミュレーション防止バイトが挿入されているデータを偶然にエミュレートする場合である。いずれの場合も、復号器は、単に適切なパターンを探し、エミュレーション防止バイトを破棄して、通常どおりデータを処理することができる。よりプログラム的な形で以上の処理を説明するため、次のことを考察してみる。符号器側で、同じ値WのN個またはそれより多くのバイトと、異なる値Xの最後のバイトから成る開始符号プレフィックスで始まり、その後に値Yを有する1バイトの識別用の開始符号タイプサフィックスが続くBバイトのパケットP[]を送信するため、値Zただし、W、X、Y、およびZは互いに異なる値を有し、P[B-1]はWに等しくないを有するエミュレーション防止バイトを挿入する以下の擬似コードプロセスを実行し、ただし、チャネルを充填するために送信される追加データの量は、Eで規定される。すなわち、以上の擬似コードでは、関数send_byteが、データ単位の伝送図1のプロセス108を実行するものと想定される。復号器側で、パケットを受信するため、復号器が、同じ値WのN個またはそれより多くのバイトと、異なる値Xの最後のバイトから成る既知の開始符号プレフィックスを既に見つけ、読み取り、破棄しているものと想定する。また、未知の単一バイトの開始符号タイプサフィックスを変数Yに読み込み、ペイロードデータのパケットを配列P[]に読み込み、ペイロードデータの量を特定し、その量の指示を変数Bに入れる一方で、値Zを有するエミュレーション防止バイトを除去することを所望しているものと想定するただし、W、X、Y、およびZは互いに異なる値を有し、P[B-1]はWに等しくない。すなわち、以上の擬似コードでは、関数receive_byteがデータ単位の受け取りを実行するものと想定し、関数more_dataが、受け取られるべきさらなるデータ単位が存在するかどうかを判定するものと想定する以上2つの関数が図1のプロセス114を構成している。前述した方法により、開始符号に先行する任意の量のW値の充填が可能になる。W値プレフィックスの数をN個に固定する定式化も同じように可能である。第2の例示的な方法以下に説明する方法は、図1に示し、説明した方法のもう1つの具体例を示すに過ぎない。この場合、方法は、ペイロードの中のデータのNバイトストリングが開始符号プレフィックスの最初のNバイトに一致する場合には、いつでも、後続のペイロードデータの値に関わりなく、エミュレーション防止データのバイトを挿入する。上記の例の表記法を使用すると、データが、後続するのが何であれパターンWWを含む場合、この方法は、エミュレーション防止バイトを挿入する。したがって、符号器は、パターンWWを識別した場合、エミュレーション防止バイトを挿入して以下のパターンを提供する。すなわち、WWZ最初に説明した方法とここで上記に説明する方法との違いは、最初の方法が、最初のN1個のバイトを調べて、どこにエミュレーション防止バイトを挿入するかを確かめるのに対して、第2に説明する方法は、最初のN個のバイトを調べることである。最初の方法は、伝送されるべき追加データの量を減らし、他方、第2に説明する方法は、より単純な規則を使用して動作する。したがって、これらの方法の両者が一括で、伝送されるデータ量を減らすことと、規則を簡略化することとの間の選択を提供する。第1に説明した方法を使用すると、第2に説明した方法と比べてデータ量が少なくなる。第2に説明した方法を使用すると、より単純な規則が利用される。上記の処理をよりプログラム的な形で説明するため、以下のことを考察してみる。符号器側で、同じ値Wの正確にN個のバイトと、異なる値Xの最後のバイトから成る開始符号プレフィックスで始まり、その後に値Yを有する1バイトの識別用の開始符号タイプサフィックスが続くBバイトのパケットP[]を送信するため、値Zを有するエミュレーション防止バイトを挿入する以下の擬似コードプロセスを実行するただし、W、X、Y、およびZは互いに異なる値を有し、P[B-1]はWに等しくない。すなわち、上記の擬似コードでは、関数send_byteが、データ単位の伝送図1のプロセス108の動作と想定される。復号器側で、パケットを受け取るため、復号器が、同じ値Wの正確にN個のバイトと、異なる値Xの最後のバイトから成る既知の開始符号プレフィックスを既に見つけ、読み取り、破棄しているものと想定し、また、未知の単一バイトの開始符号タイプサフィックスを変数Yに読み込み、ペイロードデータのパケットを配列P[]に読み込み、ペイロードデータの量を特定し、その量の指示を変数Bに入れる一方で、値Zを有するエミュレーション防止バイトを除去することを所望しているものと想定するただし、W、X、Y、およびZは互いに異なる値を有し、P[B-1]はWに等しくない。すなわち、上記の擬似コードでは、関数receive_byteがデータ単位の受け取りを実行するものと想定し、関数more_dataが、受け取られるべきさらなるデータ単位が存在するかどうかを判定するものと想定する以上2つの関数が、図1のプロセス114を構成している。前述した方法は、大量の理想的なランダムな入力ペイロードデータの量を第2に説明した方法の場合、およそ1/256Nだけ、第1に説明した方法の場合、1/256だけ拡張すると考えられる。以上の量は、Nが大きい例えば、MPEG-2開始符号の場合、N=2であることに留意して、2以上場合、小さい。ペイロードに関する最悪の場合の拡張要因は、第2に説明した方法の場合、1/Nであると考えられ、第1に説明した方法の場合、1/N1であると考えられる。Nが増大した場合、開始符号自体によって使用されるデータの量は増大するが、ペイロード拡張要因は、統計分析においても、最悪の場合の分析においても小さくなる。前述したエミュレーション防止プロセスは、パケットを送信することを始める前にパケットの中にどれだけのデータがあるかを知っていることに依存しないことを認識されたい。したがって、有意な遅延は追加されない。第2に説明した方法の定式化は、挿入されるエミュレーション防止バイトが、値Zを有する単一のバイトであるものと想定している。挿入されるデータの最初のバイトが、有効な開始符号をエミュレートすることになるか、またはプレフィックスの先頭の続きであるように見えることになるWまたはXに等しくない限り、エミュレーション防止データとして任意の値または複数の値、あるいは1つまたは複数の値のストリングを代わりに使用することも可能である。これらのエミュレーション防止バイトの中で情報を伝送することさえできる例えば、H.263式GOBフレームID/ピクチャシーケンス番号、または仮に、MSBだけを1に設定し、その他の7つのASCII文字を送るのに使用するためなど。復号器側でパケットの終端において生じることを考慮した場合、データパケットペイロードの最後のバイトがWではない場合、動作を制御することがより容易であることに気付く。これは、開始符号の前に送信される最後のバイトが、決してエミュレーション防止バイトである必要はなく、検出可能な境界が、復号器によってペイロードデータの終端と次の開始符号のためのWに等しいバイトシーケンスの先頭の間に見出される可能性があることを意味する。この状況を課すことにより、ペイロードの終端の後、次の開始符号の前に、ペイロードの終端がどこにあるかを見失うことなしに任意の量のWバイト例えば、ゼロのバイトを詰め込むこともできるようになる。データ充填通常、ビデオデータでは、データペイロードとして送信されるデータは、整数のバイトではない可能性がある。例えば、2つの開始符号の間で送信されるべき627ビットを有することが可能である。しかし、システムの多重レベルは、バイトで動作する可能性がある。MPEG-2規格の場合、これが該当する。伝送の誤りによって生成された、いくつかの偽の開始符号パターンの検出を可能にすること、またはペイロードの始まりのデータ内容に関する単純な復号プロセスを可能にすることなどの他の理由によっても、パケットがバイトなどの整数のデータ単位を含むのを所望することを正当化することができる。したがって、627ビットのデータを伝送するためには、もう少し多くのデータを送信しなければならない可能性がある。すると、問題は、どのようにデータに埋め込みを行ってデータを整数のバイトにするかということになる。単に追加の充填データを送信することが役立つ他の状況も存在する。例えば、チャネルが、毎秒1メガビットの容量を有し、送信されるべきペイロードデータの量が900キロビット/秒だけである場合、チャネルを充填データで充填することを必要とする、または所望する可能性がある。一実施形態によれば、データ充填技術により、余分なデータをチャネルに追加して、基本的に、ペイロードデータをパッディングすることが可能になる。図2は、開始符号が、ゼロに等しいビットストリングで始まるものと想定される一実施形態によるデータ充填方法におけるステップを説明する流れ図である。ステップ200で、送信されることが予定されるデータの終端の位置を確立する。ステップ202で、ペイロードデータの最後のビットの後に1のビットを挿入する。ステップ204で、整数のバイトを送信するのに要する追加のビットの数を算出する。ステップ206で、要求される数の0ビットを挿入済みの1のビットの後に挿入する。ステップ208で、任意の所望のバイト数の充填データを追加する。充填データは、真のペイロードデータの場所、および意図的な開始符号の場所についての混乱を回避するように設計された任意のデータパターンから成ることが可能である。これは、通常、値0のバイトを挿入することによって実施される。例として、以下を考察してみる。627ビットが送信されるものと想定する。この場合、ステップ202は、1のビットを第627番のビットの後に挿入する。次に、ステップ204で、整数のバイト、この場合は、79バイトを提供するのにさらに4ビットを要すると算出する。これに応じて、ステップ206で、4つの0のビット、つまり0000を挿入済みの1のビットの後に挿入する。この時点で、整数のバイトが確立され、ステップ208で、所望される場合、任意の所望のバイト数の充填データを追加することができる。この特定の例では、0の値を有するバイトを挿入することができる。充填データは、単に充填データとして、あるいは復号器が何らかの目的で使用することができる情報を含めるなどの何らかの他の目的で使用することができる。次に、復号器における状況を考察してみる。復号器は、充填されたデータを受信し、そのデータの終端から始めて、データを逆方向に調べることができる。復号器が最初に見るバイトのすべては、復号器が1のビットを有するバイトに達するまで、0のバイトである。この1のビットは、ペイロード、つまり実データの終端の位置を復号器に告げる。したがって、復号器は、挿入された1のビットを見つけると、実データが正確にどこで終わるかを特定することができる。したがって、前述した技術を使用して送信されるビットの数を切り上げて、送信されるビット数が整数のデータ単位を含むようにすることができる。さらに、以上の技術を使用して、ペイロードデータの先頭を示す開始符号と開始符号の間に充填データを埋め込むことができる。例示的なコンピューティング環境図3は、以下に説明するシステムおよび関連する方法を実施することができる適切なコンピューティング環境300の例を示している。コンピューティング環境300は、適切なコンピューティング環境の一例に過ぎず、前述した符号化/復号システムの用途または機能の範囲に関して何ら限定を示唆するものではないことを理解されたい。また、コンピューティング環境300が、例示的なコンピューティング環境300に示したコンポーネントのいずれか1つ、またはいずれかの組み合わせに関連する依存関係または要件を有するものと解釈すべきでない。様々な説明する実施形態は、多数の他の汎用または専用のコンピュータシステム環境またはコンピュータシステム構成で動作することが可能である。メディア処理システムで使用するのに適している可能性がある周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例には、限定ではないが、パーソナルコンピュータ、サーバコンピュータ、シンthinクライアント、シックthickクライアント、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれる。一部の実装では、システムおよび関連する方法は、コンピュータによって実行されているプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈において説明することができる。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。実施形態は、通信ネットワークを介してリンクされた遠隔処理装置によってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルのコンピュータ記憶媒体と遠隔のコンピュータ記憶媒体の両方の中に配置することが可能である。説明するコンピューティングシステムのコンポーネントを使用して、前述したとおり機能する符号器および復号器を実装することができる。図3の図示する例示的な実施形態によれば、コンピューティングシステム300が、1つまたは複数のプロセッサまたは処理装置302、システムメモリ304、ならびにシステムメモリ304からプロセッサ302までを含む様々なシステムコンポーネントを結合するバス306を含んでいるのを示している。バス306は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポートacceleratedgraphicsport、ならびにプロセッサバスまたはローカルバスを含め、いくつかのタイプのバス構造のいずれかの1つまたは複数を表すものとする。例として、限定としてではなく、そのようなアーキテクチャには、ISAIndustryStandardArchitectureバス、MCAMicroChannelArchitectureバス、EISAEnhancedISAバス、VESAVideoElectronicsStandardsAssociationローカルバス、およびメザニンMezzanineバスとしても知られるPCIPeripheralComponentInterconnectsバスが含まれる。コンピュータ300は、通常、様々なコンピュータ読取り可能な媒体を含む。そのような媒体は、コンピュータ300がローカルおよび/または遠隔でアクセス可能な任意の利用可能な媒体とすることが可能であり、揮発性媒体および不揮発性媒体、ならびに取外し可能な媒体および取外し不可能な媒体がともに含まれる。図3では、システムメモリ304が、ランダムアクセスメモリRAM310などの揮発性の形態、および/または読み取り専用メモリROM308などの不揮発性メモリの形態でコンピュータ読取り可能な媒体を含んでいる。始動中などにコンピュータ300内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システムBIOS312が、ROM308の中に格納されている。RAM310は、通常、処理装置302が即時にアクセス可能であり、および/または現在、操作しているデータおよび/またはプログラムモジュールを含む。コンピュータ300は、その他の取外し可能/取外し不可能、揮発性/不揮発性のコンピュータ記憶媒体をさらに含むことが可能である。単に例として、図3は、取外し不可能な不揮発性の磁気媒体図示せず、通常、ハードドライブと呼ばれるから読み取りおよび書き込みを行うためのハードディスクドライブ328、取外し可能な不揮発性の磁気ディスク332例えば、フロッピー登録商標ディスクから読み取りおよび書き込みを行うための磁気ディスクドライブ330、ならびにCD-ROM、DVD-ROM、または他の光媒体などの取外し可能な不揮発性の光ディスク336から読み取りまたは書き込みを行うための光ディスクドライブ334を示している。ハードディスクドライブ328、磁気ディスクドライブ330、および光ディスクドライブ334はそれぞれ、1つまたは複数のインターフェース326でバス306に接続される。以上のドライブおよび関連するコンピュータ読取り可能な媒体により、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージがコンピュータ300に提供される。本明細書で説明する例示的な環境は、ハードディスク328、取外し可能な磁気ディスク332、および取外し可能な光ディスク336を使用しているが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリRAM、読み取り専用メモリROMなどの、コンピュータがアクセス可能なデータを格納することができる他のタイプのコンピュータ読取り可能な媒体も、例示的な動作環境において使用できることが、当分野の技術者には理解されよう。例として、限定としてではなく、オペレーティングシステム314、1つまたは複数のアプリケーションプログラム316例えば、マルチメディアアプリケーションプログラム324、その他のプログラムモジュール318、およびプログラムデータ320を含むいくつかのプログラムモジュールをハードディスク328、磁気ディスク332、光ディスク336、ROM308、またはRAM310に記憶することができる。ユーザは、キーボード338やポインティングデバイス340マウスなどのなどの入力装置を介して、コマンドおよび情報をコンピュータ300に入力することができる。他の入力装置には、オーディオ/ビデオ入力装置353、マイク、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、シリアルポート、スキャナなど図示せずが含まれる可能性がある。以上の入力装置、およびその他の入力装置は、バス306に結合された入力インターフェース342を介して処理装置302に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバスUSBなどのその他のインターフェースおよびバス構造で接続してもよい。モニタ356または他のタイプのディスプレイ装置も、ビデオアダプタまたはビデオ/グラフィックスカード344などのインターフェースを介してバス306に接続される。モニタに加えて、パーソナルコンピュータは、通常、出力周辺インターフェース346を介して接続することができるスピーカやプリンタなどのその他の周辺出力装置図示せずも含む。コンピュータ300は、遠隔コンピュータ350のような1つまたは複数の遠隔コンピュータに対する論理接続を使用してネットワーク化された環境において動作することができる。遠隔コンピュータ350は、コンピュータに関連して本明細書で説明した要素および特徴の多く、またはすべてを含むことが可能である。図3に示すとおり、コンピューティングシステム300は、ローカルエリアネットワークLAN351および汎用ワイドエリアネットワークWAN352を介して遠隔装置例えば、遠隔コンピュータ350と通信するように結合されている。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。LANネットワーキング環境で使用される場合、コンピュータ300は、適切なネットワークインターフェースまたはネットワークアダプタ348を介してLAN351に接続される。WANネットワーキング環境で使用される場合、コンピュータ300は、通常、WAN352を介して通信を確立するためのモデム354またはその他の手段を含む。内部にあることも、外部にあることも可能なモデム354は、ユーザ入力インターフェース342、またはその他の適切な機構を介してシステムバス306に接続することができる。ネットワーク化された環境では、パーソナルコンピュータ300に関連して示すプログラムモジュール、またはプログラムモジュールの諸部分は、遠隔メモリ記憶装置の中に格納することができる。例として、限定ではなく、図3は、遠隔アプリケーションプログラム316が、遠隔コンピュータ350のメモリ装置上に常駐しているのを示している。図示し、説明するネットワーク接続は、例示的であり、コンピュータ間で通信リンクを確立するその他の手段も使用できることが理解されよう。結論上述した方法およびシステムの一部は、ビットレベル以外の処理レベルにおいて開始符号エミュレーション防止を提供することができる。これは、処理の複雑さを軽減することができるため、有利である。本明細書で説明した技術は、任意の適切な文脈で、例えば、可変長符号、ハフマン符号、および算術符号化によって生成された内容を含むペイロードに関連して使用することができる。さらに、一部の実施形態は、所望される場合に整数のバイトが送信されることを保証することができ、開始符号、エミュレーション防止パターン、および基本的なペイロードデータのためのデータに加えて追加の充填データの送信を可能にすることができるデータ充填のための単純明快な方法を提供する。本発明は、構造上の特徴および/または方法上のステップに特有の言葉で説明してきたが、特許請求の範囲で定義する本発明は、説明した特定の特徴またはステップに必ずしも限定されないことを理解されたい。むしろ、特定の特徴およびステップは、請求する本発明を実施する好ましい形態として開示している。