[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: test version of mbone/vic with libdv



Osamu OISHI wrote:
> 【注意点】
> /dev/fwdv0から出力されるデータはov511ドライバー等で扱うデータと異なり
> vic側に制御権が無く絶えず流れ続けるため、
> vic側でデータの読み込みが滞るとデータの流れがおかしくなります。
> 理想的にはvic側で流れてくるデータを全部処理できればいいのですが
> 現在は処理しきれていません。
> 一番大きな問題はネットワークに画像データを転送する待ち時間にあるようで、
> 読み込みデータより早くデータを流せばある程度は安定して使えます。

> なお、最終的な解決策としては、
> 1.別プロセスでデバイス読み込みの画像バッファを作り、
>  vic側の要求に応じてバッファ内のデータを渡す。
> 2.デバイスドライバー側でコマ落ちさせる。
> がありますが、どちらもvic単独ではできないので
> いつ解決するかは未定です。
> #なお、vicではデータ変換効率に関する場所をもう少し触ってみます。
とりあえず、動くようにするだけなら、できるようになりましたが、
現在、デバイスドライバー側のバッファーオーバーフローを避けるために
別プロセスを(root権限で)起動しなければなりません。
なので、/dev/fwdv0入力でvicを使うことはできても
pkgsrcだけで全てを設定することができません。

一応手順を書くと
1."mdconfig /dev/md0d 65536 &" とか
 "mount -t mfs -o -s 65536 swap /mnt" とか
 他にshm、mmapなんかで、
 メモリー共有や、メモリー上にファイルシステムを作り
2./dev/fwdv0から流れてくるデータを1flame、120000byteずつ
 絶えずメモリー上に書きこんで行き
3.vicはメモリー上のデータを読み込んで変換転送する。
といった段取りになります。

vicの扱うflame rateが変化したり、vic上のデータ変換で時間がかかっても
メモリー上のデータはカーネルのタスク切り替えの時間で
絶えず読み込み続けられるのでバッファーオーバフローの問題は
避けることができます。
(ただしメモリー上のデータは上書きされるので、事実上コマ落ちになります) 

そしてこの方法で、メモリー上にバッファーを作る為に、
別プロセス(forkは使用メモリーが大きいので却下)を起動する必要が生じます。
/dev/fwdv0のデータをバッファ処理するにしても汎用APIにした方がいいので
別のpkgsrcが必要になります。

#現在、処理の全体がpkgsrc内におさまらないので、
#pkgsrcとしては出せませんが
#それでもvicをDVcamで使いたい人がいれば、
#コードと手順については出すことができます。

--
大石 修