Example #1
0
 private void _ups_Unpacked(object arg1, Nalu arg2)
 {
     if (_decoder == null)
     {
         _decoder = new VideoDecoder();
         var codicId = Constants.AVCodecID.AV_CODEC_ID_H264;
         _decoder.Create(codicId);
     }
     if (arg2.Header.Type == 7 || arg2.Header.Type == 8)
     {
         _decoder.Decode(arg2.BytesWithStartCode(), out _curWidth, out _curHeight);
     }
     else
     {
         byte[] frameData = _decoder.Decode(arg2.BytesWithStartCode(), out _curWidth, out _curHeight);
         if (frameData != null)
         {
             if (_curWidth != _width || _curHeight != _height)
             {
                 _width  = _curWidth;
                 _height = _curHeight;
                 _renderSource.SetupSurface(_curWidth, _curHeight);
             }
             renderFrame(frameData);
         }
     }
 }
 private void onDisplay(byte[] frameData, int width, int height)
 {
     if (width != _width || height != _height)
     {
         _width  = width;
         _height = height;
         _renderSource?.SetupSurface(width, height);
     }
     _renderSource?.Render(frameData);
 }
 void updateFrame(byte[] frame, int width, int height)
 {
     if (width != Width || height != Height)
     {
         Width  = width;
         Height = height;
         _renderSource.SetupSurface(width, height);
         updateStretch();
     }
     renderFrame(frame, width, height);
 }
 private void onVideoFrame(VideoFrame frame)
 {
     //Console.WriteLine("Out:\t{0}\t{1}\t{2}\t{3}\t{4}", frame.Timestamp, frame.Width, frame.Height, frame.Data.Length, DateTime.Now.TimeOfDay);
     if (frame.Width != Width || frame.Height != Height)
     {
         Width  = frame.Width;
         Height = frame.Height;
         _render.SetupSurface(frame.Width, frame.Height);
     }
     LastFrame = frame;
     _render.Render(frame.Data);
 }
        private void onStreamEvent(IStreamPacket packet)
        {
            //savetoTxt(packet.Buffer);
            //Console.WriteLine();
            //string rtspstr = $"rtsp stream {packet.Buffer.Length}:";
            //for (int i = 0; i < Math.Min(100, packet.Buffer.Length); i++)
            //    rtspstr += string.Format("{0:X2}, ", packet.Buffer[i]);
            //Console.WriteLine(rtspstr);

            int width  = 0;
            int height = 0;

            byte[] frameData = _decoder.Decode(packet.Buffer, out width, out height);
            if (frameData != null)
            {
                if (width != _width || height != _height)
                {
                    _width  = width;
                    _height = height;
                    _renderSource.SetupSurface(width, height);
                }
                renderFrame(frameData, width, height);
            }
        }