OV511+,SAA7111AをつかったLifeViewのUSBモジュールのFreeBSD用の プログラムをMacOS Xの汎用WEBCamドライバの macamに追加する作 業を始めた。
開発環境はiBook Dual USB 500MHzのMacOS X 10.1.5でProject Builderは10.1のCD についてものを使用している。macam 0.7b1の圧縮ファイルにあったプロジェクトは 少し新しいバージョンで作られているようであったが、変換して問題なくビルドする ことができた。
FreeBSDの汎用ドライバと同じような引数をもった関数で、データの読み書きな どができるようなので、とりあえず初期化のルーチンなどをそのまま追加してみ た。
I2CからSAA7111Aのレジスタが正確に読めていなかったので、いろいろ試してい たところ、単純にOV511の初期化のミスである事が判明。
Isochous転送でoverrunが発生していたが、framesPerTransferを大きくする事で 回避できる事が判明。
macamがIsochous転送で使っているデータ構造は下記のようになっているようだ。
Isochous転送でデータが入ってこなかったが、SAA7111Aの初期化のパラメターに
ミスがあった。どうにかデータが送られてくるようになった模様。ちなみに現在
のところ、320×240のyuv411(12bit)で8freame/sec位の処理が出来ていて転送レ
ート的には下記のようになる。
320 × 240 × 12 ÷ 8 = 115200 Byte / Freame
115200 × 8 × 8 ≒ 7.4 MBit / sec
FreeBSDで試した時にOV511で圧縮を行なったら、データ量が10%位まで落ちていた ので、おそらくフルフレームでの転送も可能なのかもしれない。しかし画質は落ち る。
framesPerTransferを大きくするとoverrunが減るのだが、ロードの高い時などはや はりキャプチャーを始めた直後などにoverrunになってしまう事がある。ただ同じ サイズでも一回スタートして順調に動いている場合にはロードが高くても問題は起 きにくいように感じる。
とりあえずデータは正常に流れてきて、decodeのスレッドを起こすところまででき ている。今週末が連休なのでどうにか動くようにしたいものだ。
macamのYUVのコードを一部修正してOV511用にして動かしているが、CPUの利用率 が、50%くらいになるのがちょっと気になる。iBook 500MHzは確かに早いマシン ではないが、もう少し低くならないものであろうか?OV511で圧縮をおこなって、 それを展開するコードを動かすともっと上がる事になるのでちょっと心配。
OV511用のコードはmacamのMyPhilipsCameraDriver.mをベースにしている。このソ ースにはsupportsResolutionなどの関数がなかったり、USBのパイプの番号の指 定が間違っているようにも見受けられる。Philipsのカメラは本当に動作するので あろうか?
クラシック環境が上がっていると、USBを掴まれてしまうのでmacamが使えなくな る。クラシック環境からUSBの機能拡張を抜けば良いのだろうか?
とりあえずやっつけで、画像を表示できるようにしてみた。どきどきyuvの変換に 失敗したようなフレームが現れる。どうもオリジナルのMyPhilipsCameraDriverの バッファ管理に問題があるように思われる。(意味の無い変数なども見受けられる し、、、)とりあえず週末にもう少し見てみよう。
基本的な動作としては非同期のreadを複数実行しておいて、そのコンプリーションの スレッドから、decodeのスレッドを起こしてdecodeを行なってQTにデータを送るとい うような流れになります。コンプリーションのスレッドでは次の非同期readを行なっ て処理を終了します。
結局週末はあまり作業が進まなかった。320×240のハードコードを抜いて、160×120 もサポートしようとしてみたが、今のところできていない。ov511の方をこのサイズ に設定しても、320×240の左上の部分が表示されてしまう。SAA7111Aの方にも設定が 必要なのだろうか?LinuxのドライバでもSAA7111Aでも320×240しかサポートされてい ないようだ。
Appleが開発者向けに提供している、HackTV(Carbon)というサンプルプログラムで、こ のコンポーネントを利用すると、idleが0になるほどCPUパワーを使ってしまう。macam のアプリケーションではそのような事はない。なにが悪いのであろうか?
センサーにOV7610などを使ったユニットがリファンレスとしてほしい。あとOV511(プ ラスでないもの)も最終的にサポートする為にほしい。
OVねたではないが、STV680のサポートはやはりWin純正のドライバに比べると画質が よくない。STマイクロさん仕様を公開して下さい。
おかしなフレームが出る理由がなんとなくわかった。自分の作ったバッファ管理に問 題があるようである。
春日でご飯を食べて、パンタ&ブラオ(上の画像の猫)に励まされながらデバッグして、 おかしなフレームの出る原因がわかりフィックスした。(途中場あたり的なコードを 入れたい誘惑にかられながらも)なんの事はなくオフセットの変数を1以上で判定する ようなコードがあったことが問題であった。複雑に見える問題でもこのように非常に 単純な問題である事を多い。
とりあえずなんとなく形になってきたので、オリジナルソースでコメントアウトして いた部分などを消して、ソースをクリーンアップしてみた。OV511(プラスでないバー ジョン)をサポートする事などを考え、パケット長を961とハードコードしている部分 も変数を使うように修正してみた。
画質があまり奇麗ではない。yuvの展開にオリジナルソースにあったコードを修正し て使っているが、なにか問題があるのであろうか?
マージするのが面倒になる前にcvsサーバからcheck outしたソースとのdiffをとって パッチにしてしてアップしてみた。最近はあまり頻繁にメンテナンスされてはい ないようだが、マージしてもらえるとありがたい。
macamの開発者にメールしたところ一日くらいで返答があり、ソースをマージしても らえることになった。すでにcvsからcheck outできるようになっている。
yuv2rgbOV420.cの2行目のオフセットが間違えていたので、修正してコミットしてみた。 どうりで解像度が悪かったわけだ。
OV511を使った、Assist C-M1というPCカメ ラを秋葉原で1680円で購入してきた。この製品ははOV系のセンサーを使っているよう なので、対応コードを追加したいと思っている。(2002/10/31)
WEBの分解写真などをみると、この製品は以前マクセルがプリン M1という名前で販売 していた製品と同じ基盤を使っているように思われる。この基盤についているレンズ はオリンパス製という噂もある。たしかに非球面レンズF=2.8などと細かいスペックが あるところがそれっぽい。
上記と一緒にタカラのSlim ShotIIという製品が1480円で売られていたので、つい衝動 買いしてしまった。帰ってMacにつないでmacamを起動したところSTV680として認識さ れた。この製品の解像度は352×288になるようだ。
OV511(プラスでないもの)とセンサーのOV7610をサポートしたコードを追加して、CVS にcommitしておいた。これでずいぶんと多くの機種が救えるのではないかと思う。ビ ルドしたものを下記に置いておく。ちなみにまだOV7610の方は設定がおかしいようで、 色合いが今一つである。(STV系よりも汚いぞ ^ ^;)
OV7610(7620?)の画像が汚いのは、このチップの自動調整機能があまり的確に働かない 場合があるためではないだろうか?明るさが変化した場合など明らかにカラーバラン スが崩れる。
OV7610とOV7620は0x29の下位2ビットのversionで判断できるようだ。前者は3で後者は 0のようである。C-M1はOV7610を使用しているようである。
OV511のコンポーネントをオーバーライトするかたちでOV511+のサポートを追加してい る。
ユニットのタイプを調べる場合にはOV511のCIDを確認して、その上でI2Cのセンサーア ドレスをプローブしてセンサーのタイプを判別している。BT848のときにI2Cのアドレ スを使った判別はときとしてうまく行かない事もあったのでやりたくないのだが、 Linuxのページを見ると同じCIDで違うセンサーがのっている事もあるようなのでやも う得ないところであろうか。
SAA7111Aの方でTVなどのNTSC信号を表示していると、画面半分くらいがずれてしまっ ている事がある。なんらか違うフレームが入り込んでいるようにも見受けられる。
思い腰を上げて圧縮ルーチンの追加を始めた。コンパイルはできているが、正常に動い ていない。週末にでもデバッグして動くようにしたい。(2002/11/14)
圧縮してそれなりに動くようになったが、時々画面の右下にゴミが出る。最後のパケ ットの処理に問題があるのだろうか?(2002/11/19)
ここのところ朝猫に起こされてから1時間くらいデバッグしているのだが、どうも圧 縮した場合decodeルーチンに渡っているデータが壊れているようである。これが原 因で落ちてしまう事がある。(2002/11/20)
どうもデータが壊れるのはCPU負荷と関係するようである。バッファを大きくする事 で少し問題が軽減されたように思われる。圧縮した場合に画像の右下にゴミがでるの はいまだに解決していない。(2002/11/26)
ドイツで試してくれている人がいるようなので、現状のソースをcommitしてみた。圧 縮部分はいまだに完全ではないので、コードには含まれているが有効にはしていない。 (2002/11/28)
上記のユーザとメールのやりとりを一日一回程度おこなっている。どうも使っている カメラはOV511+,OV6620のタイプのようで、OV6620の初期化ルーチンをLinuxのドライ バを参考にして追加したソースを送ったところ、キャプチャができたようである。た だUSBのエラーが発生するとの事である。(2002/11/29)
いまだに圧縮のゴミの問題は解決していない。いろいろ調べていたところ、圧縮しな い場合もEOFのパケットの番号がおかしいようである。FreeBSDでvidを使った場合は、 SIF,VGAとなっている。
フレームレートの設定が良くわからない。おそらくセンサー側が送ってきたものをOV511 はそのまま送ってくるのではないかと思っている。そうするとフレームレートはセン サーで設定できるとと言う事になるのだとうか。ぼちぼち調べたい。
パケット番号がおかしい問題であるが、なぜかEOFのパケットの前におなしなパケッ トが1つ入る事がある。これが発生するのはキャプチャを開始して、10秒くらいの間 でそれ以降はあまり発生しない。ちょっとIOKitを疑いたい気持ちだがもうすこし調 べてみよう。
今までいくつかフリーのソフトを作ってきたが、このプロジェクトは問い合わせが多 い。ドイツ・フランス・スイスから問い合わせがあった。ヨーロッパではMacOS Xは かなり普及しているのだろうか?
圧縮を利用した時にゴミがでる件だが、Linux版の作者に聞いてみたのだが、同じよ うな現象があったみたいな話である。fix方法もメールにあったのだが今朝試してみ たのだが、どうもうまくいかない感じである。(2002/12/06)
年末年始でどたばたしていて、なかなか手がかけられなかったのだが、ぼちぼち再始 動している。久しぶりにcvsからソースをアップデートしてビルドしたら、gcc2で3箇 所ほどエラーになるようだったので修正してもらった。OV511の圧縮展開コードを追 加してみた。(2003/01/10)
画像サイズの拡張などを行なっていて、懲りずにSAA7111AのVGAでのキャプチャーを 調べていたのだが、結局わからない。OVの設定は画像を縮小しない設定になっている。 SAAでは画像の縮小機能はないそうである。SAAとOVの間のデータ転送は422の場合一 回の転送が16ビットになり、Y1+U,Y2,Vのように二つのデータで成立するはずで、半 分になってしまうと色差が不釣合になりそうだが、そうにもならない。全くもって良 く分からない。
OV6620のサポートのコードを追加してみた。
秋葉原でLifeview(NOVAC)のi-mageという製品を購入してきた。ちょっと動作が怪しい ところもあるが、とりあえず使えている。C-M1に比べると格段に画質が良いように思 える。(2003/01/26)
i-mageはOV511+,OV6620の製品のようである。OV511のユニットの場合、10万画素系は OV6620で、35万画素はOV7610,20になるようである。
今の考える今後の対応だが、ゴミフレームをなくす修正、スナップショットボタンの サポート、SAA7111Aの入力の切替え、チューナのサポートなどをになるが、いつにな るのかは全く未定。
OV518のモジュールのサポートを、海外の人にメールでお願いされたのだが、日本では このチップを使ったモジュールが見当たらない。
他のカメラのソースを参考にして、スナップショットボタンのサポートを追加してみた。 (2003/02/03)
現在macamは0.8というバージョンのリリース準備をしているのだが、cvsからcheckout したソースをビルドすると10.1.5では動かなくなっている。10.1系を切るのはまだちょ っときついのではないだろうか。
0.8はどうにか10.1.5でも動くようにしてもらいリリースしてもらった。ほっとひとい きです。このページで公開してきた、OV511のサポートを入れたバイナリは本家のバイ ナリでこれのサポートが入ったので、こちらでの公開は止めたいと思います。
0.8がリリースされてちょっとお休みモードである。0.8のディスクイメージではコン ポーネントファイルがフォルダに見えてしまっているが、フォルダ毎"Library"の下 にコピーすれば使えている。
OV511のカメラをiBookにつないだHUBに接続して試してみたところ認識はされるが、 再生を開始すると、No Cameraになってしまう。STV680系では問題無いようなので、 OV511のコードの問題なのだろうか?アイソクロナス転送に起因んする問題のような 気もする。
久しぶりにちょっとコードをいじっている。OV6620とOV7610でフレームレートに併 せクロック(CLKRC:0x11)を調整するようにしてみた。この値はあまり大きくすると イメージが崩れてしまうようなので、トライ&エラーで設定してみた。 (2003/03/14)
QuickTime 6.1をインストールしてみた。とりあえず問題はなさそうである。
上記をcommitした時に修正が加わっていることに気づいたので、マージしてcommit してみた。またcvsからすべてcheck outしてビルドしてみた。appとcomponentは正 常にビルドできたがica moduleというのはビルドできなかった。私の環境はいまだ にgcc 2.xであり、3.xと違い変数の定義がスコープの最初にないとエラーになるが、 問題無くコンパイルできている。
ぼちぼち作業を再起動して入力の切替を行なえるように追加のコードを作っている。 (2003/03/19)
Matthiasさんにコンポーネントの入力選択のパッチを送ったが一か月くらい音沙汰 がない。仕事が忙しいのだろうか?(2003/04/07)
MacOS 9用の純正のドライバでOV7610のユニットの画像をみたらわりあいと奇麗であ った。macamにいれている初期かパラメータをちょっと見直した方が良いかもしれな い。
ドイツのメインのエンジニアが体調を崩しているようで、当面私のほうもも作業は しないつもりです。(ov系のセンサーのコードをちょっといじりたいが、他のこと もやりたいのでペンディング中です)
macamを使ってQRコードを読み込むようにできないか現在調査中。(2004/11/26)
MacOS X 10.4でmacam 0.8アプリを起動前に OV511なカメラを接続しておくとアプ リが起動できないようである。。。。コンポーネントをOSにインストールした環境 ではコンポーネントを利用するアプリを起動するとアプリが起動できないみたい。。。 いつになるかわからないが時間ができたら調べてみよう。。。(2005/10/08)
古いビデオでDVDを焼くためにNTSCのモニターにmacamが使える。ov511のサポート コードにNTSCのサポートも入れておいたおかげだ。我ながら良い仕事してたな。:) (2017/03/08)
こどもパソコンIchigoJamの表示用に使っている。macamのSAA7111AのサポートはRCA 入力が指定されている。CapViewは奇麗だがLife TVは画像が揺れる。(2018/03/16)
SAA7111Aの解像度上げられないかな?