다음을 통해 공유


VFW 캡처 대화 상자 표시

[DirectShow 이 페이지와 연결된 기능은 레거시 기능입니다. MediaPlayer, IMFMediaEngine, Media Foundation 오디오/비디오 캡처대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. Microsoft는 가능하면 새로운 코드에서 MediaPlayer, IMFMediaEngineAudio/Video Capture를 DirectShow대신 Media Foundation 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

VFW(Windows용 비디오) 드라이버를 계속 사용하는 캡처 디바이스는 디바이스를 구성하는 데 사용되는 다음 세 가지 대화 상자 중 어느 것을 지원할 수 있습니다.

대화 상자 묘사
비디오 원본 비디오 입력을 선택하고 그림 밝기 또는 대비와 같은 디바이스 설정을 조정하는 데 사용됩니다.
비디오 형식 이미지 차원 및 비트 깊이를 선택하는 데 사용됩니다.
비디오 표시 렌더링된 비디오의 모양을 제어하는 데 사용됩니다.

 

이러한 대화 상자 중 하나를 표시하려면 다음을 수행합니다.

  1. 필터 그래프를 중지합니다.
  2. IAMVfwCaptureDialogs 인터페이스에 대한 캡처 필터를 쿼리합니다. QueryInterface 성공하면 캡처 디바이스가 VFW 디바이스임을 의미합니다.
  3. IAMVfwCaptureDialogs::HasDialog 호출하여 드라이버가 표시하려는 대화 상자를 지원하는지 확인합니다. VfwCaptureDialogs 열거형은 각 VFW 대화 상자에 대한 플래그를 정의합니다. HasDialog 대화 상자가 지원되면 S_OK 반환합니다. 그렇지 않으면 S_FALSE 반환되므로 SUCCEEDED 매크로를 사용하는 대신 직접 S_OK 값을 확인합니다.
  4. 대화 상자가 지원되는 경우 IAMVfwCaptureDialogs::ShowDialog 호출하여 대화 상자를 표시합니다.
  5. 그래프를 다시 시작합니다.

다음 코드는 비디오 원본 대화 상자에 대한 다음 단계를 보여줍니다.

pControl->Stop(); // Stop the graph.

// Query the capture filter for the IAMVfwCaptureDialogs interface.
IAMVfwCaptureDialogs *pVfw = 0;
hr = pCap->QueryInterface(IID_IAMVfwCaptureDialogs, (void**)&pVfw);
if (SUCCEEDED(hr))
{
    // Check if the device supports this dialog box.
    if (S_OK == pVfw->HasDialog(VfwCaptureDialog_Source))
    {
        // Show the dialog box.
        hr = pVfw->ShowDialog(VfwCaptureDialog_Source, hwndParent);
    }
}
pControl->Run();

비디오 캡처 디바이스 구성