diff options
-rw-r--r-- | macosx/HBAudio.m | 22 | ||||
-rw-r--r-- | macosx/HBAudioController.m | 6 |
2 files changed, 23 insertions, 5 deletions
diff --git a/macosx/HBAudio.m b/macosx/HBAudio.m index 3be645456..721e104ba 100644 --- a/macosx/HBAudio.m +++ b/macosx/HBAudio.m @@ -325,7 +325,7 @@ static NSMutableArray *masterBitRateArray = nil; return; } -- (void) updateBitRates +- (void) updateBitRates: (BOOL) shouldSetDefault { NSMutableArray *permittedBitRates = [NSMutableArray array]; @@ -391,7 +391,9 @@ static NSMutableArray *masterBitRateArray = nil; [self setBitRates: permittedBitRates]; // Select the proper one - [self setBitRateFromName: defaultBitRate]; + if (YES == shouldSetDefault) { + [self setBitRateFromName: defaultBitRate]; + } if (nil == [self bitRate] || NO == [permittedBitRates containsObject: [self bitRate]]) { [self setBitRate: [permittedBitRates lastObject]]; @@ -464,7 +466,7 @@ static NSMutableArray *masterBitRateArray = nil; [codec release]; codec = aValue; [self updateMixdowns]; - [self updateBitRates]; + [self updateBitRates: YES]; } return; } @@ -476,12 +478,24 @@ static NSMutableArray *masterBitRateArray = nil; [aValue retain]; [mixdown release]; mixdown = aValue; - [self updateBitRates]; + [self updateBitRates: YES]; [[NSNotificationCenter defaultCenter] postNotificationName: HBMixdownChangedNotification object: self]; } return; } +- (void) setSampleRate: (NSDictionary *) aValue + +{ + if ((nil != aValue || nil != sampleRate) && NO == [aValue isEqual: sampleRate]) { + [aValue retain]; + [sampleRate release]; + sampleRate = aValue; + [self updateBitRates: NO]; + } + return; +} + - (NSArray *) tracks { return [controller masterTrackArray]; } - (NSArray *) sampleRates { return masterSampleRateArray; } diff --git a/macosx/HBAudioController.m b/macosx/HBAudioController.m index 514f7b32f..55dfc9916 100644 --- a/macosx/HBAudioController.m +++ b/macosx/HBAudioController.m @@ -241,6 +241,7 @@ NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification"; while (nil != (dict = [enumerator nextObject])) { if ([self countOfAudioArray] < maximumNumberOfAllowedAudioTracks) { + BOOL fallenBack = NO; HBAudio *newAudio = [[HBAudio alloc] init]; [newAudio setController: self]; [self insertObject: newAudio inAudioArrayAtIndex: [self countOfAudioArray]]; @@ -257,6 +258,7 @@ NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification"; YES == [key isEqualToString: @"AC3 Passthru"]) { if (NO == [newAudio setCodecFromName: key]) { key = @"AC3"; + fallenBack = YES; } } // If our preset wants us to support a codec that the track does not support, instead @@ -264,7 +266,9 @@ NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification"; if (YES == [newAudio setCodecFromName: key]) { [newAudio setMixdownFromName: [dict objectForKey: @"AudioMixdown"]]; [newAudio setSampleRateFromName: [dict objectForKey: @"AudioSamplerate"]]; - [newAudio setBitRateFromName: [dict objectForKey: @"AudioBitrate"]]; + if (NO == fallenBack) { + [newAudio setBitRateFromName: [dict objectForKey: @"AudioBitrate"]]; + } [newAudio setDrc: [dict objectForKey: @"AudioTrackDRCSlider"]]; } else { |