Exemplo n.º 1
0
        protected override void SerializeToStream(CitpBinaryWriter writer)
        {
            base.SerializeToStream(writer);

            writer.Write(SourceIdentifier);
            writer.Write(FrameFormat.GetCustomAttribute <CitpId>().Id);
            writer.Write(FrameWidth);
            writer.Write(FrameHeight);
            writer.Write(Fps);
            writer.Write(Timeout);
        }
        protected override void SerializeToStream(CitpBinaryWriter writer)
        {
            base.SerializeToStream(writer);

            switch (Version)
            {
            case MsexVersion.Version1_0:
            case MsexVersion.Version1_1:
                writer.Write(SourceIdentifier);
                writer.Write(FrameFormat.GetCustomAttribute <CitpId>().Id);
                writer.Write(FrameWidth);
                writer.Write(FrameHeight);
                writer.Write((ushort)FrameBuffer.Length);
                writer.Write(FrameBuffer);
                break;

            case MsexVersion.Version1_2:
                writer.Write(MediaServerUuid);
                writer.Write(SourceIdentifier);
                writer.Write(FrameFormat.GetCustomAttribute <CitpId>().Id);
                writer.Write(FrameWidth);
                writer.Write(FrameHeight);

                if (FrameFormat == MsexImageFormat.FragmentedJpeg || FrameFormat == MsexImageFormat.FragmentedPng)
                {
                    if (FragmentInfo == null)
                    {
                        throw new InvalidOperationException("FragmentInfo must be set when sending a fragmented image format");
                    }

                    writer.Write((ushort)(FrameBuffer.Length + FragmentPreamble.ByteLength));

                    writer.Write(FragmentInfo.FrameIndex);
                    writer.Write(FragmentInfo.FragmentCount);
                    writer.Write(FragmentInfo.FragmentIndex);
                    writer.Write(FragmentInfo.FragmentByteOffset);
                }
                else
                {
                    writer.Write((ushort)FrameBuffer.Length);
                }

                writer.Write(FrameBuffer);
                break;
            }
        }