Changeset 40
- Timestamp:
- 04/06/07 15:28:42 (2 years ago)
- Files:
-
- trunk/A52/ACShepA52Decoder.cpp (modified) (2 diffs)
- trunk/A52Preferences/A52Preferences.h (modified) (1 diff)
- trunk/A52Preferences/A52Preferences.m (modified) (4 diffs)
- trunk/A52Preferences/English.lproj/A52CodecPreferences.nib/classes.nib (modified) (1 diff)
- trunk/A52Preferences/English.lproj/A52CodecPreferences.nib/info.nib (modified) (1 diff)
- trunk/A52Preferences/English.lproj/A52CodecPreferences.nib/keyedobjects.nib (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/A52/ACShepA52Decoder.cpp
r39 r40 66 66 else if(type == CFNumberGetTypeID()) 67 67 CFNumberGetValue((CFNumberRef)dynRange, kCFNumberDoubleType, &dynamicRangeCompression); 68 else if(type == CFBooleanGetTypeID())69 {70 if(CFBooleanGetValue((CFBooleanRef)dynRange))71 dynamicRangeCompression = 0.2;72 else73 dynamicRangeCompression = 1;74 }75 68 else 76 69 dynamicRangeCompression = 1; … … 343 336 } 344 337 338 /* 339 * Custom Dynamic range compression 340 * My logic here: 341 * Two cases 342 * 1) The user requested a compression of 1 or less 343 * return the typical power rule 344 * 2) The user requested a compression of more than 1 (decompression) 345 * If the stream's requested compression is less than 1.0 (loud sound), return the normal compression 346 * If the stream's requested compression is more than 1.0 (soft sound), use power rule (which will make it louder in this case). 347 */ 345 348 static sample_t dynrng_call (sample_t c, void *data) 346 349 { 347 350 double *level = (double *)data; 348 return pow((double)c, *level); 351 float levelToUse = (float)*level; 352 if(c > 1.0 || levelToUse <= 1.0) 353 return powf(c, levelToUse); 354 else 355 return c; 349 356 } 350 357 trunk/A52Preferences/A52Preferences.h
r16 r40 5 5 @interface A52Preferences : NSObject 6 6 { 7 IBOutlet NSButton *NSButton_dynamicRange; 8 IBOutlet NSButton *NSButton_stereo; 7 IBOutlet NSTextField *textField_ac3DynamicRangeValue; 8 IBOutlet NSSlider *slider_ac3DynamicRangeSlider; 9 IBOutlet NSButton *button_stereo; 9 10 10 NSUserDefaults *defaults; 11 NSUserDefaults *defaults; 12 float dynValue; 11 13 } 14 15 - (IBAction)setAC3DynamicRangeValue:(id)sender; 16 - (IBAction)setAC3DynamicRangeSlider:(id)sender; 17 12 18 - (IBAction)cancel:(id)sender; 13 19 - (IBAction)save:(id)sender; trunk/A52Preferences/A52Preferences.m
r16 r40 1 1 #import "A52Preferences.h" 2 3 @interface A52Preferences (private) 4 - (void)setAC3DynamicRange:(float)newVal; 5 @end 2 6 3 7 @implementation A52Preferences … … 15 19 - (void)awakeFromNib 16 20 { 17 if([defaults boolForKey:@"dynamicRange"])18 [ NSButton_dynamicRange setIntValue:1];21 if([defaults objectForKey:@"dynamicRange"] != nil) 22 [self setAC3DynamicRange:[defaults floatForKey:@"dynamicRange"]]; 19 23 else 20 [ NSButton_dynamicRange setIntValue:0];24 [self setAC3DynamicRange:1.0]; 21 25 if([defaults boolForKey:@"useStereoOverDolby"]) 22 [ NSButton_stereo setIntValue:1];26 [button_stereo setIntValue:1]; 23 27 else 24 [ NSButton_stereo setIntValue:0];28 [button_stereo setIntValue:0]; 25 29 } 26 30 … … 29 33 [defaults release]; 30 34 [super dealloc]; 35 } 36 37 - (void)setAC3DynamicRange:(float)newVal 38 { 39 if(newVal > 4.0) 40 newVal = 4.0; 41 if(newVal < 0.0) 42 newVal = 0.0; 43 44 dynValue = newVal; 45 [textField_ac3DynamicRangeValue setFloatValue:newVal]; 46 [slider_ac3DynamicRangeSlider setFloatValue:newVal]; 47 } 48 49 - (IBAction)setAC3DynamicRangeValue:(id)sender 50 { 51 float newVal = [textField_ac3DynamicRangeValue floatValue]; 52 53 [self setAC3DynamicRange:newVal]; 54 } 55 56 - (IBAction)setAC3DynamicRangeSlider:(id)sender 57 { 58 float newVal = [slider_ac3DynamicRangeSlider floatValue]; 59 60 [self setAC3DynamicRange:newVal]; 31 61 } 32 62 … … 38 68 - (IBAction)save:(id)sender 39 69 { 40 if([NSButton_dynamicRange intValue] != 0) 41 [defaults setBool:YES forKey:@"dynamicRange"]; 42 else 43 [defaults setBool:NO forKey:@"dynamicRange"]; 44 if([NSButton_stereo intValue] != 0) 70 [defaults setFloat:dynValue forKey:@"dynamicRange"]; 71 if([button_stereo intValue] != 0) 45 72 [defaults setBool:YES forKey:@"useStereoOverDolby"]; 46 73 else trunk/A52Preferences/English.lproj/A52CodecPreferences.nib/classes.nib
r16 r40 2 2 IBClasses = ( 3 3 { 4 ACTIONS = {cancel = id; save = id; }; 4 ACTIONS = { 5 cancel = id; 6 save = id; 7 setAC3DynamicRangeSlider = id; 8 setAC3DynamicRangeValue = id; 9 }; 5 10 CLASS = A52Preferences; 6 11 LANGUAGE = ObjC; 7 OUTLETS = {"NSButton_dynamicRange" = NSButton; "NSButton_stereo" = NSButton; }; 12 OUTLETS = { 13 "button_stereo" = NSButton; 14 "slider_ac3DynamicRangeSlider" = NSSlider; 15 "textField_ac3DynamicRangeValue" = NSTextField; 16 }; 8 17 SUPERCLASS = NSObject; 9 18 }, trunk/A52Preferences/English.lproj/A52CodecPreferences.nib/info.nib
r31 r40 14 14 <key>IBOpenObjects</key> 15 15 <array> 16 <integer>21</integer> 16 17 <integer>29</integer> 17 18 </array> 18 19 <key>IBSystem Version</key> 19 <string>8 L127</string>20 <string>8P135</string> 20 21 </dict> 21 22 </plist>
