Exemple #1
0
    /// <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);
    }
Exemple #3
0
    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
    }
Exemple #6
0
    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));
    }
Exemple #7
0
 public Status AddTextToInputStream(string text)
 {
     return(calculatorGraph.AddPacketToInputStream(inputStreamName, new StringPacket(text, GetCurrentTimestamp())));
 }