2008/05/04(Sun)教えてもらったからできた!

はてブ数 2008/05/04 19:50 計算機な日記::ソフト作り つーさ

J-SONさんありがとう! ありがとう!

というわけで、続 C++/CLI で Stream継承して Ogg Vorbis をデコードするクラスを書きたいよ

同じところで填った人のために書いておこうと思う。

要するに、コールバックされる関数は
"基本的にはStream内のメソッドを呼び出したときにしか呼ばれない" ので、メソッドの頭で pinして、
OggVorbis_File::datasource の中身を更新してからov_ナントカを呼び出せばいいというお話だった。

あぁそうなのか。datasourceの値なんて後から変更できないと思っていたよ。
Win32での開発におけるコールバックの値なんて後から変更できないことがほとんどだから、
初めてソースを見せてもらったときは、"datasourceの値がいじれるなんてそんなっ"って感じでしたが(笑

200行あまりで ref class OggDecodeStream : public Stream ができたよ!
後はこれをC#なりVB.net(使わんけど)なり、.NET言語からよ参照して呼び出してやりゃいいと。

というわけで最後にもう一度書きます。

J-SONさんありがとう! ありがとう!

2008/05/02(Fri)根を詰めても実らないこともある

はてブ数 2008/05/02 3:25 計算機な日記::ソフト作り つーさ

賞金付きSRMも忘れて oggVorbis (というよりも、C++/CLI) と格闘。
C++/CLIで作る。System::IO::Streamを継承した、Vorbisデコーダクラス。
oggVorbisのライブラリは元ファイル読み込みにcallback関数が使える。
read_func(void *ptr, size_t size, size_t nmemb, void *datasource);
コンストラクタにVorbisのStreamを引数にとる。
Read(...)はデコードしたPCMを返す。

ことにしようと思った。

ov_open_callback から詰まった。
コールバック関数のポインタとして何をどうやって渡せばいいんだろう。
callbacks.read_func = (size_t (__cdecl *)(void *,size_t,size_t,void *)) (void*)Mashal::GetFunctionPointerForDelegate(gcnew read_func(this, &Vorbis::VorbisStream::inner_read));
こうですか? わかりません><;;
# 呼び出し規約からして怪しすぎるので、たぶんこれじゃあ動かないよなぁ……

あるいは、read_funcの最後の void* はユーザ定義の値を入れておけるんだけど、
これにManagedなクラスの参照を入れるのはpinする他は無理よなぁ……。
Unmanagedなクラスならポインタを突っ込んでおけば解決しちゃうけど。

結局……どうしようかなと思う。
OggVorbisの再生はどうしてもしたいので、
今回は普通のWin32なDLL + .NETのプラットフォーム呼び出し(C#でも使う)のか。
でも、なんか、.NETのDLL作ってみたいなと、思うんだけど。

……わかんないなぁ……。

2008/03/02(Sun)実数計算の落とし穴

はてブ数 2008/03/02 14:05 計算機な日記::ソフト作り つーさ

たとえばHSPで、

dialog int( 0.7 + 0.1 + 0.1 + 0.1 )

とか書いたとき、それが1にならないのは、
ある程度のレベルのプログラマにとって常識だけれど、
(HSPに限っては)これはやはり1とすべきだと思う。roundがないと。。
そんなキワドイプログラム書かないから大丈夫? あぁ、そう。
しかしなんか、立て続けに4件もツッコミが入るとゎ。

ちなみに、回避するには int(strf("%.0f", ... )) でくるむのが楽ちん。

2008/02/22(Fri)突撃 となりのキーボード

はてブ数 2008/02/22 1:36 計算機な日記::ボクと計算機 つーさ

紅しょうがを食べるようになったマイミク日記に

だったら祐一だけ、今日の晩ご飯は紅しょうが。
お茶碗いっぱいの紅しょうがに、紅しょうがを掛けて食べるの。
飲み物はしょうがの絞り汁

って書こうと思ったら、すでに書かれてた。1時間遅かったorz

キータップが汚れてきたのでキーボードを掃除しました。
洗濯機でがらがらやってもよかったのですが、
キーを1つずつ外して、まぁゴシゴシ拭きました。
で、一つずつキーをはめていったら、なぜか

HI390050.JPG
HI390051.JPG

続きを読む

2008/02/07(Thr)ω^1000 = 1

はてブ数 2008/02/07 20:57 計算機な日記::算数学 つーさ

1の1000乗根について考えてみた。
一体いくつなんだろう、そもそも考えられる範囲に存在するのか?

>あれー、ルート負が出てきたよー
「んなアホな」

今日は、友達と大学の食堂で、期末のラスボスである 数学演習II の対策をしていたところ、計算ミスから話がわき道に逸れて……。

続きを読む

2008/01/21(Mon)Wake on Wan

はてブ数 2008/01/21 3:55 計算機な日記::ボクと計算機 つーさ

できるようにした。
BIOSでEnableしても有効にならないのは、M/BのLANコネクタが対応してないっぽい。
NICを買って刺したらうまくいった。

これで、ケータイからでも何でも、マシンを起こせる。
起きたらVNC。これは便利くさい。

ねむい。