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); } }