houzhongjian
2024-11-06 7412dd652c0ac48c5a17b5d9b61d5d2a0f686137
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package com.iailab.netsdk.lib.structure;
 
import com.iailab.netsdk.lib.NetSDKLib;
 
/**
 * @author 291189
 * @version 1.0
 * @description
 * @date 2023/11/18 15:10
 */
public class NET_VIDEOENC_OPT extends NetSDKLib.SdkStructure{
    /*视频参数*/
    /**
     * 视频使能;1:打开,0:关闭
     */
    public    byte                byVideoEnable;
    /**
     * 码流控制;参照常量"码流控制"定义
     */
    public    byte                 byBitRateControl;
    /**
     * 帧率
     */
    public    byte                  byFramesPerSec;
    /**
     * 编码模式;参照常量"编码模式"定义
     */
    public    byte                 byEncodeMode;
    /**
     * 分辨率;参照常量"分辨率"定义
     */
    public    byte                 byImageSize;
    /**
     * 将byImageQlty进行扩展,若byImageQlty为0,抓图配置的ImgQlty为10/30/50/60/80/100六个值,码流配置的ImgQlty值为1-6,兼容之前的1-6档次,若///ImgQltyType为1,则ImgQlty范围为0~100
     */
    public    byte                 byImageQltyData;
 
    //  public    byte                 byImageQlty:7;
 
    //  public    byte                 byImageQltyType:1;
 
    public short                wLimitStream;                   /// 限码流参数
 
    /* 音频参数 */
 
    /**
     *   音频使能;1:打开,0:关闭
     */
    public    byte                 byAudioEnable;
 
    /**
     *   音频编码类型: 0:G711A,1:PCM,2:G711U,3:AMR,4:AAC
     */
    public    byte                    wFormatTag;
    /**
     * 声道数
     */
    public short                nChannels;
    /**
     * 采样深度
     */
    public short                 wBitsPerSample;
    /**
     * 音频叠加使能
     */
    public    byte                  bAudioOverlay;
    /**
     * H.264 Profile等级(当编码模式为H264时此参数值有效),参照枚举类型EM_H264_PROFILE_RANK,传0,兼容以前,表示该字段无效,不需要考虑级别。
     */
    public    byte                 bH264ProfileRank;
    /**
     * 采样率
     */
    public int               nSamplesPerSec;
    /**
     * I帧间隔帧数量,描述两个I帧之间的P帧个数,0-149
     */
    public    byte                  bIFrameInterval;
    /**
     * NSP
     */
    public    byte                    bScanMode;
 
    public    byte                 bReserved_3;
 
    public    byte                 bReserved_4;
 
    public byte getByImageQlty(){
        byte a=0;
        byte b=7;
        return getAnd(byImageQltyData,a,b);
    }
 
    public byte getByImageQltyType(){
        byte a=7;
        byte b=7+1;
        return getAnd(byImageQltyData,a,b);
    }
 
    /**
     * 按位与
     * @param date 原始数据
     * @param start 需要偏移的位数
     * @param end 与的位数
     * @return
     */
    private byte getAnd(byte date,byte start,byte end){
 
        return (byte) (date>>start&getOr(start,end));
    }
 
    /**
     * 按位与的位数
     * @param start 开始与的位数
     * @param end 结束与的位数
     * @return
     */
    private byte getOr(byte start,byte end){
        byte result=0;
        for (int i = 0; i < end-start; i++) {
            result|=(1<<i);
        }
        return result;
    }
}