ANIM は、デジタル映画やコンピュータ生成アニメーションを保存するために使用されるファイル形式です(そのため ANIM という名前が付けられています)。ILBM 形式のバリエーションであり、 ILBM形式はInterchange File Formatのサブフォーマットです。[ 1 ] [ 2 ]
AmigaOSにおけるAnimの既知のファイル形式は、Anim1、Anim2、Anim3、Anim5、Anim7です。Anim1からAnim3は音声に対応していません。Anim5とAnim7は完全なムービーアニメーションファイル形式であるため、音声データを含めることができるはずです。
通常のILBMチャンクに加えて、ANIMファイルタイプでは以下の要素も定義されます。
圧縮モード:
1つのファイル内に複数の圧縮モードを設定することが可能です。
ANIM IFF フォーマットは、1988 年にカリフォルニア州に拠点を置くSparta Inc.の Gary Bonham によって、元々はAmigaコンピュータでアニメーション ビデオ シーケンスを作成するために開発され、Aegis Development の Amiga コンピュータ向けVideoscapeおよびVideo Titlerプログラムで初めて使用されました。 [ 1 ]非常に効率的で、既存の Amiga ILBM/IFF 標準ファイル フォーマットの公式サブセットであるため、Amiga のアニメーション ファイルの事実上の標準となりました。[ 2 ]
ファイル形式は以下の特性を備えている必要があります。
ANIMフォーマットでは、いくつかの圧縮方式が導入されてきました。これらのほとんどは歴史的に興味深いものであり、現在使用されているのは、Atariのソフトウェアプログラマーであるジム・ケントによって開発された垂直ランレングス符号化バイトエンコーディングのみです。
Amiga Anim7フォーマットは、1992年にプログラマーのWolfgang Hoferによって作成されました。
元々はコモドールCDTV用に作成され、後にAmiga CD32用に改良されたビデオ ファイル フォーマットはCDXLと呼ばれ、ANIM ファイル フォーマットに似ていました。[ 3 ] [ 4 ]
最小限のAnimファイルは、3つのILBMインターリーブビットマップ画像で構成されます。最初のビットマップは、次のフレームを作成するために必要な完全な画像であり、残りの2つは、最初の画像との差分として計算される「デルタ」画像です。
最初のフレームは通常のランレングス符号化されたIFF画像であり、これによりファイルの内容をプレビューできます。以降のフレームは、前のフレームとの差分のみを列挙することで記述されます。
最初のフレームが表示されている間、後続のフレームはグラフィックメモリ内のバッファに読み込まれます。Amigaは、ブリッターを使用してさらにフレームを読み込みながら、画面をほぼ瞬時に切り替えます。グラフィックチップセットはDMA機能を活用することで、CPUを中断することなくメモリにアクセスできます。この技術はダブルバッファリングと呼ばれます。
これをよりよく理解するために、AとBという2つの画面があり、表示を瞬時に切り替えることができると仮定します。最初のフレームは画面AとBに読み込まれます。画面Aが表示されます。フレーム1とフレーム2の差分が計算され、画面Bで変更されて表示されます。次に、このフレームとフレーム3の差分を使用して画面Aが変更され、画面Aが表示されます。これを繰り返します。フレーム2はフレーム1との差分として保存されますが、他のすべてのフレームは2つ前のフレームとの差分として保存されることに注意してください。
ANIMはIFF形式であり、そのチャンク構造は以下のとおりです。
フォームアニメーション * フォームILBM(最初のフレーム) ** BMHD(通常タイプのIFFデータ) ** ANHD(最初のフレームのタイミング調整用オプションのアニメーションヘッダーチャンク) ** CMAP(カラーマップ) ** 体 * フォーム ILBM (フレーム 2) ** ANHD(アニメーションヘッダーチャンク) ** DLTA(デルタモードデータ) * フォーム ILBM (フレーム 3) ** ANHD ** DLTA (等々...) 初期FORM ILBMには、CRNGなどの通常のILBMチャンクをすべて含めることができます。BODYは通常、標準的なランレングス符号化データチャンクになります(ただし、BMHDで指定されるその他の有効な圧縮モードも使用できます)。必要に応じて、最初のフレームのタイミングデータを提供するためにANHDチャンクをここに配置できます。ANHDチャンクがここにある場合、操作フィールドは0にする必要があります。
後続の FORMs ILBM には、BMHD の代わりに ANHD が含まれており、これは BMHD の一部を複製し、アニメーション フレームに関連する追加のパラメータを持っています。DLTA チャンクには、デルタ圧縮モードのデータが含まれています。古い XOR 圧縮モードが使用される場合は、ここに BODY チャンクが配置されます。さらに、必要に応じて (およびそれらを利用するコードがプレーヤー プログラムに配置される場合)、これらのそれぞれに他のチャンクが配置されることがあります。たとえば、カラー パレットを変更するための CMAP チャンクなどです。
ANIMsにおける基本的な前提は、ビットマップのサイズと表示モード(例:HAM)がアニメーションを通して変化しないということです。
DLTAチャンクはインターリーブされたビットマップ表現ではないため、これらのフレームにILBM形式を使用するのは不適切です。しかし、この矛盾は、この形式を生成/再生する市販製品が多数発売済み、または発売間近になるまで指摘されませんでした。
Animフォーマットでは、XORモード、ロングデルタモード、ショートデルタモード、ジェネラルデルタモード、バイト垂直圧縮の5つの圧縮方式が利用可能です。
ANIM の再生には、前述のように通常 2 つのバッファと、それらの間のダブルバッファリングが必要です。ANIM ファイルからのフレーム データは、非表示のフレームを次に表示されるフレームに変更するために使用されます。XOR モードを使用する場合、通常のラン レングス デコード ルーチンを簡単に変更して、必要な排他的 OR 演算を実行できます。非常に頻繁に発生するゼロ バイトの連続は無視できます。任意のバイト値とゼロ バイトの排他的 OR 演算では、元のバイト値は変更されないためです。すべての圧縮技術の一般的な手順は、まず最初の ILBM 画像を非表示バッファにデコードし、それをダブルバッファリングして表示することです。次に、この画像を他の (現在は非表示の) バッファにコピーします。この時点で、各フレームは同じ手順で表示されます。次のフレームは、DLTA データ (または BODY チャンクからの XOR データ) を適用して非表示バッファで形成され、新しいフレームがダブルバッファリングされて表示されます。このプロセスはファイルの最後まで続きます。
AmigaのAnim規格は、アニメーションGIFフォーマットの開発に影響を与えた。