EasyTypes.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. /*
  2. Copyright (c) 2012-2019 TSINGSEE.COM. All rights reserved.
  3. Github: https://github.com/tsingsee
  4. WEChat: tsingsee
  5. Website: http://www.tsingsee.com
  6. */
  7. #ifndef _Easy_Types_H
  8. #define _Easy_Types_H
  9. #ifdef _WIN32
  10. #define Easy_API __declspec(dllexport)
  11. #define Easy_APICALL __stdcall
  12. #define WIN32_LEAN_AND_MEAN
  13. #else
  14. #define Easy_API __attribute__ ((visibility("default")))
  15. #define Easy_APICALL __attribute__ ((visibility("default")))
  16. #endif
  17. #define Easy_Handle void*
  18. typedef int Easy_I32;
  19. typedef unsigned char Easy_U8;
  20. typedef unsigned char Easy_UChar;
  21. typedef unsigned short Easy_U16;
  22. typedef unsigned int Easy_U32;
  23. typedef unsigned char Easy_Bool;
  24. enum
  25. {
  26. Easy_NoErr = 0,
  27. Easy_RequestFailed = -1,
  28. Easy_Unimplemented = -2,
  29. Easy_RequestArrived = -3,
  30. Easy_OutOfState = -4,
  31. Easy_NotAModule = -5,
  32. Easy_WrongVersion = -6,
  33. Easy_IllegalService = -7,
  34. Easy_BadIndex = -8,
  35. Easy_ValueNotFound = -9,
  36. Easy_BadArgument = -10,
  37. Easy_ReadOnly = -11,
  38. Easy_NotPreemptiveSafe = -12,
  39. Easy_NotEnoughSpace = -13,
  40. Easy_WouldBlock = -14,
  41. Easy_NotConnected = -15,
  42. Easy_FileNotFound = -16,
  43. Easy_NoMoreData = -17,
  44. Easy_AttrDoesntExist = -18,
  45. Easy_AttrNameExists = -19,
  46. Easy_InstanceAttrsNotAllowed = -20,
  47. Easy_InvalidSocket = -21,
  48. Easy_MallocError = -22,
  49. Easy_ConnectError = -23,
  50. Easy_SendError = -24
  51. };
  52. typedef int Easy_Error;
  53. typedef enum __EASY_ACTIVATE_ERR_CODE_ENUM
  54. {
  55. EASY_ACTIVATE_INVALID_KEY = -1, /* 无效Key */
  56. EASY_ACTIVATE_TIME_ERR = -2, /* 时间错误 */
  57. EASY_ACTIVATE_PROCESS_NAME_LEN_ERR = -3, /* 进程名称长度不匹配 */
  58. EASY_ACTIVATE_PROCESS_NAME_ERR = -4, /* 进程名称不匹配 */
  59. EASY_ACTIVATE_VALIDITY_PERIOD_ERR= -5, /* 有效期校验不一致 */
  60. EASY_ACTIVATE_PLATFORM_ERR = -6, /* 平台不匹配 */
  61. EASY_ACTIVATE_COMPANY_ID_LEN_ERR= -7, /* 授权使用商不匹配 */
  62. EASY_ACTIVATE_SUCCESS = 9999, /* 激活成功 */
  63. }EASY_ACTIVATE_ERR_CODE_ENUM;
  64. /* 视频编码 */
  65. #define EASY_SDK_VIDEO_CODEC_H264 0x1C /* H264 */
  66. #define EASY_SDK_VIDEO_CODEC_H265 0xAE /* H265 */
  67. #define EASY_SDK_VIDEO_CODEC_MJPEG 0x08 /* MJPEG */
  68. #define EASY_SDK_VIDEO_CODEC_MPEG4 0x0D /* MPEG4 */
  69. /* 音频编码 */
  70. #define EASY_SDK_AUDIO_CODEC_AAC 0x15002 /* AAC */
  71. #define EASY_SDK_AUDIO_CODEC_G711U 0x10006 /* G711 ulaw*/
  72. #define EASY_SDK_AUDIO_CODEC_G711A 0x10007 /* G711 alaw*/
  73. #define EASY_SDK_AUDIO_CODEC_G726 0x1100B /* G726 */
  74. #define EASY_SDK_EVENT_CODEC_ERROR 0x63657272 /* ERROR */
  75. #define EASY_SDK_EVENT_CODEC_EXIT 0x65786974 /* EXIT */
  76. /* 音视频帧标识 */
  77. #define EASY_SDK_VIDEO_FRAME_FLAG 0x00000001 /* 视频帧标志 */
  78. #define EASY_SDK_AUDIO_FRAME_FLAG 0x00000002 /* 音频帧标志 */
  79. #define EASY_SDK_EVENT_FRAME_FLAG 0x00000004 /* 事件帧标志 */
  80. #define EASY_SDK_RTP_FRAME_FLAG 0x00000008 /* RTP帧标志 */
  81. #define EASY_SDK_SDP_FRAME_FLAG 0x00000010 /* SDP帧标志 */
  82. #define EASY_SDK_MEDIA_INFO_FLAG 0x00000020 /* 媒体类型标志*/
  83. #define EASY_SDK_SNAP_FRAME_FLAG 0x00000040 /* 图片标志*/
  84. /* 视频关键字标识 */
  85. #define EASY_SDK_VIDEO_FRAME_I 0x01 /* I帧 */
  86. #define EASY_SDK_VIDEO_FRAME_P 0x02 /* P帧 */
  87. #define EASY_SDK_VIDEO_FRAME_B 0x03 /* B帧 */
  88. #define EASY_SDK_VIDEO_FRAME_J 0x04 /* JPEG */
  89. /* 连接类型 */
  90. typedef enum __EASY_RTP_CONNECT_TYPE
  91. {
  92. EASY_RTP_OVER_TCP = 0x01, /* RTP Over TCP */
  93. EASY_RTP_OVER_UDP, /* RTP Over UDP */
  94. EASY_RTP_OVER_MULTICAST /* RTP Over MULTICAST */
  95. }EASY_RTP_CONNECT_TYPE;
  96. typedef struct __EASY_AV_Frame
  97. {
  98. Easy_U32 u32AVFrameFlag; /* 帧标志 视频 or 音频 */
  99. Easy_U32 u32AVFrameLen; /* 帧的长度 */
  100. Easy_U32 u32VFrameType; /* 视频的类型,I帧或P帧 */
  101. Easy_U8 *pBuffer; /* 数据 */
  102. Easy_U32 u32TimestampSec; /* 时间戳(秒)*/
  103. Easy_U32 u32TimestampUsec; /* 时间戳(微秒) */
  104. Easy_U32 u32PTS;
  105. } EASY_AV_Frame;
  106. /* 媒体信息 */
  107. typedef struct __EASY_MEDIA_INFO_T
  108. {
  109. Easy_U32 u32VideoCodec; /* 视频编码类型 */
  110. Easy_U32 u32VideoFps; /* 视频帧率 */
  111. Easy_U32 u32AudioCodec; /* 音频编码类型 */
  112. Easy_U32 u32AudioSamplerate; /* 音频采样率 */
  113. Easy_U32 u32AudioChannel; /* 音频通道数 */
  114. Easy_U32 u32AudioBitsPerSample; /* 音频采样精度 */
  115. Easy_U32 u32VpsLength;
  116. Easy_U32 u32SpsLength;
  117. Easy_U32 u32PpsLength;
  118. Easy_U32 u32SeiLength;
  119. Easy_U8 u8Vps[256];
  120. Easy_U8 u8Sps[256];
  121. Easy_U8 u8Pps[128];
  122. Easy_U8 u8Sei[128];
  123. }EASY_MEDIA_INFO_T;
  124. /* 帧信息 */
  125. typedef struct
  126. {
  127. unsigned int codec; /* 音视频格式 */
  128. unsigned int type; /* 视频帧类型 */
  129. unsigned char fps; /* 视频帧率 */
  130. unsigned short width; /* 视频宽 */
  131. unsigned short height; /* 视频高 */
  132. unsigned int reserved1; /* 保留参数1 */
  133. unsigned int reserved2; /* 保留参数2 */
  134. unsigned int reserved3; /* 保留参数3 */
  135. unsigned int sample_rate; /* 音频采样率 */
  136. unsigned int channels; /* 音频声道数 */
  137. unsigned int bits_per_sample; /* 音频采样精度 */
  138. unsigned int length; /* 音视频帧大小 */
  139. unsigned int timestamp_usec; /* 时间戳,微妙 */
  140. unsigned int timestamp_sec; /* 时间戳 秒 */
  141. unsigned int pts;
  142. float bitrate; /* 比特率 */
  143. float losspacket; /* 丢包率 */
  144. }EASY_FRAME_INFO;
  145. #endif