Ejemplo n.º 1
0
 public JT1078Label3(JT1078DataType dataType, JT1078SubPackageType subpackageType)
 {
     DataType       = dataType;
     SubpackageType = subpackageType;
 }
Ejemplo n.º 2
0
 public JT1078Label3(JT1078DataType dataType)
 {
     DataType = dataType;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 将视频数据包转换到1078包
        /// </summary>
        /// <param name="value"></param>
        /// <param name="sim"></param>
        /// <param name="channelNo"></param>
        /// <param name="jT1078AVType"></param>
        /// <param name="jT1078DataType"></param>
        /// <param name="timestamp"></param>
        /// <param name="lastIFrameInterval"></param>
        /// <param name="lastFrameInterval"></param>
        /// <returns></returns>
        public static List <JT1078Package> ConvertVideo(this byte[] value, string sim,
                                                        int channelNo,
                                                        JT1078AVType jT1078AVType,
                                                        JT1078DataType jT1078DataType,
                                                        ulong timestamp,
                                                        int lastIFrameInterval,
                                                        int lastFrameInterval)
        {
            List <JT1078Package> jT1078Packages = new List <JT1078Package>();
            var buffer = Slice(value);

            if (buffer.Count == 1)
            {
                JT1078Package jT1078Package = new JT1078Package();
                jT1078Package.SIM = sim;
                jT1078Package.LogicChannelNumber = (byte)channelNo;
                jT1078Package.SN                 = SeqUtil.Increment(sim);
                jT1078Package.Timestamp          = timestamp;
                jT1078Package.LastIFrameInterval = (ushort)lastIFrameInterval;
                jT1078Package.LastFrameInterval  = (ushort)lastFrameInterval;
                jT1078Package.Label2             = new JT1078Label2(1, jT1078AVType);
                jT1078Package.Label3             = new JT1078Label3(jT1078DataType, JT1078SubPackageType.原子包_不可被拆分);
                jT1078Package.Bodies             = buffer[0];
                jT1078Packages.Add(jT1078Package);
            }
            else if (buffer.Count == 2)
            {
                JT1078Package jT1078Package1 = new JT1078Package();
                jT1078Package1.SIM = sim;
                jT1078Package1.LogicChannelNumber = (byte)channelNo;
                jT1078Package1.SN                 = SeqUtil.Increment(sim);
                jT1078Package1.Timestamp          = timestamp;
                jT1078Package1.LastIFrameInterval = (ushort)lastIFrameInterval;
                jT1078Package1.LastFrameInterval  = (ushort)lastFrameInterval;
                jT1078Package1.Label2             = new JT1078Label2(0, jT1078AVType);
                jT1078Package1.Label3             = new JT1078Label3(jT1078DataType, JT1078SubPackageType.分包处理时的第一个包);
                jT1078Package1.Bodies             = buffer[0];
                jT1078Packages.Add(jT1078Package1);
                JT1078Package jT1078Package2 = new JT1078Package();
                jT1078Package2.SIM = sim;
                jT1078Package2.LogicChannelNumber = (byte)channelNo;
                jT1078Package2.SN                 = SeqUtil.Increment(sim);
                jT1078Package2.Timestamp          = timestamp;
                jT1078Package2.LastIFrameInterval = (ushort)lastIFrameInterval;
                jT1078Package2.LastFrameInterval  = (ushort)lastFrameInterval;
                jT1078Package2.Label2             = new JT1078Label2(1, jT1078AVType);
                jT1078Package2.Label3             = new JT1078Label3(jT1078DataType, JT1078SubPackageType.分包处理时的最后一个包);
                jT1078Package2.Bodies             = buffer[1];
                jT1078Packages.Add(jT1078Package2);
            }
            else
            {
                for (var i = 0; i < buffer.Count; i++)
                {
                    JT1078Package jT1078Package = new JT1078Package();
                    jT1078Package.SIM = sim;
                    jT1078Package.LogicChannelNumber = (byte)channelNo;
                    jT1078Package.SN                 = SeqUtil.Increment(sim);
                    jT1078Package.Timestamp          = timestamp;
                    jT1078Package.LastIFrameInterval = (ushort)lastIFrameInterval;
                    jT1078Package.LastFrameInterval  = (ushort)lastFrameInterval;
                    jT1078Package.Label2             = new JT1078Label2(0, jT1078AVType);
                    jT1078Package.Label3             = new JT1078Label3(jT1078DataType);
                    jT1078Package.Bodies             = buffer[i];
                    if (i == 0)
                    {
                        jT1078Package.Label3.SubpackageType = JT1078SubPackageType.分包处理时的第一个包;
                    }
                    else if (i == (buffer.Count - 1))
                    {
                        jT1078Package.Label2.M = 1;
                        jT1078Package.Label3.SubpackageType = JT1078SubPackageType.分包处理时的最后一个包;
                    }
                    else
                    {
                        jT1078Package.Label3.SubpackageType = JT1078SubPackageType.分包处理时的中间包;
                    }
                    jT1078Packages.Add(jT1078Package);
                }
            }
            return(jT1078Packages);
        }