次の方法で共有


シグナル形式

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/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を返すので、信頼できません)。

DVカムコーダーの制御