2008年5月26日月曜日

windowsのapacheでperlパス設定

大抵のサーバでPerlのパスは /usr/bin/perl か /usr/local/bin/perl に設定されているけど、windows上で開発してテストする場合、cgiの先頭にあるこのPerlパスをWindows上のパスに置き換えなければ動作しない。でもいちいち書き換えるのは面倒だし〜ということで、色々試してた。そしたらなんとも簡単、Cドライブ直下に /usr/bin/ もしくは /usr/local/bin/とディレクトリを掘って、binディレクトリにActivePerlのperl.exeだけコピーすればOK!

いやー恥ずかしながらしらなかった。

2008年5月23日金曜日

ひさびさApache

version 2.2 になってから初めていじった。。。Windows上での設定に手間取る。。。

2008年4月25日金曜日

愚痴

割り込み作業が多くて、全然進みません(笑

2008年4月16日水曜日

Sequence Grabberの生成

まずWhackedTVの初期化処理から、Sequence Grabber Componentの生成方法を理解。

WhackedTVのメインウインドウのdelegateはWhackedTVControllerクラスなので、アプリケーションを起動するとこのクラスのinitが最初に呼ばれ、起動が完了するとapplicationDidFinishLaunching:が呼ばれる。

initで行っている処理は、
 ・SeqGrabクラスの生成と初期化
 ・レコーディング動作中の動作確認用タイマーのタイマー時間設定
 ・通知の設定  ・プレビューのクオリティーとフレームレートの設定
で、もちろん重要なのはSeqGrabクラスの生成と初期化。初期化で使用しているAPIは
 ・OpenADefaultComponent
 ・SGInitialize
の2つ。

OpenADefaultComponentはComponent ManagerのAPIで、ComponentInstanceで定義される様々なリソースが取得できる(んだよね?)。Sequence Grabber Componentを取得するには、SeqGrabComponentTypeを指定してやれば良い。SGInitializeはその名の通り、取得したSequence Grabber Componentの初期化を行う。

WhackedTVに含まれるSeqGrabについて

WhackedTVのプロジェクトにはCocoaでSequence Grabberを使うためのWrapperクラスが入ってる。ディレクトリSeqGrab内のクラスがそれだ。Wrapperクラスを自分なりに解釈すると、

・SeqGrabクラス
 Sequence Grabber ComponentのCocoa Wrapper。プレビューやレコーディングの設定など、キャプチャのメイン機能を担う。

・SGChanクラス
 Sequence Grabber Channel ComponentのCocoa Wrapperで、以下のSGVideo、SGAudioクラスのスーパークラス。

・SGVideoクラス
 SGChanクラスを継承し、Channel Componentの中でVideoMediaTypeなChannelを制御するクラス。

・SGAudioクラス
 SGChanクラスを継承し、Channel Componentの中でSGAudioMediaTypeなChannelを制御するクラス。

・ SampleCIViewクラス
 NSOpenGLViewを継承し、プレビュー描画を行うクラス。SGVideoで取得したイメージデータを渡すとウインドウに描画を行う。描画はOpenGLで行っている。

という感じ。

Cocoaアプリケーションでキャプチャソフトを作成する場合は、上記クラスをベースにし、適時にメソッドを追加するという流れになる。

2008年4月15日火曜日

WhackedTVの機能

WhackedTVの機能について簡単にまとめると

・[add video track]で利用可能なビデオデバイスをキャプチャ要素に追加
・[add audio track]で利用可能なオーディオデバイスをキャプチャ要素に追加
・キャプチャ要素を追加するとテーブルに追加される
・テーブルにある[settings]でデバイスの設定ができる
・[record]で指定パスにQuicktime形式のムービーが書き出される

という感じ。さらっとソースと照らし合わせて動作確認してみると、[settings]で表示されるダイアログは、ビデオデバイスだと標準の機能として備わっているようだけど、オーディオデバイスではQuickTime7時点で提供されていないから、自分で実装するしかないみたい。事実、WhackedTVではSGAudioSettingsクラスでダイアログとかオーディオメーターを実装している。みるからに大変。あと大きく違うのはファイル書き出しをしているところ。demuxされた状態でメモリ上に展開する方法をしらべなきゃ。

Sequence Grabber の資料

まずは資料集めから。参考となりそうなのは

Sequence Grabber Reference for QuickTime

と、

QuickTime Movie Creation Guide

あたり。

あと一番重要なのがAppleが提供してるサンプルコードで、WhackedTV。これからはこのサンプルコードを解析していくことから始める。