public void StartPreview(int previewWidth, int previewHeight, UVCCameraPixelFormat pixelFormat)
 {
     if (_uvcCameraActivity != null)
     {
         _uvcCameraActivity.Call("StartPreview", previewWidth, previewHeight, (int)pixelFormat);
     }
 }
 public void ChangePreviewFormat(UVCCameraPixelFormat pixelFormat)
 {
     if (_uvcCameraActivity != null)
     {
         _uvcCameraActivity.Call("ChangePreviewFormat", (int)pixelFormat);
     }
 }
        // Update is called once per frame
        void OnGUI()
        {
            int offset = 10;

            if (GUI.Button(new Rect(10, offset, 200, 50), "Query"))
            {
                Query();
            }
            offset += 60;

            for (int i = 0; i < _devices.Count; i++)
            {
                if (GUI.Button(new Rect(10, offset, 200, 50), _devices[i]))
                {
                    _interface.Connect(
                        deviceName: _devices[i]);
                }

                offset += 60;
            }

#if USE_OPENCV
            if (!_doConversionToMat)
            {
                if (GUI.Button(new Rect(10, offset, 200, 50), "Enable Mat Conv"))
                {
                    _doConversionToMat = true;
                }
                offset += 60;
            }
            else
            {
                if (GUI.Button(new Rect(10, offset, 200, 50), "Disable Mat Conv"))
                {
                    _doConversionToMat = false;
                }
                offset += 60;
            }
#endif

            if (!_doTextureConversion)
            {
                if (GUI.Button(new Rect(10, offset, 200, 50), "Enable Tex Conv"))
                {
                    _doTextureConversion = true;
                }
                offset += 60;
            }
            else
            {
                if (GUI.Button(new Rect(10, offset, 200, 50), "Disable Tex Conv"))
                {
                    _doTextureConversion = false;
                }
                offset += 60;
            }

            bool isConnected = _interface.GetIsConnected();

            if (isConnected)
            {
                if (GUI.Button(new Rect(10, offset, 200, 50), "Disconnect"))
                {
                    _interface.Disconnect();
                }
                offset += 60;

                bool isPreviewing = _interface.GetIsPreviewing();
                bool changed      = false;

                if (GUI.Button(new Rect(10, offset, 200, 50), "StartPreview"))
                {
                    _interface.StartPreview(Width, Height, PixelFormat);
                    changed = true;
                }
                offset += 60;

                int offset2 = 10;

                if (GUI.Button(new Rect(220, offset2, 200, 50), UVCCameraPixelFormat.PIXEL_FORMAT_NV21.ToString()))
                {
                    PixelFormat = UVCCameraPixelFormat.PIXEL_FORMAT_NV21;
                    changed     = true;
                }
                offset2 += 60;

                if (GUI.Button(new Rect(220, offset2, 200, 50), UVCCameraPixelFormat.PIXEL_FORMAT_RAW.ToString()))
                {
                    PixelFormat = UVCCameraPixelFormat.PIXEL_FORMAT_RAW;
                    changed     = true;
                }
                offset2 += 60;

                if (GUI.Button(new Rect(220, offset2, 200, 50), UVCCameraPixelFormat.PIXEL_FORMAT_RGB565.ToString()))
                {
                    PixelFormat = UVCCameraPixelFormat.PIXEL_FORMAT_RGB565;
                    changed     = true;
                }
                offset2 += 60;

                if (GUI.Button(new Rect(220, offset2, 200, 50), UVCCameraPixelFormat.PIXEL_FORMAT_RGBX.ToString()))
                {
                    PixelFormat = UVCCameraPixelFormat.PIXEL_FORMAT_RGBX;
                    changed     = true;
                }
                offset2 += 60;

                if (GUI.Button(new Rect(220, offset2, 200, 50), UVCCameraPixelFormat.PIXEL_FORMAT_YUV.ToString()))
                {
                    PixelFormat = UVCCameraPixelFormat.PIXEL_FORMAT_YUV;
                    changed     = true;
                }
                offset2 += 60;

                if (GUI.Button(new Rect(220, offset2, 200, 50), UVCCameraPixelFormat.PIXEL_FORMAT_YUV420SP.ToString()))
                {
                    PixelFormat = UVCCameraPixelFormat.PIXEL_FORMAT_YUV420SP;
                    changed     = true;
                }
                offset2 += 60;

                //
                if (isPreviewing && changed)
                {
                    _interface.ChangePreviewFormat(PixelFormat);
                }

                if (!isPreviewing)
                {
                    // resolutions
                    var resolutions = _interface.GetSupportedResolutions();
                    int offset3     = 10;

                    if (resolutions != null)
                    {
                        foreach (var resolution in resolutions)
                        {
                            if (GUI.Button(new Rect(430, offset3, 200, 50), resolution))
                            {
                                string[] res = resolution.ToString().Split('x');

                                Width  = int.Parse(res[0]);
                                Height = int.Parse(res[1]);

                                if (_outputTexture != null)
                                {
                                    _outputTexture = null;
                                }
                            }
                            offset3 += 60;
                        }
                    }
                }
            }
        }