사용자 지정 비디오 리사이저 제공

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

[이 API는 지원되지 않으며 나중에 변경되거나 사용할 수 없습니다.]

참고

이 기능을 사용하려면 DirectX 9.0 이상이 필요합니다.

 

DES(DirectShow Editing Services)가 비디오 원본 클립의 크기를 조정하는 경우 기본 동작은 StretchBlt이며, 이는 빠르지만 앤티앨리어스는 아닙니다. DirectShow 변환 필터로 사용자 지정 리사이저를 구현하여 크기 조정 동작을 변경할 수 있습니다. 필터는 DES가 입력 및 출력 비디오 크기를 지정할 수 있도록 하는 IResize 인터페이스를 노출해야 합니다. 변환 필터 작성에 대한 자세한 내용은 변환 필터 작성을 참조하세요. CTransformFilter 기본 클래스를 시작점으로 사용하는 것이 좋습니다. 필터를 구현할 때 다음 사항에 유의하세요.

  • 필터에서 IResize 인터페이스를 지원합니다(핀이 아님).
  • 필터는 VIDEOINFOHEADER 형식(FORMAT_VideoInfo)만 허용해야 합니다. 다른 형식 형식을 거부합니다.
  • DES의 비디오 형식은 알파(MEDIASUBTYPE_ARGB32)가 있는 32비트 RGB를 포함하여 압축되지 않은 모든 RGB 형식일 수 있습니다. 필터는 biHeight< 0을 사용하여 형식을 안전하게 거부할 수 있습니다.
  • 렌더링 엔진은 필터의 출력 핀을 연결하기 전에 IResize::p ut_MediaType 을 호출하여 출력 형식을 설정합니다. IResize::p ut_Size를 호출하여 출력 크기를 조정할 수도 있습니다. 출력 핀을 연결하기 전에 이러한 두 메서드를 순서에 따라 여러 번 호출할 수 있습니다.
  • 렌더링 엔진이 출력 핀을 연결한 후 put_Size 다시 호출할 수 있습니다. 리사이저 필터는 출력 핀을 새 크기와 다시 연결해야 합니다.
  • 필터의 CTransformFilter::Transform 메서드 내에서 입력 비디오를 출력 크기로 늘입니다.
  • 필터는 출력 샘플에서 불연속성 플래그를 설정하거나 미디어 형식을 출력 샘플에 연결해서는 안 됩니다.
  • 필터의 상태를 GraphEdit(.grf) 파일에 저장하려면 IPersistStream 인터페이스를 구현합니다 . (선택 사항이지만 테스트에 유용합니다.)

리사이저 필터를 사용하려면 필터를 사용자 시스템에서 COM 개체로 등록해야 합니다. 애플리케이션이 비디오 프로젝트를 렌더링하기 전에 IRenderEngine2 인터페이스에 대한 렌더링 엔진을 쿼리하고 리사이저 필터의 CLSID를 사용하여 IRenderEngine2::SetResizerGUID 를 호출합니다.

프로젝트 렌더링