DirectShowLib.AMMediaType[] GetOutputMediaTypes(DirectShowLib.IBaseFilter filter) { DirectShowLib.AMMediaType[] result = null; DirectShowLib.IPin outPin = DirectShowLib.DsFindPin.ByDirection(filter, DirectShowLib.PinDirection.Output, 0); if (outPin is DirectShowLib.IAMStreamConfig) { int count = 0; int size = 0; Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetNumberOfCapabilities(out count, out size)); Buffer.Vector<byte> buffer = new Buffer.Vector<byte>(size); result = new DirectShowLib.AMMediaType[count]; for (int i = 0; i < count; i++) Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetStreamCaps(i, out result[i], buffer)); } return result; }
DirectShowLib.AMMediaType[] GetOutputMediaTypes(DirectShowLib.IBaseFilter filter) { DirectShowLib.AMMediaType[] result = null; DirectShowLib.IPin outPin = DirectShowLib.DsFindPin.ByDirection(filter, DirectShowLib.PinDirection.Output, 0); if (outPin is DirectShowLib.IAMStreamConfig) { int count = 0; int size = 0; Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetNumberOfCapabilities(out count, out size)); Buffer.Vector <byte> buffer = new Buffer.Vector <byte>(size); result = new DirectShowLib.AMMediaType[count]; for (int i = 0; i < count; i++) { Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetStreamCaps(i, out result[i], buffer)); } } return(result); }