コード例 #1
0
        public void AreEqualDiffType()
        {
            var gains = new AVCaptureWhiteBalanceGains(2.3f, 3f, 90f);
            var str   = new NSString("Foo");

            Assert.False(gains.Equals((object)str));
        }
コード例 #2
0
        public void AreEqualFalseTest()
        {
            var gains1 = new AVCaptureWhiteBalanceGains(2.3f, 3f, 90f);
            var gains2 = new AVCaptureWhiteBalanceGains(gains1.RedGain * 2, gains1.GreenGain * 2, gains1.BlueGain * 2);

            Assert.False(gains1 == gains2, "gains1 == gains2");
            Assert.False(gains1.Equals(gains2), "gains1.Equals (gains2)");
            Assert.True(gains1 != gains2, "gains1 != gains2");
        }
コード例 #3
0
        public void ConstructorTest()
        {
            float red   = 2.3f;
            float green = 30.90f;
            float blue  = 30.90f;

            var gains = new AVCaptureWhiteBalanceGains(red, green, blue);

            Assert.AreEqual(red, gains.RedGain, "Wrong RedGain value.");
            Assert.AreEqual(green, gains.GreenGain, "Wrong GreenGain value.");
            Assert.AreEqual(blue, gains.BlueGain, "Wrong BlueGain value.");
        }
コード例 #4
0
        public void AreEqualTrueTest()
        {
            float red   = 2.3f;
            float green = 30.90f;
            float blue  = 30.90f;

            var gains1 = new AVCaptureWhiteBalanceGains(red, green, blue);
            var gains2 = new AVCaptureWhiteBalanceGains(red, green, blue);

            Assert.True(gains1 == gains2, "gains1 == gains2");
            Assert.True(gains1.Equals(gains2), "gains1.Equals (gains2)");
            Assert.False(gains1 != gains2, "gains1 != gains2");
        }
コード例 #5
0
        AVCaptureWhiteBalanceGains NomralizeGains(AVCaptureWhiteBalanceGains gains)
        {
            gains.RedGain   = Math.Max(1, gains.RedGain);
            gains.BlueGain  = Math.Max(1, gains.BlueGain);
            gains.GreenGain = Math.Max(1, gains.GreenGain);

            float maxGain = ThisApp.CaptureDevice.MaxWhiteBalanceGain;

            gains.RedGain   = Math.Min(maxGain, gains.RedGain);
            gains.BlueGain  = Math.Min(maxGain, gains.BlueGain);
            gains.GreenGain = Math.Min(maxGain, gains.GreenGain);

            return(gains);
        }
コード例 #6
0
        /*
         * Setting up camera setting for EOSpec:
         * Focus: 0.3 locked : Empirically chosen for set distance to current version of EOSpec
         * ISO : Avg between max and min ISO of device
         * Exposure : Empirically set to 1/10
         * RGB gain: R and G normalized using max Gain values,
         * however Blue is normalized using min Gain value due to it saturating more than green and red channels (my phone: 1.858154 , 1 ,  1)
         */
        void ConfigureCameraForDevice(AVCaptureDevice device)
        {
            var error = new NSError();

            if (device.IsFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus))
            {
                device.LockForConfiguration(out error);
                device.FocusMode = AVCaptureFocusMode.Locked;
                device.SetFocusModeLocked((float)0.3, null);

                Console.WriteLine("devidce device.FocusMode: " + device.FocusMode);
                device.UnlockForConfiguration();
            }

            if (device.IsExposureModeSupported(AVCaptureExposureMode.ContinuousAutoExposure))
            {
                device.LockForConfiguration(out error);
                device.ExposureMode = AVCaptureExposureMode.Custom;

                var    iso          = (device.ActiveFormat.MaxISO + device.ActiveFormat.MinISO) / 2;
                CMTime exposureTime = new CMTime(1, 10);
                device.LockExposure(exposureTime, iso, null);
                Console.WriteLine("deviceexposure: " + device.ExposureDuration + " = " + exposureTime + " iso: " + iso);

                device.UnlockForConfiguration();

                //Setting RGB gains using WhiteBalance
                device.LockForConfiguration(out error);
                AVCaptureWhiteBalanceGains gains = device.DeviceWhiteBalanceGains;
                //normalizign Gains
                gains.RedGain   = Math.Max(1, gains.RedGain);
                gains.GreenGain = Math.Max(1, gains.GreenGain);
                gains.BlueGain  = Math.Min(1, gains.BlueGain);

                float maxGain = device.MaxWhiteBalanceGain;
                gains.RedGain   = Math.Min(maxGain, gains.RedGain);
                gains.GreenGain = Math.Min(maxGain, gains.GreenGain);
                gains.BlueGain  = Math.Min(maxGain, gains.BlueGain);
                Console.WriteLine("devidce device.WhiteBalanceMode gains RGB: " + gains.RedGain + " " + gains.GreenGain + " " + gains.BlueGain);

                device.SetWhiteBalanceModeLockedWithDeviceWhiteBalanceGains(gains, null);
                device.UnlockForConfiguration();
            }
        }
コード例 #7
0
		AVCaptureWhiteBalanceGains NomralizeGains (AVCaptureWhiteBalanceGains gains)
		{
			gains.RedGain = Math.Max (1, gains.RedGain);
			gains.BlueGain = Math.Max (1, gains.BlueGain);
			gains.GreenGain = Math.Max (1, gains.GreenGain);

			float maxGain = ThisApp.CaptureDevice.MaxWhiteBalanceGain;
			gains.RedGain = Math.Min (maxGain, gains.RedGain);
			gains.BlueGain = Math.Min (maxGain, gains.BlueGain);
			gains.GreenGain = Math.Min (maxGain, gains.GreenGain);

			return gains;
		}
コード例 #8
0
		void SetWhiteBalanceGains (AVCaptureWhiteBalanceGains gains)
		{
			NSError error = null;

			if (VideoDevice.LockForConfiguration (out error)) {
				AVCaptureWhiteBalanceGains newGains = NormalizeGains (gains); // Conversion can yield out-of-bound values, cap to limits
				VideoDevice.SetWhiteBalanceModeLockedWithDeviceWhiteBalanceGains (newGains, null);
				VideoDevice.UnlockForConfiguration ();
			} else {
				Console.WriteLine ($"Could not lock device for configuration: {error}");
			}
		}
コード例 #9
0
 AVCaptureWhiteBalanceGains Settings(AVCaptureWhiteBalanceGains statusDev)
 {
     statusDev.RedGain   = Math.Max(1, statusDev.RedGain);
     statusDev.BlueGain  = Math.Max(1, statusDev.BlueGain);
     statusDev.GreenGain = Math.Max(1, statusDev.GreenGain);
 }