typedef enum
{
VBMTYPE_UNKNOWN = 0,
VBMTYPE_AUDIO = 1,
VBMTYPE_VIDEO = 2
}
VBMTYPE;
typedef enum
{
VBDIR_RECEIVE = 1,
VBDIR_TRANSMIT = 2,
VBDIR_BOTH = 3
}
VBDIR;
typedef enum
{
VBSTRM_MULTICAST = 1,
VBSTRM_TCP = 2,
VBSTRM_TUNNEL = 3,
VBSTRM_UNICAST = 4
}
VBSTREAMTYPE;
typedef void ( CALLBACK *VBASYNCCALLBACK )(
void *pUserParam,
DWORD wErrorCode );
typedef void ( CALLBACK *VBFRAMECALLBACK )(
void *pUserParam,
VBVIDAUXDATA *pVidAuxData
);
BOOL WINAPI VbMediaEnableRender(
HANDLE hDevice,
VBMTYPE nMediaType,
HWND hWnd,
VBFRAMECALLBACK pfnFrameCallback,
void *pUserData
);
BOOL WINAPI VbMediaStartStream(
HANDLE hDevice,
const char *pszIpAddr,
int nConfigId,
VBMTYPE nMediaType,
VBDIR nDirection,
VBSTREAMTYPE nStreamType,
UINT wFlags,
VBASYNCCALLBACK pfnCallback,
void *pUserParam
);
-------------------------------------------
Conversion:
public enum VBMTYPE
{
VBMTYPE_UNKNOWN = 0,
VBMTYPE_AUDIO = 1,
VBMTYPE_VIDEO = 2
}
public enum VBDIR
{
VBDIR_RECEIVE = 1,
VBDIR_TRANSMIT = 2,
VBDIR_BOTH = 3
}
public enum VBSTREAMTYPE
{
VBSTRM_MULTICAST = 1,
VBSTRM_TCP = 2,
VBSTRM_TUNNEL = 3,
VBSTRM_UNICAST = 4
}
public delegate void VBFRAMECALLBACK(
ref IntPtr pUserParam,
VBVIDAUXDATA pVidAuxData
);
public delegate void VBASYNCCALLBACK(
ref IntPtr pUserParam,
uint wErrorCode );
[DllImport("my.dll")]
static extern bool VbMediaEnableRender(IntPtr hDevice, VBMTYPE nMediaType, IntPtr hWnd,
VBFRAMECALLBACK pfnFrameCallback, ref IntPtr pUserData);
[DllImport("my.dll")]
static extern bool VbMediaStartStream(IntPtr hDevice, string pszIpAddr, int nConfigId,
VBMTYPE nMediaType, VBDIR nDirection, VBSTREAMTYPE nStreamType,
uint mFlags, VBASYNCCALLBACK pfnCallback, ref IntPtr pUserParam);
I tried it but a call to VbMediaEnableRender and VbMediaStartStream returns an error code that maps to this description:
"The requested operation is not currently supported by the API."
but this same code works fine in C++. Anyone can tell me whats wrong here
regards,
gudguy