These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は4月23日(火)22時49分。 10時を過ぎて、そろそろ深夜に入ります。


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2008年04月 来月
01 02 03 4 05
06 07 08 09 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2008年04月01日(火)

swfed CWS 対応

CWS (圧縮形式の SWF バイナリ) に対応しました。
% php swfdump.php chara.swf  | less
magic=CWS  version=6  file_length=2902016
frame_size=(0, 0)-(800, 545)
frame_rate=30.0  frame_count=1183
tag=SetBackgroundColor(9)  length=3
tag=JPEGTables(8)  length=574
tag=DefineBitsJPEG(6)  length=31897
        jpeg_id=1  jpeg_data_size=31895
tag=DefineShape(2)  length=55
	<略>

改造イメージ:

swf_object.c の input と output に以下の処理を追加
#include <zlib.h>
uncompress(new_buff, &origsize, old_buff, bs->data_len - SWF_HEADER_SIZE);
compress(new_buff, &compsize, old_buff, bs->data_len - SWF_HEADER_SIZE);

プログラム:

課題:

  • DefineBitsJPEG2,3 対応
  • メモリリークの洗い出し
  • php 5.2.x で試してみる

2008/10/10 追記:

Flash SWF 上の JPEG の扱いについて以下の Wiki にまとめました。

2009/03/03 追記:

zlib の使い方について以下の Wiki にまとめました。

2009/03/10 追記:

Flash SWF と swfed について以下の Wiki にまとめました。

悲しいときー

自分の作ったWebページが知らない人にブックマークされてて、 タグに「微妙」とか付いるのを見かけたときー
Flash Lite (携帯端末向け Flash) - Yoya Wiki pwiki.awm.jp:yoya 
 ウェブ   FLASH LITE Wiki なるみ 微妙  1 users 2008年02月05日 
 ActionScript  flash  FlashLite 
確かにカオスなので整理します。ごめんなさい。^^; バイナリいじりに夢中で、CS3 は触ってないんですよねー でも、そろそろ戻ろう。折角 Web Premium 買ってるんだし。

ゲームの進行方向の話(アムロは左に向かうがマリオは右に向かって進むのは何故か?)

自分の感覚が左右で対照じゃないのは、 山登りで右が崖の時に特に怖い事から実感してます。
あと、立体的にボタンを表示する時に、左上から照明を当てるような グラデーションをつけると自然になる事を考えると、左からというのは 結構必然なんじゃないか。と思ったり…
左ききの人がいたら、この辺の感覚の違いを聞いてみたいですねぇ…

2008年04月02日(水)

swfed DefineBitsJPEG3 対応

DefineBitsJPEG3 の分解まで成功しました。
あと、メモリの使い方が荒かったのでブラッシュアップ。(正常系でのメモリリークは全て潰しました)

実例:

% php swfdump.php chara.swf
magic=CWS  version=6  file_length=2902016
frame_size=(0, 0)-(800, 545)
frame_rate=30.0  frame_count=1183
tag=SetBackgroundColor(9)  length=3
tag=JPEGTables(8)  length=574
tag=DefineBitsJPEG(6)  length=31897
        jpeg_id=1  jpeg_data_size=31895
	<略>
tag=DefineBitsJPEG3(35)  length=9289
        jpeg_id=10  jpeg_data_size=6212  alpha_data_size=15792
ちなみに、tag 全体の length が 9289 なのに、 その一部分である alpha_data が 15792 でより大きいのは、 alpha_data 部はファイルには圧縮した形で格納されている為で、 伸張すると大抵は逆転します。
(基本的に、alpha_data はマスクなので圧縮がよく効く)

プログラム:

課題:

  • DefineBitsJPEG2 対応
  • DefineBitsJPEG3 対応 (分解は出来てるので、getAlphaData の実装のみ)
  • php 5.2.x で試してみる

2010/05/09 追記:

ミクシィ「一人勝ち」終わったのか 「グリー」モバイルで女性会員急増

最近の mixi KY *1 ぶりはヒドイですからねぇ…
*1: 朝日新聞珊瑚事件の KY でなく、空気読めないの方ね。念の為。 :-)

2008年04月03日(木)

swfed rect 処理整理

某所から DefineEditText も編集できるといいな。
…といった声が聞こえたので、調査開始。
何でもテキストツールで貼り付けたデータが、 このタグで SWF ファイルに埋め込まれるそうです。 ↑ ここに記述のあるフォーマット構造によると、 movie_header にも出てきた rect の構造が含まれていました。
という訳で、共通ルーチンとして swf_rect.[hc] に切り出しました。
typedef struct swf_rect_ {
    unsigned char align;
    int      x_min;
    int      x_max;
    int      y_min;
    int      y_max;
} swf_rect_t;

extern int swf_rect_parse(bitstream_t *bs, swf_rect_t *rect);
extern int swf_rect_build(bitstream_t *bs, swf_rect_t *rect);
extern int swf_rect_print(swf_rect_t *rect);
今日はとりあえず整理だけ…

プログラム:

追記 (2010/01/12):

検索でこられる方が増えてきたので、まとめページを作りました。

動画共有サイトの違法動画って

誰がどうチェックしているの? 地道に目視チェックなのね。大変そう…

2009/04/22 追記:


2008年04月05日(土)

swfed DefineEditText 対応

rect 処理修正:

テキストツールで貼り付けた矩形の情報を表示すると 以下のような頓珍漢な値が表示されていました。(min が max より大きい…)
tag=DefineEditText(37)  length=42
        edit_id=2
        rect=(393, 393)-(37, 146) (f_size=13)
        text=1 wwrap=0 multi=0 pass=0 ro=1 col=
これで、自分がフォーマットを勘違いしているのかと悩んだのですが、 この値を埋めるフィールドが可変な上に負の値も扱える事に気づいて、 bitstream は unsigned 前提で作ってるので、 2の補数処理をどこかに入れないとダメな事に気づきました。
↓処理はこんな感じで。関数名が思いつかなったのでダサいの許して… ○rz
int two_negative(int num, int size) {
    int msb = 1 << (size - 1);
    int mask = msb - 1;
    if (num & msb) {
        return - ((num^mask) & mask) - 1;
    }
    return num;
}
結果。
tag=DefineEditText(37)  length=47
        edit_id=2
        rect=(-8, -2)-(101, 36) (f_size=12)
それっぽい値になりました。(基準点がいまいち分からないけど…)

DefineEditText の string:

文字列の抽出の仕方が分かりました。
静止テキストの時は インスタンス変数が *1 変数名 が指定できない =variable_name が空で、 その時は、'\0'の 1 byte のみ展開されます。
SWF フォーマットの string は null terminate のバイト列という定義なので、 少し考えれば当たり前なんですけど。
tag=DefineEditText(37)  length=47
        edit_id=2
        rect=(-8, -2)-(101, 36) (f_size=12)
        text=1 wwrap=0 multi=1 pass=0 ro=1 col=1 maxlen=0 font=1
        layout=1 no_sel=1 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=
fobaa   initial_text=thisistest
よし…

プログラム:

インスタンス名:

DefineEditText にはインスタンス名を埋めるフィールド(variable_name)が含まれますが、これを埋められるのは「ダイナミックテキスト」と「テキスト入力」2パターン。どちらも Lite1.1 ではインスタンス名が埋められません。
Lite1.1 で使える「静止テキスト」では、インスタンス名を指定できないので入れ替えをする場合は swf をダンプして edit_id を調べて…
という面倒な手順を踏む事になりそうです。

4月9日加筆:

インスタンス名に関して大幅に間違えていたので、
4月7日の日記 で修正しました。
ごめんなさい。ごめんなさい。ごめんなさい。(⊃д⊂)

2010/01/12 加筆:

文字列を思いっきり勘違いしてました。パスカル文字列のように 初めの1byteが文字列長(0~255)で、その後ろに文字列長分のテキストが続きます。
そして、先の 0 は null terminate でなく 0 個の文字列を意味します。

*1: 4月9日修正

“飛び出すテレビ”が家庭に 4月発売

夢のある話ですが、
ヒュンダイITジャパン製
(´д`)…

賢い人が犯しがちな「やりすぎ」というミス

機能や性能よりもハードルの低さがこのビジネスの決め手だったわけだ。
賢くなくても犯しがちだと思うので、自分も気をつけよう。

2008年04月06日(日)

Flash SWF フォーマット

フォーマットが何となく分かってきたので、少し理解をまとめました。 ついでに、JPEG データの扱いについて。 ふと思ったのですが、JPEGTables は SWF ファイルの中に一つしか持てず、 DefineBitJPEG2,3 は、その一つの JPEGTables を見ているようですが、 複数の画像で圧縮テーブルを共通に持つ事って出来るのでしょうか…
そもそも圧縮テーブルが何か分かっていない自分に絶望した。(´Д`;)

swfed DefineBitsJPEG3 対応(2)

DefineBitsJPEG3 と DefineEditText の build 処理を実装。(動作確認はしていませんが…)

プログラム:

課題:

  • DefineEditText の文字列入れ替えの処理を作る
  • DefineBitsJPEG2,3 の JPEG データ構造に対応する

「キーボードクラッシャー」 Gangster/Slikk さんのこと

演技があまりに真に迫り過ぎていたため、クラスメートからまで
素で狂っていると思われ、いじめられてしまったり、また、
ありがちな「ゲームの危険性を考える」うんぬんのメディアから
不当な扱いを受け、本人はMAD作りが嫌になってしまったようだ。
迫真の演技すぎるのは気になっていたけど、 やはり大丈夫じゃなかったのね…

携帯電話について

少しブックマークを整理。

2008年04月07日(月)

swfed DefineEditText 対応 (2)

文字列処理が怪しかったので修正しました。 今度の dump は(rect 以外は多分)完璧。
あと、勘違いしていた事があって、インスタンス名と別に変数名を 指定するボックスがあって、その変数名で ActionScript から アクセス(参照したり代入したり)出来る事を確認しました。
でもって、Lite1.1 で静的テキストしか使えないなんて、 適当な事いってごめんなさい。インスタンス名無しなら普通に、 ダイナミックテキストも入力テキストも publish 出来ました。(;ω;)

以下に dump した結果をつけます。

静的テキスト:

tag=DefineEditText(37)  length=37
        edit_id=2
        rect=(-10, -2)-(134, 18) (f_size=13)
        text=1 wwrap=0 multi=1 pass=0 ro=1 col=1 maxlen=0 font=1
        layout=1 no_sel=1 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=
        initial_text=abcde

ダイナミックテキスト:

tag=DefineEditText(37)  length=39
        edit_id=3
        rect=(-2, -2)-(116, 16) (f_size=13)
        text=1 wwrap=1 multi=1 pass=0 ro=1 col=1 maxlen=0 font=1
        layout=1 no_sel=0 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=var1
        initial_text=opqr

入力テキスト:

tag=DefineEditText(37)  length=37
        edit_id=4
        rect=(-2, -2)-(86, 16) (f_size=12)
        text=1 wwrap=1 multi=1 pass=0 ro=0 col=1 maxlen=0 font=1
        layout=1 no_sel=0 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=var2
        initial_text=xyz

プログラム:

PC-8801mkIISR(我が青春)のゲームミュージック&静止画集

おっさんホイホイktkr

78ちゃんねるまとめサイト:今年も懲りすぎな円谷公式エイプリルフール

今更な話しですけど円谷すごいゎ…

Pukiwiki でページ内遷移

サンプル
- [[DefineBitsJPEG2>#tag21]] のデータに
これで、ページ内の #tag21 に遷移できました。

2008年04月08日(火)

awm.jp ドメイン更新料支払い

カードによるお支払いありがとうございます。下記ご請求に対し、
\6,300 の支払いを受け付けましたので、ご連絡いたします。
<略>
                           株式会社ヒューメイア
1年間でこれは高いわ。(⊃д⊂)

2008年04月09日(水)

Flash SWF 上の JPEG の扱い

ming jpeg patch 公開サイトが(一時的か恒久的か分かりませんが) アクセスできなくなっています。
Please come back in the begining of Dec to this page.
It is curently not available. 
google で jpeg.c.diff をキーワードにして、この日記に来る方が 増えてきたので、お役に立てればと cache (?) URL を以下のページに 張って置きました。 あと、ついでに色々と理解が深まってきたので説明文も更新してます。

北京五輪の聖火リレー妨害をネタにしたゲームが登場

ちょw やっぱり作ってる人いたww

PHP extension 配列の返り値

素晴らしすぎるサイトを発見。

実験コード:

PHP_METHOD(swfed, getTagList) {
    int i;
    zval *data;
    array_init(return_value);
    for(i=0; i<2; i++) {
        ALLOC_INIT_ZVAL(data);
        array_init(data);
        add_index_long(data, 2*i, 2*i+10);
        add_index_zval(return_value, i, data);
    }
}

実験結果:

array(2) {
  [0]=>
  array(1) {
    [0]=>
    int(10)
  }
  [1]=>
  array(1) {
    [2]=>
    int(12)
  }
}
あっさり成功…

2008年04月10日(木)

swfed getTagList

昨日見つけた 素敵なサイト のおかげで完成。(というか原文見つけられないなんて、英語弱すぎだわ自分…)
折角なので、実験ページを作ってみました。

php で upload:

upload の仕方を忘れてたので参考にしたページ

実験ページ。:

SWF ファイルをここでアップロードすると、 SWF の構造を解析(とりあえず tag と長さだけ)した結果をテーブルで返します。

サンプル:

実験ページのプログラム。

プログラム:


2008年04月11日(金)

swfed getTagDetail

何となく作れました。

実験ページ:

画像とテキストの情報を少しだけ詳しく表示します。

サンプル:

実験ページのプログラム。

プログラム:


2008年04月12日(土)

塔ノ岳に行ってきました。

登山仲間が出来たので、塔ノ岳に挑戦しました。
昨晩に飲み会があって睡眠を4時間しかとってなかったり、 序盤で早々足がつって不安なスタートでしたが、 結果的には何とかなりました。
足がつってても痛みを無視すれば歩き回れるものなんですね… (後が怖いけど…)
飲み物を何時もより少なめの 2L にしたところ、ギリギリでした。 余裕が無いと怖いので、次回はもう少し大目に持っていこうと思います。
あと、雨具が無いのは山を舐めすぎだと反省。 (傘はあったけど、今回のレベルの山だと意味なし) 大雨がきたら風邪決定ですよね… 途中で小雨が降ってきた時はドキドキ…

登山口:

まずはヤビツ峠のバス停から車道を北上します。

少し歩けば、分かりやすい登山口が見つかります。

序盤:

霧が濃くて風景どころか先の道も見えません。一寸先は真っ白。

難所:

足場が悪いので鎖につかまって降ります。
手が滑って落ちると崖に真ッさかさま。結構、命がけ。


突風が吹いて体勢が崩れると崖に真ッ(ry
尚、写真だとスケールが分かりにくいですが、かがまないと鎖につかまれない位小さいです。

荒い道:


岩場が多くて思った以上に体力を使います。

頂上:

天気が良いと景色が良いそうですが、霧がかかって遠くが全く見えません。(・ω・)

甘酒を頼もうと思ったのに、何故かコーヒーを注文してました…
(頭が)疲れてたのかしら。体の疲労は感じてないのに。(;ω;)

下り坂:

2時間半、ひたすら下ります。

(下から眺めたところ、ここを登るのは 楽しs(ryキツそう…)

下山:


地元の野菜が100円で売られてます。

メモ:

  • 朝は登山者で一杯。バスが満員になって臨時のバスが出る程。
  • バスのアナウンス「遭難者が多発してます」(((;゚Д゚))))
  • 登山初心者にこのコースは多分無理。
  • (当然だけど) 下界が晴れでも、山は雨が降る事があるので雨具は常備すべき。
  • (当然だけど) 下界が暖かくても、山は寒い事があるので厚着すべき。
  • 水は大目に持っていくべき。(ギリギリは精神的につらい)
  • ポール(ステッキ)は便利。(もし無かったら足がつった時点で終了でした)
  • 道の途中で写生してる人がいた。真似しようかな。登る目的が増えるし。
  • 休憩の度に携帯の(基地局ベースの)位置情報取得を試みたけど一度も成功せず。

2008年04月13日(日)

swfed getJpegData デバッグ

getJpegData で抽出した画像が壊れてビューアで表示できない事が あるのでデバッグしました。

JPEGデータの先頭:

成功パターン
0x00000: ffd8 ffe0 0010 4a46 4946 0001 0100 0001        JFIF
失敗パターン
0x00000: 4034 3900 4034 3900 4946 0001 0100 0001  @49 @49 IF
上書き… ですよね。これって。

バグの箇所:

data = swf_object_get_jpegdata(swf, &len, jpeg_id);
new_buff = emalloc(len);
memcpy(new_buff, data, len);
free(data);
RETURN_STRINGL(data, len, 1);
そりゃダメだゎ… ○rz

プログラム:

修正したので、公開プログラムも更新。

それでも画像が表示されない事がある:

これで、DefineBitsJPEG から画像データを抽出できたと思いきや、 失敗するケースが残っていました。
php jpegdump.php ~/public_html/php/flash/swfdump/test.jpg
0x0000: SOI(Start of Image)(FFD8)
0x0014: APP0(FFE0) length=(2+)14
0x0027: SOF0(FFC0) length=(2+)15
0x0035: SOS(FFDA) length=(2+)10
0x7c95: EOI(End Of Immage)(FFD9)
DefineBitsJPEG は JPEG 画像がそのまま入ると思ってたけど、 そうとも限らないようです。修正っと… JPEG セグメントの入れ替えライブラリを整備しないと この辺の表示や DefineBitsJPEG2,3 の入れ替えも無理ですね。 頑張ろ。

田舎に泊まろう! テレビを見る目の悪意

テレビって怖いデスネ…

なぜ5歳の息子を茶髪にしたらいけないのですか?

どっちに転んでも負けゲームだよな。
如何ともし難い感漂う。
ダメな人に相談して状況が悪化するいい例ですね…
茶髪で通したいなら、もっとロックに自己主張すれば良いのに、
自己主張をしたいんだけど、社会でうまくやりたいと思ってるから、
社会の方がおかしいって論理になっちゃうんだな。
なぁなぁで済ます日本の国民性に、中途半端な個人主義が入り込んで 消化不良を起こした結果なのかもしれません。
戦後教育の「成果」の一つが、今のモンスターペアレントなのでしょう。
当人の資質もあるけど、世間に取りざたされるほど、そういう親が 増えているのは明らかに育ってきた環境のせいだと思う。

2008年04月15日(火)

JPEG セグメント分割

SWF の画像入れ替えで JPEG のセグメント並び替え処理が要る ので、とりあえず、セグメント分割のプログラムを作って見ました。 php で以前作った事があるので、それを参考にしてます。 よく見ると、SOS セグメントの長さがきちんと取れてないや… ○rz

プログラム:

jpeg_segment.[ch], bitstream.[ch] の 4 ファイル

コンパイル:

gcc -D__COMPONENT_DEBUG__ jpeg_segment.c bitstream.c

実行結果:

%  ./a.out ~/data/aria.jpg
marker=SOI(FFD8): length=0
marker=APP0(FFE0): length=14
marker=APP1(FFE1): length=32
marker=DQT(FFDB): length=65
marker=DQT(FFDB): length=65
marker=SOF0(FFC0): length=15
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=SOS(FFDA): length=9536
marker=EOI(FFD9): length=0
とりあえず、完成。

2008年04月16日(水)

JPEG セグメント分割&復元

SWF 書き換えではセグメントを入れ替えた後、JPEG 形式に戻すので、 セグメントを分割したのを、元に戻すだけの処理を作ってみました。

プログラム:

白状すると、bitstream_putbytesBE の処理が間違えていたので修正しました。 コンパイル方法は昨日と同じで、
gcc -D__COMPONENT_DEBUG__ jpeg_segment.c bitstream.c

実行結果:

% ./a.out aria.jpg tmp.jpg
marker=SOI(FFD8): length=0
marker=APP0(FFE0): length=14
marker=APP1(FFE1): length=32
marker=DQT(FFDB): length=65
marker=DQT(FFDB): length=65
marker=SOF0(FFC0): length=15
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=SOS(FFDA): length=9536
marker=EOI(FFD9): length=0
% md5sum aria.jpg tmp.jpg
0f5cf415f0d01626632df9e391b1b1eb  aria.jpg
0f5cf415f0d01626632df9e391b1b1eb  tmp.jpg
%
さて、自己参照構造体で作ったリスト構造の入れ替えは どうやるのが綺麗かしら… (と考えてる時点で負けな気もしますけど)

コード整理:

ただの自己参照構造体だと append(最後にnodeを追加)処理の際、 毎回リストを辿るか、node をアクロバティックに持ちまわる事に なりかねないので、node の構造体を独立させてみました。
typedef struct jpeg_segment_node_ {
    int marker;
    unsigned char *data_ref; /* do NOT free */
    unsigned int data_len;
    struct jpeg_segment_node_ *next;
} jpeg_segment_node_t;

typedef struct jpeg_segment_ {
    jpeg_segment_node_t *head, *tail;
} jpeg_segment_t;
こんな感じで。 コンパイル方法も実行結果も同じなので略…

GPS が欲しい

↑これが欲しくなって帰宅途中、電気屋さんを回ったのですが、 結局、見つかりませんでした。 (・ω・)
登山ショップとかでないと売ってないのかな…
あ、アマゾンとかで買うのは負けな気がするので、それは出来ません。(・△・)

参考:

↓この辺とか見てると、楽しそうでいいなぁと…
大きな ファームウェアのバージョンアップがあると、
同じ機種でも全く違う機種になってしまうことが知られている。
また 使う目的によって このバージョンの方がよく似合っている
ということもあります。
	<略>
実際 新しいバージョンにアップしても 以前のほうが
ずっと良かったとは いつもよくある話です。
ぉっぉっ (;;^ω^)

2008年04月17日(木)

swfed で SWF から JPEG 画像を取り出す

セグメント入れ替えの処理 (swf_jpeg.c):

マーカーの並び順を定義して
int jpeg_std_marker_order[] =
{
    0xE0 /* APP0 */, 0xE1 /* APP1 */, 0xE2 /* APP2 */, 0xE3 /* APP3 */,
    0xE4 /* APP4 */, 0xE5 /* APP5 */, 0xE6 /* APP6 */, 0xE7 /* APP7 */,
	<略>
    0xDD /* DRI */ ,
};
その順番でセグメントを追加していきます。
jpeg_segment_t *jpeg_data,
jpeg_data = jpeg_segment_parse(data, data_len);
for(i=0; i< jpeg_std_marker_order_num; i++) {
    int m = jpeg_std_marker_order[i];
    unsigned char *d;
    unsigned short d_len;
    while(d = jpeg_segment_steal_node(jpeg_data, m, &d_len)) {
        jpeg_segment_append(jpeg_output, m, d, d_len);
    }
}
そんだけ。

プログラム:

スクリプトは成功:

吸出し元
% php swfgetjpegdata.php chara.swf  44 > 44.jpg
吸い出した画像

Webアプリは失敗:

apache 越しに実行すると chara.swf は処理できるのですが、 他は大抵、segmentation fault で落ちます。 特に、DefineBitsJPEG2 は全滅… ○rz
まだ怪しい処理があるみたいです…

課題:

↑この辺に DefineBitsJPEG2 の tag の入った SWF ファイルが沢山あるので、 とりあえず、これらが処理できるように頑張ります。

S駅で足止め

今日は少し早めに帰宅しようと9時過ぎに会社を出たのですが、 人身事故の影響で新宿で二時間足止めされました… 落ちたとか飛び込んだとかでなく線路を歩いていたというのが、怖いですね…
この日は天気が悪く電車内が蒸し風呂だったのと、 左隣にいる見るからに不潔なおっさんが爪楊枝で何かしたり、 頻繁に髪をかいてふけを飛ばしてくるし、 前には酔っ払いのじいさんが二人で交互に お酒の匂いがする息を吹きかけてくるし、
…マジ最悪でした… (。´Д⊂)
# 席に座れただけマシかもしれませんけど。
たまたま百科事典を持っていたので、 あ行から順に読んで気を紛らわせられたのが幸い。 アイゼンとかアルピニストとか登山用語ばかり頭に入ってくるのは、 趣味がそっち方向にシフトしているという事かしら…

ソフトバンク役立たず:

どこぞの掲示板で交通情報でもチェックしよううかと思ったけど、 午後11時頃から少なくとも1時頃まで、 ソフトバンク携帯のブラウザで接続が全く出来ませんでした。 輻輳でもしてたのかな…
早く別キャリアに移動しないと…

2008年04月18日(金)

swfed で SWF から JPEG 画像を取り出す (2)

別ホストで試したところ、apache 越しに動かすと画像が 壊れたり、コマンドラインで動かしても Segmentation fault で 落ちたりしたので調査が進展しました。

状況:

JPEG画像の並び替えをしている時にデータが壊れている模様。 (ここまでは予想通り)。そして、データが壊れた為に jpeg_segment 構造体を作るルーチンが NULL を返し、 開放する場所でその NULL ポインタを踏んで、落ちていたと…
アホすぎる…

調査:

画像データが正常に並び替えできた場合と壊れた場合の diff を とってみました。
< 0x00000: ffd8 ffe0 0010 4a46 4946 0001 0100 0001        JFIF
< 0x00010: 0001 0000 ffdb 0043 0006 0405 0605 0406         C
---
> 0x00000: ffd8 ffe0 0000 4a46 4946 0001 0100 0001        JFIF
> 0x00010: 0001 0000 ffdb 0000 0006 0405 0605 0406
7c7
< 0x00050: 2d30 2d28 3025 2829 28ff db00 4301 0707  -0-(0%()(   C
---
> 0x00050: 2d30 2d28 3025 2829 28ff db00 0001 0707  -0-(0%()(
JPEG セグメントの長さのフィールドに 0 が入ってる…
このフィールドの処理で、long ポインタの引数に short ポインタの変数を渡してる所があったので修正。

実験:

今度はうまくいきました。 画像を抽出できない SWF ファイルがありましたら、連絡を頂けると幸いです。m(_ _)m

プログラム:

登山グッズ購入

トレッキングポールを購入。 ↑これの LEKI HIKING 48cm~100cm カーボンライト
あと、コンパスも。(SILVA ECH-141)

GPS:

石井スポーツで GPSMAP 60CSx を見つけましたが、 閉店直前のあわただしい中で買うのが嫌なので購入は明日に延期。
保護シールを売ってなくて、どうしようか迷ったというのもありますが。 後で買い足しましょうかね…

「自分を飛躍的に成長させる状況」と「自分が潰されてしまう状況」の見分け方

分かってても避けられない状況ってあるよね。色んなしがらみで…

MS:「VistaのUACはユーザーをいらいらさせるために搭載した」

Vista はやっぱりいらない子…

2008年04月19日(土)

GPSmap60CSx 購入

↓このお店で購入しました。 液晶保護フィルムはあるし、ホルダーも数種類あるし 地図のインストール *1 まで御願いできて、いい感じです。
対応したおじさんは慣れてないようだったけど、お姉さんは話の分かる人だった。

店へのアクセス:

横断歩道を渡り左に曲がります。
駅を出て4件目になるお蕎麦屋さんの「おそば増田屋」の前を過ぎ、
総武線のガードをくぐったらすぐに右方向へ曲がります。
この説明が微妙で、 増田屋を探しても見つからず(店が閉まっていたのも?) 明後日の方向に行ってしまいます。画像の矢印を信じて進むが吉。

購入したもの:

登山目的なので、腕に装着するホルダー *2 と 10m等高線地図、あと液晶保護フィルムを一緒に購入しました。

地図データ:

10m等高線地図 (Japan TOPO 10M) ですが、これだけで 2G の殆どを使って しまうので、GPS にバンドルされてる市街地図(City Navigator)のデータは これまたバンドルされてる 1G microSD に分けて入れる事になります。
つまり、使う状況に応じて 二枚の microSD を入れ替えねばなりません。 携帯の SIMM カードみたいな差込口なので、あまり頻繁に作業したくないなぁ… ま、慣れるんでしょうけど。^^;

カシミール3D:

最近、バージョンアップされていると、 お店のお姉さんから教わったので早速チェック。
カシミール3D Ver8.8.0 リリース(2008/02/27)
アップデートと…

トラッキング:

GPS から PC に軌跡を取り込んでみたら、 購入前の運搬工程「台湾>米国>日本」のラインが地図上に表示されました。
台湾で作ったのを横流しするだけでなく、 米国でも製品の電源を入れて動作確認してるんですね… きっと。
さすがに運搬中の軌跡はないので拠点間を直線で結ぶ事になりますが、 (当たり前とはいえ) 図法によって道が異なって表示されるのを見て、 改めて、メルカトル脳に侵されているのを実感しました。
メルカトル図法
実際の最短距離

参考:


*1: Bz エディタで特定オフセットをゴニョゴニョしてたのは見なかった事にしよう…
解除コードが ASCII でそのまま埋め込まれてるのか…

*2: 腕が太い人向けっぽく、自分がつけるとカナリ緩い事に帰宅してから気づいた…

ゆるキャラ問題を考える

色々と共感できる部分が多いのでブックマーク。
まぁ、それでもアレ(鹿角童子)はねーYO。と*個人的には*思うけど。^^;
偉いけどヒマな幹部が大勢いる会社などは大変だろう。
 勝手にやると「俺は聞いてない」などと言われてしまうから、
みんなを呼んで会議など開き披露する。
<略>
みんなが思いついたことを脈絡もなく言い募り、挙句に、
「じゃあそんなことを盛り込んで」とか下に無茶振りする。
どこかで聞いたような話だゎ…
幸い自分は巻き込まれてないけど。

2008年04月20日(日)

GPS を持って大山登山

早速、使ってみました。

ルート作成:

ナビ機能を使ってみたいので、カシミール3D でルートを作成。
地図で右クリックして「新規作成」>「ルート作成」 でクリックで線を作って引き終わったら「確定」を選択。
「通信」メニュー>「アップロード予約」で、GPSデータエディタで 右の画面で対応するルート名を選択して、
「通信」>「アップロード予約」>「選択データ」といった感じ。
結果

登山:

自分の後ろに若い集団がいたので、若いものに負けてたまるかと 追いつかれないように必死で登っていたら 何時の間にか頂上に着いてました。

受信感度:

バスや電車の中でも普通に衛星を捕捉できます。
バッグの中にしまってても問題なし。
木が茂ってる所でも問題なし。
深い谷に入るとさすがに無理だけど、 空が見えないので、どうしようもない。^^;

トラック:

軌跡が記録できていたので、kml に落として google earth で表示。
迷ってる様子がそのまま表示されてて恥ずかしい。(〃∇〃)
尚、谷に入って途切れてるのは遭難したとかでなく、電波が 取れなかったものと思われます。

ちなみに、カシミール3D はトラックファイルを *.trk でファイル保存できて、
それを、以下のツールで kml に変換すると google earth に データを渡せるようになります。

列車遅延:新人の集中乗車でダイヤ乱れ 首都圏で相次ぐ

そういえば、ゆとり世代が社会j(ry

vine-users ML

Taro Oka って人の投稿がウザいので抜けた。 もう Vine 使う事もないかな…

2008年04月21日(月)

swfed replaceEditString 実装完了

DefineEditText の string replace 処理自体は既に作ってあったので php から橋渡しさせただけですけど。

失敗談:

magic が潰れてたりとボロボロでした…
% php swfreplaceeditstring.php textedit.swf var1 ABC > tmp.swf
% fdmp tmp.swf
  addr :  0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000: 28e2 2300 28e2 2300 7000 0960 0000 9600  ( # ( # p  `
0x00010: 000a 0100 4302 0000 003f 0c13 0000 0001      C    ?
	<略>
0x00080: ffff 0200 0000 0000 0028 0076 6172 3100           ( var1
0x00090: 4142 4300 8906 0602 0003 0018 a286 8e7f  ABC
	<略>

失敗の原因:

swfed.c: PHP_METHOD(swfed, output)
    data = swf_object_output(swf, &len);
    new_buff = emalloc(len);
    memcpy(new_buff, data, len);
    free(data);
    RETURN_STRINGL(data, len, 1);
… ○rz
以前、getJpegData で全く同じバグを見つけたのに、 同じ処理がある output の修正を忘れてたという…

DefineEditText 出力のバグ:

magic は直りましたが、書き換えた部分が微妙に壊れてます。 font 指定が off になってたり…
壊れる前
tag=DefineEditText(37)  length=37
        edit_id=2
        rect=(-10, -2)-(134, 18) (f_size=13)
        text=1 wwrap=0 multi=1 pass=0 ro=1 col=1 maxlen=0 font=1
壊れたデータ
tag=DefineEditText(37)  length=37
        edit_id=2
        rect=(-10, -2)-(134, 18) (f_size=13)
        text=1 wwrap=0 multi=0 pass=1 ro=1 col=0 maxlen=0 font=0
これを見て、rect の後の bit がズレてるのかなと、 ふと、rect の後の byte align をとってない事に気付き、
swf_tag_edit_output_detail の処理で、
swf_rect_build(bs, &swf_tag_edit->rect);
bitstream_align(bs); ← ☆これ☆
bitstream_putbit(bs, swf_tag_edit->edit_has_text);
を追加したら解決しました。

プログラム:

課題:

DefineBitsJPEG2,3 の画像入れ替えの処理は実装済みですが、 まだ、動かしていません。(テストデータを作るのが面倒なので…)

2008/10/10 追記:

Flash SWF 上の JPEG の扱いについて以下の Wiki にまとめました。

httpd が起動しなくなりました

httpd restart で apache が起動しなくなったので、 log を見ると
% tail -2 /var/log/httpd/error_log
[Mon Apr 21 23:02:37 2008] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads.
[Mon Apr 21 23:02:37 2008] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.24057) (5)
semaphores 開放忘れのバグがあるようです。
# ipcs -s  | grep apache | tail -2
0x00000000 29229176   apache    600        1
0x00000000 29294713   apache    600        1
# ipcs -s  | grep apache | wc
    114     570    6156
えーっと…
# ipcs -s | grep apache | \
  perl -e 'while (<>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'
リソースを削除しました
リソースを削除しました
リソースを削除しました
	<略>
これで解決。

2008年04月22日(火)

swfed 改善 (identity 内部メソッド追加)

更新しないブロックなのに、データを構造化してシリアライズし直したり、
そもそも image_id, edit_id は生データから固定オフセットで抽出できるのに、
杓子定規に構造化してから抽出してたので、その辺りの不満を解消。

プログラム:

画像のマスクデータ:

DefineBitsJPEG3 のテストをするには 差し替え画像のマスクデータがいるので、
この際、マスクデータの生成ルーチンも書こうかしら… ↑これのラベリング処理が使えないかと思うけど、どうなんでしょ。

FFXI への誘惑

↑これ見てたら、久々に FFXI で遊びたくなったけど、 仕事がめっちゃ忙しいので我慢我慢… (;ω;)

150万本突破 「モンスターハンター」大ブレークの理由:

185 バクテリア(甘粛省) 2008/04/21(月) 14:39:21.95 ID:2Q2+6BAKO
PSP&モンハン買うのと、FF11買うのとどっちがいいかな?

186 ゲーマー(もんじゃ) 2008/04/21(月) 14:40:15.01 ID:I7qp1sp50
>>185
その金と時間を勉強か仕事に向けるといいんじゃないかな
改めて、MMO は我慢しようと誓いました…

2008年04月23日(水)

swfed 画像抽出バグ修正

某所 トップの flash から画像を抽出したところ 中途半端に表示される画像が生成されました。

調査:

HugFlash で抽出した画像。
% jpeg_segment  ~/top_0.jpg
marker=SOI(FFD8): length=0
marker=APP0(FFE0): length=14
marker=DQT(FFDB): length=65
marker=DQT(FFDB): length=65
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=SOF0(FFC0): length=15
marker=SOS(FFDA): length=159023
marker=EOI(FFD9): length=0
失敗した画像。
% jpeg_segment  ~/top_0-fail.jpg
marker=SOI(FFD8): length=0
marker=APP0(FFE0): length=14
marker=DQT(FFDB): length=65
marker=DQT(FFDB): length=65
marker=SOF0(FFC0): length=15
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=DHT(FFC4): length=29
marker=DHT(FFC4): length=179
marker=SOS(FFDA): length=27951
marker=EOI(FFD9): length=0
見た目のまんま、データ部が途中で切れてます。
って、あれ…
159023 と 27951 って キリがよさそうに見える。(*'ω'*)
 dec    hex
159023 26D2F
 27951  6D2F
やっぱり…
JPEG セグメントの長さを入れるフィールドが 2byte なので、 セグメントの長さを unsigned short で保存してたけど、 SOS は長さフィールドの無いストリーム・データなので、 0xFFFF のサイズを超える事があるのね…

プログラム:

という訳で、 0xffff を超えたサイズの SOS セグメントを持つ画像を処理できなかった 不具合を修正しました。

2008年04月24日(木)

swfed 画像抽出バグ修正 (2)

画像抽出で似てるけど別のバグを発見。 これから抽出した画像が、中途半端に表示されました。
正しい画像はこっち→

調査:

壊れた画像のJPEGセグメント
marker=SOS(FFDA): length=439
marker=RST0(FFD0): length=392
marker=RST0(FFD0): length=333
marker=RST0(FFD0): length=344
あーっ…。RST は 0...7 でローテーションするんでした…
正しい並び
marker=SOS(FFDA): length=439
marker=RST0(FFD0): length=392
marker=RST1(FFD1): length=361
marker=RST2(FFD2): length=373
marker の order を決め付けて単純に並び替えちゃダメじゃん。(´Д`;)
あと、HugFlash で展開したのを見ると、未知のタグもありました。
marker=APP0(FFE0): length=14
marker=<Unknown>(FFFE): length=36
marker=<Unknown>(FFEE): length=12OK
もちょっと真面目に並び替えを実装してみます。

修正イメージ:

SWF -> STD JPEG
SOF0...SOF2 の直前に DQT を、直後に DHT を配置する。
STD -> SWF JPEG
DQT と DHT を SOI と EOI で括り、その後ろに(SOI, EOI を含む)残りのセグメントを配置。

プログラム:

テストページ:

これで、あずまんがOP フラッシュの画像も吸い出せます。
一枚しか入ってませんけど。:-)

2008年04月25日(金)

「青少年インターネット規制法案」が成立すると、日本のネットは完全に死ぬ

つまり、青少年健全育成推進委員会というどこの誰だか知らない
5人が作った判断基準が適用されるというわけ。結局、どういう
判断基準になるのかはまだ具体的に何も決まっていないのに、
なぜか先に法律から決めようという、順番がめちゃくちゃな状態。
しかも、法律になるとこの5人が決めた内容が基準になるため、
既存の法律を変えることなく、いくらでもあとからどんどん規制
する中身を自由自在に増やしたり変えたりができるわけです。
やりたい放題ですね。
これは… ひどい…

ガキに見せられなくなるフィルタリングごときでネットって死んでしまうの?:

子供に見られる可能性がある時点でほぼ全てのオープンなサイトが 対象になりうるので、この見出しは問題を矮小化してると思う。
自殺サイトに裏サイト勝手に無料で作らせてガキに自殺者が出て問題になってて
民間の自助努力とやらで何も解決しないから立法が業を煮やして
これは同意なんだけど…
運用できそうもない法律作ってガス抜きしようという腹かどうかも確かめず
どうやったら確かめられるんでしょうね…

アナログ放送に「2011年7月放送終了」のメッセージ表示 ー 停波半年前にはアナログ放送が常時レターボックスに

これも… ひどい…
テレビ離れが進んでくれれば、 ネット事業ウマーで自分的には仕事がやりやすくなりますが、 実際にはテレビから離れられない人の方が圧倒的に多いでしょうね。

「アナログ」という字幕を出す前に:

ふむ。デメリットだらけのシステムに移れって言われても… といった感じ。

JASRACが本当に搾取したもの

JASRACが私たちから本当に搾取したもの。それは日本の音楽の未来だ。
2001年頃だったか、JASRACが登場したことによりインターネット上の
MIDI配信サイトは全滅した。
ついでに、色々とブックマーク。

2008年04月26日(土)

yum install apachetop を試みる

お友達 が CentOS5 の yum で apachetop を入れてたので真似してみました。
# yum じゃ無理だと思って手動インストールしようとしてた。^^;
↓セットアップはこちらを参考に
# vi /etc/yum.repos.d/CentOS-Base.repo

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
includepkgs=clearsilver python-clearsilver trac
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

[kbs-CentOS-Extras]
name=CentOS.Karan.Org-EL$releasever - Stable
gpgcheck=1
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
enabled=1
baseurl=http://centos.karan.org/el$releasever/extras/stable/$basearch/RPMS/
includepkgs=python-docutils python-imaging

# yum --enablerepo=dag --enablerepo=kbs-CentOS-Extras update
	<略>
Reducing Dag RPM Repository for Red Hat Enterprise Linux to included packages only
Finished
Reducing CentOS.Karan.Org-EL5 - Stable to included packages only
Finished
No Packages marked for Update/Obsoletion
# 
# yum --enablerepo=dag install apachetop
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Reducing Dag RPM Repository for Red Hat Enterprise Linux to included packages only
Finished
Reducing CentOS.Karan.Org-EL5 - Stable to included packages only
Finished
Parsing package install arguments
Nothing to do
… さて、諦めて寝るか… ○rz

遺書をPCに残したフリをしてHDD全消去させるプログラムを実際に仕込むとどうなるか

別の手を考えよう…

フリーゲーム論─インフレのバランス

後で読もっと。

2008年04月27日(日)

仏果山 => 半原越 => 経ヶ岳コース

GoogleEarth で軌跡を見たのですが、どうも地図と合ってないようで…
*1 カシミール3D →
確かに何度か道から外れてた気もしますが、ここまでひどくは無いはず。(´Д`;)

登山前:

バス停から民家を通って登山口まで30分程歩きます。 (遠回りしているので参考にしないで下さい)

世俗の街並が続きます。

ようやく見覚えのある登山口を発見。
(来た事があるのですぐ分かりましたが、初めての人だと迷子になりそう)

仏果山 (登山前半):


ひたすら登ります。

車道が見えて序盤終了。

仏果山 (登山後半):

車道を横切って、また登ります。

鉄塔

仏果山頂上:

←登ってみました
展望台の眺め (見晴らしはよいけど、かなり怖い…)

このとき、GPS がフリーズしました… う~む…

仏果山 => 半原越:


急な下り、そして 難所


肩幅もない狭い道で左は崖。(((;゚Д゚)))


岩場が続きます。

山岳修験者のはなし (明治維新の神仏分離令で廃止されたそうで (;ω;)



リッチランドの分岐から下りが激しくなります。

車道と交差

経ヶ岳:

この辺りで足がつって休憩
経石
頂上


以前、登山を挫折した 場所に到着。


車道と交差。


ここで登山っぽい道は終了。

まとめ:

  • ヒルが出るらしいのと実際に虫が多いので、登るのは4月までにしとこ。
  • 展望台に登るのはかなり怖い。見晴らしが良すぎるしグラグラするし。
  • GPS がフリーズした。電源スイッチを押したら復旧したけど今後が不安。
  • 半原越は難易度がそこそこ高い。少なくともピクニック気分では無理。
  • 標識の無い分かれ道が結構あるけど、自分でさえ間違えなかった(?)ので大抵の人は大丈夫。
  • 足がつった時、右左(両足を揃える)左右(両足を揃える)の順で階段を登るようにしたら何とかなった。困った時お勧め。
  • 途中で下着を着替えたら体力がかなり回復した。相当体を冷やしてたらしい。
  • 途中にトイレがないのはやっぱりキツい…

*1: Terrain(地形) を表示レイヤから外さないと、軌跡が途切れ途切れになります
参考: http://slashdot.jp/~j3259/journal/398895

Google Base

Google Base というものの噂を聞き、アクセスしてみた。
Already use Google Base?
yoya@awm.jps items
何か面白そうなリンクがある…
ポチッとな☆
履歴
Redirecting
Redirecting
Redirecting
Redirecting
Redirecting
<略>
無限、redirect されました。Google 様がこんな初歩的なミスを。(・ω・)

2008年04月28日(月)

中国製のシスコ製品のニセモノが米政府機関で多数発見、FBIが本格捜査に着手

やるなぁ、中国… (勿論、悪い意味で)

殺された人の数 - 平成19年(2007)の殺人発生数は戦後最低

要するに能力の問題で、マスコミの人間は信じられないほどに知識がなく
調べる能力もないために、普通の人には何か裏に大きな陰謀でも渦巻いて
るように見えてしまうものなのです。
なるほど…
会社でダメな仕事やってる人を見て、組織の変な力関係の影響かと思いきや、 指摘してみると単に担当者が考え無しなだけだったりする事が多々あります。 この辺は考えすぎにも注意しないとですね。
黙って他山の石にするのが賢いんだろうけど、自分には無理。(・ω・)

バカな裁判官が航空管制をガタガタにさせるって・・・(追記あり)

↓これと似た問題かしらね。

ガソリンの買い置きは大変危険なので止めましょう

知りませんでした… 周りで買い置きを考えてる人がいたら止めよう。

地上デジタル普及遅れ消費者軽視を連発

テレビ番組には興味が無いけど、家にあるテレビを使わないのは勿体無い。
ニュースサイトの動画とかニコニコの人気動画を順繰りに再生してテレビに 映し続ける事って出来ないかな。

2008年04月29日(火)

swfed getJpegAlpha 不具合修正

alpha channel データの入っていない DefineBitsJPEG, DefineBitsJPEG2 の image_id を指定すると segmentation fault で落ちるバグがあったので修正。 ついでに image_id に対応するタグを探す処理を少し軽くしました。

抽出例:

swfgetjpegdata.php chara.swf  10 > chara-10.jpg
swfgetjpegalphadata.php chara.swf  10 > chara-10-alpha.raw
マスクデータの JPEG への変換 (要 Netpbm)
cat char-10-alpha.raw  | btimes 3  | rawtoppm 84 188 | \
                         ppmtojpeg > chara-10-alpha.jpg
JPEGデータ n JPEGデータ αチャネル n αチャネル

プログラム:


2008年04月30日(水)

JPEG 画像のプロテクト方法 for 携帯

お友達から以下の URL を教わりました。 このおかげで、以前、FFFE のマーカー付き JPEG 画像を見つけて何だろうと 思った疑問が氷解。
この記事によると COM セグメントだそうです。

プログラム:

という訳で対応しました。
jpeg_marker_name_t jpeg_marker_name_table[] = {
    {0xD8, "SOI"},
    {0xE0, "APP0"}, {0xE1, "APP1"}, {0xE2, "APP2"}, {0xE3, "APP3"},
    {0xE4, "APP4"}, {0xE5, "APP5"}, {0xE6, "APP6"}, {0xE7, "APP7"},
    {0xE8, "APP8"}, {0xE9, "APP9"}, {0xEA, "APP10"},{0xEB, "APP11"},
    {0xEC, "APP12"},{0xED, "APP13"},{0xEE, "APP14"},{0xEF, "APP15"},
    {0xFE, "COM"},
    {0xDB, "DQT"},
	<略>

課題:

当たり前ですが、jpeglib にもセグメント分割の処理があります。 全て自前で処理するのはやめて、この仕組みに載せられないか調査中。
jpeg-6b/jpeglib.h
struct jpeg_marker_struct {
  jpeg_saved_marker_ptr next;   /* next in list, or NULL */
  UINT8 marker;                 /* marker code: JPEG_COM, or JPEG_APP0+
n */
  unsigned int original_length; /* # bytes of data in the file */
  unsigned int data_length;     /* # bytes of data saved at data[] */
  JOCTET FAR * data;            /* the data contained in the marker */
  /* the marker length word is not counted in data_length or original_l
ength */
};

これで、28 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project