Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
622be830
Commit
622be830
authored
Jan 03, 2013
by
David Fuhrmann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
macosx: audio effects panel: migrate autosave and bugfixes from video effects panel
parent
a3915ceb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
147 additions
and
92 deletions
+147
-92
modules/gui/macosx/AudioEffects.h
modules/gui/macosx/AudioEffects.h
+4
-0
modules/gui/macosx/AudioEffects.m
modules/gui/macosx/AudioEffects.m
+139
-91
modules/gui/macosx/intf.m
modules/gui/macosx/intf.m
+4
-1
No files found.
modules/gui/macosx/AudioEffects.h
View file @
622be830
...
...
@@ -99,6 +99,8 @@
IBOutlet
id
o_filter_normLevel_sld
;
IBOutlet
id
o_filter_normLevel_lbl
;
IBOutlet
id
o_filter_karaoke_ckb
;
NSInteger
i_old_profile_index
;
}
/* generic */
...
...
@@ -109,6 +111,8 @@
-
(
IBAction
)
addAudioEffectsProfile
:(
id
)
sender
;
-
(
IBAction
)
removeAudioEffectsProfile
:(
id
)
sender
;
-
(
void
)
saveCurrentProfile
;
/* Equalizer */
-
(
void
)
setupEqualizer
;
-
(
void
)
equalizerUpdated
;
...
...
modules/gui/macosx/AudioEffects.m
View file @
622be830
...
...
@@ -82,7 +82,7 @@ static VLCAudioEffects *_o_sharedInstance = nil;
}
NSString
*
defaultProfile
=
[
NSString
stringWithFormat
:
@"ZmxhdA==;;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%i"
,
.
0
,
25
.,
100
.,
-
11
.,
8
.,
2
.
5
,
7
.,.
85
,
1
.,.
4
,.
5
,.
5
,
2
.,
0
];
.
0
,
25
.,
100
.,
-
11
.,
8
.,
2
.
5
,
7
.,.
85
,
1
.,.
4
,.
5
,.
5
,
2
.,
0
];
NSDictionary
*
appDefaults
=
[
NSDictionary
dictionaryWithObjectsAndKeys
:[
NSArray
arrayWithArray
:
workValues
],
@"EQValues"
,
[
NSArray
arrayWithArray
:
workPreamp
],
@"EQPreampValues"
,
[
NSArray
arrayWithArray
:
workTitles
],
@"EQTitles"
,
[
NSArray
arrayWithArray
:
workNames
],
@"EQNames"
,
[
NSArray
arrayWithObject
:
defaultProfile
],
@"AudioEffectProfiles"
,
[
NSArray
arrayWithObject
:
_NS
(
"Default"
)],
@"AudioEffectProfileNames"
,
nil
];
[
defaults
registerDefaults
:
appDefaults
];
...
...
@@ -99,6 +99,7 @@ static VLCAudioEffects *_o_sharedInstance = nil;
[
self
dealloc
];
else
{
p_intf
=
VLCIntf
;
i_old_profile_index
=
-
1
;
_o_sharedInstance
=
[
super
init
];
}
...
...
@@ -199,7 +200,7 @@ static VLCAudioEffects *_o_sharedInstance = nil;
[
o_profile_pop
addItemsWithTitles
:
profileNames
];
[[
o_profile_pop
menu
]
addItem
:[
NSMenuItem
separatorItem
]];
[
o_profile_pop
addItemWithTitle
:
_NS
(
"
Save selection as new
profile..."
)];
[
o_profile_pop
addItemWithTitle
:
_NS
(
"
Duplicate current
profile..."
)];
[[
o_profile_pop
lastItem
]
setTarget
:
self
];
[[
o_profile_pop
lastItem
]
setAction
:
@selector
(
addAudioEffectsProfile
:)];
...
...
@@ -223,8 +224,58 @@ static VLCAudioEffects *_o_sharedInstance = nil;
[
o_window
makeKeyAndOrderFront
:
sender
];
}
-
(
NSString
*
)
generateProfileString
{
vlc_object_t
*
p_object
=
VLC_OBJECT
(
getAout
());
if
(
p_object
==
NULL
)
p_object
=
vlc_object_hold
(
pl_Get
(
p_intf
));
NSString
*
o_str
=
[
NSString
stringWithFormat
:
@"%s;%s;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%lli"
,
vlc_b64_encode
(
var_GetNonEmptyString
(
p_object
,
"equalizer-preset"
)),
vlc_b64_encode
(
config_GetPsz
(
p_intf
,
"audio-filter"
)),
config_GetFloat
(
p_intf
,
"compressor-rms-peak"
),
config_GetFloat
(
p_intf
,
"compressor-attack"
),
config_GetFloat
(
p_intf
,
"compressor-release"
),
config_GetFloat
(
p_intf
,
"compressor-threshold"
),
config_GetFloat
(
p_intf
,
"compressor-ratio"
),
config_GetFloat
(
p_intf
,
"compressor-knee"
),
config_GetFloat
(
p_intf
,
"compressor-makeup-gain"
),
config_GetFloat
(
p_intf
,
"spatializer-roomsize"
),
config_GetFloat
(
p_intf
,
"spatializer-width"
),
config_GetFloat
(
p_intf
,
"spatializer-wet"
),
config_GetFloat
(
p_intf
,
"spatializer-dry"
),
config_GetFloat
(
p_intf
,
"spatializer-damp"
),
config_GetFloat
(
p_intf
,
"norm-max-level"
),
config_GetInt
(
p_intf
,
"equalizer-2pass"
)];
vlc_object_release
(
p_object
);
return
o_str
;
}
-
(
void
)
saveCurrentProfile
{
if
(
i_old_profile_index
==
-
1
)
return
;
NSUserDefaults
*
defaults
=
[
NSUserDefaults
standardUserDefaults
];
/* fetch all the current settings in a uniform string */
NSString
*
newProfile
=
[
self
generateProfileString
];
NSMutableArray
*
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"AudioEffectProfiles"
]];
if
(
i_old_profile_index
>=
[
workArray
count
])
return
;
[
workArray
replaceObjectAtIndex
:
i_old_profile_index
withObject
:
newProfile
];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"AudioEffectProfiles"
];
[
workArray
release
];
[
defaults
synchronize
];
}
-
(
IBAction
)
profileSelectorAction
:(
id
)
sender
{
[
self
saveCurrentProfile
];
i_old_profile_index
=
[
o_profile_pop
indexOfSelectedItem
];
NSUserDefaults
*
defaults
=
[
NSUserDefaults
standardUserDefaults
];
NSUInteger
selectedProfile
=
[
o_profile_pop
indexOfSelectedItem
];
...
...
@@ -256,7 +307,6 @@ static VLCAudioEffects *_o_sharedInstance = nil;
NSString
*
tempString
=
[
NSString
stringWithFormat
:
@"%s"
,
vlc_b64_decode
([[
items
objectAtIndex
:
1
]
UTF8String
])];
NSArray
*
tempArray
;
NSUInteger
count
;
NSLog
(
@"enable audio filters: %@"
,
tempString
);
/* enable the new filters, if we have an aout */
if
(
p_aout
)
{
if
([
tempString
length
]
>
0
)
{
...
...
@@ -325,7 +375,7 @@ static VLCAudioEffects *_o_sharedInstance = nil;
{
/* show panel */
VLCEnterTextPanel
*
panel
=
[
VLCEnterTextPanel
sharedInstance
];
[
panel
setTitle
:
_NS
(
"
Save current selection as
new profile"
)];
[
panel
setTitle
:
_NS
(
"
Duplicate current profile for a
new profile"
)];
[
panel
setSubTitle
:
_NS
(
"Enter a name for the new profile:"
)];
[
panel
setCancelButtonLabel
:
_NS
(
"Cancel"
)];
[
panel
setOKButtonLabel
:
_NS
(
"Save"
)];
...
...
@@ -353,7 +403,7 @@ static VLCAudioEffects *_o_sharedInstance = nil;
#pragma mark -
#pragma mark Equalizer
static
bool
GetEqualizerStatus
(
intf_thread_t
*
p_custom_intf
,
char
*
psz_name
)
char
*
psz_name
)
{
char
*
psz_parser
,
*
psz_string
=
NULL
;
vlc_object_t
*
p_object
=
VLC_OBJECT
(
getAout
());
...
...
@@ -645,93 +695,88 @@ static bool GetEqualizerStatus(intf_thread_t *p_custom_intf,
-
(
void
)
panel
:(
VLCEnterTextPanel
*
)
panel
returnValue
:(
NSUInteger
)
value
text
:(
NSString
*
)
text
{
if
(
value
==
NSOKButton
)
{
if
([
text
length
]
>
0
)
{
NSUserDefaults
*
defaults
=
[
NSUserDefaults
standardUserDefaults
];
if
(
!
b_genericAudioProfileInInteraction
)
{
NSMutableArray
*
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQValues"
]];
[
workArray
addObject
:[
self
generatePresetString
]];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQValues"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQTitles"
]];
[
workArray
addObject
:
text
];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQTitles"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQPreampValues"
]];
[
workArray
addObject
:[
NSString
stringWithFormat
:
@"%.1f"
,
[
o_eq_preamp_sld
floatValue
]]];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQPreampValues"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQNames"
]];
[
workArray
addObject
:[
text
decomposedStringWithCanonicalMapping
]];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQNames"
];
[
workArray
release
];
[
defaults
synchronize
];
/* update VLC internals */
vlc_object_t
*
p_object
=
VLC_OBJECT
(
getAout
());
if
(
p_object
==
NULL
)
p_object
=
vlc_object_hold
(
pl_Get
(
p_intf
));
var_SetString
(
p_object
,
"equalizer-preset"
,
[[
text
decomposedStringWithCanonicalMapping
]
UTF8String
]);
config_PutPsz
(
p_object
,
"equalizer-preset"
,
[[
text
decomposedStringWithCanonicalMapping
]
UTF8String
]);
vlc_object_release
(
p_object
);
/* update UI */
[
self
updatePresetSelector
];
}
else
{
vlc_object_t
*
p_object
=
VLC_OBJECT
(
getAout
());
if
(
p_object
==
NULL
)
p_object
=
vlc_object_hold
(
pl_Get
(
p_intf
));
NSArray
*
presets
=
[
defaults
objectForKey
:
@"EQNames"
];
NSString
*
currentPreset
=
[
NSString
stringWithFormat
:
@"%s"
,
var_GetNonEmptyString
(
p_object
,
"equalizer-preset"
)];
NSInteger
currentPresetIndex
=
0
;
if
([
currentPreset
length
]
>
0
)
{
currentPresetIndex
=
[
presets
indexOfObjectPassingTest
:
^
(
id
obj
,
NSUInteger
idx
,
BOOL
*
stop
)
{
return
[
obj
isEqualToString
:
currentPreset
];
}];
}
NSString
*
newProfile
=
[
NSString
stringWithFormat
:
@"%s;%s;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%lli"
,
vlc_b64_encode
(
var_GetNonEmptyString
(
p_object
,
"equalizer-preset"
)),
vlc_b64_encode
(
config_GetPsz
(
p_intf
,
"audio-filter"
)),
config_GetFloat
(
p_intf
,
"compressor-rms-peak"
),
config_GetFloat
(
p_intf
,
"compressor-attack"
),
config_GetFloat
(
p_intf
,
"compressor-release"
),
config_GetFloat
(
p_intf
,
"compressor-threshold"
),
config_GetFloat
(
p_intf
,
"compressor-ratio"
),
config_GetFloat
(
p_intf
,
"compressor-knee"
),
config_GetFloat
(
p_intf
,
"compressor-makeup-gain"
),
config_GetFloat
(
p_intf
,
"spatializer-roomsize"
),
config_GetFloat
(
p_intf
,
"spatializer-width"
),
config_GetFloat
(
p_intf
,
"spatializer-wet"
),
config_GetFloat
(
p_intf
,
"spatializer-dry"
),
config_GetFloat
(
p_intf
,
"spatializer-damp"
),
config_GetFloat
(
p_intf
,
"norm-max-level"
),
config_GetInt
(
p_intf
,
"equalizer-2pass"
)];
/* add string to user defaults as well as a label */
NSUserDefaults
*
defaults
=
[
NSUserDefaults
standardUserDefaults
];
NSMutableArray
*
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"AudioEffectProfiles"
]];
[
workArray
addObject
:
newProfile
];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"AudioEffectProfiles"
];
[
defaults
setInteger
:[
workArray
count
]
-
1
forKey
:
@"AudioEffectSelectedProfile"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"AudioEffectProfileNames"
]];
[
workArray
addObject
:
text
];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"AudioEffectProfileNames"
];
[
workArray
release
];
/* save defaults */
[
defaults
synchronize
];
vlc_object_release
(
p_object
);
}
NSUserDefaults
*
defaults
=
[
NSUserDefaults
standardUserDefaults
];
// EQ settings
if
(
!
b_genericAudioProfileInInteraction
)
{
if
(
value
==
NSOKButton
&&
[
text
length
]
>
0
)
{
NSMutableArray
*
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQValues"
]];
[
workArray
addObject
:[
self
generatePresetString
]];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQValues"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQTitles"
]];
[
workArray
addObject
:
text
];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQTitles"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQPreampValues"
]];
[
workArray
addObject
:[
NSString
stringWithFormat
:
@"%.1f"
,
[
o_eq_preamp_sld
floatValue
]]];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQPreampValues"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"EQNames"
]];
[
workArray
addObject
:[
text
decomposedStringWithCanonicalMapping
]];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"EQNames"
];
[
workArray
release
];
[
defaults
synchronize
];
/* update VLC internals */
vlc_object_t
*
p_object
=
VLC_OBJECT
(
getAout
());
if
(
p_object
==
NULL
)
p_object
=
vlc_object_hold
(
pl_Get
(
p_intf
));
var_SetString
(
p_object
,
"equalizer-preset"
,
[[
text
decomposedStringWithCanonicalMapping
]
UTF8String
]);
config_PutPsz
(
p_object
,
"equalizer-preset"
,
[[
text
decomposedStringWithCanonicalMapping
]
UTF8String
]);
vlc_object_release
(
p_object
);
/* update UI */
[
self
updatePresetSelector
];
}
}
[
self
resetProfileSelector
];
// profile settings
}
else
{
if
(
value
!=
NSOKButton
)
{
[
o_profile_pop
selectItemAtIndex
:[
defaults
integerForKey
:
@"AudioEffectSelectedProfile"
]];
return
;
}
NSArray
*
profileNames
=
[
defaults
objectForKey
:
@"AudioEffectProfileNames"
];
// duplicate names are not allowed in the popup control
if
([
text
length
]
==
0
||
[
profileNames
containsObject
:
text
])
{
[
o_profile_pop
selectItemAtIndex
:[
defaults
integerForKey
:
@"AudioEffectSelectedProfile"
]];
NSAlert
*
alert
=
[[[
NSAlert
alloc
]
init
]
autorelease
];
[
alert
setAlertStyle
:
NSCriticalAlertStyle
];
[
alert
setMessageText
:
_NS
(
"Please enter a unique name for the new profile."
)];
[
alert
setInformativeText
:
_NS
(
"Multiple profiles with the same name are not allowed."
)];
[
alert
beginSheetModalForWindow
:
o_window
modalDelegate:
nil
didEndSelector:
nil
contextInfo:
nil
];
return
;
}
NSString
*
newProfile
=
[
self
generateProfileString
];
/* add string to user defaults as well as a label */
NSUserDefaults
*
defaults
=
[
NSUserDefaults
standardUserDefaults
];
NSMutableArray
*
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"AudioEffectProfiles"
]];
[
workArray
addObject
:
newProfile
];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"AudioEffectProfiles"
];
[
defaults
setInteger
:[
workArray
count
]
-
1
forKey
:
@"AudioEffectSelectedProfile"
];
[
workArray
release
];
workArray
=
[[
NSMutableArray
alloc
]
initWithArray
:[
defaults
objectForKey
:
@"AudioEffectProfileNames"
]];
[
workArray
addObject
:
text
];
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"AudioEffectProfileNames"
];
[
workArray
release
];
/* save defaults */
[
defaults
synchronize
];
[
self
resetProfileSelector
];
}
}
-
(
IBAction
)
deletePresetAction
:(
id
)
sender
...
...
@@ -786,6 +831,9 @@ static bool GetEqualizerStatus(intf_thread_t *p_custom_intf,
[
defaults
setObject
:[
NSArray
arrayWithArray
:
workArray
]
forKey
:
@"AudioEffectProfileNames"
];
[
workArray
release
];
if
(
i_old_profile_index
>=
item
)
[
defaults
setInteger
:
i_old_profile_index
-
1
forKey
:
@"AudioEffectSelectedProfile"
];
/* save defaults */
[
defaults
synchronize
];
[
self
resetProfileSelector
];
...
...
@@ -906,8 +954,8 @@ static bool GetEqualizerStatus(intf_thread_t *p_custom_intf,
[
o_spat_enable_ckb
setState
:
NSOffState
];
#define setSlider(bandsld, bandfld, var) \
[bandsld setFloatValue: config_GetFloat(p_intf, var) * 10.]; \
[bandfld setStringValue:[NSString localizedStringWithFormat:@"%1.1f", [bandsld floatValue]]]
[bandsld setFloatValue: config_GetFloat(p_intf, var) * 10.]; \
[bandfld setStringValue:[NSString localizedStringWithFormat:@"%1.1f", [bandsld floatValue]]]
setSlider
(
o_spat_band1_sld
,
o_spat_band1_fld
,
"spatializer-roomsize"
);
setSlider
(
o_spat_band2_sld
,
o_spat_band2_fld
,
"spatializer-width"
);
...
...
modules/gui/macosx/intf.m
View file @
622be830
...
...
@@ -62,7 +62,9 @@
#import "CoreInteraction.h"
#import "TrackSynchronization.h"
#import "VLCVoutWindowController.h"
#import "VideoEffects.h"
#import "AudioEffects.h"
#import <AddressBook/AddressBook.h>
/* for crashlog send mechanism */
#import <Sparkle/Sparkle.h>
/* we're the update delegate */
...
...
@@ -797,8 +799,9 @@ static VLCMain *_o_sharedMainInstance = nil;
[
NSApp
setPresentationOptions
:(
NSApplicationPresentationDefault
)];
}
/* save current video
profile
*/
/* save current video
and audio profiles
*/
[[
VLCVideoEffects
sharedInstance
]
saveCurrentProfile
];
[[
VLCAudioEffects
sharedInstance
]
saveCurrentProfile
];
/* Save some interface state in configuration, at module quit */
config_PutInt
(
p_intf
,
"random"
,
var_GetBool
(
p_playlist
,
"random"
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment