신호 형식
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 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 반환하므로 신뢰할 수 없습니다.)
관련 항목