信号格式

[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayerIMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]

DV 摄像机的信号格式可以是 NTSC 或 PAL、标准或长时间播放。

MSDV 驱动程序

若要从 MSDV 驱动程序获取输入信号格式,请调用 IAMExtTransport::GetTransportBasicParameters 方法并传入ED_TRANSBASIC_INPUT_SIGNAL标志。 该方法返回一个定义的常量,该常量指示格式。

以下代码检查信号格式,并使用此值计算每个帧的平均时间。 变量模式接收信号格式常量。

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 摄像机