(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-29
(45)【発行日】2024-08-06
(54)【発明の名称】コンテンツ不可知ファイルインデキシングの方法及びシステム
(51)【国際特許分類】
G06F 16/22 20190101AFI20240730BHJP
【FI】
G06F16/22
(21)【出願番号】P 2021540318
(86)(22)【出願日】2020-01-08
(86)【国際出願番号】 US2020012661
(87)【国際公開番号】W WO2020146448
(87)【国際公開日】2020-07-16
【審査請求日】2022-10-24
(32)【優先日】2019-01-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521304427
【氏名又は名称】ログノベーションズ ホールディングス, エルエルシー
【氏名又は名称原語表記】LOGNOVATIONS HOLDINGS, LLC
(73)【特許権者】
【識別番号】521304438
【氏名又は名称】マケルヴィーン, クリストファー
【氏名又は名称原語表記】MCELVEEN, Christopher
(74)【代理人】
【識別番号】100107364
【氏名又は名称】斉藤 達也
(72)【発明者】
【氏名】マケルヴィーン, クリストファー
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】米国特許出願公開第2012/0166448(US,A1)
【文献】特表2007-508753(JP,A)
【文献】米国特許出願公開第2015/0201043(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
計算機システム上で実行されるバイナリデータファイルのコンテンツ不可知参照の為の
情報処理方法であって、
前記計算機システムを使用して、入力シードを用いて表を事前生成するステップであって、表は所定の長さのビットの全ての順列を含むステップと、
前記計算機システムを使用して、前記バイナリデータファイルの長さを決定するステップであって、前記長さは、前記バイナリデータファイルのビット数を含むステップと、
前記計算機システムを使用して、前記バイナリデータファイルを部分ストリングにチャンクするステップであって、各部分ストリングは前記バイナリデータファイルの長さよりも小さい長さであるステップと、
前記計算機システムを使用して、前記バイナリデータファイルの各チャンクについて、そのチャンクが前記事前生成された表内にあるかどうかを判断し、そのチャンクが事前生成された表内にある場合には、そのチャンクに前記事前生成された表内のチャンクの位置のインデックスを関連付け、そのチャンクが前記事前生成された表内にない場合には、チャンクされたバイナリデータを更に小さなチャンクに分割するステップと、
前記計算機システムを使用して、チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップと、を含む方法。
【請求項2】
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記バイナリデータファイルの代わりに、前記チャンクの数及び全ての関連するインデックスを記憶装置に永続化するステップを含む、請求項1に記載の方法。
【請求項3】
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記バイナリデータファイルの代わりに
チャンクの数及び全チャンクの関連するインデックスを送信するステップを含む、請求項1に記載の方法。
【請求項4】
前記送信するステップは、前記チャンクの数及び全チャンクの関連するインデックスをネットワーク上で送信する、請求項3に記載の方法。
【請求項5】
前記送信するステップは、
前記チャンクの数及び全チャンクの関連するインデックスをバス上で送信する、請求項3に記載の方法。
【請求項6】
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、
各順序付けられたペアがチャンクレベル及び関連するインデックスを示す、順序付けられたペアのタプルを作成するステップを含む、請求項1に記載の方法。
【請求項7】
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、前記チャンクの数及び全チャンクの関連するインデックスを記憶装置上に永続化することを含む、請求項1に記載の方法。
【請求項8】
前記記憶装置はディスクである、請求項7に記載の方法。
【請求項9】
前記事前生成された表がハッシュ表である、請求項1に記載の方法。
【請求項10】
前記事前生成された表が行列である、請求項1に記載の方法。
【請求項11】
前記事前生成された表が揮発性メモリに永続化される、請求項1に記載の方法。
【請求項12】
前記事前生成された表が不揮発性メモリに永続化される、請求項1に記載の方法。
【請求項13】
前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータを所定の長さのチャンクにチャンクすることを含む、請求項1に記載の方法。
【請求項14】
前記所定の長さが2メガバイトである、請求項13に記載の方法。
【請求項15】
前記所定の長さが2メガバイトよりも小さい、請求項13に記載の方法。
【請求項16】
前記所定の長さが2メガバイトよりも大きい、請求項13に記載の方法。
【請求項17】
前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータファイルを、同じサイズの2つのチャンクに再帰的に分割することを含む請求項1に記載の
方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2017年10月11日に出願された、「コンテンツ不可知ファイルインデキシングの方法及びシステム(Method and System for Content Agnostic File Indexing)」という名称の特許出願第15/730,043号の一部継続出願であり、同出願の内容はあらゆる目的の為に本明細書に参照により完全に援用される。
【0002】
(コンピュータプログラムリスト-シーケンスリスト)
以下のコンピュータプログラムリストを本明細書に添付して提出し、参照により援用する。夫々のファイルは参照により援用される。以下のコンピュータプログラムリストは、以下の形式である。<バイト単位のサイズ> <作成日> <ファイル名>。
【0003】
3864 May 16 2018 squeeze-master-README-md.txt*
【0004】
83675 May 16 2018 squeeze-master-SqueezeReport-ipynb.txt*
【0005】
4293 May 16 2018 squeeze-master-demo_app-py.txt*
【0006】
98 May 16 2018 squeeze-master-gitignore.txt*
【0007】
1383 May 16 2018 squeeze-master-requirements.txt*
【0008】
2490 May 16 2018 squeeze-master-rpc_server-py.txt*
【0009】
239 May 16 2018 squeeze-master-scripts-buildprotos.txt*
【0010】
942 May 16 2018 squeeze-master-scripts-file_test-py.txt*
【0011】
1391 May 16 2018 squeeze-master-scripts-generate_key-py.txt*
【0012】
711 May 16 2018 squeeze-master-scripts-generate_keyset-py.txt*
【0013】
629 May 16 2018 squeeze-master-scripts-keys_from_folder-py.txt*
【0014】
377 May 16 2018 squeeze-master-scripts-lzw_test-py.txt*
【0015】
107 May 16 2018 squeeze-master-scripts-runserver.txt*
【0016】
3928 May 16 2018 squeeze-master-scripts-squeeze-bytes-report-py.txt*
【0017】
63 May 16 2018 squeeze-master-scripts-squeeze_file-py.txt*
【0018】
1060 May 16 2018 squeeze-master-scripts-squeeze_test-py.txt*
【0019】
947 May 16 2018 squeeze-master-scripts-string_test-py.txt*
【0020】
222 May 16 2018 squeeze-master-scripts-test_binary-py.txt*
【0021】
1799 May 16 2018 squeeze-master-scripts-test_rpc-py.txt*
【0022】
2736 May 16 2018 squeeze-master-scripts-time-squeeze-string-py.txt*
【0023】
211 May 16 2018 squeeze-master-scripts-time_keygen-py.txt*
【0024】
65 May 16 2018 squeeze-master-scripts-unsqueeze_file-py.txt*
【0025】
80 May 16 2018 squeeze-master-setup-py.txt*
【0026】
10657 May 16 2018 squeeze-master-squeeze- _ init _ -py.txt*
【0027】
2783 May 16 2018 squeeze-master-squeeze-bitstring-py.txt*
【0028】
9191 May 16 2018 squeeze-master-squeeze-keys-py.txt*
【0029】
613 May 16 2018 squeeze-master-squeeze-performance-csv.txt*
【0030】
22445 May 16 2018 squeeze-master-squeeze-squeeze_pb2-py.txt*
【0031】
2232 May 16 2018 squeeze-master-squeeze-squeeze_pb2_grpc-py.txt*
【0032】
3366 May 16 2018 squeeze-master-squeeze-proto.txt*
【0033】
875 May 16 2018 squeeze-master-templates-layout-html.txt*
【0034】
816 May 16 2018 squeeze-master-templates-upload_form-html.txt*
【0035】
1513 May 16 2018 squeeze-master-templates-uploaded_file-html.txt*
【0036】
200 May 16 2018 squeezerpc-master-Makefile.txt*
【0037】
1131 May 16 2018 squeezerpc-master-README-md.txt*
【0038】
7 May 16 2018 squeezerpc-master-gitignore.txt*
【0039】
8995 May 16 2018 squeezerpc-master-main-go.txt*
【0040】
21292 May 16 2018 squeezerpc-master-squeeze-squeeze-pb-go.txt*
【0041】
3366 May 16 2018 squeezerpc-master-squeeze-proto.txt*
【0042】
本開示は、コンテンツ不可知ファイル参照の為の方法に関するものである。本方法は、更に、コンテンツ不可知データ圧縮の為の方法に関するものである。
【背景技術】
【0043】
ファイル参照技術は、一般に、ファイル参照システムにおいてデータを効率的にインデキシングする為に、保存されているデータの種類に関する知識を必要とする。同様に、問題となっているデータに関する知識は、一般的に、送信、保存等の為にデータサイズを縮小する為の改良された圧縮アプローチを作成する際にも使用される。
【発明の概要】
【発明が解決しようとする課題】
【0044】
業界では、保存及び/又は送信しなければならないデータ量を減らす為に、ファイル参照及びデータ圧縮技術を改善する必要性が存在する。
【課題を解決するための手段】
【0045】
一実施形態によれば、本開示は、強化されたコンテンツ不可知ファイル参照システムを用いてコンピューティング技術を改善する方法を提供する。この方法は、コンピュータ自体の動作を改善するものである。
【0046】
開示された方法は幾つかの重要な利点を有する。例えば、開示された方法は、任意のコンテンツタイプのファイル参照を可能にする。
【0047】
開示された方法は、更に、データが永続化されるのとは対照的に、アクセス時に生成され得るので、永続化又は送信されなければならない情報又はデータの量を大幅に減少させることができる。
【0048】
本開示の様々な実施形態は、これらの利点の何れも有していなくても、又はその一部或いは全てを有していてもよい。当業者には、本開示の他の技術的利点も容易に明らかになり得る。
【図面の簡単な説明】
【0049】
本開示及びその利点をより完全に理解する為に、ここで、添付の図面と併せて以下の説明を参照する。
同じ参照符号は、図面の幾つかの図を通して同じ部品又はステップを参照する。
【
図1】本開示の一実施形態のステップを概説するフローチャートである。
【
図2】本開示の別の実施形態のステップを概説する別のフローチャートである。
【
図3】本開示の代替実施形態のステップを概説するフローチャートである。
【発明を実施するための形態】
【0050】
本開示は、データのコンテンツ不可知インデキシングの為の方法に関するものである。本方法は、例えば、ファイル参照システムや圧縮システムとして等、コンピュータ特有の様々なニーズに使用され得る。
【0051】
以下の開示では、例示としてバイナリデータの圧縮に関連して本発明を説明しているが、本教示は、「n-ary」データと呼ぶ方が相応しい、あらゆるタイプのデータで同様に機能する。例えば、本方法及びシステムは、量子ビット及びビットでも動作する。
【0052】
本発明の一実施形態は、
図1に描かれたフローチャートに記載されているような方法を含む。永続化又は送信されるバイナリデータ(n
i)(例えば、データファイル)が分析され、ビット単位の長さ(l(n
i))が決定される。この情報を用いて、ステップ106で、本方法は、識別された長さのデータの全ての順列を計算する。例えば、入力データが次のような場合、
01
【0053】
入力データは2ビットの長さとなる。ステップ106で、2ビットの全ての順列が生成され、即ち次のようになる。
{00}{01}{10}{11}
【0054】
ステップ108で、本方法は、生成された順列における入力バイナリデータファイルのインデックス(nf)を決定する。上記の例では、返されるインデックス(nf)は「1」となる。最後に、入力されたバイナリデータ(即ち「01」)を保存又は送信するのではなく、システムは代わりに長さ(2)とインデックス(1)を保存する。
【0055】
元の入力データをデコードする必要が生じた場合(例えば、元のバイナリデータをディスクから取得する要求や、ネットワークを介して送信されたデータの受信)、この方法は、入力として長さ(l(n
i))とインデックス(n
f)のみを必要とする。上記の例では、長さ(2)とインデックス(1)が入力となる。
図2に示すように、システムは、入力された長さの全ての順列を計算する。上記の例では、次のような順列が生成される。
{00}{01}{10}{11}
【0056】
システムは指定されたインデックス(上記の例では1)に移動し、順列を返す。再び上記の例を用いて、元のバイナリデータの「01」が返される。
【0057】
上記の方法は、例示の目的で、バイナリシステム(即ち、入力データがバイナリデータである)の観点から説明されている。本方法及びシステムは、n-aryシステムについても同様に動作する。上記のバイナリシステムは基本的にユークリッド平面で動作するが、n-aryデータではヒルベルト空間が概念的に同じ利点を提供する。この方法とプロセスは、以下のようにn-aryデータに対して一般化され得る。
d^n=p(i)
(d^n)n=p(f)
d=システムの次数
n=システムの次数に応じた適切なn-ary単位での長さ
p(i)=初期インデックス
p(f)=最終インデックス
【表1】
【0058】
同じ入力ファイルで2つの代替的な順序付けされたシステムが与えられた場合、より高い順序を持つシステムが、より低い順序を持つ代替的なシステムと比較して、より高いn-ary密度を有することに留意すべきである。
【0059】
本方法の一例は、以下のRubyコードスニペットに開示されている。以下のスニペットは、
図1に開示されているような方法を示している。
【表2】
【0060】
以下のスニペットは、入力長(l(n
i))が16、インデックス(n
f)が72,629の場合の、
図2に開示されている方法を示している。
【表3】
【0061】
好ましい実施形態では、入力バイトストリングは、入力バイトストリングの表現に対応するビットストリングに変換される。このビットストリングは、次に本明細書に記載された方法によって処理されるものである。
【0062】
代替的な実施形態では、データの長さに基づいて表を生成するのではなく、特定の長さのデータの全ての順列で表を事前生成してもよい。この事前生成された表は、不揮発性メモリ又は揮発性メモリの何れかのメモリに永続化されてもよい。上記の例では、所定の長さが2ビットの場合、事前生成された表には、次のような2ビットデータの全ての順列が含まれる。
{00}{01}{10}{11}
【0063】
一実施形態では、この表は、以下のように対応するインデックスを付けた配列で格納されてもよい。
【表4】
【0064】
この事前生成された表は、ディスクやRAM等に保存されてもよい。好ましくは、この事前生成された表は、ファイルサイズを縮小する(又はファイルをスクイーズする)計算機システムと、縮小されたファイルを拡張する(又はデータをスクイーズ解除する)計算機システムとで保存される。
【0065】
入力データを受け取ると、本方法はデータをより小さなサブセットに「チャンク」する。本明細書では、「チャンク」とは、データストリングを取得して大きなデータストリングのサブセットを構成する小さなデータストリングを作成することを意味する。全てのチャンクを合わせると元のデータストリングになる。例えば、入力データが
011001110001
であれば、
【0066】
以下の4ビットチャンクにチャンクされることになる。
0010 0111 0001
【0067】
次に、個々のチャンクは、事前生成された表と比較され、一致するものがあるかどうかを確認する。上記の例では、チャンクのサイズが4ビットの場合、表には全2ビットチャンクの順列を有する為、各チャンクは表に見つからないことになる。従って、各チャンクは再度チャンクされ、以下のようになる。
01 10 01 11 00 01
【0068】
この方法は、特定のチャンクが事前生成された表の中に配置される時点まで、各チャンクに対して続けられる。その時点で、チャンクは夫々のインデックスと関連付けられ、好ましくは、チャンクレベル及び対応するインデックスを示す一連のタプルが生成される。上記の例では、システムが2回チャンクしたので、インデックスの関連付けは以下のようになる。
{2,1}{2,2}{2,1}{2,3}{2,0}{2,1}
【0069】
この例では、元の入力データ「011001110001」は、最終的に2ビット長の6つのチャンクに分割された。図示のように、各チャンクはチャンクレベル(2)と、事前生成された表への対応するインデックスで表されている。
【0070】
データは、任意の数の方法でチャンクされ得る。例えば、データは、上記の例のように、事前に決定されたサイズに基づいてチャンクされてもよい(ここで、事前に決定されたサイズは、例の目的の為に4ビットであった)。或いは、各データチャンクが事前生成された表の中で見つかるまで入力データを2つの別々のデータチャンクに再帰的にチャンクしてもよい。上記と同じ入力データを使用して、データを分割してチャンク化する方法では、次のような第1レベルのチャンクになる。
011001 110001
【0071】
ここで、データセットが事前生成された表に見つからないので、再度チャンクされる。
011 001 110 001
【0072】
ここでも、チャンクされたデータは事前生成された表では見つからないので、再度チャンクされなければならない。
00 1 00 1 11 0 00 1
【0073】
注目すべきは、幾つかのセグメントが、事前生成された表のサイズよりも小さいデータにチャンクされていることである(即ち、セグメント「1」、「1」、「0」、「1」)。これらのセグメントは、事前生成された表と比較する為にパディングされることがある。一貫性が保たれていれば、数字はビッグエンディアン又はリトルエンディアンバイトオーダーで保存され得る。例えば、ビッグエンディアンバイトオーダーを使った場合、上記のチャンクデータは次のように表される。
00 10 00 10 11 00 00 10
【0074】
その後、この方法は上記と同じように続く。
【0075】
データの全てのチャンクが、同じデータチャンクレベルで事前生成された表の中で見つかることは必要ではない。例えば、2ビットの組み合わせに関する上記の事前生成された表を使用して、もし入力データが以下であれば、
0110011100
【0076】
このデータは本来、上記のように4ビットのシーケンスに分割してチャンクされ得る。
0110 0111 00
【0077】
上記と同様に、最初の2つの4ビットシーケンス(即ち「0110」と「0111」)は、事前生成された表に配置される為に、より小さなチャンクに再度チャンクされなければならず、その結果、以下のチャンクになる。
01 10 01 11 00
【0078】
また、上記のように、チャンクは以下のように自らのチャンクレベル及び対応するインデックスに関連付けられる。
{2,1}{2,2}{2,1}{2,3}{1,0}
【0079】
上記の最後のタプルは、そのチャンクが2回目のチャンキングを必要としなかったので、チャンクレベルが1であることを示していることに留意されたい。
【0080】
入力データが一連のチャンクレベルとインデックスに還元されると、その一連のチャンクレベルとインデックスを使用して、元のデータを識別する。関連付けは、一連のタプルとして、個別のビットストリングとして、及びその他の方法で保存され得る。
【0081】
一連のチャンクレベルとインデックスに基づいてデータを再作成(又はスクイーズ解除)するには、プロセスは逆に動作する。この場合も、システムには同じ事前生成された表が必要である。チャンクレベルとインデックスの各タプルに対して、システムは事前生成された表を参照して、スクイーズされたチャンクをアンパックし、元のデータに戻す。
【0082】
この代替実施形態は、
図3のフローチャートに示されている。まず、以下のような特定の長さのデータの全ての順列を含む事前生成された表がステップ302で作成される。上述したように、好ましくは、その表は何らかの方法で永続化される。次に、システムは、ステップ304で、スクイーズ対象入力データを受け取る。次にプロセスは、ステップ306及び308で、データの長さが「事前生成された表」に配置される長さになるまで、データをより小さなセグメントにチャンクする。上述したように、このプロセスは、入力データセットが何回チャンクされたかをシステムが知ることができるように、チャンクレベルを維持する。その後、各チャンクはステップ310で事前生成された表に配置される。最後に、チャンク、そのチャンクレベル、及び事前生成された表内の夫々のインデックスが関連付けられ、その結果、ステップ312で、スクイーズされたデータが得られる。
【0083】
本開示を、特定の実施形態及び一般的に関連する方法の観点から説明してきたが、これらの実施形態及び方法の変更及び順列は、当業者には明らかであろう。従って、例示的な実施形態に関する上記の説明は、本開示を制約するものではない。本開示の精神及び範囲から逸脱することなく、他の変更、置換、及び改変も可能である。
〔付記1〕
バイナリデータファイルのコンテンツ不可知参照の為のコンピュータ実装方法であって、
入力シードを用いて表を事前生成するステップであって、表は所定の長さのビットの全ての順列を含むステップと、
前記バイナリデータファイルの長さを決定するステップであって、前記長さは、前記バイナリデータファイルのビット数を含むステップと、
前記バイナリデータファイルを部分ストリングにチャンクするステップであって、各部分ストリングは前記バイナリデータファイルの長さよりも小さい長さであるステップと、
前記バイナリデータファイルの各チャンクについて、そのチャンクが前記事前生成された表内にあるかどうかを判断し、そのチャンクが事前生成された表内にある場合には、そのチャンクに前記事前生成された表内のチャンクの位置のインデックスを関連付け、そのチャンクが前記事前生成された表内にない場合には、チャンクされたバイナリデータを更に小さなチャンクに分割するステップと、
チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップと、を含む方法。
〔付記2〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記バイナリデータファイルの代わりに、前記チャンクの数及び全ての関連するインデックスを記憶装置に永続化するステップを含む、付記1に記載の方法。
〔付記3〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記データファイルの代わりに前記チャンクの数及び全チャンクの関連するインデックスを送信するステップを含む、付記1に記載の方法。
〔付記4〕
前記送信するステップは、前記チャンクの数及び全チャンクの関連するインデックスをネットワーク上で送信する、付記3に記載の方法。
〔付記5〕
前記送信するステップは、前記チャンク数及び全チャンクの関連するインデックスをバス上で送信する、付記3に記載の方法。
〔付記6〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、
各順序付けられたペアがチャンクレベル及び関連するインデックスを示す、順序付けられたペアのタプルを作成するステップを含む、付記1に記載の方法。
〔付記7〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、前記チャンクの数及び全チャンクの関連するインデックスを記憶装置上に永続化することを含む、付記1に記載の方法。
〔付記8〕
前記記憶装置はディスクである、付記7に記載の方法。
〔付記9〕
前記事前生成された表がハッシュ表である、付記1に記載の方法。
〔付記10〕
前記事前生成された表が行列である、付記1に記載の方法。
〔付記11〕
前記事前生成された表が揮発性メモリに永続化される、付記1に記載の方法。
〔付記12〕
前記事前生成された表が不揮発性メモリに永続化される、付記1に記載の方法。
〔付記13〕
前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータを所定の長さのチャンクにチャンクすることを含む、付記1に記載の方法。
〔付記14〕
前記所定の長さが2メガバイトである、付記13に記載の方法。
〔付記15〕
前記所定の長さが2メガバイトよりも小さい、付記13に記載の方法。
〔付記16〕
前記所定の長さが2メガバイトよりも大きい、付記13に記載の方法。
〔付記17〕
前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータファイルを、同じサイズの2つのチャンクに再帰的に分割することを含む付記1に記載の方法。
〔付記18〕
チャンクの数及び全チャンクの関連するインデックスに基づいてデータを取得する方法であって、
入力シードを使用して表を事前生成するステップであって、前記表は、所定の長さのビットの全ての順列を含み、前記事前生成された表を使用してチャンクの数及び関連するインデックスを生成するステップと、
各チャンクについて、そのチャンクに関連付けられたインデックスで表内にデータを配置するステップと、各チャンクに関連付けられたデータを返すステップと、を含む方法。
〔付記19〕
各チャンクに関連するデータを返すステップは、
各チャンクに関連するデータを単一のビットストリームに連結することを含む、付記18に記載の方法。