[vlc-devel] [PATCH 12/18] macosx: load audio profile at startup

Victorien Le Couviour--Tuffet victorien.lecouviour.tuffet at gmail.com
Tue Jul 4 10:01:11 CEST 2017


---
 .../gui/macosx/VLCAudioEffectsWindowController.m   | 183 +++++++++++----------
 1 file changed, 98 insertions(+), 85 deletions(-)

diff --git a/modules/gui/macosx/VLCAudioEffectsWindowController.m b/modules/gui/macosx/VLCAudioEffectsWindowController.m
index b6aacd7fe9..85518a885f 100644
--- a/modules/gui/macosx/VLCAudioEffectsWindowController.m
+++ b/modules/gui/macosx/VLCAudioEffectsWindowController.m
@@ -94,11 +94,107 @@
 
         self.popupPanel = [[VLCPopupPanelController alloc] init];
         self.textfieldPanel = [[VLCTextfieldPanelController alloc] init];
+
+        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"AudioEffectApplyProfileOnStartup"])
+        {
+            [self equalizerUpdated];
+            [self resetCompressor];
+            [self resetSpatializer];
+            [self resetAudioFilters];
+            [self loadProfile];
+        }
     }
 
     return self;
 }
 
+- (void)loadProfile
+{
+    intf_thread_t *p_intf = getIntf();
+    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+    NSInteger selectedProfile = [defaults integerForKey:@"AudioEffectSelectedProfile"];
+    playlist_t *p_playlist = pl_Get(p_intf);
+
+    /* disable existing filters */
+    playlist_EnableAudioFilter(p_playlist, "equalizer", false);
+    playlist_EnableAudioFilter(p_playlist, "compressor", false);
+    playlist_EnableAudioFilter(p_playlist, "spatializer", false);
+    playlist_EnableAudioFilter(p_playlist, "compressor", false);
+    playlist_EnableAudioFilter(p_playlist, "headphone", false);
+    playlist_EnableAudioFilter(p_playlist, "normvol", false);
+    playlist_EnableAudioFilter(p_playlist, "karaoke", false);
+
+    /* fetch preset */
+    NSArray *items = [[[defaults objectForKey:@"AudioEffectProfiles"] objectAtIndex:(NSUInteger) selectedProfile] componentsSeparatedByString:@";"];
+
+    /* eq preset */
+    char const *psz_eq_preset = [B64DecNSStr([items firstObject]) UTF8String];
+    audio_output_t *p_aout = getAout();
+    if (p_aout)
+        var_SetString(p_aout, "equalizer-preset", psz_eq_preset);
+    var_SetString(p_playlist, "equalizer-preset", psz_eq_preset);
+
+    /* filter handling */
+    NSString *tempString = B64DecNSStr([items objectAtIndex:1]);
+    NSArray *tempArray;
+    NSUInteger count;
+    /* enable the new filters */
+    if ([tempString length] > 0) {
+        tempArray = [tempString componentsSeparatedByString:@":"];
+        count = [tempArray count];
+        for (NSUInteger x = 0; x < count; x++)
+            playlist_EnableAudioFilter(p_playlist, [[tempArray objectAtIndex:x] UTF8String], true);
+    }
+
+    /* values */
+    var_SetFloat(p_playlist, "compressor-rms-peak",[[items objectAtIndex:2] floatValue]);
+    var_SetFloat(p_playlist, "compressor-attack",[[items objectAtIndex:3] floatValue]);
+    var_SetFloat(p_playlist, "compressor-release",[[items objectAtIndex:4] floatValue]);
+    var_SetFloat(p_playlist, "compressor-threshold",[[items objectAtIndex:5] floatValue]);
+    var_SetFloat(p_playlist, "compressor-ratio",[[items objectAtIndex:6] floatValue]);
+    var_SetFloat(p_playlist, "compressor-knee",[[items objectAtIndex:7] floatValue]);
+    var_SetFloat(p_playlist, "compressor-makeup-gain",[[items objectAtIndex:8] floatValue]);
+    var_SetFloat(p_playlist, "spatializer-roomsize",[[items objectAtIndex:9] floatValue]);
+    var_SetFloat(p_playlist, "spatializer-width",[[items objectAtIndex:10] floatValue]);
+    var_SetFloat(p_playlist, "spatializer-wet",[[items objectAtIndex:11] floatValue]);
+    var_SetFloat(p_playlist, "spatializer-dry",[[items objectAtIndex:12] floatValue]);
+    var_SetFloat(p_playlist, "spatializer-damp",[[items objectAtIndex:13] floatValue]);
+    var_SetFloat(p_playlist, "norm-max-level",[[items objectAtIndex:14] floatValue]);
+    var_SetBool(p_playlist, "equalizer-2pass",(BOOL)[[items objectAtIndex:15] intValue]);
+
+    /* set values on-the-fly if we have an aout */
+    if (p_aout) {
+        var_SetFloat(p_aout, "compressor-rms-peak", [[items objectAtIndex:2] floatValue]);
+        var_SetFloat(p_aout, "compressor-attack", [[items objectAtIndex:3] floatValue]);
+        var_SetFloat(p_aout, "compressor-release", [[items objectAtIndex:4] floatValue]);
+        var_SetFloat(p_aout, "compressor-threshold", [[items objectAtIndex:5] floatValue]);
+        var_SetFloat(p_aout, "compressor-ratio", [[items objectAtIndex:6] floatValue]);
+        var_SetFloat(p_aout, "compressor-knee", [[items objectAtIndex:7] floatValue]);
+        var_SetFloat(p_aout, "compressor-makeup-gain", [[items objectAtIndex:8] floatValue]);
+        var_SetFloat(p_aout, "spatializer-roomsize", [[items objectAtIndex:9] floatValue]);
+        var_SetFloat(p_aout, "spatializer-width", [[items objectAtIndex:10] floatValue]);
+        var_SetFloat(p_aout, "spatializer-wet", [[items objectAtIndex:11] floatValue]);
+        var_SetFloat(p_aout, "spatializer-dry", [[items objectAtIndex:12] floatValue]);
+        var_SetFloat(p_aout, "spatializer-damp", [[items objectAtIndex:13] floatValue]);
+        var_SetFloat(p_aout, "norm-max-level", [[items objectAtIndex:14] floatValue]);
+        var_SetBool(p_aout, "equalizer-2pass", (BOOL)[[items objectAtIndex:15] intValue]);
+    }
+
+    /* update UI */
+    BOOL b_equalizerEnabled = [tempString rangeOfString:@"equalizer"].location != NSNotFound;
+    [_equalizerView enableSubviews:b_equalizerEnabled];
+    [_equalizerEnableCheckbox setState:(b_equalizerEnabled ? NSOnState : NSOffState)];
+
+    [_equalizerTwoPassCheckbox setState:[[items objectAtIndex:15] intValue]];
+
+    /* store current profile selection */
+    [defaults setInteger:selectedProfile forKey:@"AudioEffectSelectedProfile"];
+    [defaults synchronize];
+
+    if (p_aout)
+        vlc_object_release(p_aout);
+}
+
 - (void)windowDidLoad
 {
     [_applyProfileCheckbox setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"AudioEffectApplyProfileOnStartup"]];
@@ -267,99 +363,16 @@
 
 - (IBAction)profileSelectorAction:(id)sender
 {
-    intf_thread_t *p_intf = getIntf();
     [self saveCurrentProfile];
     i_old_profile_index = [_profilePopup indexOfSelectedItem];
-
-    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-    NSInteger selectedProfile = [_profilePopup indexOfSelectedItem];
-    if (selectedProfile < 0)
-        return;
-
-    playlist_t *p_playlist = pl_Get(p_intf);
-
-    /* disable existing filters */
-    playlist_EnableAudioFilter(p_playlist, "equalizer", false);
-    playlist_EnableAudioFilter(p_playlist, "compressor", false);
-    playlist_EnableAudioFilter(p_playlist, "spatializer", false);
-    playlist_EnableAudioFilter(p_playlist, "compressor", false);
-    playlist_EnableAudioFilter(p_playlist, "headphone", false);
-    playlist_EnableAudioFilter(p_playlist, "normvol", false);
-    playlist_EnableAudioFilter(p_playlist, "karaoke", false);
-
-    /* fetch preset */
-    NSArray *items = [[[defaults objectForKey:@"AudioEffectProfiles"] objectAtIndex:(NSUInteger) selectedProfile] componentsSeparatedByString:@";"];
-
-    /* eq preset */
-    char const *psz_eq_preset = [B64DecNSStr([items firstObject]) UTF8String];
-    audio_output_t *p_aout = getAout();
-    if (p_aout)
-        var_SetString(p_aout, "equalizer-preset", psz_eq_preset);
-    var_SetString(p_playlist, "equalizer-preset", psz_eq_preset);
-
-    /* filter handling */
-    NSString *tempString = B64DecNSStr([items objectAtIndex:1]);
-    NSArray *tempArray;
-    NSUInteger count;
-    /* enable the new filters */
-    if ([tempString length] > 0) {
-        tempArray = [tempString componentsSeparatedByString:@":"];
-        count = [tempArray count];
-        for (NSUInteger x = 0; x < count; x++)
-            playlist_EnableAudioFilter(p_playlist, [[tempArray objectAtIndex:x] UTF8String], true);
-    }
-
-    /* values */
-    var_SetFloat(p_playlist, "compressor-rms-peak",[[items objectAtIndex:2] floatValue]);
-    var_SetFloat(p_playlist, "compressor-attack",[[items objectAtIndex:3] floatValue]);
-    var_SetFloat(p_playlist, "compressor-release",[[items objectAtIndex:4] floatValue]);
-    var_SetFloat(p_playlist, "compressor-threshold",[[items objectAtIndex:5] floatValue]);
-    var_SetFloat(p_playlist, "compressor-ratio",[[items objectAtIndex:6] floatValue]);
-    var_SetFloat(p_playlist, "compressor-knee",[[items objectAtIndex:7] floatValue]);
-    var_SetFloat(p_playlist, "compressor-makeup-gain",[[items objectAtIndex:8] floatValue]);
-    var_SetFloat(p_playlist, "spatializer-roomsize",[[items objectAtIndex:9] floatValue]);
-    var_SetFloat(p_playlist, "spatializer-width",[[items objectAtIndex:10] floatValue]);
-    var_SetFloat(p_playlist, "spatializer-wet",[[items objectAtIndex:11] floatValue]);
-    var_SetFloat(p_playlist, "spatializer-dry",[[items objectAtIndex:12] floatValue]);
-    var_SetFloat(p_playlist, "spatializer-damp",[[items objectAtIndex:13] floatValue]);
-    var_SetFloat(p_playlist, "norm-max-level",[[items objectAtIndex:14] floatValue]);
-    var_SetBool(p_playlist, "equalizer-2pass",(BOOL)[[items objectAtIndex:15] intValue]);
-
-    /* set values on-the-fly if we have an aout */
-    if (p_aout) {
-        var_SetFloat(p_aout, "compressor-rms-peak", [[items objectAtIndex:2] floatValue]);
-        var_SetFloat(p_aout, "compressor-attack", [[items objectAtIndex:3] floatValue]);
-        var_SetFloat(p_aout, "compressor-release", [[items objectAtIndex:4] floatValue]);
-        var_SetFloat(p_aout, "compressor-threshold", [[items objectAtIndex:5] floatValue]);
-        var_SetFloat(p_aout, "compressor-ratio", [[items objectAtIndex:6] floatValue]);
-        var_SetFloat(p_aout, "compressor-knee", [[items objectAtIndex:7] floatValue]);
-        var_SetFloat(p_aout, "compressor-makeup-gain", [[items objectAtIndex:8] floatValue]);
-        var_SetFloat(p_aout, "spatializer-roomsize", [[items objectAtIndex:9] floatValue]);
-        var_SetFloat(p_aout, "spatializer-width", [[items objectAtIndex:10] floatValue]);
-        var_SetFloat(p_aout, "spatializer-wet", [[items objectAtIndex:11] floatValue]);
-        var_SetFloat(p_aout, "spatializer-dry", [[items objectAtIndex:12] floatValue]);
-        var_SetFloat(p_aout, "spatializer-damp", [[items objectAtIndex:13] floatValue]);
-        var_SetFloat(p_aout, "norm-max-level", [[items objectAtIndex:14] floatValue]);
-        var_SetBool(p_aout, "equalizer-2pass", (BOOL)[[items objectAtIndex:15] intValue]);
-    }
+    [[NSUserDefaults standardUserDefaults] setInteger:i_old_profile_index forKey:@"AudioEffectSelectedProfile"];
+    [self loadProfile];
 
     /* update UI */
-    BOOL b_equalizerEnabled = [tempString rangeOfString:@"equalizer"].location != NSNotFound;
-    [_equalizerView enableSubviews:b_equalizerEnabled];
-    [_equalizerEnableCheckbox setState:(b_equalizerEnabled ? NSOnState : NSOffState)];
-
-    [_equalizerTwoPassCheckbox setState:[[items objectAtIndex:15] intValue]];
     [self resetCompressor];
     [self resetSpatializer];
     [self resetAudioFilters];
     [self updatePresetSelector];
-
-    /* store current profile selection */
-    [defaults setInteger:selectedProfile forKey:@"AudioEffectSelectedProfile"];
-    [defaults synchronize];
-
-    if (p_aout)
-        vlc_object_release(p_aout);
 }
 
 - (void)addAudioEffectsProfile:(id)sender
-- 
2.13.1



More information about the vlc-devel mailing list