Closed clsid2 closed 4 years ago
My DVD-Video is playing fine. Show the error message. Which DVD are you trying to open?
"DVD: Copy-protection fail" in status bar.
Any protected commercial DVD should trigger it I think. Ripped DVD not.
The code "MacrovisionKicker" is available in MPC VR. It is the same as in the EVR-CP. Added in 089f3bf05f22a625cef708280402492aa8397cab. MFC is required for the code to work (see 33161787266f1bb951f94dc310486a055e914b08). I don’t know why.
PS: If I use DAEMON Tools Lite 4.41.3.0173, then on some ISO files I get this message: DVD: Incompatible Disc And Decoder Regions (0≠1) If I use Virtual CloneDrive 5.5.0.0, then all my ISO files open without problems. Windows 7 SP1 x64.
I did some debugging and CMpcVideoRenderer::Set is called three times. First two times with Id AM_PROPERTY_COPY_MACROVISION and then AM_PROPERTY_COPY_DIGITAL_CP.
http://forum.doom9.net/showthread.php?s=151333341d59e3ec1dd15949576e0b21&p=1599257#post1599257
@madshi Any tips for us?
Please check. https://yadi.sk/d/X0EVMKP4TcmnHQ/Test/DVD-Video
No time atm to check your/my code. But if it works with EVR, why would it not work with your new renderer? Must be something else, I guess? I've no idea...
In case of EVR it only intercepts/modifies the macrovision call, and just passes on all other calls to the standard EVR implementation. MPCVR needs to implement everything itself.
v0lt, this makes it work:
diff --git a/Source/VideoRenderer.cpp b/Source/VideoRenderer.cpp
index be96f79..9c51ef3 100644
--- a/Source/VideoRenderer.cpp
+++ b/Source/VideoRenderer.cpp
@@ -585,7 +585,7 @@ STDMETHODIMP CMpcVideoRenderer::Set(REFGUID PropSet, ULONG Id, LPVOID pInstanceD
DLog(L"IKsPropertySet::Set(%s, %u, ...)", CStringFromGUID(PropSet), Id);
if (PropSet == AM_KSPROPSETID_CopyProt) {
- if (Id == AM_PROPERTY_COPY_MACROVISION) {
+ if (Id == AM_PROPERTY_COPY_MACROVISION || Id == AM_PROPERTY_COPY_DIGITAL_CP) {
DLog(L"Oops, no-no-no, no macrovision please");
return S_OK;
}
@@ -610,7 +610,16 @@ STDMETHODIMP CMpcVideoRenderer::Get(REFGUID PropSet, ULONG Id, LPVOID pInstanceD
{
DLog(L"IKsPropertySet::Get(%s, %u, ...)", CStringFromGUID(PropSet), Id);
- return E_PROP_SET_UNSUPPORTED;
+ if (PropSet == AM_KSPROPSETID_CopyProt) {
+ if (Id == AM_PROPERTY_COPY_ANALOG_COMPONENT) {
+ return S_FALSE;
+ }
+ }
+ else {
+ return E_PROP_SET_UNSUPPORTED;
+ }
+
+ return E_PROP_ID_UNSUPPORTED;
}
STDMETHODIMP CMpcVideoRenderer::QuerySupported(REFGUID PropSet, ULONG Id, ULONG* pTypeSupport)
@@ -618,7 +627,7 @@ STDMETHODIMP CMpcVideoRenderer::QuerySupported(REFGUID PropSet, ULONG Id, ULONG*
DLog(L"IKsPropertySet::QuerySupported(%s, %u, ...)", CStringFromGUID(PropSet), Id);
if (PropSet == AM_KSPROPSETID_CopyProt) {
- if (Id == AM_PROPERTY_COPY_MACROVISION) {
+ if (Id == AM_PROPERTY_COPY_MACROVISION || Id == AM_PROPERTY_COPY_DIGITAL_CP) {
*pTypeSupport = KSPROPERTY_SUPPORT_SET;
return S_OK;
}
@clsid2 Thank. I added your patch to b520f1d.
@clsid2 Problem solved?
Yes
I get copyprotect fail error.
I think using CMacrovisionKicker code like the other renderers do should help solve it.