2013年2月13日水曜日

AVGreenScreenPlayer 2

前回の続きです.AVGreenScreenPlayer の中身を見て行きましょう.

画像処理系のサンプルプログラムの読み方の常套手段として,ビューから確認して行きましょう.XIBsフォルダの下にある GSDocument.xib を開いてみましょう.ちなみにXIBは昔のNIBに相当します.つまり,昔のインターフェイスビルダーのファイルですね.このファイルを開くと,ウィジェットの種類と配置を確認することができます.

AVGreenScreenPlayer はドキュメントベースアプリ(複数のウィンドウを開けるアプリ)ですから,XIBファイルは2種類あります.GSDocument.xib がひとつのドキュメント(ひとつのウィンドウ)に対応し,MainMenu.xib がアプリケーション全体に対応します.

さて,GSDocument.xib を開くと,ムービーを再生しているビューが GSPlayerView であることがわかります.そこでViewsフォルダの GSPlayerView.h を開いてみましょう.GSPlayerView.h を見てみると,GSPlayerView は NSView にいくつかのプロパティを追加しただけということが解ります.

追加されたプロパティは

  • AVPlayerItem *playerItem;
  • AVSampleBufferDisplayLayer *videoLayer;
  • NSColor *chromaKeyColor;

です.

すぐに GSPlayerView.m を開くのではなく,まずは追加されたプロパティのクラスについて調べておきましょう.

普通,ムービーを再生するには AVSimplePlayer のように,ムービープレイヤーである AVPlayer とムービーの描画先である AVPlayerLayer をプロパティとして用意しておき,Core Animation のレイヤーとして AVPlayerLayer をビューに挿入するのが王道なのですが,やや様子が異なることを感じられると思います.つまり,GSPlayerView.m ではムービーの再生を AVFoundation に丸投げせず,Core Video と連携して描画しているんだなとあたりをつけられます.

次回は GSPlayerView.m の中身を見て行きましょう.

0 件のコメント:

コメントを投稿