Grabber::getAvailableVideoNorms Method
現在選択中のデバイスが対応しているビデオ規格を返します。
構文
tVidNrmListPtr getAvailableVideoNorms() const;
戻り値
VideoNormItemクラスライブラリリファレンス>クラス>VideoNormItemのリストへのポインタ。エラーが発生した場合は0。
備考
このメソッドはデバイスが対応するビデオ規格 (例: PAL, NTSCなど) のリストを返します。
デバイスの中にはDCAMカメラのようにビデオ規格をサポートしないものもあるため、その場合はリストは空になります。 Grabber::isVideoNormAvailableWithCurDevクラスライブラリリファレンス>クラス>Grabber>Grabber::isVideoNormAvailableWithCurDev Methodを使うことでデバイスがビデオ規格をサポートしているかチェックすることができます。
サンプル
///////////////////////////////////////////////////////////////////////////////
//
// このサンプルはビデオ規格とフォーマットのクエリを行う方法について説明しています。
// デバイスがビデオ規格をサポートしている場合、利用可能なビデオフォーマットはその規格に依存します。
// 下記の方法によってビデオフォーマットの取得前にビデオ規格を取得することが可能となります。
//
// デバイスがビデオ規格をサポートしていない場合、即座にビデオフォーマットが取得されます。
//
#include "stdafx.h"
#include <conio.h>
#include "tisudshl.h"
using namespace _DShowLib_NAMESPACE;
int main(int argc, char* argv[])
{
int choice, input;
int i=0;
// ライブラリの初期化
#error "insert license key here!"
// 上記の行を削除
// トライアルバージョンを使用している場合のライセンスキーはクォーテーションマークなしの0とします
// 例: if(!DShowLib::InitLibrary( 0 ))
//
// ライセンス版(スタンダード or プロ)を使用している場合、ライセンスキーは
// クォーテーションマーク付の文字列となります。ライセンスキーはIC Imaging Controlの
// セットアップ時に入力したものと同一でなければいけません。
// 例: if( !DShowLib::InitLibrary( "XXXXXXX" ))
if( !DShowLib::InitLibrary( 0 ) )
{
fprintf( stderr, "The library could not be initialized ");
fprintf( stderr, "(invalid license key?).\n");
exit( 1 );
}
Grabber *grabber=new Grabber();
Grabber::tVidCapDevListPtr pVidCapDevList = grabber->getAvailableVideoCaptureDevices();
if( pVidCapDevList == 0 || pVidCapDevList->empty() )
{
delete grabber;
exit( 1 ); // 利用可能なデバイスがありません
}
// 利用可能なデバイスを取得し表示する
printf( "Available Grabbers: \n" );
for ( Grabber::tVidCapDevListPtr::value_type::iterator it = pVidCapDevList->begin();
it != pVidCapDevList->end();
++it )
{
printf( "[%i] %s\n", i++, it->c_str() );
}
// ユーザーにデバイスの選択を促す
printf( "Your Choice: ");
input=scanf( "%i", &choice );
// 選択したデバイスをオープンにする
if ( choice>=0 && choice < pVidCapDevList->size() )
{
grabber->openDev( pVidCapDevList->at( choice ) );
}
else
{
delete grabber;
exit( 0 ); // いずれのGrabberも選択されなかったのでサンプルを終了する
}
// 現在のデバイスがビデオ規格に対応しているかどうかをチェック
if ( grabber->isVideoNormAvailableWithCurDev() )
{
// 利用可能なビデオ規格のクエリ
Grabber::tVidNrmListPtr pVidNrmList = grabber->getAvailableVideoNorms();
if ( pVidNrmList == 0 )
{
fprintf( stderr, "Error: %s\n", grabber->getLastError() );
delete grabber;
exit( 1 );
}
while ( true )
{
i=0;
// 利用可能なビデオ規格を表示
printf( "\n\nAvailable video norms:\n" );
for ( Grabber::tVidNrmListPtr::value_type::iterator it = pVidNrmList->begin();
it != pVidNrmList->end();
++it )
{
printf( "[%i] %s\n", i++, it->c_str() );
}
// ユーザーにビデオ規格の選択を促す
printf( "Your choice (q to quit): ");
// 何も入力されなかった場合、サンプルを終了する
input=scanf( "%i", &choice );
if ( input == 0 ) break;
if ( choice>=0 && choice <pVidNrmList-> size() )
{
// ビデオフォーマットの取得前に選択したビデオ規格をデバイスに設定する
grabber->setVideoNorm( pVidNrmList->at( choice ) );
printf( "\n\nVideo Formats available for %s: \n", pVidNrmList->at( choice ).c_str() );
// ビデオフォーマットを取得
Grabber::tVidFmtListPtr pVidFmtList = grabber->getAvailableVideoFormats();
if ( pVidFmtList == 0 ) // 利用可能なビデオフォーマットがあるかどうか
{
fprintf( stderr, "Error: %s\n", grabber->getLastError() );
break;
}
i = 0;
// 利用可能なビデオフォーマットの一覧を作成
for ( Grabber::tVidFmtListPtr::value_type::iterator it = pVidFmtList->begin();
it != pVidFmtList->end();
++it )
{
printf( "[%i] %s\n", i++, it->c_str() );
}
}
}
}
else
{
// デバイスがビデオ規格をサポートしていない場合、
// 利用可能なビデオフォーマットを即座に取得します.
printf( "\n\nVideo Formats available: \n" );
Grabber::tVidFmtListPtr pVidFmtList = grabber->getAvailableVideoFormats();
if ( pVidFmtList == 0 ) // 利用可能なビデオフォーマットがあるかどうか
{
fprintf( stderr, "Error: %s\n", grabber->getLastError() );
}
else
{
i = 0;
// ビデオフォーマットの一覧を表示
for ( Grabber::tVidFmtListPtr::value_type::iterator it = pVidFmtList->begin();
it != pVidFmtList->end();
++it )
{
printf( "[%i] %s\n", i++, it->c_str() );
}
}
}
delete grabber;
printf("Press any key to continue");
getch();
return 0;
}
関連項目
Grabberクラスライブラリリファレンス>クラス>Grabber, Grabber::isVideoNormAvailableWithCurDevクラスライブラリリファレンス>クラス>Grabber>Grabber::isVideoNormAvailableWithCurDev Method, Grabber::getVideoNormクラスライブラリリファレンス>クラス>Grabber>Grabber::getVideoNorm Method, Grabber::setVideoNormクラスライブラリリファレンス>クラス>Grabber>Grabber::setVideoNorm Method, Grabber::tVidNrmListPtrクラスライブラリリファレンス>クラス>Grabber>tVidNrmListPtr