public static RGBRawDataFrame GetRGBFrame() { if (Time.frameCount != _lastFrame) { _currentFrame = m_RGBFrames.Dequeue(); _lastFrame = Time.frameCount; } return(_currentFrame); }
public static RGBRawDataFrame GetRGBFrame() { if (Time.frameCount != m_LastFrame && m_RGBFrames.Count > 0) { m_CurrentFrame = m_RGBFrames.Dequeue(); m_LastFrame = Time.frameCount; } return(m_CurrentFrame); }
protected override void OnLoadRawTextureData(RGBRawDataFrame rgbRawDataFrame) { m_Texture.LoadRawTextureData(rgbRawDataFrame.data); m_Texture.Apply(); CurrentFrame.timeStamp = rgbRawDataFrame.timeStamp; CurrentFrame.texture = m_Texture; FrameCount++; OnUpdate?.Invoke(CurrentFrame); }
public void Enqueue(RGBRawDataFrame obj) { lock (m_LockObj) { m_Queue.Enqueue(obj); if (m_Queue.Count > Limit) { var frame = m_Queue.Dequeue(); m_ObjectPool.Put <RGBRawDataFrame>(frame); } } }
public static bool MakeSafe(IntPtr textureptr, int size, UInt64 timestamp, ref RGBRawDataFrame frame) { if (textureptr == IntPtr.Zero || size <= 0) { return(false); } if (frame.data == null || frame.data.Length != size) { frame.data = new byte[size]; } frame.timeStamp = timestamp; Marshal.Copy(textureptr, frame.data, 0, size); return(true); }
private void UpdateTexture() { if (!DidUpdateThisFrame || !IsPlaying) { return; } RGBRawDataFrame rgbRawDataFrame = NRRgbCamera.GetRGBFrame(); if (rgbRawDataFrame.data == null) { Debug.LogError("Get Rgb camera data faild..."); return; } OnLoadRawTextureData(rgbRawDataFrame); }
private void UpdateTexture() { if (!NRRgbCamera.HasFrame()) { return; } RGBRawDataFrame rgbRawDataFrame = NRRgbCamera.GetRGBFrame(); m_texture.LoadRawTextureData(rgbRawDataFrame.data); m_texture.Apply(); CurrentFrame.timeStamp = rgbRawDataFrame.timeStamp; CurrentFrame.texture = m_texture; FrameCount++; OnUpdate?.Invoke(CurrentFrame); }
private static void QueueFrame(IntPtr textureptr, int size, UInt64 timestamp) { if (!isRGBCamStart) { NRDebugger.LogError("rgb camera not stopped properly, it still sending data."); return; } RGBRawDataFrame frame = FramePool.Get <RGBRawDataFrame>(); bool result = RGBRawDataFrame.MakeSafe(TexturePtr, size, timestamp, ref frame); if (result) { m_RGBFrames.Enqueue(frame); } else { FramePool.Put <RGBRawDataFrame>(frame); } }
private void UpdateTexture() { if (!NRRgbCamera.HasFrame()) { return; } RGBRawDataFrame rgbRawDataFrame = NRRgbCamera.GetRGBFrame(); if (m_texture == null || m_texture.width != NRRgbCamera.Resolution.width || m_texture.height != NRRgbCamera.Resolution.height) { m_texture = new Texture2D(NRRgbCamera.Resolution.width, NRRgbCamera.Resolution.height, TextureFormat.RGB24, false); } m_texture.LoadRawTextureData(rgbRawDataFrame.data); m_texture.Apply(); CurrentFrame.timeStamp = rgbRawDataFrame.timeStamp; CurrentFrame.texture = m_texture; if (OnUpdate != null) { OnUpdate(CurrentFrame); } }
/// <summary> /// Load raw texture data. /// </summary> /// <param name="rgbRawDataFrame"></param> protected virtual void OnLoadRawTextureData(RGBRawDataFrame rgbRawDataFrame) { }