ＪＰＥＧソースについて

・ＪＰＥＧの規格は非常に広範囲に及びます。
　その全てをサポートすることは無理＆組み込みでは無意味なので必要最小限のみサポートしています。
　現在サポートしているのは以下の機能です。
	基本ＤＣＴ
	フルカラー（ＲＧＢ各８ビット）または白黒（Ｙのみ８ビット）
	４種サンプリングファクタ（フルカラー時／１:１:１、４:１:１、２−:１:１、２Ｉ:１:１）
	不完全ＭＣＵ単位幅圧縮・展開（任意幅画像圧縮・展開可能）
	リスタートマーカー（圧縮はフル対応、展開は補正なしの対応）
	ＪＰＥＧファイルとしての圧縮出力可能
	展開側でファイル読み込み可能
	圧縮率変更
	圧縮範囲指定
	展開開始位置指定
	圧縮・展開サイズ指定（実画像中の左上一部）
	量子化テーブルＹ／Ｕ／Ｖ独立指定（ハフマンではＵ／Ｖは共通固定）
　また、追加機能として以下のものを組み込んであります。
	白黒展開
	縦倍圧縮・展開
	１／２、１／４、１／８圧縮・展開

補足）
展開側のリスタートマーカー処理に付いて
	本来、RSTの出現番号によってある程度のデータ補正が可能であるが、
	８ＲＳＴ以上飛んだら補正不可であるし、結構処理が面倒なので
	簡易対応のみとしている。

・このソースをいろいろな機器に組み込み実装することは自由です。
・但し、ここにあるソースそのものに対して修正を加えてはいけません。
　別途コピーして修正するように。
・バグがあったら勝手に直しましょう。でも報告はするように。
・サポートは、必要な範囲で行いますが義務ではありません。
・実装状況は開発.tec参照のこと。およそ普通の利用に必要な機能は実装済み。

・高速化のため内部演算が全て固定小数点演算であるため、
　実数演算に比べ少々誤差があるものと思われます。
　しかし、そもそも圧縮して元画像の情報をそぎ落としているのだから、
　許容範囲と考えています。

・ライブラリのサイズは、フルセット、68000のコードで３５Ｋ程度。
・ライブラリ内で機種依存があるのは下記で機種依存と書いてあるもの。
　これらも簡単に修正可能なはず。
・オンメモリ版とファイル版は同一ファイルからコンパイルオプション（定数定義）で
　作り分けます。混在も（多分）可能です。
・一部のオブジェクトは同一ソースからコンパイルオプション（定数定義）で複数作られます。
　詳細はmakeファイル参照のこと。
・途中で必要ワークはjpg.cの分＋スタック上にlongで64分＋各変数用位。
・intサイズは16bitでも大丈夫のはずですが、確認はしていません。
・内部処理は３２ビットの部分が多いので、３２ビットＣＰＵの方が確実に速くなるでしょう。
・Ｃレベルでの速度アップはもう無理ではないかと思われます。
　これ以上の速度が欲しい時は、アセンブラーに直しましょう。
　素直なコードのはずなので、ハンドアセンブルは簡単なはずです（それを考慮して記述しています）。

ファイル構成
BitIn.c		ビットストリーム入力
BitOut.c	ビットストリーム出力
dct2.c		ＤＣＴ
idct2.c		逆ＤＣＴ(IDCT=Inverse DCT)
HuffDC.c	ハフマン符号化ＤＣ
HuffAC.c	ハフマン符号化ＡＣ
HuffDCtbl.c	ハフマン符号表ＤＣ
HuffACTbl.c	ハフマン符号表ＡＣ
iHuffDC.c	ハフマン復号化ＤＣ
iHuffAC.c	ハフマン復号化ＡＣ
iHuff2HuffAC.c	ファイル内展開用ハフマンテーブルを内部圧縮用ハフマンテーブル形式に変換するＡＣ
iHuff2HuffDC.c	ファイル内展開用ハフマンテーブルを内部圧縮用ハフマンテーブル形式に変換するＤＣ
CmpiHuff.c	ハフマン符号比較
jfile.c		ファイルヘッダー作成
Readheader.c	JPEGファイルヘッダー解釈
MKHuff.c	ファイル用ハフマン符号表作成
MKiHuff.c	ファイル用ハフマン符号表→内部符号表変換
rmkhuff.c	ファイル用ハフマンデータからハフマンテーブルを再構築する
qtable.c	量子化テーブルなど
setQtable.c	圧縮率変更
RGB2YUV0.c	ＲＧＢ→ＹＵＶ変換：１ドット処理（機種依存）
RGB2YUV.c	ＲＧＢ→ＹＵＶ変換
GetRGB.c	ＲＧＢ→ＹＵＶ変換の不完全ＭＣＵにおける補間処理（機種依存）
YUV2RGB0.C	ＹＵＶ→ＲＧＢ変換：１ドット処理（機種依存）
YUV2RGB.C	ＹＵＶ→ＲＧＢ変換（機種依存）
press.c		圧縮（機種依存）
pressparam.c	圧縮パラメーター設定
expand.c	展開（機種依存）
_jpeglib.h	ライブラリ用ヘッダー
jpeg.h		ユーザー参照用ヘッダー

jpg.c		テストプログラム（機種依存）

jpg30.m		makeファイル(X68030用)
jpg30x.m	makeファイル(X68030用;ファイル版のみ)
jpg00.m		makeファイル(X68000用)

ドキュメント（全部テキストです）
jpeg.doc	関数群説明書
jpeg.tec	説明会の資料
開発.tec	実装状況
dct2.tec	ＤＣＴの説明
idct2.tec	逆ＤＣＴの説明
精度.tec	演算精度の話


[実行速度]
65536色のサンプル画像における速度(c.pic,RAMDISK上,100ms単位)
圧縮と展開の間に中間ファイルを作るタイプでの速度。
オンメモリ版ではほんの少し速くなる。

X68030
	MPU			68EC030 25MHz
	　データキャッシュ	256バイト
	　命令キャッシュ	256バイト
	システムバス		32bit/25MHz最大2clock wait
	GRAM			1ドット16bit(65536色)/RGB各5bit+共通輝度1bit
				512*512ドット
				10MHzバス

256*256画像		/BW
	圧縮	展開	圧縮	展開
	カラー		白黒
1:1:1	746	514	393	332	ファイル版
	725	504	378	322	オンメモリ版
4:1:1	418	373	328	325
	402	370	315	322
2-:1:1	529	426	351	332
	513	423	339	330
2I:1:1	522	429	345	335
	505	427	331	332

1/2処理(/12;128*128になる)
1:1:1	195	140
	189	137
4:1:1	112	103
	108	102
2-:1:1	141	117
	135	115
2I:1:1	138	116
	133	115

1/4処理(/14;64*64になる)
1:1:1	52	39
	49	37
4:1:1	31	29
	29	28
2-:1:1	37	32
	36	32
2I:1:1	36	31
	35	31

縦倍(/W;256*512になる)
1:1:1	1136	989
	1101	971
4:1:1	631	710
	605	704
2-:1:1	802	817
	773	811
2I:1:1	794	818
	765	814

512*512画像
	圧縮	展開	圧縮	展開
	カラー		白黒
1:1:1	2978	2057	1569	1327
4:1:1	1671	1490	1314	1302
2-:1:1	2117	1704	1409	1331
2I:1:1	2093	1715	1385	1342

512*512の1/2は256*256、1/4は246*256の1/2、縦倍は不可。
