public override bool Equals(FramePayload other)
 {
     if (other is DataLongResponsePayload)
     {
         return(Equals(other as DataLongResponsePayload));
     }
     return(base.Equals(other));
 }
        public void UpdateSlide(FramePayload payload)
        {
            CurrentPage = payload.PageNumber;

            Application.Current.Dispatcher.Invoke(() =>
            {
                using (var memoryStream = new MemoryStream(payload.Bitstream))
                {
                    var _imageToShow = new BitmapImage();
                    _imageToShow.BeginInit();
                    _imageToShow.StreamSource = memoryStream;//payload.Bitstream;
                    _imageToShow.CacheOption  = BitmapCacheOption.OnLoad;
                    _imageToShow.EndInit();
                    ImageToShow = _imageToShow;
                }
            });
        }
예제 #3
0
        /// <summary>
        /// 发送媒体数据
        /// </summary>
        /// <param name="frameType">媒体帧类型:1-流头结构,2-音频帧,3-I帧,4-P帧,5-B帧,6-MJPEG帧</param>
        /// <param name="payload">载荷数据</param>
        public void Send(Int32 frameType, Byte[] payload)
        {
            if (payload == null || payload.Length == 0)
            {
                return;
            }
            //录像视频
            if (this.Context.IsFileStream == true)
            {
                GetFileResponse p = new GetFileResponse();
                if (frameType == 1)
                {
                    p.Type = 0;
                }
                else
                {
                    p.Type = 1;
                }

                p.Buffer    = payload;
                p.ChannelNo = this.Context.StreamIdentifier.ChannelNo;
                p.Datalen   = payload.Length;
                p.Buffer    = payload;
                Byte[] data = p.GetBytes();
                ProtocolSession.Send(new FixedHeaderPackageInfo <ProtocolHeader>(Guid.NewGuid().ToString("N"),
                                                                                 new ProtocolHeader()
                {
                    proType = ProtocolType.GetFile, errornum = 0, dataLen = (UInt32)data.Length
                }, data));
            }
            //实时视频
            else
            {
                FramePayload p = new FramePayload();
                p.FrameData = payload;
                //实时主码流
                if (this.Context.StreamIdentifier.StreamNo == 0)
                {
                    if (frameType == 1)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_HEAD;
                    }
                    else if (frameType == 2)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_AUDIO;
                    }
                    else if (frameType == 3)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_I;
                    }
                    else if (frameType == 4)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_P;
                    }
                    else if (frameType == 5)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_B;
                    }
                    else if (frameType == 6)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_MJPEG;
                    }
                    else
                    {
                        return;
                    }
                    Byte[] data = p.GetBytes();
                    ProtocolSession.Send(new FixedHeaderPackageInfo <ProtocolHeader>(Guid.NewGuid().ToString("N"),
                                                                                     new ProtocolHeader()
                    {
                        proType = ProtocolType.Main_stream, errornum = 0, dataLen = (UInt32)data.Length
                    }, data));
                }
                else
                {
                    //实时子码流
                    if (frameType == 1)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_HEAD;
                    }
                    else if (frameType == 2)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_AUDIO;
                    }
                    else if (frameType == 3)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_I;
                    }
                    else if (frameType == 4)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_P;
                    }
                    else if (frameType == 5)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_B;
                    }
                    else if (frameType == 6)
                    {
                        p.FrameType = FramePayload.frametype.HW_FRAME_VIDEO_SUB_MJPEG;
                    }
                    else
                    {
                        return;
                    }
                    Byte[] data = p.GetBytes();
                    ProtocolSession.Send(new FixedHeaderPackageInfo <ProtocolHeader>(Guid.NewGuid().ToString("N"),
                                                                                     new ProtocolHeader()
                    {
                        proType = ProtocolType.Sub_stream, errornum = 0, dataLen = (UInt32)data.Length
                    }, data));
                }
            }
        }