10.4 で正常に動作する Cocoa ビデオ キャプチャ アプリを入手しました。NSThread を使用して、ビデオ キャプチャ ドライバーを起動します。アプリの起動直後は、ビデオ キャプチャが非常に遅くなります (1 ~ 2 fps)。ただし、UI ウィンドウのサイズを変更した後 (またはウィンドウを背景から前景に移動した後)、ビデオ キャプチャの速度は通常に戻ります。これは 10.5 でのみ発生します。
3 に答える
具体的な理由はわかりませんが、Instruments を使用して何が起こっているのかを把握する必要があります
「私のアプリは遅い」に対する答えは、常に「Run Shark」です。ときどき「Run Instruments」になりましたが、ほとんどの場合、Shark の方が Instruments よりも速く答えてくれます。
もちろん、Shark は /Developer/Applications にあります。CHUD をインストールしていない場合は、インストールしてください。
あなたが説明したものと同様のマルチスレッドのビデオキャプチャと記録を使用するアプリケーションがあります。Firewire カメラからのキャプチャには libdc1394 を使用し、表示には NSOpenGLView を使用し、ビデオのエンコードには QuickTime を使用します。カメラからのキャプチャは、OpenGL ビデオ ディスプレイおよび QuickTime MPEG4 エンコーディングとは別のスレッドにあります。
数か月前に、このアプリケーションを Leopard に移行しましたが、悪影響はありませんでした。実際、ビデオの毎秒 30 フレームでの CPU 負荷は Leopard で減少しました。
すべての NSLocks などを適切に処理していることを確認しましたか? あるスレッドのロックが別のスレッドの操作を停止し、その結果フレームレートが低下するというパフォーマンスの問題に遭遇しました。おそらく、絶対に必要な領域の周りにのみロックを配置するか、または操作のロックレスバージョンを実装することを検討できます.