summaryrefslogtreecommitdiffstats
path: root/macosx/HBAudioController.m
diff options
context:
space:
mode:
authordynaflash <[email protected]>2011-07-19 15:28:24 +0000
committerdynaflash <[email protected]>2011-07-19 15:28:24 +0000
commit4c30ccadee5199d8c9bd0a4c4d38b50216cac409 (patch)
treec83e531d15b128b5907ef36ad0083558a50383e2 /macosx/HBAudioController.m
parentaf8c57cdd80095f433a25b59194a7d16c9c70d36 (diff)
MacGUI: Consolidate passthrough mixdowns.
- There's no need for one passthrough mixdown per passthrough codec. - When using passthru, mixdown is set to "None". - Patch by Rodeo ... Thanks! - Fix a bug where we would sometimes attempt to modify a non-mutable NSDictionary, causing a crash. - Fix by blindjimmy ... Thanks! git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4121 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'macosx/HBAudioController.m')
-rw-r--r--macosx/HBAudioController.m19
1 files changed, 16 insertions, 3 deletions
diff --git a/macosx/HBAudioController.m b/macosx/HBAudioController.m
index cab0a3df0..c350a80ac 100644
--- a/macosx/HBAudioController.m
+++ b/macosx/HBAudioController.m
@@ -280,6 +280,9 @@ NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification";
while (nil != (dict = [enumerator nextObject]))
{
+ // copy the dictionary since we may need to alter it
+ dict = [NSMutableDictionary dictionaryWithDictionary:dict];
+
if ([self countOfAudioArray] < maximumNumberOfAllowedAudioTracks)
{
BOOL fallenBack = NO;
@@ -288,19 +291,20 @@ NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification";
[self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]];
[newAudio setVideoContainerTag: [self videoContainerTag]];
[newAudio setTrackFromIndex: trackIndex];
+
key = [dict objectForKey: @"AudioEncoder"];
if (0 == aType &&
[[NSUserDefaults standardUserDefaults] boolForKey: @"UseCoreAudio"] &&
[key isEqualToString: @"AAC (faac)"])
{
- key = @"AAC (CoreAudio)";
+ [dict setObject: @"AAC (CoreAudio)" forKey: @"AudioEncoder"];
}
if ([[NSUserDefaults standardUserDefaults] boolForKey: @"AC3PassthruDefaultsToAC3"] &&
[key isEqualToString: @"AC3 Passthru"])
{
if (![newAudio setCodecFromName: key])
{
- key = @"AC3";
+ [dict setObject: @"AC3" forKey: @"AudioEncoder"];
fallenBack = YES;
}
}
@@ -316,9 +320,18 @@ NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification";
[dict setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackGainSlider"];
}
+ // map legacy passthru mixdowns
+ key = [dict objectForKey: @"AudioMixdown"];
+ if ([key isEqualToString: @"AC3 Passthru"] ||
+ [key isEqualToString: @"DTS Passthru"] ||
+ [key isEqualToString: @"DTS-HD Passthru"])
+ {
+ [dict setObject: @"None" forKey: @"AudioMixdown"];
+ }
+
// If our preset wants us to support a codec that the track does not support, instead
// of changing the codec we remove the audio instead.
- if ([newAudio setCodecFromName: key])
+ if ([newAudio setCodecFromName: [dict objectForKey: @"AudioEncoder"]])
{
[newAudio setMixdownFromName: [dict objectForKey: @"AudioMixdown"]];
[newAudio setSampleRateFromName: [dict objectForKey: @"AudioSamplerate"]];