Example #1
0
        void Reset()
        {
            _videoInput = -1;
            _mode       = null;
            _device     = null;
            _flipX      = _flipY = false;

            _deviceSelection     = SelectDeviceBy.Default;
            _modeSelection       = SelectModeBy.Default;
            _videoInputSelection = SelectDeviceBy.Default;
            _desiredDeviceNames  = new List <string>(4);
            _desiredResolutions  = new List <Vector2>(2);
            _desiredVideoInputs  = new List <AVProLiveCameraPlugin.VideoInput>(4);
            _desiredDeviceNames.Add("Logitech BRIO");
            _desiredDeviceNames.Add("Logitech HD Pro Webcam C922");
            _desiredDeviceNames.Add("Logitech HD Pro Webcam C920");
            _desiredDeviceNames.Add("Decklink Video Capture");
            _desiredDeviceNames.Add("Logitech Webcam Pro 9000");
            _desiredResolutions.Add(new Vector2(1920, 1080));
            _desiredResolutions.Add(new Vector2(1280, 720));
            _desiredResolutions.Add(new Vector2(640, 360));
            _desiredResolutions.Add(new Vector2(640, 480));
            _desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_Serial_Digital);
            _desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_SVideo);
            _desiredVideoInputIndex = 0;
            _maintainAspectRatio    = false;
            _desiredFrameRate       = 0f;
            _desiredFormatAny       = true;
            _desiredFormat          = AVProLiveCameraPlugin.VideoFrameFormat.YUV_422_HDYC;
            _desiredModeIndex       = -1;
            _desiredDeviceIndex     = 0;
        }
Example #2
0
        public void Begin()
        {
            SelectDeviceAndMode();

            if (_device != null)
            {
                if (_renderRoutine != null)
                {
                    StopCoroutine(_renderRoutine);
                    _renderRoutine = null;
                }

                _device.Deinterlace = _deinterlace;
                _device.FlipX       = _flipX;
                _device.FlipY       = _flipY;
                if (!_device.Start(_mode, _videoInput))
                {
                    Debug.LogWarning("[AVPro Live Camera] Device failed to start.");
                    _device.Close();
                    _device     = null;
                    _mode       = null;
                    _videoInput = -1;
                }
                else
                {
                    if (_renderRoutine == null)
                    {
                        _renderRoutine = StartCoroutine(RenderRoutine());
                    }
                }
            }
        }
Example #3
0
        private AVProLiveCameraDevice SelectDevice()
        {
            AVProLiveCameraDevice result = null;

            switch (_deviceSelection)
            {
            default:
            case SelectDeviceBy.Default:
                result = AVProLiveCameraManager.Instance.GetDevice(0);
                break;

            case SelectDeviceBy.Name:
                if (_desiredDeviceNames.Count > 0)
                {
                    result = GetFirstDevice(_desiredDeviceNames);
                }
                break;

            case SelectDeviceBy.Index:
                if (_desiredDeviceIndex >= 0)
                {
                    result = AVProLiveCameraManager.Instance.GetDevice(_desiredDeviceIndex);
                }
                break;
            }

            return(result);
        }
Example #4
0
        private void EnumDevices()
        {
            ClearDevices();
            _devices = new List <AVProLiveCameraDevice>(8);
            int numDevices = AVProLiveCameraPlugin.GetNumDevices();

            for (int i = 0; i < numDevices; i++)
            {
                string deviceName;
                if (!AVProLiveCameraPlugin.GetDeviceName(i, out deviceName))
                {
                    continue;
                }

                string deviceGUID;
                if (!AVProLiveCameraPlugin.GetDeviceGUID(i, out deviceGUID))
                {
                    continue;
                }

                int numModes = AVProLiveCameraPlugin.GetNumModes(i);
                if (numModes > 0)
                {
                    AVProLiveCameraDevice device = new AVProLiveCameraDevice(deviceName.ToString(), deviceGUID.ToString(), i);
                    _devices.Add(device);
                }
            }
        }
        void Update()
        {
            if (_camera != null)
            {
                _device = _camera.Device;
            }

            if (_device != null && _device.IsActive && !_device.IsPaused)
            {
                if (_device.CurrentWidth > _frameWidth ||
                    _device.CurrentHeight > _frameHeight)
                {
                    CreateBuffer(_device.CurrentWidth, _device.CurrentHeight);
                }
                uint lastFrame = AVProLiveCameraPlugin.GetLastFrame(_device.DeviceIndex);
                if (lastFrame != _lastFrame)
                {
                    _lastFrame = lastFrame;
                    bool result = AVProLiveCameraPlugin.GetFrameAsColor32(_device.DeviceIndex, _framePointer, _frameWidth, _frameHeight);
                    if (result)
                    {
#if TEXTURETEST
                        _testTexture.SetPixels32(_frameData);
                        _testTexture.Apply(false, false);
#endif
                    }
                }
            }
        }
Example #6
0
        public AVProLiveCameraDevice GetDevice(int index)
        {
            AVProLiveCameraDevice result = null;

            if (index >= 0 && index < _devices.Count)
            {
                result = _devices[index];
            }

            return(result);
        }
Example #7
0
        private static AVProLiveCameraDevice GetFirstDevice(List <string> names)
        {
            AVProLiveCameraDevice result = null;

            for (int i = 0; i < names.Count; i++)
            {
                result = AVProLiveCameraManager.Instance.GetDevice(names[i]);
                if (result != null)
                {
                    break;
                }
            }
            return(result);
        }
Example #8
0
        private static AVProLiveCameraDeviceMode GetClosestMode(AVProLiveCameraDevice device, List <Vector2> resolutions, bool maintainApectRatio, float frameRate, bool anyPixelFormat, AVProLiveCameraPlugin.VideoFrameFormat pixelFormat)
        {
            AVProLiveCameraDeviceMode result = null;

            for (int i = 0; i < resolutions.Count; i++)
            {
                result = device.GetClosestMode(Mathf.FloorToInt(resolutions[i].x), Mathf.FloorToInt(resolutions[i].y), maintainApectRatio, frameRate, anyPixelFormat, pixelFormat);
                if (result != null)
                {
                    break;
                }
            }
            return(result);
        }
Example #9
0
        public void OnDestroy()
        {
            if (_renderRoutine != null)
            {
                StopCoroutine(_renderRoutine);
                _renderRoutine = null;
            }

            if (_device != null)
            {
                _device.Close();
            }
            _device = null;
        }
Example #10
0
        private AVProLiveCameraDevice FindDeviceWithGUID(string guid)
        {
            AVProLiveCameraDevice result = null;

            foreach (AVProLiveCameraDevice device in _devices)
            {
                if (device.GUID == guid)
                {
                    result = device;
                    break;
                }
            }

            return(result);
        }
Example #11
0
        public AVProLiveCameraDevice GetDevice(string name)
        {
            AVProLiveCameraDevice result = null;
            int numDevices = NumDevices;

            for (int i = 0; i < numDevices; i++)
            {
                AVProLiveCameraDevice device = GetDevice(i);
                if (device.Name == name)
                {
                    result = device;
                    break;
                }
            }
            return(result);
        }
Example #12
0
        public void SelectDeviceAndMode()
        {
            _device     = null;
            _mode       = null;
            _videoInput = -1;

            _device = SelectDevice();
            if (_device != null)
            {
                _mode       = SelectMode();
                _videoInput = SelectVideoInputIndex();
            }
            else
            {
                Debug.LogWarning("[AVProLiveCamera] Could not find the device.");
            }
        }
Example #13
0
        public void SelectDeviceAndMode()
        {
            _device     = null;
            _mode       = null;
            _videoInput = -1;

            _device = SelectDevice();
            if (_device != null)
            {
                VitaCaptureU.PSVitaConnected = true;
                _mode       = SelectMode();
                _videoInput = SelectVideoInputIndex();
            }
            else
            {
                Debug.LogWarning("[AVProLiveCamera] Could not find the device.");
                VitaCaptureU.PSVitaConnected = false;
            }
        }
Example #14
0
        /*
         * private void OnRenderObject()
         * {
         #if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1)
         *      GL.IssuePluginEvent(_renderFunc, AVProLiveCameraPlugin.PluginID | (int)AVProLiveCameraPlugin.PluginEvent.UpdateAllTextures);
         #else
         *      GL.IssuePluginEvent(AVProLiveCameraPlugin.PluginID | (int)AVProLiveCameraPlugin.PluginEvent.UpdateAllTextures);
         #endif
         * }*/

        private void AddNewDevices()
        {
            bool isDeviceAdded = false;

            int numDevices = AVProLiveCameraPlugin.GetNumDevices();

            for (int i = 0; i < numDevices; i++)
            {
                string deviceGUID;
                if (!AVProLiveCameraPlugin.GetDeviceGUID(i, out deviceGUID))
                {
                    continue;
                }

                AVProLiveCameraDevice device = FindDeviceWithGUID(deviceGUID);
                if (device == null)
                {
                    string deviceName;
                    if (!AVProLiveCameraPlugin.GetDeviceName(i, out deviceName))
                    {
                        continue;
                    }

                    int numModes = AVProLiveCameraPlugin.GetNumModes(i);
                    if (numModes > 0)
                    {
                        device = new AVProLiveCameraDevice(deviceName.ToString(), deviceGUID.ToString(), i);
                        _devices.Add(device);
                        isDeviceAdded = true;
                    }
                }
            }

            if (isDeviceAdded)
            {
                this.SendMessage("NewDeviceAdded", null, SendMessageOptions.DontRequireReceiver);
            }
        }