2012年2月15日水曜日

Core Video の基本的な処理構造 5

QTCoreVideo101にて,Display Link が動画(Video)と OpenGL の橋渡しをしていました.動画を再生するにあたり,新しい動画を開いたりする作業において,その Display Link を有効にしたり,無効にしたり切換えが必要になります.それを行っているのが MyController.m です.この中にある, open と openPanelDidEnd のメソッド内で, Display Link に係る処理を下記のように行っています.

- (IBAction)open:(id)sender
{
// if the display link is active, stop it
    if (CVDisplayLinkIsRunning([myGLView displayLink])) {
    CVDisplayLinkStop([myGLView displayLink]);
    }
    ...
}

新しい動画を開く際に,以前の動画に関する Display Link の影響を受けないよう,動作中かどうかの確認後,条件を満たした場合に Display Link を停止しています.

- (void)openPanelDidEnd:(NSOpenPanel*)sheet returnCode:(int)returnCode contextInfo:(void*)contextInfo
{
    if (returnCode) {
[myGLView openMovie:[[sheet filenames] objectAtIndex:0]];
    }
    // activate the display link
    CVDisplayLinkStart([myGLView displayLink]);
}

新しい動画が再生される際に, Display Link を開始することで,再び動画と OpenGL との橋渡しをし始めます.

0 件のコメント:

コメントを投稿