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); } }