private static byte[] GetFrameBytes(CS.VideoSources.Core.VideoFrame frame) { Bitmap image = frame.Image; if (image == null) { return((byte[])null); } byte[] numArray; if (image.PixelFormat == PixelFormat.Format8bppIndexed) { numArray = JpegCompression.ConvertToJpeg(image, 70); } else { using (Bitmap bmp = Grayscale.CommonAlgorithms.Y.Apply(image)) numArray = JpegCompression.ConvertToJpeg(bmp, 70); } return(numArray); }
public CommonContracts.VideoFrame GetLastFrameFromDevice(Guid devId, bool deleteFrame) { try { this._performanceLogger.Info((object)string.Format("Request DevId = {0}", (object)devId)); if (!this.VideoSources.ContainsKey(devId)) { return((CommonContracts.VideoFrame)null); } CS.VideoSources.Core.IVideoSource videoSource = this.VideoSources[devId]; if (!videoSource.IsRunning) { return((CommonContracts.VideoFrame)null); } using (CS.VideoSources.Core.VideoFrame currentFrame = videoSource.GetCurrentFrame(deleteFrame)) { if (currentFrame == null) { return((CommonContracts.VideoFrame)null); } this._performanceLogger.Info((object)string.Format("Response DevId = {0} FrameId = {1}", (object)devId, (object)currentFrame.Index)); byte[] frameBytes = VideoServer.GetFrameBytes(currentFrame); return(new CommonContracts.VideoFrame() { Frame = frameBytes, FrameIndex = currentFrame.Index, Date = DateTimeOffset.Now }); } } catch (Exception ex) { this._logger.Error((object)ex); } return((CommonContracts.VideoFrame)null); }