You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 rivejä
8.4 KiB

  1. #pragma once
  2. #include "JObject_NetSDK.h"
  3. #include "EncodeInfo.h"
  4. #include "CombEncodeInfo.h"
  5. NS_NETSDK_CFG_BEGIN
  6. struct ConfigPair
  7. {
  8. const char* name;
  9. int value;
  10. };
  11. /// 捕获压缩格式类型
  12. enum CaptureCompressType
  13. {
  14. CAPTURE_COMPRESS_DIVX_MPEG4, ///< DIVX MPEG4。
  15. CAPTURE_COMPRESS_MS_MPEG4, ///< MS MPEG4。 (已弃用)
  16. CAPTURE_COMPRESS_MPEG2, ///< MPEG2。
  17. CAPTURE_COMPRESS_MPEG1, ///< MPEG1。
  18. CAPTURE_COMPRESS_H263, ///< H.263
  19. CAPTURE_COMPRESS_MJPG, ///< MJPG
  20. CAPTURE_COMPRESS_FCC_MPEG4, ///< FCC MPEG4 (已弃用)
  21. CAPTURE_COMPRESS_H264, ///< H.264
  22. CAPTURE_COMPRESS_H265, ///< H.265
  23. CAPTURE_COMPRESS_NR ///< 枚举的压缩标准数目。
  24. };
  25. static ConfigPair CompressionMap[] =
  26. {
  27. {"MPEG4", CAPTURE_COMPRESS_DIVX_MPEG4},
  28. {" ", CAPTURE_COMPRESS_MS_MPEG4},
  29. {"MPEG2", CAPTURE_COMPRESS_MPEG2},
  30. {"MPEG1", CAPTURE_COMPRESS_MPEG1},
  31. {"H.263", CAPTURE_COMPRESS_H263},
  32. {"MJPG", CAPTURE_COMPRESS_MJPG},
  33. {" ", CAPTURE_COMPRESS_FCC_MPEG4},
  34. {"H.264", CAPTURE_COMPRESS_H264},
  35. {"H.265", CAPTURE_COMPRESS_H265},
  36. {NULL, }
  37. };
  38. /// 捕获分辨率类型
  39. enum CaptureImageSize
  40. {
  41. CAPTURE_IMAGE_SIZE_D1, ///< 704*576(PAL) 704*480(NTSC)
  42. CAPTURE_IMAGE_SIZE_HD1, ///< 704*288(PAL) 704*240(NTSC)
  43. CAPTURE_IMAGE_SIZE_BCIF, ///< 352*576(PAL) 352*480(NTSC)
  44. CAPTURE_IMAGE_SIZE_CIF, ///< 352*288(PAL) 352*240(NTSC)
  45. CAPTURE_IMAGE_SIZE_QCIF, ///< 176*144(PAL) 176*120(NTSC)
  46. CAPTURE_IMAGE_SIZE_VGA, ///< 640*480(PAL) 640*480(NTSC)
  47. CAPTURE_IMAGE_SIZE_QVGA, ///< 320*240(PAL) 320*240(NTSC)
  48. CAPTURE_IMAGE_SIZE_SVCD, ///< 480*480(PAL) 480*480(NTSC)
  49. CAPTURE_IMAGE_SIZE_QQVGA, ///< 160*128(PAL) 160*128(NTSC)
  50. CAPTURE_IMAGE_SIZE_NR = 9, ///< 枚举的图形大小种类的数目。
  51. CAPTURE_IMAGE_SIZE_ND1 = 9, ///< 240*192
  52. CAPTURE_IMAGE_SIZE_650TVL, ///< 926*576
  53. CAPTURE_IMAGE_SIZE_720P, ///< 1280*720
  54. CAPTURE_IMAGE_SIZE_1_3M, ///< 1280*960
  55. CAPTURE_IMAGE_SIZE_UXGA , ///< 1600*1200
  56. CAPTURE_IMAGE_SIZE_1080P, ///< 1920*1080
  57. CAPTURE_IMAGE_SIZE_WUXGA, ///< 1920*1200
  58. CAPTURE_IMAGE_SIZE_2_5M, ///< 1872*1408
  59. CAPTURE_IMAGE_SIZE_3M, ///< 2048*1536
  60. CAPTURE_IMAGE_SIZE_5M, ///< 3744*1408
  61. CAPTURE_IMAGE_SIZE_EXT_NR = 19,
  62. CAPTURE_IMAGE_SIZE_1080N = 19, ///< 960*1080
  63. CAPTURE_IMAGE_SIZE_4M, ///< 2592*1520
  64. CAPTURE_IMAGE_SIZE_6M, ///< 3072×2048
  65. CAPTURE_IMAGE_SIZE_8M, ///< 3264×2448
  66. CAPTURE_IMAGE_SIZE_12M, ///< 4000*3000
  67. CAPTURE_IMAGE_SIZE_4K, ///< 4096 * 2160/3840*2160
  68. CAPTURE_IMAGE_SIZE_EXT_V2_NR =25,
  69. CAPTURE_IMAGE_SIZE_720N = 25, ///< 640*720
  70. CAPTURE_IMAGE_SIZE_WSVGA, ///< 1024*576
  71. CAPTURE_IMAGE_SIZE_NHD, ///< Wifi IPC 640*360
  72. CAPTURE_IMAGE_SIZE_3M_N, ///< 1024*1536
  73. CAPTURE_IMAGE_SIZE_4M_N, ///< 1296*1520
  74. CAPTURE_IMAGE_SIZE_5M_N, ///< 1872*1408
  75. CAPTURE_IMAGE_SIZE_4K_N, ///< 2048 * 2160通用/1920*2160海思
  76. CAPTURE_IMAGE_SIZE_EXT_V3_NR,
  77. };
  78. static ConfigPair s_videoResolutionMap[] =
  79. {
  80. {"D1", CAPTURE_IMAGE_SIZE_D1},
  81. {"HD1", CAPTURE_IMAGE_SIZE_HD1},
  82. {"BCIF", CAPTURE_IMAGE_SIZE_BCIF},
  83. {"CIF", CAPTURE_IMAGE_SIZE_CIF},
  84. {"QCIF", CAPTURE_IMAGE_SIZE_QCIF},
  85. {"VGA", CAPTURE_IMAGE_SIZE_VGA},
  86. {"QVGA", CAPTURE_IMAGE_SIZE_QVGA},
  87. {"SVCD", CAPTURE_IMAGE_SIZE_SVCD},
  88. {"QQVGA",CAPTURE_IMAGE_SIZE_QQVGA},
  89. {"ND1",CAPTURE_IMAGE_SIZE_ND1},
  90. {"650TVL",CAPTURE_IMAGE_SIZE_650TVL},
  91. {"720P",CAPTURE_IMAGE_SIZE_720P},
  92. {"1_3M",CAPTURE_IMAGE_SIZE_1_3M},
  93. {"UXGA",CAPTURE_IMAGE_SIZE_UXGA},
  94. {"1080P",CAPTURE_IMAGE_SIZE_1080P},
  95. {"WUXGA",CAPTURE_IMAGE_SIZE_WUXGA},
  96. {"2_5M",CAPTURE_IMAGE_SIZE_2_5M},
  97. {"3M",CAPTURE_IMAGE_SIZE_3M},
  98. {"5M",CAPTURE_IMAGE_SIZE_5M},
  99. {"1080N",CAPTURE_IMAGE_SIZE_1080N},
  100. {"4M",CAPTURE_IMAGE_SIZE_4M},
  101. {"6M",CAPTURE_IMAGE_SIZE_6M},
  102. {"8M",CAPTURE_IMAGE_SIZE_8M},
  103. {"12M",CAPTURE_IMAGE_SIZE_12M},
  104. {"4K",CAPTURE_IMAGE_SIZE_4K},
  105. {"720N",CAPTURE_IMAGE_SIZE_720N},
  106. {"WSVGA",CAPTURE_IMAGE_SIZE_WSVGA},
  107. {"NHD", CAPTURE_IMAGE_SIZE_NHD},
  108. {"3M_N",CAPTURE_IMAGE_SIZE_3M_N},
  109. {"4M_N",CAPTURE_IMAGE_SIZE_4M_N},
  110. {"5M_N",CAPTURE_IMAGE_SIZE_5M_N},
  111. {"4K_N",CAPTURE_IMAGE_SIZE_4K_N},
  112. {NULL, }
  113. };
  114. #define JK_EncodeCapability "EncodeCapability"
  115. class EncodeCapability : public JObject
  116. {
  117. public:
  118. JIntObj ChannelMaxSetSync; ///< 每个通道分辨率是否需要同步 0-不同步, 1 -同步
  119. JObjArray<CombEncodeInfo> mCombEncodeInfo; ///< 组合编码信息,暂时最大就4中码流
  120. JIntHex Compression; ///< 编码模式掩码
  121. JObjArray<EncodeInfo> mEncodeInfo; ///< 编码信息,暂时最大就4中码流
  122. JObjArray<JIntHex> ExImageSizePerChannel; ///< 每个通道支持的辅码流图像分辨率
  123. JObjArray<JObjArray<JIntHex> > ExImageSizePerChannelEx; ///< 每个通道支持的辅码流图像分辨率
  124. JObjArray<JIntHex> ImageSizePerChannel; ///< 每个通道支持的图像分辨率
  125. JIntObj MaxBitrate; ///< 最高码流Kbps
  126. JIntObj MaxEncodePower; ///< 支持的最大编码能力
  127. JObjArray<JIntHex> MaxEncodePowerPerChannel; ///< 每个通道支持的最高编码能力
  128. JObjArray<JIntHex> ThirdStreamImageSize; ///< CHL_3IRD_T码流支持的图像分辨率
  129. JObjArray<JIntHex> FourthStreamImageSize; ///< CHL_4RTH_T码流支持的图像分辨率
  130. public:
  131. EncodeCapability(JObject *pParent = NULL, const char *szName = JK_EncodeCapability):
  132. JObject(pParent,szName),
  133. ChannelMaxSetSync(this, "ChannelMaxSetSync"),
  134. mCombEncodeInfo(this, "CombEncodeInfo"),
  135. Compression(this, "Compression"),
  136. mEncodeInfo(this, "EncodeInfo"),
  137. ExImageSizePerChannel(this, "ExImageSizePerChannel"),
  138. ExImageSizePerChannelEx(this, "ExImageSizePerChannelEx"),
  139. ImageSizePerChannel(this, "ImageSizePerChannel"),
  140. MaxBitrate(this, "MaxBitrate"),
  141. MaxEncodePower(this, "MaxEncodePower"),
  142. ThirdStreamImageSize(this, "ThirdStreamImageSize"),
  143. FourthStreamImageSize(this, "FourthStreamImageSize"),
  144. MaxEncodePowerPerChannel(this, "MaxEncodePowerPerChannel"){
  145. this->Parse("{ \"EncodeCapability\" : { \"ChannelMaxSetSync\" : 0, \"CombEncodeInfo\" : [ { \"CompressionMask\" : \"0x00000000\", \"Enable\" : true, \"HaveAudio\" : true, \"ResolutionMask\" : \"0x00000000\", \"StreamType\" : \"MainStream\" }, { \"CompressionMask\" : \"0x00000000\", \"Enable\" : false, \"HaveAudio\" : false, \"ResolutionMask\" : \"0x00000000\", \"StreamType\" : \"ExtraStream2\" }, { \"CompressionMask\" : \"0x00000000\", \"Enable\" : false, \"HaveAudio\" : false, \"ResolutionMask\" : \"0x00000000\", \"StreamType\" : \"ExtraStream3\" }, { \"CompressionMask\" : \"0x00000000\", \"Enable\" : false, \"HaveAudio\" : false, \"ResolutionMask\" : \"0x00000000\", \"StreamType\" : \"ExtraStream4\" }, { \"CompressionMask\" : \"0x00000000\", \"Enable\" : false, \"HaveAudio\" : false, \"ResolutionMask\" : \"0x00000000\", \"StreamType\" : \"JPEGStream\" } ], \"Compression\" : \"0x00000000\", \"EncodeInfo\" : [ { \"CompressionMask\" : \"0x00000080\", \"Enable\" : true, \"HaveAudio\" : true, \"ResolutionMask\" : \"0xFFBFFFFF\", \"StreamType\" : \"MainStream\" }, { \"CompressionMask\" : \"0x00000080\", \"Enable\" : true, \"HaveAudio\" : true, \"ResolutionMask\" : \"0xFFFFFFFF\", \"StreamType\" : \"ExtraStream2\" }, { \"CompressionMask\" : \"0x00000000\", \"Enable\" : false, \"HaveAudio\" : false, \"ResolutionMask\" : \"0x00000000\", \"StreamType\" : \"ExtraStream3\" }, { \"CompressionMask\" : \"0x00000000\", \"Enable\" : false, \"HaveAudio\" : false, \"ResolutionMask\" : \"0x00000000\", \"StreamType\" : \"ExtraStream4\" }, { \"CompressionMask\" : \"0x00000080\", \"Enable\" : true, \"HaveAudio\" : true, \"ResolutionMask\" : \"0xFFFFFFFF\", \"StreamType\" : \"JPEGStream\" } ], \"ExImageSizePerChannel\" : [ \"0x00000009\" ], \"ExImageSizePerChannelEx\" : [ [ \"0x00000018\", \"0x00000000\", \"0x00000000\", \"0x00000018\", \"0x00000010\", \"0x00000078\", \"0x00000040\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000009\", \"0x00000009\", \"0x00000000\", \"0x00000009\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\", \"0x00000000\" ] ], \"FourthStreamImageSize\" : [ \"0x00000000\" ], \"ImageSizePerChannel\" : [ \"0x00000801\" ], \"MaxBitrate\" : 49152, \"MaxEncodePower\" : 38016000, \"MaxEncodePowerPerChannel\" : [ \"0x02441400\" ], \"ThirdStreamImageSize\" : [ \"0x00000000\" ] }, \"Name\" : \"EncodeCapability\", \"Ret\" : 100, \"SessionID\" : \"0x00000178\" }");
  146. };
  147. ~EncodeCapability(void){};
  148. };
  149. NS_NETSDK_CFG_END