비스타와 Overlay Mixer

Player를 비스타에서 돌리는 실험을 하는중..
디폴트로 Overlay Mixer Renderer를 사용하는데 화면이 깜빡이고 필터가 연결이 되지 않는 현상이 발생하였다.

그래서 KMP로 테스트 해보니 OverlayMixer가 사용중이라고 뜨고 역시나 사용하려고 하면 깜빡인다.
XP에서 잘되던 Overlay Mixer를 Vista에서는 포기해야될 듯 하다.

OnWindows Vista or later, the Overlay Mixer disables Desktop WIndow Manager(DWM) composition if the display driver supports hardware overlay.
Applications should avoid using the Overlay Mixer Filter;
use the VMR-9 or the Enhanced Video Renderer(EVR) instead
.
출처: msdn - Overlay Mixer Filter

그렇다면 버전별로 설정을 바꿔야 하겠다.

DWORD dwWinver = GetVersion();

/// vista 이상에서 Overlay Mixer를 사용에 문제가 있다. VMR9를 Default로 하자.
if(dwWinver >= _WIN_VISTA) 
    m_pProperties.SetPropRenderer(X_VMR9_RENDERER);
else
    m_pProperties.SetPropRenderer(X_OVERLAYMIXER);


GetVersion Function - msdn

#include <windows.h>
#include <stdio.h>
void main()
{
    DWORD dwVersion, dwMajorVersion, dwMinorVersion, dwBuild;
    dwVersion = GetVersion();
     
    // Get the Windows version.
    dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
    dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));


    
    // Get the build number.
    if (dwVersion < 0x80000000)
        dwBuild = (DWORD)(HIWORD(dwVersion));
    else // Windows Me/98/95
        dwBuild = 0;
    
    printf("Version is %d.%d (%d)\n", dwMajorVersion, dwMinorVersion, dwBuild);
}

by 이카로스 | 2008/05/16 10:39 | DirectShow | 트랙백 | 덧글(2)

트랙백 주소 : http://icarosss.egloos.com/tb/1891100
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김정현 at 2009/07/30 10:46
안녕하세요 저도 Direct show 공부 중인 학생입니다.
다름이 아니라 저도 필터를 연결하는 부분을 공부 하다가 비스타를 쓰고 있어서 문제가 되는 경험을 하고 있는데요
정말 좋은 내용 보고 갑니다.
다름이 아니라 디폴트 선언해 주는 저 부분을 어디다가 넣어야 설정이 될지 질문 드립니다 ^^
Commented by 이카로스 at 2009/07/30 18:10
저 선언은 단순히 define된 값일 뿐이구요. 그값을 어딘가에 저장해서 Directshow 필터를 연결할때 비디오 렌더러를 저 값에 따라 다르게 적용시킨거에요.

:         :

:

비공개 덧글

<< 이전 페이지     다음 페이지 >>