AVStream에서 하드웨어 코덱 지원 시작
Windows 7부터 Windows Media Foundation 은 AVStream 기반 미디어 구성 요소를 MFT(사용자 모드 Media Foundation Transforms)로 나타냅니다.
공급업체는 이 기능을 사용하여 하드웨어 기반 디코더, 인코더 및 비디오 프로세서를 애플리케이션 수준에서 조작할 수 있는 MFT로 표시할 수 있습니다.
AVStream 모델은 Windows 7에서 변경되지 않은 상태로 유지되며 이 기능을 사용하도록 설정하려면 미니 드라이버에 몇 가지만 추가하면 됩니다.
코드 변환 토폴로지는 다음 다이어그램에 표시됩니다.
최상의 성능을 위해 다이어그램의 아래쪽 행에 표시된 미디어 처리는 전용 하드웨어에서 발생해야 합니다. 이 시나리오에서는 전용 트랜스코드 하드웨어를 SHED(보안 하드웨어 인코더 디코더)라고 합니다. SHED는 마더보드용 플러그 인 모듈 또는 디스플레이 어댑터의 통합 기능으로 패키지할 수 있습니다.
Windows 7은 여전히 소프트웨어 기반 코드 변환을 지원합니다. 그러나 시스템이 CPU 대신 전용 하드웨어에서 코드 변환 작업을 수행하기 때문에 SHED 기반 솔루션은 소프트웨어 기반 솔루션에 비해 사용자 환경을 크게 향상시킵니다.
이전 다이어그램에 표시된 것처럼 사용자 모드 클라이언트는 각 MFT에 노출되는 IMFTransform 인터페이스를 사용하여 사용자 모드 변환에 액세스할 수 있습니다. IMFTransform은 Vista 이상 버전의 Windows에서 사용할 수 있지만 하드웨어 기반 미디어 처리를 사용자 모드 애플리케이션에 노출하는 메커니즘은 Windows 7부터만 사용할 수 있습니다.
시스템에서 제공하는 디바이스 프록시 또는 Devproxy 모듈은 DirectShow 스트리밍 모델에서 KSProxy와 동일한 역할을 합니다. Devproxy는 커널 모드의 Ks.sys 사용자 모드의 MFT 구성 요소 간의 통신을 조정합니다.
결과 래핑된 하드웨어 미디어 처리 함수를 디바이스 프록시 MFT라고 합니다. 이 메커니즘을 활용하려면 AVStream 미니드라이버에서 다음을 수행해야 합니다.
변환 함수를 AVStream 미니드라이버의 일부인 개별 KS 필터로 노출합니다. 예를 들어 디바이스에 디코딩, 인코딩 및 비디오 처리 기능이 있는 경우 이러한 함수는 세 가지 고유 KS 필터로 표현되어야 합니다.
인코더: 압축되지 않은 형식에서 압축된 형식으로 변환하는 데 사용됩니다.
디코더: 압축된 형식에서 압축되지 않은 형식으로 변환하는 데 사용되며 NV12를 포함해야 합니다.
비디오 프로세서: 크기 조정, 인터레이스/인터레이스 해제 및 형식 변환을 수행하는 데 사용됩니다. 디코더 또는 인코더 필터에 비디오 처리 지원을 포함하지 마세요.
Microsoft는 공급업체가 하드웨어 기반 크기 조정 지원을 제공하는 것이 좋습니다. 그러나 하드웨어 기반 크기 조정 지원을 제공하지 않도록 선택하는 경우 시스템 제공 비디오 처리 MFT를 사용하여 성능 저하 수준에서 크기 조정 작업을 수행할 수 있습니다. 하드웨어 기반 크기 조정 지원을 제공하지 않으면 Media Foundation 토폴로지 작성기가 시스템에서 제공하는 크기 조정 MFT를 토폴로지에 자동으로 삽입합니다.
Windows 7 이상 버전의 Windows에서 사용할 수 있는 다음 KS 범주 중 하나에 미디어 처리 KS 필터를 등록합니다.
또한 다음 범주는 다른 코드 변환 시나리오에서 사용하기 위해 정의됩니다.
그런 다음 미디어 파운데이션 애플리케이션 은 MFTEnumEx 함수를 사용하여 앞에서 언급한 범주를 사용하여 MFT로 등록된 디바이스를 열거할 수 있습니다.