提交 | 用户 | 时间
|
149dd0
|
1 |
package com.iailab.netsdk.lib.structure; |
H |
2 |
|
|
3 |
import com.iailab.netsdk.lib.NetSDKLib; |
|
4 |
import com.iailab.netsdk.lib.enumeration.EM_H264_PROFILE_RANK; |
|
5 |
import com.iailab.netsdk.lib.enumeration.STREAM_RATE_TYPE; |
|
6 |
import com.iailab.netsdk.lib.enumeration.TALK_CODING_TYPE; |
|
7 |
|
7412dd
|
8 |
import static com.iailab.netsdk.lib.constant.SDKStructureFieldLenth.*; |
149dd0
|
9 |
|
H |
10 |
/** |
|
11 |
* 码流配置对应能力 |
|
12 |
* |
|
13 |
* @author 47040 |
|
14 |
* @since Created at 2021/5/25 21:10 |
|
15 |
*/ |
|
16 |
public class NET_STREAM_CFG_CAPS extends NetSDKLib.SdkStructure { |
|
17 |
/** |
|
18 |
* 结构体大小 |
|
19 |
*/ |
|
20 |
public int dwSize; |
|
21 |
/** |
|
22 |
* 支持的音频编码类型 枚举值数组 {@link TALK_CODING_TYPE} |
|
23 |
* 有效长度由 {@link #nAudioCompressionTypeNum} 决定 |
|
24 |
*/ |
|
25 |
public int[] nAudioCompressionTypes = new int[CFG_MAX_AUDIO_ENCODE_TYPE]; |
|
26 |
/** |
|
27 |
* 音频压缩格式个数 |
|
28 |
* 代表 {@link #nAudioCompressionTypes} 的有效长度 |
|
29 |
*/ |
|
30 |
public int nAudioCompressionTypeNum; |
|
31 |
/** |
|
32 |
* 视频编码模式掩码,详见 "编码模式" |
|
33 |
*/ |
|
34 |
public int dwEncodeModeMask; |
|
35 |
/** |
|
36 |
* 支持的视频分辨率 |
|
37 |
* {@link #abIndivResolution} 为 0 时生效 |
|
38 |
* 有效长度由 {@link #nResolutionTypeNum} 决定 |
|
39 |
*/ |
|
40 |
public NetSDKLib.NET_RESOLUTION_INFO[] stuResolutionTypes = new NetSDKLib.NET_RESOLUTION_INFO[CFG_MAX_CAPTURE_SIZE_NUM]; |
|
41 |
/** |
|
42 |
* 不同分辨率下帧率最大值 |
|
43 |
* {@link #nFPSMax} 不为 0 时使用 |
|
44 |
* 数组下标与 {@link #stuResolutionTypes} 匹配 |
|
45 |
* 有效长度由 {@link #nResolutionTypeNum} 决定 |
|
46 |
*/ |
|
47 |
public int[] nResolutionFPSMax = new int[CFG_MAX_CAPTURE_SIZE_NUM]; |
|
48 |
/** |
|
49 |
* 视频分辨率个数 决定了以下数组的有效长度 |
|
50 |
* {@link #stuResolutionTypes} |
|
51 |
* {@link #nResolutionFPSMax} |
|
52 |
*/ |
|
53 |
public int nResolutionTypeNum; |
|
54 |
/** |
|
55 |
* 最大视频码流(kbps) |
|
56 |
* 这里虽然是只限定了码流的上下界 但并不意味着配置的时候可以在界内随便填 |
|
57 |
* 必须从 {@link STREAM_RATE_TYPE} 选择区间内的码流值 |
|
58 |
*/ |
|
59 |
public int nMaxBitRateOptions; |
|
60 |
/** |
|
61 |
* 最小视频码流(kbps) |
|
62 |
* 这里虽然是只限定了码流的上下界 但并不意味着配置的时候可以在界内随便填 |
|
63 |
* 必须从 {@link STREAM_RATE_TYPE} 选择区间内的码流值 |
|
64 |
*/ |
|
65 |
public int nMinBitRateOptions; |
|
66 |
/** |
|
67 |
* 支持的 H.264 Profile等级 枚举值数组 {@link EM_H264_PROFILE_RANK} |
|
68 |
* 有效长度由 {@link #nH264ProfileRankNum} 决定 |
|
69 |
*/ |
|
70 |
public byte[] bH264ProfileRank = new byte[EM_H264_PROFILE_RANK.NET_PROFILE_HIGH.getValue()]; |
|
71 |
/** |
|
72 |
* 支持的 H.264 Profile 等级个数 |
|
73 |
* 决定了 {@link #bH264ProfileRank} 的有效长度 |
|
74 |
*/ |
|
75 |
public int nH264ProfileRankNum; |
|
76 |
/** |
|
77 |
* 当分辨率为 cif 时最大 p 帧(Kbps) |
|
78 |
*/ |
|
79 |
public int nCifPFrameMaxSize; |
|
80 |
/** |
|
81 |
* 当分辨率为 cif 时最小 p 帧(Kbps) |
|
82 |
*/ |
|
83 |
public int nCifPFrameMinSize; |
|
84 |
/** |
|
85 |
* 视频帧率最大值 |
|
86 |
* 如果为 0 则以 {@link #nResolutionFPSMax} 为准 |
|
87 |
*/ |
|
88 |
public int nFPSMax; |
|
89 |
/** |
|
90 |
* 支持的视频分辨率 |
|
91 |
* {@link #abIndivResolution} 为 1 时生效 |
|
92 |
* 本身是一个二维数组 出于 JNA 封装需要第二维单独封装成新结构体 {@link NET_RESOLUTION_INFO_ARRAY} |
|
93 |
* 每个第二维数组的有效长度由 {@link #nIndivResolutionNums} 决定 其数组下标和本字段的下标精确匹配 |
|
94 |
*/ |
|
95 |
public NET_RESOLUTION_INFO_ARRAY[] stuIndivResolutionTypes = new NET_RESOLUTION_INFO_ARRAY[CFG_MAX_COMPRESSION_TYPES_NUM]; |
|
96 |
/** |
|
97 |
* 标志位 用以区别能力集是否包含所有编码格式 |
|
98 |
* 0 表示 {@link #stuResolutionTypes} {@link #nResolutionTypeNum} 有效 |
|
99 |
* 1 表示 {@link #stuIndivResolutionTypes} {@link #nIndivResolutionNums} 有效 |
|
100 |
*/ |
|
101 |
public int abIndivResolution; |
|
102 |
/** |
|
103 |
* 不同编码模式分别支持的视频分辨率个数 |
|
104 |
* 代表 {@link #stuIndivResolutionTypes} 各个第二维数组的有效长度 其数组下标和本字段的下标精确匹配 |
|
105 |
*/ |
|
106 |
public int[] nIndivResolutionNums = new int[CFG_MAX_COMPRESSION_TYPES_NUM]; |
|
107 |
|
|
108 |
public NET_STREAM_CFG_CAPS() { |
|
109 |
dwSize = this.size(); |
|
110 |
for (int i = 0; i < stuResolutionTypes.length; i++) { |
|
111 |
stuResolutionTypes[i] = new NetSDKLib.NET_RESOLUTION_INFO(); |
|
112 |
} |
|
113 |
for (int i = 0; i < stuIndivResolutionTypes.length; i++) { |
|
114 |
stuIndivResolutionTypes[i] = new NET_RESOLUTION_INFO_ARRAY(); |
|
115 |
} |
|
116 |
} |
|
117 |
} |