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; }
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()); } } } }
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); }
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 } } } }
public AVProLiveCameraDevice GetDevice(int index) { AVProLiveCameraDevice result = null; if (index >= 0 && index < _devices.Count) { result = _devices[index]; } return(result); }
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); }
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); }
public void OnDestroy() { if (_renderRoutine != null) { StopCoroutine(_renderRoutine); _renderRoutine = null; } if (_device != null) { _device.Close(); } _device = null; }
private AVProLiveCameraDevice FindDeviceWithGUID(string guid) { AVProLiveCameraDevice result = null; foreach (AVProLiveCameraDevice device in _devices) { if (device.GUID == guid) { result = device; break; } } return(result); }
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); }
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."); } }
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; } }
/* * 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); } }