diff --git a/src/filters/transform/vsfilter/VSFilter.props b/src/filters/transform/vsfilter/VSFilter.props
index ab06770d3..865647459 100644
--- a/src/filters/transform/vsfilter/VSFilter.props
+++ b/src/filters/transform/vsfilter/VSFilter.props
@@ -12,10 +12,10 @@
$(SolutionDir)lib;$(OutDir)..
- strmbaseD.lib;dsutilD.lib;subtitlesD.lib;subpicD.lib;basevideofilterD.lib;libssfD.lib;log4cplus_staticDU.lib;KasumiD.lib;systemD.lib;unrarD.lib
- strmbaseD.lib;dsutilD.lib;subtitlesD.lib;subpicD.lib;basevideofilterD.lib;libssfD.lib;log4cplus_staticDU.lib;KasumiD.lib;systemD.lib;unrarD.lib;dwmapi.lib
- delayimp.lib;strmbaseR.lib;dsutilR.lib;subtitlesR.lib;subpicR.lib;basevideofilterR.lib;libssfR.lib;log4cplus_staticRU.lib;KasumiR.lib;systemR.lib;unrarR.lib;winmm.lib
- delayimp.lib;strmbaseR.lib;dsutilR.lib;subtitlesR.lib;subpicR.lib;basevideofilterR.lib;libssfR.lib;log4cplus_staticRU.lib;KasumiR.lib;systemR.lib;unrarR.lib;winmm.lib;dwmapi.lib
+ strmbaseD.lib;dsutilD.lib;subtitlesD.lib;subpicD.lib;basevideofilterD.lib;libssfD.lib;log4cplus_staticDU.lib;KasumiD.lib;systemD.lib;unrarD.lib;Mfuuid.lib
+ strmbaseD.lib;dsutilD.lib;subtitlesD.lib;subpicD.lib;basevideofilterD.lib;libssfD.lib;log4cplus_staticDU.lib;KasumiD.lib;systemD.lib;unrarD.lib;dwmapi.lib;Mfuuid.lib
+ delayimp.lib;strmbaseR.lib;dsutilR.lib;subtitlesR.lib;subpicR.lib;basevideofilterR.lib;libssfR.lib;log4cplus_staticRU.lib;KasumiR.lib;systemR.lib;unrarR.lib;winmm.lib;Mfuuid.lib
+ delayimp.lib;strmbaseR.lib;dsutilR.lib;subtitlesR.lib;subpicR.lib;basevideofilterR.lib;libssfR.lib;log4cplus_staticRU.lib;KasumiR.lib;systemR.lib;unrarR.lib;winmm.lib;dwmapi.lib;Mfuuid.lib
false
diff --git a/src/filters/transform/vsfilter/xy_sub_filter.cpp b/src/filters/transform/vsfilter/xy_sub_filter.cpp
index afb8f014b..f732c701f 100644
--- a/src/filters/transform/vsfilter/xy_sub_filter.cpp
+++ b/src/filters/transform/vsfilter/xy_sub_filter.cpp
@@ -14,6 +14,8 @@
#include "xy_logger.h"
#include "moreuuids.h"
+#include
+#include
#if ENABLE_XY_LOG_RENDERER_REQUEST
# define TRACE_RENDERER_REQUEST(msg) XY_LOG_TRACE(msg)
@@ -2384,6 +2386,26 @@ HRESULT XySubFilter::FindAndConnectConsumer(IFilterGraph* pGraph)
if(pBF != (IBaseFilter*)this)
{
CComQIPtr new_consumer(pBF);
+ CLSID filterID;
+ hr = pBF->GetClassID(&filterID);
+
+ if(!new_consumer && filterID == CLSID_EnhancedVideoRenderer)
+ {
+ //EVR wouldn't implement ISubRenderConsumer itself, but a custom presenter might.
+ CComQIPtr evrservices(pBF);
+ if(evrservices)
+ {
+ ISubRenderConsumer * tmpCI = NULL;
+ HRESULT hrevr = evrservices->GetService(MR_VIDEO_RENDER_SERVICE, __uuidof(ISubRenderConsumer), (LPVOID*)&tmpCI);
+ if(tmpCI)
+ {
+ CComQIPtr tmpconsumer(tmpCI);
+ new_consumer = tmpconsumer;
+ SAFE_RELEASE(tmpCI);
+ }
+ }
+ }
+
if (new_consumer)
{
ULONG new_meric = 0;
@@ -2405,6 +2427,8 @@ HRESULT XySubFilter::FindAndConnectConsumer(IFilterGraph* pGraph)
consumer = new_consumer;
}
}
+ m_consumer = consumer;
+ hr = UpdateParamFromConsumer(true);
}
}
}