[英]QueryInterface on Filter in DirectShow.NET
我使用了Video Processing Project中的过滤器,并希望设置过滤器的设置。 在c ++中,它通过ISettingsInterface起作用。
ISettingsInterface * pSettingsInterface = NULL;
pRotateFilter->QueryInterface ( IID_ISettingsInterface, ( void ** ) &pSettingsInterface );
hr = pSettingsInterface->SetParameter ( "rotationmode", "3" );
hr = g_pGraph->AddFilter ( pRotateFilter, L"RotateFilter" );
在DirectShowlib C#包装器中,没有这样的接口吗? 筛选器上也没有QueryInterface
函数。
我通过声明接口解决了它:
[ComImport, System.Security.SuppressUnmanagedCodeSecurity,Guid("388EEF20-40CC-4752-A0FF-66AA5C4AF8FA"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ISettingsInterface
{
[PreserveSig]
int GetParameter(
[MarshalAs(UnmanagedType.LPStr)] String type,
[MarshalAs(UnmanagedType.I4)] int buffersize,
[In, Out, MarshalAs(UnmanagedType.LPStr)] String value,
[In, Out, MarshalAs(UnmanagedType.I4)] ref int length
);
[PreserveSig]
int SetParameter(
[MarshalAs(UnmanagedType.LPStr)] String type,
[MarshalAs(UnmanagedType.LPStr)] String value
);
[PreserveSig]
int GetParameterSettings(
[MarshalAs(UnmanagedType.LPStr)] ref String szResult,
[In] int nSize
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.