FMVゲームの時代の古風なビデオ圧縮アルゴリズム

90年代には、興味深い状況が発生しました。コンピューターの計算能力は、少なくとも現実的なグラフィックを計算するには不十分でしたが、同時に、コンパクトディスクは当時の膨大な情報を記録する機会を提供しました。 一般に、アイデアは表面にありました。ビデオコンテンツのためにゲームイメージの品質を改善することは良いことであり、このコンテンツを書き込む場所があります。



しかし、問題がありました:その時の典型的なゲームの解像度は256色のパレットで320 x 200ピクセルで、フレームあたり64キロバイトまたは25フレームで1.5メガバイトを与え、CD読み取り速度は毎秒150キロバイトです。 つまり ビデオは非常に激しく刈り取らなければなりませんでしたが、圧搾すると、デコードできるようにする必要があります。コンピューターが弱く、デコードしていることを覚えているからです。 それにもかかわらず、ビデオゲームのメーカーは、不十分なパフォーマンスの問題をうまく解決し、同時に多くのビデオコーデックとゲームビデオフォーマットを作成しました 。それらのいくつかは、286番目(つまり、286番目)のプロセッサで再生できます。



このようにしてFMVゲーム (フルモーションビデオゲーム)の時代が始まりました。 アメリカのレーザーゲームの犯罪パトロールLost EdenCyber​​ia、Novastorm、さらに多くの人がビデオインターミッションのためだけにプレイしたCommand&Conquerでさえ多くの人がその代表を覚えていると思います。 当時はとてもクールに見えました。 わあ! わあ! まあ、私は彼らがこのビデオをどのようにエンコードしたのか疑問に思っていました、マルチメディアの本では上記と同じ問題の説明をしましたが、圧縮方法についてわかりやすいものは何も書いていませんでした、明らかに、著者はあまり理解せず、疑わしいものを再言噂。



実際、すべてが非常にシンプルであることが判明し、3つの方法しかなく、すべて非常にシンプルでした。



しかし、メソッド自体に取り掛かる前に、いたるところにトリックが使用されていました。 まず、もちろん、1秒あたり25フレームという問題はありませんでした。 すべてのポーリングでfpsがカットされ、1秒あたり最大10フレーム(インタラクティブダッシュのAmerical Laser Games)です。 12、14、15 fpsは一般的なフレームレートです。 第二に、もちろん、画像の解像度はほとんど常にカットされました。フレームの各側で10ピクセル(3%)をカットすると、約15%のゲインが得られるためです。 Novastormの開発者が行ったように、解像度を144ポイントずつ256に下げると、ゲインはほぼ半分になります。



したがって、256 x 144ドットと14フレーム/秒を使用すると、1.5メガバイトではなく、0.5メガバイトの非圧縮ビデオが得られます。これは有望です。



1.総当たりと無知(RLE、LZ)



開発者によって「ブルートフォースと無知」と解読されたBFI形式がありました。 このグループには、RLEおよびLZアルゴリズムに基づくさまざまな軽量バリエーションが含まれます。 これは驚くべきことのように思えるかもしれませんが、多くの場合それで十分でしたが、たとえば、ダイナミックシーンで十分な圧縮がなかった場合、いつでもフレームをスキップしたり、画像の解像度を2倍、または4倍( MM )下げることができます ギャラリー、Wing Commanderシリーズゲーム、Lost EdenなどのCryoスタジオゲームを撮影するアメリカのレーザーゲームのビデオは、この方法でエンコードされます。





Lossy RLEに特徴的な横縞に注意してください。



2.ベクトル量子化(VQ)



アイデアは簡単です:8つのフレームを次々に取り、それらをすべて4x2ピクセルのブロックにカットします。320x 156ピクセルの画像解像度で、これは5万個の24次元ベクトル(ブロックに8ピクセル、それぞれに3つの色成分ピクセル)。 次々と来るフレームは、多くの共通点を持っている可能性が非常に高いため、これらのベクトルの間には、互いに多くのフレームがあります。 次に、これらのベクトルを4096個のグループに分割し、各グループに対して重心を計算します。 重心からコードブックを作成し、コードブックへの12ビットリンクのチェーンの形式でファイルにフレームを書き込みます。 合計すると、フレームあたり約13キロバイトになります。これは、原則として、2スピードのシディロムに手頃な価格です。



ほぼこのアプローチは、Command&Conquerシリーズの初期のゲームで使用されていました。



デコードは明らかに非常に高速で安価ですが、この方法を使用してビデオを定性的にエンコードすることは非常に困難です。 VQを使用した全員がこれをうまく行ったわけではありません。 ここでは、ゲームCreature Shockのスクリーンショットをご覧ください。



3.ブロック切り捨てコーディング(BTC)



ここでも、すべてがシンプルであり、90年代に複雑なものは使用されませんでした。 256色の画像を保存するには、ピクセルごとに1バイトが必要です。 そして、色数を2つに減らしましょう。1ピクセルあたりビットが必要になり、8倍の圧縮とひどい品質の画像が得られました。 これについて何ができますか? 高い確率でかなり小さなブロック内のすべての色が互いに近いため、このアプローチを画像全体ではなく小さなブロックに適用します。 画像をブロック(4 x 4ピクセルなど)にカットし、それぞれに2色(個人用パレット)とこれらの色への16ビットのリンクを保存します。 16ピクセルのブロックあたり4バイトのみ、つまり 4倍の圧縮を得ました。 しかし、特定のブロックの2色が十分でないことが突然判明した場合、4色を保存できます。これにより、二重の圧縮が可能になります。 また、ブロックを4つの小さなブロックに分割し、それぞれについて2色を計算できます。



この方法は非常に人気があり、エンコードとデコードが簡単で高速で、適切な品質を提供し、実装が簡単です。 Novastormゲームは8 x 8ブロックを使用し、2、4、8色のパレットを使用できます。 有名なゲームZでは、8 x 8ピクセルのブロックへのスライスも使用され、必要に応じてそれらを部分に分割します( JV )。 Cyber​​iaには組み合わせたアプローチがあります。小さなブロックへの分割と異なるサイズのパレット( C93M95 )の両方を使用します。



Wikipediaで読むことができる元のBTCは、グレースケール画像を圧縮するように設計されており、色はブロックの平均と明るさの標準偏差を維持するように計算されます。 そのようなアプローチは、恐ろしい品質の結果を生み出すと言わなければなりません。 正しいパレットは、偏差の二乗の合計を最小化する必要があります-それは美しくなります。


もちろん、誰もが最も原始的な形式でフレーム間圧縮を使用しており、多くの場合、動き予測がありません。 パレット化されたビデオには明るさ補正の問題はなかったため、暗いシーンではフレームレートが視覚的に低下しました。 これは、最初のNeed For Speedのビデオで非常に顕著でしたが、4スピードサイダーに問題があると思いました。 私もそれを店に返そうとしました。





ゲーム「Rebel Assault」から撮影。 ブロックノイズ、VQブロックの繰り返しの特徴。 ブロック4から4、主に2トーン、ほとんどの場合、コードブックはBTCを使用してさらにエンコードされます。



計算能力が許容されるとすぐに、誰もが離散コサイン変換に基づいたコーデックを使用し始め、ゲームエンジンでビデオ挿入に完全に切り替わり、FMVゲームの時代は終わりました。



古いビデオ形式を研究し、コーデックをリバースエンジニアリングし、この知識を慎重に収集して保存する人々がいます。 ウェブサイトwiki.multimedia.cxにアクセスすることを強くお勧めします。 最新のコーデックに関するものを含む、オーディオおよびビデオの圧縮の問題に関心のあるすべての人のための多くの情報。



この記事ではmobygames.comのスクリーンショットを使用しました



All Articles