summaryrefslogtreecommitdiffstats
path: root/macosx
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
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')
-rw-r--r--macosx/Controller.m3
-rw-r--r--macosx/HBAudio.m27
-rw-r--r--macosx/HBAudioController.m19
3 files changed, 23 insertions, 26 deletions
diff --git a/macosx/Controller.m b/macosx/Controller.m
index d47adde10..484ab3865 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -4520,9 +4520,6 @@ bool one_burned = FALSE;
[fVidEncoderPopUp selectItemAtIndex:0];
[self videoEncoderPopUpChanged:nil];
- /* changing the format may mean that we can / can't offer mono or 6ch, */
- /* so call audioTrackPopUpChanged for both audio tracks to update the mixdown popups */
-
/* We call the method to properly enable/disable turbo 2 pass */
[self twoPassCheckboxChanged: sender];
/* We call method method to change UI to reflect whether a preset is used or not*/
diff --git a/macosx/HBAudio.m b/macosx/HBAudio.m
index 706e8303b..d5169d11d 100644
--- a/macosx/HBAudio.m
+++ b/macosx/HBAudio.m
@@ -151,16 +151,8 @@ static NSMutableArray *masterBitRateArray = nil;
masterMixdownArray = [[NSMutableArray alloc] init]; // knowingly leaked
[masterMixdownArray addObject: [NSDictionary dictionaryWithObjectsAndKeys:
- NSLocalizedString(@"AC3 Passthru", @"AC3 Passthru"), keyAudioMixdownName,
- [NSNumber numberWithInt: HB_ACODEC_AC3_PASS], keyAudioMixdown,
- nil]];
- [masterMixdownArray addObject: [NSDictionary dictionaryWithObjectsAndKeys:
- NSLocalizedString(@"DTS Passthru", @"DTS Passthru"), keyAudioMixdownName,
- [NSNumber numberWithInt: HB_ACODEC_DCA_PASS], keyAudioMixdown,
- nil]];
- [masterMixdownArray addObject: [NSDictionary dictionaryWithObjectsAndKeys:
- NSLocalizedString(@"DTS-HD Passthru", @"DTS-HD Passthru"), keyAudioMixdownName,
- [NSNumber numberWithInt: HB_ACODEC_DCA_HD_PASS], keyAudioMixdown,
+ NSLocalizedString(@"None", @"None"), keyAudioMixdownName,
+ [NSNumber numberWithInt: 0], keyAudioMixdown,
nil]];
for (i = 0; i < hb_audio_mixdowns_count; i++)
{
@@ -290,13 +282,13 @@ static NSMutableArray *masterBitRateArray = nil;
// Basically with the way the mixdowns are stored, the assumption from the libhb point of view
// currently is that all mixdowns from the best down to mono are supported.
- if (currentMixdown <= theBestMixdown)
+ if (currentMixdown && currentMixdown <= theBestMixdown)
{
shouldAdd = YES;
}
- else if (0 == theBestMixdown && codecCodec == currentMixdown)
+ else if (0 == currentMixdown && (codecCodec & HB_ACODEC_PASS_FLAG))
{
- // 0 means passthrough, add the current mixdown if it matches the passthrough codec
+ // "None" mixdown (passthru)
shouldAdd = YES;
}
else
@@ -310,12 +302,6 @@ static NSMutableArray *masterBitRateArray = nil;
}
}
- if (0 == theDefaultMixdown)
- {
- // a mixdown of 0 means passthrough
- theDefaultMixdown = codecCodec;
- }
-
if (![self enabled])
{
permittedMixdowns = nil;
@@ -638,8 +624,9 @@ static NSMutableArray *masterBitRateArray = nil;
if (retval)
{
int myMixdown = [[[self mixdown] objectForKey: keyAudioMixdown] intValue];
- if (myMixdown & HB_ACODEC_PASS_FLAG)
+ if (0 == myMixdown)
{
+ // "None" mixdown (passthru)
retval = NO;
}
}
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"]];