ndsでのjpeg表示に再挑戦(9)
jpegのデコードはほぼ完成しました。最後に、展開パラメータを指定できるように、下記のような構造体を用意しました。
Jpegの展開パラメータ設定用構造体
typedef struct JpegPara{ int desired_number_of_colors; bool quantize_colors; int dct_method; bool two_pass_quantize; bool do_fancy_upsampling; int dither_mode; int scale_num; int scale_denom; } JpegParam;
デコードを始める前に、予めパラメータをセットしておきます。
パラメータの初期化
Jpegの展開パラメータを初期化するプログラムも用意しました。
struct JpegPara JpegSetup; //Jpegの展開パラメータ設定用 // ******************************************** // jpegのcinfo構造体の展開パラメータの初期化 // ******************************************** void JpegIni( void ) { //Set up JPEG parameters. //画質よりも速度重視のパラメータ(-fast) JpegSetup.desired_number_of_colors = 216; JpegSetup.quantize_colors = FALSE; JpegSetup.dct_method = JDCT_FASTEST; JpegSetup.two_pass_quantize = FALSE; JpegSetup.do_fancy_upsampling = FALSE; JpegSetup.dither_mode = JDITHER_NONE; //サイズは100% JpegSetup.scale_num = 1; JpegSetup.scale_denom = 1; }
これでほぼ完成です。
あと、PMMファイルをndsの画面に表示するプログラムを、さくっと二つ作りました。詳細は省きますが、下記のような感じです。
//************************************************** // PPMファイルを指定画面の指定位置から指定サイズに圧縮して表示します。 // 表示位置(x,y)、表示サイズ gWidth×gHeight、アスペクトは保たれません // 元画像サイズより大きくなるときは、画素が飛びます。 //************************************************** bool PpmCompView( FILE *ppmfp, uint16 *screen, int x, int y, int gWidth, int gHight ); //************************************************** // PPMファイルの指定領域を、指定画面に表示します // 表示場所(gx,gy)、表示サイズ gwidth×gheight、読み込む画像位置(mx,my) //************************************************** bool PpmView( FILE *ppmfp, uint16 *screen, int gx, int gy, int gwidth, int gheight, int mx, int my );
今日はこの辺で・・・。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム