/// <summary> /// Convert <paramref name="colors" /> to a packet and send it to the input stream. /// </summary> public Status PushInput(PixelData pixelData) { var timestamp = new Timestamp(System.Environment.TickCount & System.Int32.MaxValue); var imageFrame = ImageFrame.FromPixels32(pixelData.Colors, pixelData.Width, pixelData.Height, true); if (!IsGpuEnabled()) { var packet = new ImageFramePacket(imageFrame, timestamp); return(graph.AddPacketToInputStream(inputStream, packet)); } var status = gpuHelper.RunInGlContext(() => { var texture = gpuHelper.CreateSourceTexture(imageFrame); var gpuFrame = texture.GetGpuBufferFrame(); Gl.Flush(); texture.Release(); return(graph.AddPacketToInputStream(inputStream, new GpuBufferPacket(gpuFrame, timestamp))); }); imageFrame.Dispose(); return(status); }
/// <summary> /// Convert <paramref name="colors" /> to a packet and send it to the input stream. /// </summary> public Status PushColor32(Color32[] colors, int width, int height) { int timestamp = System.Environment.TickCount & System.Int32.MaxValue; var imageFrame = ImageFrame.FromPixels32(colors, width, height); if (!shouldUseGPU()) { var packet = new ImageFramePacket(imageFrame, timestamp); return(graph.AddPacketToInputStream(inputStream, packet.GetPtr())); } var status = gpuHelper.RunInGlContext(() => { var texture = gpuHelper.CreateSourceTexture(imageFrame); var gpuFrame = texture.GetGpuBufferFrame(); UnsafeNativeMethods.GlFlush(); texture.Release(); return(graph.AddPacketToInputStream(inputStream, new GpuBufferPacket(gpuFrame, timestamp).GetPtr())); }); imageFrame.Dispose(); return(status); }
public Status PushInput(string text) { int timestamp = System.Environment.TickCount & System.Int32.MaxValue; var packet = new StringPacket(text, timestamp); return(graph.AddPacketToInputStream(inputStream, packet)); }
/// <summary> /// Convert <paramref name="colors" /> to a packet and send it to the input stream. /// </summary> public Status PushInput(TextureFrame textureFrame) { var timestamp = new Timestamp(System.Environment.TickCount & System.Int32.MaxValue); ImageFrame imageFrame = null; if (!IsGpuEnabled()) { imageFrame = new ImageFrame( ImageFormat.Format.SRGBA, textureFrame.width, textureFrame.height, 4 * textureFrame.width, textureFrame.GetRawNativeByteArray()); textureFrame.Release(); var packet = new ImageFramePacket(imageFrame, timestamp); return(graph.AddPacketToInputStream(inputStream, packet)); } #if UNITY_ANDROID var glTextureName = textureFrame.GetNativeTexturePtr(); return(gpuHelper.RunInGlContext(() => { var glContext = GlContext.GetCurrent(); var glTextureBuffer = new GlTextureBuffer((UInt32)glTextureName, textureFrame.width, textureFrame.height, textureFrame.gpuBufferformat, textureFrame.OnRelease, glContext); var gpuBuffer = new GpuBuffer(glTextureBuffer); return graph.AddPacketToInputStream(inputStream, new GpuBufferPacket(gpuBuffer, timestamp)); })); #else imageFrame = new ImageFrame( ImageFormat.Format.SRGBA, textureFrame.width, textureFrame.height, 4 * textureFrame.width, textureFrame.GetRawNativeByteArray()); textureFrame.Release(); return(gpuHelper.RunInGlContext(() => { var texture = gpuHelper.CreateSourceTexture(imageFrame); var gpuBuffer = texture.GetGpuBufferFrame(); Gl.Flush(); texture.Release(); return graph.AddPacketToInputStream(inputStream, new GpuBufferPacket(gpuBuffer, timestamp)); })); #endif }
public Status PushInput(TextureFrame textureFrame) { var timestamp = new Timestamp(System.Environment.TickCount & System.Int32.MaxValue); #if !UNITY_ANDROID var imageFrame = new ImageFrame( ImageFormat.Format.SRGBA, textureFrame.width, textureFrame.height, 4 * textureFrame.width, textureFrame.GetRawNativeByteArray()); textureFrame.Release(); var packet = new ImageFramePacket(imageFrame, timestamp); return(graph.AddPacketToInputStream(inputStream, packet)); #else lock (frameLock) { currentTimestamp = timestamp; currentTextureFrame = textureFrame; currentTextureName = textureFrame.GetNativeTexturePtr(); return(gpuHelper.RunInGlContext(PushInputInGlContext)); } #endif }
public virtual Status PushInput(TextureFrame textureFrame) { currentTimestamp = GetCurrentTimestamp(); #if UNITY_ANDROID && !UNITY_EDITOR if (IsGpuEnabled()) { lock (frameLock) { currentTextureFrame = textureFrame; currentTextureName = textureFrame.GetNativeTexturePtr(); return(gpuHelper.RunInGlContext(PushInputInGlContext)); } } #endif var imageFrame = new ImageFrame( ImageFormat.Format.SRGBA, textureFrame.width, textureFrame.height, 4 * textureFrame.width, textureFrame.GetRawNativeByteArray()); textureFrame.Release(); var packet = new ImageFramePacket(imageFrame, currentTimestamp); return(graph.AddPacketToInputStream(inputStream, packet)); }
public Status AddTextToInputStream(string text) { return(calculatorGraph.AddPacketToInputStream(inputStreamName, new StringPacket(text, GetCurrentTimestamp()))); }