GrabberSinkType::setSinkMode Method

新しいシンクモードを設定します。

構文

virtual tSinkModes setSinkMode( tSinkModes mode );
パラメータ 説明
mode 新しく設定するモードを指定します。

戻り値

現在のシンクモードです。正常に完了していれば返されたシンクモードは関数に渡されたシンクモードと同じものになります。

備考

このメソッドはフレームの取り込みやAVIファイルへの書き込み用にイメージストリームの一時停止、再開を行うのに使用されます。シンクモードをePAUSEに設定すると、eRUNに設定されるまではフレームの取り込みやAVIファイルへの保存は行いません。シンクモードがePAUSEの時に startLive()がコールされると、ライブ画像は表示されます(有効にしている場合)が、シンクにはフレームは渡されません。しかしすでにイメージストリームは初期化されているため、setSinkModeeRunを渡せばレイテンシを伴わずにAVI保存やフレーム取り込みが可能となります。

サンプル

ここの例ではシンクを作成しモードを設定する方法を紹介します。

// 選択したコーデックでAVIファイルに記録するためのMediaStreamSinkを作成
tMediaStreamSinkPtr pSink = MediaStreamSink::create(
                MediaStreamContainer::create( MSC_AviContainer ), pCodecs->at( choice ) );

// ファイル名を設定
pSink->setFilename( filename );

// 最初シンクは停止しているのでビデオデータがファイルに書き込まれることはありません
pSink->setSinkMode( GrabberSinkType::ePAUSE );

// pSink をシンクに設定
grabber.setSinkType( pSink );

// ライブモードの開始。ライブ画像は表示されますが、pSinkが停止モードにあるため
// データはAVIファイルに書き込まれません
if( !grabber.startLive( true ) )
{
  std::cerr << grabber.getLastError().toString() << std::endl;
  return -1;
}

std::cout << "Press [enter] to start capturing!";
std::cin.get();

// シンクの開始。イメージストリームがAVIファイルに書き込まれます
pSink->setSinkMode(GrabberSinkType::eRUN );

std::cout << "Video recording started." << std::endl;
std::cout << "Press [enter] to stop capturing!";
std::cin.get();

// シンクの停止。ファイルへの書き込みが停止します
// GrabberSinkType::eRUNをパラメータにsetSinkModeをコールすることでファイルへの書き込みが再開します
pSink->setSinkMode(GrabberSinkType::ePAUSE );

std::cout << "Video recording stopped." << std::endl;

// ライブモードの停止。ファイルへの書き込み中であった場合はそれも停止し、AVIファイルが閉じられます。
grabber.stopLive();