Core Video
概要
映像処理のための Framework。Metal や OpenGL をサポートしている。映像処理を扱いやすくするために、パイプラインベースの API を提供している。パイプラインベースの API とは、連続した映像に対して、開発者が前後のフレーム間のためのデータ変換や同期などを意識することなく、個々のフレームに対する処理のみに集中できるように設計された API のことを言っているようだ。 映像を扱う場合で、さらに個々のフレームに対して処理を加えたいような場合に、Core Video は威力を発揮する。 データとのやり取り
visual context
描画先に合わせたコンテキストオブジェクト
Core Graphics とか OpneGL とか
まずこれに割り当てて、それから frame をいじっていく
display link
描画の同期をとるための仕組み
ディスプレイの refresh rate に合わせて映像のフレームを同期する必要がある
アプリの動作に影響しないような、優先度の高めな別スレッドで動いている
まだよくわからない
バッファの管理
CVBuffer を基底クラスとして、映像や音声等の様々なデータバッファーが定義されている。 映像のフレーム画像を保持する。OpenGL buffer, pixel buffer の super class
画像をメモリに保持する
Core Video でバッファを扱う場合、buffer pool として一定量のメモリがすでに割り当てられているため、必要に応じた割り当てと開放のオーバーヘッドがない。この量は変更することもできる バッファを扱う場合、Buffer Pool を作成しておくのが推奨されている。Buffer Pool は、必要に応じて再利用可能なバッファ分のメモリを予め割り当てておく仕組みであり、利用することでメモリの割り当て/開放のオーバーヘッドを低減できる。