Пример #1
0
        public RetroBloomFilter()
            : base()
        {
            Name = "Bloom";
            ShortDescription = "Bloom";

            _levelFilter = new LevelsFilter(0.9, 0.6, 0.0);

            _curvesFilter = new CurvesFilter();
            Curve red = new Curve();
            red.SetPoint(127, 100);
            red.SetPoint(235, 255);

            Curve green = new Curve();
            green.SetPoint(97, 72);
            green.SetPoint(177, 189);

            Curve blue = new Curve();
            blue.SetPoint(0, 34);
            blue.SetPoint(255, 220);

            _curvesFilter.Red = red;
            _curvesFilter.Green = green;
            _curvesFilter.Blue = blue;

            _vignettingFilter = new VignettingFilter(0.5, new Windows.UI.Color { R = 104, G = 103, B = 71 });
            //_vignettingFilter = new VignettingFilter(0.3, new Windows.UI.Color { R = 255, G = 0, B = 0 });

            _hueSaturationFilter = new HueSaturationFilter(5.0 / 255.0, -40.0 / 255.0);
            _colorAdjustFilter = new ColorAdjustFilter(45.0 / 255.0, -41.0 / 255.0, -89.0 / 255.0);
        }
        async Task StartMediaCapture()
        {
            Debug.WriteLine("Starting MediaCapture");
            app.MediaCapture = new MediaCapture();
            var selectedDevice = _devices.FirstOrDefault(x => x.EnclosureLocation != null && x.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back);

            if (selectedDevice == null)
            {
                selectedDevice = _devices.First();
            }
            await app.MediaCapture.InitializeAsync(new MediaCaptureInitializationSettings
            {
                VideoDeviceId = selectedDevice.Id
            });

            app.PreviewElement.Source = app.MediaCapture;

            _encodingPreviewProperties  = app.MediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoPreview);
            _encodingRecorderProperties = app.MediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoRecord);
            ListAllResolutionDetails();

            var selectedPreviewProperties = _encodingPreviewProperties.First(x => ((VideoEncodingProperties)x).Width == _encodingPreviewProperties.Max(y => ((VideoEncodingProperties)y).Width));

            ListResolutionDetails((VideoEncodingProperties)selectedPreviewProperties);
            await app.MediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, selectedPreviewProperties);

            var selectedRecordingProperties = _encodingRecorderProperties.First(x => ((VideoEncodingProperties)x).Width == _encodingRecorderProperties.Max(y => ((VideoEncodingProperties)y).Width));

            ListResolutionDetails((VideoEncodingProperties)selectedRecordingProperties);
            await app.MediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoRecord, selectedRecordingProperties);

            PropertySet testSet = new PropertySet();

            FilterEffect     effect           = new FilterEffect();
            LomoFilter       lomoFilter       = new LomoFilter();
            VignettingFilter vignettingFilter = new VignettingFilter();

            effect.Filters = new IFilter[] { lomoFilter, vignettingFilter };

            HdrEffect hdrEffect = new HdrEffect(effect);

            List <IImageProvider> providers = new List <IImageProvider>();

            providers.Add(effect);
            providers.Add(hdrEffect);

            testSet.Add(new KeyValuePair <string, object>("IImageProviders", providers));


            await app.MediaCapture.AddEffectAsync(MediaStreamType.VideoPreview, "ImagingEffects.ImagingEffect", testSet);

            //app.MediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);  //need this if portrait mode or landscapeflipped.
            app.IsPreviewing = true;
            await app.MediaCapture.StartPreviewAsync();

            if (app.MediaCapture.VideoDeviceController.FocusControl.Supported) //.SetPresetAsync(Windows.Media.Devices.FocusPreset.Manual);
            {
                await app.MediaCapture.VideoDeviceController.FocusControl.SetPresetAsync(Windows.Media.Devices.FocusPreset.Manual);
            }
            else
            {
                app.MediaCapture.VideoDeviceController.Focus.TrySetAuto(false);
            }
        }