kumaryu日記
2010-02-01
_ 日記
土日はなんにもしてねーような。なにもしてないわけではないんだが。
どうもやる気出ないでいたんだが、しんどくなってから体調が悪いんだと気付くとかやってた。
Rikoは微妙な改造を進めて、とりあえずはリソースの扱いを一通り実装したかなーというところ。ビルドすら通ってないんだけど。どうもめんどい作業すぎて進まないな。ruby/daeを一旦止めて電車の中でも作業したほうがいいかもしれん。
ruby/daeはスキーマ書き終わったって間違ってかいてあったけど、前回までで書いたのはCOLLADA Physicsね。FXしんどいよ!!
あと日曜は画面取り込み転送DirectShowFilterを。フィルタのカテゴリを指定したらデバイス一覧には表示されたが、今度はIAMConfigStreamインターフェースが必要だというので実装。
しかし実装したがやっぱりインターフェースが無いとかいわれてしまう。困ったなぁ。調べてたらIAMStreamConfigインターフェースはpinじゃなくてfilterに実装するもんだというのを発見。おいおいドキュメントにはしっかりpinに実装しろって書いてあんじゃねーか!!
たしかに既にピンには実装してあるメソッドの名前違いみたいなのを実装しなくちゃいけなくて、これはもしかしてフィルタに実装するものかとは思ったよ。思ったけどドキュメント確認したらやっぱりピンに実装しろって書いてあるんだもの!
で、amcapサンプルではなぜかエラーが出るもののWindowsMediaEncoderではちゃんと取り込めるようになった。めでたしめでたし。
タイムスタンプが適当すぎて1fpsとかで出力されちゃったので16msにしてやってわーい60fpsとかやったらやけに重い。やけに重いというかスワップしまくってスラッシングしてるようだ。見てみるとエンコード中にがんがん使用メモリが増えていく。これはおかしいな。
メモリリークかと思ったんだけど、同じルーチンを通してるプレビュー中は問題ない。これは設定がおかしいんだろうなぁと。
すげー悩んだんだけど、やっぱり時間設定が適当なのはやばすぎるだろうと、設定するタイムスタンプをちゃんと実時間に即したものにした。わーい200fpsとかで取り込んでるよこの人!
しかし状況はかわらず。つか200fpsっておかしいだろエンコ追いつかねーだろどうすりゃいいんだこれ。
あ、FillBufferの内部で待ってやればいいのか。ということで前回の取り込みから16msたってなかったら、16ms経過するまで待つようにしてあげたらちゃんと60fpsで取り込めて、メモリ使用量も増えなくなった。これかー。
まさか全力で取り込みを呼ばれるとは思ってなかったよ。
あとは16ms固定ではまずいので渡ってきた平均fpsにあわせるようにしてやって取り込みはひとまず完了。
次は設定用のダイアログとか出せるようにして設定も保存できるようにすればFilter自体は完成か。 できたら取り込み転送の方をいろいろいじりたいが。
今は1024x768を取り込み転送して、受信側で800x600で縮小表示してるけど、転送量の削減もしたいので取り込み側で縮小できればなぁと思う。しかしCPUでリアルタイムに画像縮小処理って難しそうだなぁ。ふと思ったけど、受信側のCPUの方が空いてる可能性もあるからどっちで縮小するかは選べた方がいいのかもな。ますますめんどいわぁ。
Ogg/Theoraの配信テストをしてるから見てくれ!っていわれた。だから配信はできるけど受信側がバグってて見れないんだって、とか言ってたが試してくれと言われたので見たら見れた。あれー?みれたー!とか言ってたら俺のPeerCast本体が自分で修正パッチ当てたものだったという参考にならない結果に。なにより難しいのはみんなにパッチを当てたクライアントを行き渡らせることなんだよなぁ。本家ほぼ死んどるし。