信号格式
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,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,因此不可靠。)
相关主题