none
Overlay mixer seems to be broken in Windows 8

    Question

  • Hi !

    I have tried many directshow based player that use overlay mixer (eg. zoom player, vlc, desktop movie) but none of them can connect to overlay mixer.

    My own application Desktop Movie ( http://falcosoft.hu/softwares.html#desktopmovie ) can only use overlay mixer to accomplish its task to project movies to the desktop. But the application cannot connect to overlay mixer pins. All of the above mentioned applications work correctly from Win9x to Win 7, only windows 8 shows this problem. Even in graphedit the pins are not available, but overlay mixer is there as an active directshow filter. What is the problem ? Any ideas or solutions ?

    Thanks in advance

    Zoltán Bacskó

    Falcosoft



    Monday, December 10, 2012 2:44 PM

Answers

  • Hi !

    Thank you for your answer !

    The problem is these methods require a complete rewrite of the application moreover breaks legacy (WinXP) compatibility. I have already read the warnings you cited, but apparently Windows 8 still supports overlay mixer but its use is not recommended. Anyway the problem emphasized in these articles is less relevant in Windows 8 than in Vista and Win 7 since aero glass has been removed. But the important thing is that I have found the solution. It seems that this is not a bug, but MS intentionally disabled using overlay mixer for all applications but the ones listed in the registry. You should create a key if it does not exist in:

    [HKEY_CURRENT_USER\Software\Microsoft\Direct3D\Shims\EnableOverlays]

    create a DWORD with the path and name of the application you want to enable overlay and set the value to 1.

    eg.

    "F:\\BP\\COMPILED\\Public_projects\\desktop_movie\\dmovie.exe"=dword:00000001

    Best Regards:

    Zoltán Bacskó

    Falcosoft


    Wednesday, December 12, 2012 5:06 PM

All replies

  • Documentation http://msdn.microsoft.com/en-us/library/windows/desktop/dd390946%28v=vs.85%29.aspx

    On Windows 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.

    and

    Note  The Video Mixing Renderer 9 is now preferred over the Overlay Mixer filter, except in VPE scenarios.

    I don't really know how you use the overlay mixer to accomplish video on desktop. My experience has shown that if you're using win7, then it's good idea to use EVR, instead of overlay mixer/VMR7/9/Default renderer.

    There are few ways I can imagine;
    1) Use EVR custom presenter and set desktop background on each frame. This might be too slow.

    2) Make your desktop background DARK_PURPLE. Then use EVR and take periodically efficiently screenshot of current desktop. Blend video and "desktop screenshot" together with colorKey=DARK_PURPLE(so you can retain icons and other stuff). You also need to make your window pass mouse clicks/keyboard clicks/mouse moves and other events to desktop underneath, so it would seem as real.


    C#/C++ | WPF/DirectShow/OpenGL/Winapi/

    Tuesday, December 11, 2012 5:48 PM
  • Hi !

    Thank you for your answer !

    The problem is these methods require a complete rewrite of the application moreover breaks legacy (WinXP) compatibility. I have already read the warnings you cited, but apparently Windows 8 still supports overlay mixer but its use is not recommended. Anyway the problem emphasized in these articles is less relevant in Windows 8 than in Vista and Win 7 since aero glass has been removed. But the important thing is that I have found the solution. It seems that this is not a bug, but MS intentionally disabled using overlay mixer for all applications but the ones listed in the registry. You should create a key if it does not exist in:

    [HKEY_CURRENT_USER\Software\Microsoft\Direct3D\Shims\EnableOverlays]

    create a DWORD with the path and name of the application you want to enable overlay and set the value to 1.

    eg.

    "F:\\BP\\COMPILED\\Public_projects\\desktop_movie\\dmovie.exe"=dword:00000001

    Best Regards:

    Zoltán Bacskó

    Falcosoft


    Wednesday, December 12, 2012 5:06 PM