シグナル形式
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
DVビデオカメラの信号形式は、NTSCまたはPAL、標準またはロングプレイにすることができます。
MSDV ドライバー
MSDV ドライバーから入力信号形式を取得するには、 IAMExtTransport::GetTransportBasicParameters メソッドを呼び出し、ED_TRANSBASIC_INPUT_SIGNAL フラグを渡します。 メソッドは、形式を示す定義済みの定数を返します。
次のコードはシグナル形式をチェックし、この値を使用してフレームあたりの平均時間を計算します。 変数 Mode は、シグナル形式の定数を受け取ります。
LONG Mode, AvgTimePerFrame;
hr = MyDevCap.pTransport->GetTransportBasicParameters(
ED_TRANSBASIC_INPUT_SIGNAL, &Mode, NULL);
if (SUCCEEDED(hr))
{
switch (Mode)
{
case ED_TRANSBASIC_SIGNAL_525_60_SD: // NTSC SD
AvgTimePerFrame = 33; // 33 msec (29.97 FPS)
break;
case ED_TRANSBASIC_SIGNAL_525_60_SDL: // NTSC SDL
AvgTimePerFrame = 33;
break;
case ED_TRANSBASIC_SIGNAL_625_50_SD: // PAL SD
AvgTimePerFrame = 40; // 40 msec (25 FPS)
break;
case ED_TRANSBASIC_SIGNAL_625_50_SDL: // PAL SDL
AvgTimePerFrame = 40;
break;
default:
// Unknown type
AvgTimePerFrame = 33; // Default
break;
}
}
出力シグナル形式を取得するには、ED_TRANSBASIC_OUTPUT_SIGNAL フラグを使用して同じメソッドを呼び出します。
UVC ドライバー
UVC ドライバーから入力または出力信号の形式を取得するには、ピンで IAMStreamConfig::GetFormat を呼び出し、ビデオ形式ブロックを調べます。 (UVC デバイスの場合、前の例で示したコードは通常、ED_TRANSBASIC_SIGNAL_UNKNOWNを返すので、信頼できません)。
関連トピック