Files
Ayay/SHH.CameraSdk/Drivers/DaHua/DahuaPlaySDK.cs

73 lines
2.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Runtime.InteropServices;
namespace SHH.CameraSdk;
/// <summary>
/// 大华 PlaySDK 核心接口封装 (play.dll)
/// </summary>
public static class DahuaPlaySDK
{
private const string DLL_PATH = "Drivers\\Dahua\\play.dll";
// 解码回调委托
public delegate void DECCBFUN(int nPort, IntPtr pBuf, int nSize, ref FRAME_INFO pFrameInfo, IntPtr nUser, int nReserved2);
[StructLayout(LayoutKind.Sequential)]
public struct FRAME_INFO
{
public int nWidth;
public int nHeight;
public int nStamp;
public int nType;
public int nFrameRate;
public uint dwFrameNum;
}
[DllImport(DLL_PATH)]
public static extern bool PLAY_GetFreePort(ref int plPort);
[DllImport(DLL_PATH)]
public static extern bool PLAY_ReleasePort(int nPort);
[DllImport(DLL_PATH)]
public static extern bool PLAY_OpenStream(int nPort, IntPtr pFileHead, uint nSize, uint nBufPoolSize);
[DllImport(DLL_PATH)]
public static extern bool PLAY_CloseStream(int nPort);
[DllImport(DLL_PATH)]
public static extern bool PLAY_Play(int nPort, IntPtr hWnd);
[DllImport(DLL_PATH)]
public static extern bool PLAY_Stop(int nPort);
[DllImport(DLL_PATH)]
public static extern bool PLAY_InputData(int nPort, IntPtr pBuf, uint nSize);
[DllImport(DLL_PATH)]
public static extern bool PLAY_SetDecCallBack(int nPort, DECCBFUN DecCBFun);
[DllImport(DLL_PATH)]
public static extern bool PLAY_SetStreamOpenMode(int nPort, uint nMode);
// 解码模式枚举
public enum DecodeType
{
DECODE_SW = 1, // 软解 (CPU)
DECODE_HW = 2, // 硬解拷贝模式 (GPU解码后拷贝回内存)
DECODE_HW_FAST = 3, // 硬解直接显示模式 (GPU解码直接渲染最高性能)
DECODE_HW_NV_CUDA = 7, // 英伟达显卡 CUDA 硬解 (Ayay 推荐,多路并发最强)
DECODE_HW_D3D11 = 8 // D3D11 硬解
}
// 渲染模式枚举
public enum RenderType
{
RENDER_GDI = 1,
RENDER_D3D9 = 4,
RENDER_D3D11 = 7
}
[DllImport(DLL_PATH, EntryPoint = "PLAY_SetEngine")]
public static extern bool PLAY_SetEngine(int nPort, DecodeType decodeType, RenderType renderType);
}