package com.iailab.netsdk.lib.structure; import com.iailab.netsdk.lib.NetSDKLib; import com.iailab.netsdk.lib.enumeration.EM_H264_PROFILE_RANK; import com.iailab.netsdk.lib.enumeration.STREAM_RATE_TYPE; import com.iailab.netsdk.lib.enumeration.TALK_CODING_TYPE; import static com.iailab.netsdk.lib.constant.SDKStructureFieldLenth.*; /** * ç æµé…置对应能力 * * @author 47040 * @since Created at 2021/5/25 21:10 */ public class NET_STREAM_CFG_CAPS extends NetSDKLib.SdkStructure { /** * ç»“æž„ä½“å¤§å° */ public int dwSize; /** * 支æŒçš„音频编ç 类型 枚举值数组 {@link TALK_CODING_TYPE} * 有效长度由 {@link #nAudioCompressionTypeNum} 决定 */ public int[] nAudioCompressionTypes = new int[CFG_MAX_AUDIO_ENCODE_TYPE]; /** * éŸ³é¢‘åŽ‹ç¼©æ ¼å¼ä¸ªæ•° * 代表 {@link #nAudioCompressionTypes} 的有效长度 */ public int nAudioCompressionTypeNum; /** * 视频编ç 模å¼æŽ©ç ,è¯¦è§ "ç¼–ç 模å¼" */ public int dwEncodeModeMask; /** * 支æŒçš„视频分辨率 * {@link #abIndivResolution} 为 0 时生效 * 有效长度由 {@link #nResolutionTypeNum} 决定 */ public NetSDKLib.NET_RESOLUTION_INFO[] stuResolutionTypes = new NetSDKLib.NET_RESOLUTION_INFO[CFG_MAX_CAPTURE_SIZE_NUM]; /** * ä¸åŒåˆ†è¾¨çŽ‡ä¸‹å¸§çŽ‡æœ€å¤§å€¼ * {@link #nFPSMax} ä¸ä¸º 0 时使用 * æ•°ç»„ä¸‹æ ‡ä¸Ž {@link #stuResolutionTypes} åŒ¹é… * 有效长度由 {@link #nResolutionTypeNum} 决定 */ public int[] nResolutionFPSMax = new int[CFG_MAX_CAPTURE_SIZE_NUM]; /** * 视频分辨率个数 决定了以下数组的有效长度 * {@link #stuResolutionTypes} * {@link #nResolutionFPSMax} */ public int nResolutionTypeNum; /** * 最大视频ç æµ(kbps) * 这里虽然是åªé™å®šäº†ç æµçš„上下界 但并ä¸æ„味ç€é…置的时候å¯ä»¥åœ¨ç•Œå†…éšä¾¿å¡« * 必须从 {@link STREAM_RATE_TYPE} 选择区间内的ç æµå€¼ */ public int nMaxBitRateOptions; /** * 最å°è§†é¢‘ç æµ(kbps) * 这里虽然是åªé™å®šäº†ç æµçš„上下界 但并ä¸æ„味ç€é…置的时候å¯ä»¥åœ¨ç•Œå†…éšä¾¿å¡« * 必须从 {@link STREAM_RATE_TYPE} 选择区间内的ç æµå€¼ */ public int nMinBitRateOptions; /** * 支æŒçš„ H.264 Profileç‰çº§ 枚举值数组 {@link EM_H264_PROFILE_RANK} * 有效长度由 {@link #nH264ProfileRankNum} 决定 */ public byte[] bH264ProfileRank = new byte[EM_H264_PROFILE_RANK.NET_PROFILE_HIGH.getValue()]; /** * 支æŒçš„ H.264 Profile ç‰çº§ä¸ªæ•° * 决定了 {@link #bH264ProfileRank} 的有效长度 */ public int nH264ProfileRankNum; /** * 当分辨率为 cif 时最大 p 帧(Kbps) */ public int nCifPFrameMaxSize; /** * 当分辨率为 cif æ—¶æœ€å° p 帧(Kbps) */ public int nCifPFrameMinSize; /** * 视频帧率最大值 * 如果为 0 则以 {@link #nResolutionFPSMax} 为准 */ public int nFPSMax; /** * 支æŒçš„视频分辨率 * {@link #abIndivResolution} 为 1 时生效 * 本身是一个二维数组 出于 JNA å°è£…需è¦ç¬¬äºŒç»´å•ç‹¬å°è£…æˆæ–°ç»“构体 {@link NET_RESOLUTION_INFO_ARRAY} * æ¯ä¸ªç¬¬äºŒç»´æ•°ç»„的有效长度由 {@link #nIndivResolutionNums} 决定 å…¶æ•°ç»„ä¸‹æ ‡å’Œæœ¬å—æ®µçš„ä¸‹æ ‡ç²¾ç¡®åŒ¹é… */ public NET_RESOLUTION_INFO_ARRAY[] stuIndivResolutionTypes = new NET_RESOLUTION_INFO_ARRAY[CFG_MAX_COMPRESSION_TYPES_NUM]; /** * æ ‡å¿—ä½ ç”¨ä»¥åŒºåˆ«èƒ½åŠ›é›†æ˜¯å¦åŒ…å«æ‰€æœ‰ç¼–ç æ ¼å¼ * 0 表示 {@link #stuResolutionTypes} {@link #nResolutionTypeNum} 有效 * 1 表示 {@link #stuIndivResolutionTypes} {@link #nIndivResolutionNums} 有效 */ public int abIndivResolution; /** * ä¸åŒç¼–ç 模å¼åˆ†åˆ«æ”¯æŒçš„视频分辨率个数 * 代表 {@link #stuIndivResolutionTypes} å„个第二维数组的有效长度 å…¶æ•°ç»„ä¸‹æ ‡å’Œæœ¬å—æ®µçš„ä¸‹æ ‡ç²¾ç¡®åŒ¹é… */ public int[] nIndivResolutionNums = new int[CFG_MAX_COMPRESSION_TYPES_NUM]; public NET_STREAM_CFG_CAPS() { dwSize = this.size(); for (int i = 0; i < stuResolutionTypes.length; i++) { stuResolutionTypes[i] = new NetSDKLib.NET_RESOLUTION_INFO(); } for (int i = 0; i < stuIndivResolutionTypes.length; i++) { stuIndivResolutionTypes[i] = new NET_RESOLUTION_INFO_ARRAY(); } } }