ページへ戻る

− Links

 印刷 

DLL​/PICTURE0​/oldlog の変更点 :: OSASK計画

osaskwiki:DLL/PICTURE0/oldlog の変更点

« Prev[3]  
1: 2003-09-28 (日) 12:08:12 ソース[4] 現: 2024-01-08 (月) 12:58:40 ゲスト ソース[5]
Line 1: Line 1:
*** [[DLL/PICTURE0]]のこめんと欄の過去ログ *** [[DLL/PICTURE0]]のこめんと欄の過去ログ
 +
 +-単独実行できるようにしたい場合、オフセット0x48をコールするようにするとbim2bin3のランタイムとカブらなくていい感じです。 -- [[I.Tak.]] SIZE(10){2003-09-27 (土) 21:28:46}
 +-僕はこれからDLLの骨格と、このDLLを使った汎用画像viewerを書きます。 -- [[K]] SIZE(10){2003-09-27 (土) 21:29:16}
 +-はい!BMP担当。ところでtest049にはlib_execcmd相当の相当の関数しかなくて、execcmd0やexeccmd1みたいのが無いのはなんでですか? -- [[I.Tak.]] SIZE(10){2003-09-27 (土) 21:31:37}
 +-なるほど・・・。そのほうがいいかな?じゃあとりあえず、呼び出しアドレスを0x0048に変更。将来的には単独起動で汎用画像viewerってことで。どっちにしてもDLL利用のサンプルは必要なので、DLLを使った汎用画像viewerは書きます。 -- [[K]] SIZE(10){2003-09-27 (土) 21:32:37}
 +-execcmd0やexeccmd1相当のものは、あのサンプルに入らなかったのでサボりました。まあ、あそこまで作っておけば誰でも作れるんじゃないかなー、と。execcmd1相当のものはおそらく不要と思われますが、execmd0相当のものはほしいですね。多分今回いっしょに作ります。 -- [[K]] SIZE(10){2003-09-27 (土) 21:37:15}
 +-I.Tak.さんはやいなあ。じゃあ、BMPはお任せします。サンプルは32bit-gboxにする予定なので、そっちを先に作ってもらえると嬉しいです。 -- [[K]] SIZE(10){2003-09-27 (土) 21:37:56}
 +-jpegができるかな…fgetcなんかをマクロにすれば小変更であがりそう…とりあえずチャレンジ -- [[くーみん]] SIZE(10){2003-09-27 (土) 21:46:40}
 +-とりあえず任せた。>JPEG -- [[K]] SIZE(10){2003-09-27 (土) 22:00:53}
 +-展開先バッファの大きさもないとバッファオーバーフローします。 -- [[I.Tak.]] SIZE(10){2003-09-27 (土) 22:11:11}
 +-ええと、それはdecode0_BMP()のことですね?それなら心配はいりません。ファンクション0x0004を呼ぶときは呼び出し側が事前に責任をもってファンション0x0002でxsizeとysizeを確認しています。そして、バッファのサイズが、(xsize * bpp / 8 + skip) * ysizeあるときにしか呼び出しません。 -- [[K]] SIZE(10){2003-09-27 (土) 22:24:48}
 +-もっと多様な展開をしたいときは、0x0005以降のファンクションを使います。でもどんな内容にするかは僕は決めませんので、みんなで相談して決めてください。 -- [[K]] SIZE(10){2003-09-27 (土) 22:26:20}
 +-なお、ファンクション0x0003はDLLバージョンファンクションの予定で空けてあります。バージョン機能が必要になるかどうかも分かりませんが。今はシェルがDLLを積極的にサポートしてくれないので、バージョンサポートが必要かもしれません。・・・とちょっと思ったから空けておきました。 -- [[K]] SIZE(10){2003-09-27 (土) 22:31:16}
 +-とりあえず今のところは、バッファコードの0x7fffをとって、それで判定していいです。もちろん、ちゃんと区別できるならそれにこしたことはありませんが。 -- [[K]] SIZE(10){2003-09-27 (土) 22:34:21}
 +-くーみんさん、JPEGデコーダをstatic変数を使わずに書ける? 急に心配になりました・・・。 -- [[K]] SIZE(10){2003-09-27 (土) 22:47:16}
 +-みなさんごめんなさい。infoにもdecodeにもテンポラリとして使えるenvを渡し忘れていました。64KBのうちの最初の32バイト以外は自由に使えますので、使ってください。関数の引数が変わったのでご注意ください。ご迷惑をおかけしました。 -- [[K]] SIZE(10){2003-09-27 (土) 23:06:37}
 +-mallocは使ってませんし…もともとのjpeglsにもstatic変数ないですよね…実はもう完成した感じなんですが -- [[くーみん]] SIZE(10){2003-09-27 (土) 23:08:27}
 +-ごめんなさい、staticありましたね、必要ないので(jpegls内で使われていないので)全てコメントアウトしたんです。 -- [[くーみん]] SIZE(10){2003-09-27 (土) 23:12:35}
 +-static変数が本当にないんですか? ええと確認すると、一番最初のジグザグテーブルはstatic変数ですよ? -- [[K]] SIZE(10){2003-09-27 (土) 23:15:35}
 +-それと(たぶん全部消しただろうとは思いますが)、文字定数も全てstatic変数です。あとこれは確認しないと分からないのですが、倍精度、単精度定数もstatic変数扱いされることがあります。まあなんであれ、dataセクションがなければ(あっても0バイトなら)、何の問題もないです。 -- [[K]] SIZE(10){2003-09-27 (土) 23:18:49}
 +-int zigzag_table[]…でもstaticでしたっけ?そしたら、ポインタ渡すように書きなおします。 -- [[くーみん]] SIZE(10){2003-09-27 (土) 23:19:25}
 +-C言語的にはそういうのはstaticといわないのですが、静的変数であることは事実で、だからここではstatic変数と呼んでいます。>staticでないグローバル変数 -- [[K]] SIZE(10){2003-09-27 (土) 23:25:09}
 +-4関数を含まないPICTURE0.BIN(単独起動もありうるので.BINです)は、509バイトになりました。今は単独起動するとダミーのウィンドウが出てきて、それでおしまいです。そのうちkjpegls.binみたいにセレクタが出てくるようにします。 -- [[K]] SIZE(10){2003-09-27 (土) 23:29:17}
 +-asファイルのどっかに.dataと書かれていたらいけないわけですね。switchはifにして解決しましたが、zigzagは変数の羅列にすればいいのでしょうか? -- [[くーみん]] SIZE(10){2003-09-27 (土) 23:34:12}
 +-KJPEGLSから単独起動用のルーチンを借りてくることにします。24:00までにはアップロードしたいです。まにあうかな。 -- [[K]] SIZE(10){2003-09-27 (土) 23:37:25}
 +-そう、変数代入の羅列で乗り切れます。とりあえずはそれで解決してください。最初だから動けばそれで十分です。 -- [[K]] SIZE(10){2003-09-27 (土) 23:38:26}
 +-解決しました。 -- [[くーみん]] SIZE(10){2003-09-27 (土) 23:47:11}
 +-ファイルアップしておきます。上の会話は必要なければ消していいでしょうか? -- [[くーみん]] SIZE(10){2003-09-28 (日) 00:00:14}
 +-ううう、間に合わなかった・・・。あと15分くらいかな。 -- [[K]] SIZE(10){2003-09-28 (日) 00:00:54}
 +-とりあえず、1日くらいは取っておいてください。>会話 -- [[K]] SIZE(10){2003-09-28 (日) 00:01:40}
 +-struct DLL_STRPICENV *env,をつけてアップしなおしました -- [[くーみん]] SIZE(10){2003-09-28 (日) 00:03:12}
 +-単独起動可能な(単独起動時は汎用viewerの)やつができました。 http://osask.ne.nu/test050a.lzh (4.00KB) Makefileにjpeg_dll.objを書き足してからmakeして、僕のほうにもくーみんさんのほうにもバグがなければ、JPEGビュワーにはなるはずです。ああ、これだけじゃだめだ。cmd_info()のところで、BMPの関数を呼ばないように、ifとその直後のgotoをコメントアウトしてください。 -- [[K]] SIZE(10){2003-09-28 (日) 00:17:48}
 +-僕もこれから実験してみます。>jpeg_dll.c -- [[K]] SIZE(10){2003-09-28 (日) 00:18:22}
 +-DLL_STRPICENVの警告がうるさいので、 struct DLL_STRPICENV { int work[16384]; } と入れるといいと思います。>jpeg_dll.c これでとりあえず黙ります。 -- [[K]] SIZE(10){2003-09-28 (日) 00:25:36}
 +-動いたんですか?これから睡眠です -- [[くーみん]] SIZE(10){2003-09-28 (日) 00:29:00}
 +-"chendct.c"っていうのはどこにあるんでしょうか? -- [[K]] SIZE(10){2003-09-28 (日) 00:29:47}
 +-jpeglsの中にあったやつです、わからない人もいそうなのでアップします -- [[くーみん]] SIZE(10){2003-09-28 (日) 00:31:50}
 +-やっとリンクできた・・・。僕のソースのviewer.cの void OsaskMain() は void OsaskMain0() のミスでした。 -- [[K]] SIZE(10){2003-09-28 (日) 00:40:16}
 +-decode errorになりますよ。どんな値を返しているんだろう・・・。 -- [[K]] SIZE(10){2003-09-28 (日) 00:45:12}
 +-decode0は成功したら0だよー。 -- [[K]] SIZE(10){2003-09-28 (日) 00:46:03}
 +-どっちのバグなのかはっきりしませんが、最後までは動きません。とりあえずinfoまでは問題ありません。>jpeg_dll.c  そこから先はうまくいきません。構造体JPEGのサイズが64KBを上回っているのかな・・・。 -- [[K]] SIZE(10){2003-09-28 (日) 01:00:47}
 +-動いたよー。 http://osask.ne.nu/test050b.lzh (15.0KB) -- [[K]] SIZE(10){2003-09-28 (日) 01:13:10}
 +-明日になったら(って今日だけど)、単独起動ではなくDLLとして動かしてみた場合を実験したいと思います。くーみんさん、どうもありがとう。 -- [[K]] SIZE(10){2003-09-28 (日) 01:21:34}
« Prev[3]