Re: AcrSoftVideoDecoder - Attempted to read or write protected memory
In looking through the code and doing some simple debugging I see that this problem arises from a call to render the graph for the video connection pin (not sure if I am saying that correctly). The exception comes out of the highlighted line below (which calls into Render(ppinOut) inside the ArcSoft Video Decoder AX driver). Not sure what is new in MP that is causing this...
I just installed an updated MP from SVN (post RC1) and I am getting a failure with the ArcSoftVideoDecoder as below. I have attached logs.
Anyone seen anything like this? Was working fine prior to updating MP. It works with CoreAVC but I get an unbelievable number of late frames and the video and audio goes out of sync very quickly.
TSReaderPlayer: Exception while creating DShow graph Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
2010-03-13 18:00:14.453125 [ERROR][MPMain(1)]: Remove of filter: ArcSoft Video Decoder, failed with code (HR): 0, explanation: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
2010-03-13 18:00:14.453125 [ERROR][MPMain(1)]: Remove of filter: Video Mixing Renderer 9, failed with code (HR): 0, explanation: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
2010-03-13 18:00:14.453125 [ERROR][MPMain(1)]: Remove of filter: TsReader, failed with code (HR): 0, explanation: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
2010-03-13 18:00:14.546875 [ERROR][MPMain(1)]: TSReaderPlayer:GetInterfaces() failed
In looking through the code and doing some simple debugging I see that this problem arises from a call to render the graph for the video connection pin (not sure if I am saying that correctly). The exception comes out of the highlighted line below (which calls into Render(ppinOut) inside the ArcSoft Video Decoder AX driver). Not sure what is new in MP that is causing this...
Code:
public static void RenderUnconnectedOutputPins(IGraphBuilder graphBuilder, IBaseFilter baseFilter)
{
if (baseFilter == null)
return;
int fetched;
IEnumPins pinEnum;
int hr = baseFilter.EnumPins(out pinEnum);
DsError.ThrowExceptionForHR(hr);
if (hr == 0 && pinEnum != null)
{
pinEnum.Reset();
IPin[] pins = new IPin[1];
while (pinEnum.Next(1, pins, out fetched) == 0 && fetched > 0)
{
PinDirection pinDir;
pins[0].QueryDirection(out pinDir);
if (pinDir == PinDirection.Output && !HasConnection(pins[0]))
{
FilterInfo i;
PinInfo pinInfo;
string pinName = string.Empty;
if (baseFilter.QueryFilterInfo(out i) == 0)
{
if (pins[0].QueryPinInfo(out pinInfo) == 0)
{
Log.Debug("Filter: {0} - try to connect: {1}", i.achName, pinInfo.name);
pinName = pinInfo.name;
DsUtils.FreePinInfo(pinInfo);
}
}
ReleaseComObject(i.pGraph);
[COLOR="Red"][B]hr = graphBuilder.Render(pins[0]);[/B][/COLOR]
if (hr != 0)
Log.Debug(" - failed");
}
ReleaseComObject(pins[0]);
}
ReleaseComObject(pinEnum);
}
}