SSブログ

QTKit Captureを使ってみる [プログラミング - QTKit Capture]

仕事で使う可能性があるMac OSXの新しいFrameworkであるQTKit Captureの勉強をちょっとだけした。使ってみてなんとなく雰囲気はわかった。その備忘録。ライトオンリメモリ(読み出し不能)とも言う。

いきさつ

これは個人的なメモなのでいきさつなんかどうでもええけど、ほんのわずかながら、わざわざ見てくれている人たちがいるので、その人たちに失礼のないようにイントロを書いておく。すこしでもその人たちの参考になれば幸いである。

これまで、僕は光の強度分布の観察などにIEEE1394経由のIIDCカメラを使っていた。これは

  • 無圧縮、γ補正無し、AGC無しの生データが得られる
  • ケーブル一本でカメラと繋ぐことができてMacなら1394ポートを標準で持っている
ということでハードウェア的には使いやすかった。 また、
  • Mac OSXがサポートしている
という後ろ盾があった。動画データの入力のOSXのサポートとはつまりQuickTimeのSequenceGrabber API群のことである。 実は第1世代のiSightはIIDCカメラだった。

ただし、

  • QuickTimeのSequenceGrabber APIは古くて複雑でわかりにくい
という決定的な問題点があった。 QuickTimeのSequenceGrabberルーチンはOS9時代からある古いルーチンで、これはQuickTimeの他の機能のみならず、メモリの確保や表示をQuickDrawに依存していた。QuickDrawはOS9以前のMacをMacたらしめていた画面表示をつかさどるAPI群だけど、拡張に次ぐ拡張の結果、膨大で複雑なものになって経緯を知る人(昔からQuickDrawを使っていた人)でなければはじめにどこから当たればいいのかもわからない化け物APIとなってしまっていた。

僕はOS9時代に、本当に苦労に苦労を重ねてやっと使い物になる程度の効率で動くカメラを使った干渉計のソフトを書いた。当時はIEEE1394ではなくアナログのフレームグラバだった。

Mac OSXにQuickTimeが移植され、QuickDrawはCarbon APIとして引き継がれて、一応SequenceGrabberもOSXで使えることになったが10.3でQuickDrawの多くのルーチンはObsolete指定となり、10.5でもまだ使えはするけど10.4あたりからなぜかPowerPCとIntelで微妙に動作が異なるなど、使い続けるには不便になってきた。

SequenceGrabber自身はQuickDrawの依存をなくしてCore FoundationとQuartzを使うようになったが実際にSequenceGrabberを使っているコードをQuickDrawからQuartzに置き換えるのは、少なくともCocoaプログラマにとっては非常に敷居が高く、難しい。

Mac OSX10.4からQTKitというFrameworkが導入された。これはQuickTimeのCocoaラッパで、Cocoaからでも簡単にQuickTimeを使うためのクラスが整備された。Cocoaの他のFrameworkと同じようにして使えて非常に簡単になったが、当初はSquenceGrabberはサポートされていなかった。

Mac OSX10.5からそれをおぎなうQTKit CaptureというFramework(10.5ではQTKitに含まれる)が導入された。

いずれ、今仕事で使っているMacが使い物にならなくなったとき、移植する目的で今回QTKitCaptureを使ってみたので、メモを残しておく。

QTKit Caputreとは?

QTKit CaptureはMacに繋がったカメラや、映像出力信号を持った機器や、マイクなどの音声入力機器から映像音声を入力し、プレビューを表示したり、ファイルに保存したりをサポートするクラス群である。

QTKit CaptureについてはAppleのガイドがある。 このガイドにあるように入力にはIEEE1394だけでなくいろいろな外部デバイスが使える。これはすなわちSequenceGrabberがサポートしている範囲そのものである。このことからもQTKit CaptureはSequenceGrabberの単なるラッパであるということが想像できる。

風邪気味なのに、こんなのを書いてて夜更かししてたらあかんがな。中途半端やけど寝よ。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立08/20献立08/21 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。