Esempio n. 1
0
    void BlitImage()
    {
        if (!new_image)
        {
            return;
        }
        new_image            = false;
        _RenderedTexture     = Src.Output.GetTexture((int)Eye);
        RenderTexture.active = _subTexture;
        GL.Clear(true, true, Color.black);
        Graphics.Blit(_RenderedTexture, _subTexture);
        RenderTexture.active = null;
        if (!_isTriggered)
        {
            return;
        }
        _texWrapper.ConvertTexture(_subTexture);

        if (_texWrapper.WrappedTexture != null)
        {
            Color[] data = _texWrapper.WrappedTexture.GetPixels();
            int     w    = _texWrapper.WrappedTexture.width;
            int     h    = _texWrapper.WrappedTexture.height;
            int     x    = (int)(w * _sampleX);
            int     y    = (int)(h * _sampleY);
            _pixelColor = data [y * w + x];        //sample pixel in the middle
            _sampledTexture.SetPixel(0, 0, _pixelColor);
            _sampledTexture.Apply();

            if (_isTriggered)
            {
                if (_pixelColor.r > 0.5f)
                {
                    _isTriggered    = false;
                    _receivedTime   = Time.time;
                    latencyTime     = (_receivedTime - _TriggerTime);
                    minLatency      = Mathf.Min(latencyTime, minLatency);
                    maxLatency      = Mathf.Max(latencyTime, maxLatency);
                    averageLatency += latencyTime;
                    _samplesCount++;
                    _OnChangeState(!_currentState);
                    _dbWriter.AddData("latency", ((int)(latencyTime * 1000)).ToString());
                    _dbWriter.AddData("Framerate", Receiver.GetCaptureRate(_eye).ToString());

                    GstNetworkMultipleTexture tex = Receiver as GstNetworkMultipleTexture;
                    if (tex != null)
                    {
                        _dbWriter.AddData("Network", ((float)tex.Player.NetworkUsage * 8 / (float)(1024 * 1024)).ToString("F3"));
                    }
                    else
                    {
                        _dbWriter.AddData("Network", "0");
                    }
                    _dbWriter.PushData();
                }
            }
        }
    }
    public void Init()
    {
        m_Texture= TargetNode.AddComponent<GstNetworkMultipleTexture> ();
        m_Texture.StreamsCount = StreamsCount;
        m_Texture.Initialize ();

        m_Texture.ConnectToHost (Host, port,StreamsCount);
        m_Texture.Play ();
    }
 public void Close()
 {
     if (m_Texture != null) {
         m_Texture.Close();
         m_Texture.Destroy ();
         GameObject.Destroy(m_Texture);
         m_Texture=null;
     }
 }
Esempio n. 4
0
 public void Close()
 {
     if (m_Texture != null)
     {
         m_Texture.Close();
         m_Texture.Destroy();
         GameObject.Destroy(m_Texture);
         m_Texture = null;
     }
 }
Esempio n. 5
0
    public void Init(RobotInfo ifo, string profileType, GstImageInfo.EPixelFormat fmt = GstImageInfo.EPixelFormat.EPixel_I420)
    {
        m_Texture = TargetNode.AddComponent <GstNetworkMultipleTexture> ();
        m_Texture.StreamsCount = StreamsCount;
        m_Texture.profileType  = profileType;
        m_Texture.Initialize();

        int texCount = m_Texture.GetTextureCount();

        _Processor      = new OffscreenProcessor[texCount];
        _needProcessing = new bool[texCount];
        for (int i = 0; i < texCount; ++i)
        {
            _Processor[i]            = new OffscreenProcessor();
            _Processor[i].ShaderName = "Image/I420ToRGB";
            _needProcessing [i]      = false;
        }
        string ip = Settings.Instance.GetValue("Ports", "ReceiveHost", ifo.IP);

        m_Texture.ConnectToHost(ip, port, StreamsCount, fmt);
        m_Texture.Play();


        if (_config != null)
        {
            m_Texture.SetConfiguration(_config);
        }

        m_Texture.OnFrameGrabbed += OnFrameGrabbed;


        _videoPorts = new uint[StreamsCount];        //{0,0};
        string streamsVals = "";

        for (int i = 0; i < StreamsCount; ++i)
        {
            _videoPorts [i] = Texture.Player.GetVideoPort(i);
            streamsVals    += _videoPorts [i].ToString();
            if (i != StreamsCount - 1)
            {
                streamsVals += ",";
            }
        }
        RobotConnector.Connector.SendData(TxKitEyes.ServiceName, "VideoPorts", streamsVals, true);
    }
 public override void PostInit()
 {
     _texture = (_eyes.CameraSource as MultipleNetworkCameraSource).Texture;
 }