summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
Diffstat (limited to 'macosx')
-rw-r--r--macosx/English.lproj/Video.xib21
-rw-r--r--macosx/HBVideoController.m72
2 files changed, 70 insertions, 23 deletions
diff --git a/macosx/English.lproj/Video.xib b/macosx/English.lproj/Video.xib
index 3e8888543..f3f5945ff 100644
--- a/macosx/English.lproj/Video.xib
+++ b/macosx/English.lproj/Video.xib
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="5056" systemVersion="14A329r" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="5056" systemVersion="14A361c" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1060" defaultVersion="1060" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="5056"/>
@@ -10,6 +10,7 @@
<outlet property="fDisplayPresetsAdditonalOptionsLabel" destination="ijg-ux-uvb" id="Zhw-D7-xOs"/>
<outlet property="fDisplayPresetsAdditonalOptionsTextField" destination="oJk-ur-wgc" id="TUr-Lt-UHQ"/>
<outlet property="fDisplayX264PresetsUnparseTextField" destination="wk1-2U-z4i" id="aIk-h1-bOP"/>
+ <outlet property="fDividerLine" destination="g5v-MD-kdo" id="jZS-ae-kGM"/>
<outlet property="fEncoderOptionsLabel" destination="mkM-81-g3d" id="eWq-95-kTO"/>
<outlet property="fFastDecodeCheck" destination="z7F-H2-Vfr" id="usU-aE-DUt"/>
<outlet property="fFramerateCfrCell" destination="ZRE-Ig-mhJ" id="vqQ-Pd-63o"/>
@@ -228,7 +229,7 @@
</cells>
</matrix>
<box autoresizesSubviews="NO" title="x264 Presets" borderType="none" titlePosition="noTitle" id="A4U-3F-pYq">
- <rect key="frame" x="0.0" y="56" width="923" height="134"/>
+ <rect key="frame" x="0.0" y="63" width="923" height="134"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView">
<rect key="frame" x="0.0" y="0.0" width="923" height="134"/>
@@ -263,13 +264,6 @@
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<font key="titleFont" metaFont="system"/>
</box>
- <box verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="NtL-8e-tS7">
- <rect key="frame" x="20" y="198" width="880" height="5"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
- <color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
- <color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- <font key="titleFont" metaFont="system"/>
- </box>
</subviews>
</view>
<customView id="2dX-Hf-Hxl" userLabel="x264/x264 presets view">
@@ -447,7 +441,7 @@ Set this if your device is struggling to play the output (dropped frames).</stri
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="mkM-81-g3d">
- <rect key="frame" x="18" y="120" width="96" height="14"/>
+ <rect key="frame" x="-2" y="120" width="116" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Encoder Options:" id="XIe-8Z-tIF">
<font key="font" metaFont="smallSystem"/>
@@ -455,6 +449,13 @@ Set this if your device is struggling to play the output (dropped frames).</stri
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
+ <box appearanceType="aqua" verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="g5v-MD-kdo">
+ <rect key="frame" x="120" y="124" width="780" height="5"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
+ <color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ <font key="titleFont" metaFont="system"/>
+ </box>
</subviews>
</customView>
<customView id="aRi-vN-oR0" userLabel="ffmpeg presets view">
diff --git a/macosx/HBVideoController.m b/macosx/HBVideoController.m
index 8545eb6c3..ab7c0edfe 100644
--- a/macosx/HBVideoController.m
+++ b/macosx/HBVideoController.m
@@ -55,6 +55,7 @@ NSString *HBVideoEncoderChangedNotification = @"HBVideoEncoderChangedNotificatio
NSArray * fPresetNames;
NSUInteger fMediumPresetIndex;
IBOutlet NSButton * fX264UseAdvancedOptionsCheck;
+ IBOutlet NSBox * fDividerLine;
IBOutlet NSBox * fPresetsBox;
IBOutlet NSSlider * fPresetsSlider;
IBOutlet NSTextField * fPresetSliderLabel;
@@ -127,6 +128,12 @@ NSString *HBVideoEncoderChangedNotification = @"HBVideoEncoderChangedNotificatio
/* register that we are interested in changes made to the video container */
[center addObserver:self selector: @selector(containerChanged:) name:HBContainerChangedNotification object:nil];
[center addObserver:self selector: @selector(titleChanged:) name:HBTitleChangedNotification object:nil];
+
+ // Observe the andvanced tab preference.
+ [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self
+ forKeyPath:@"values.HBShowAdvancedTab"
+ options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial
+ context:NULL];
}
return self;
@@ -277,6 +284,37 @@ NSString *HBVideoEncoderChangedNotification = @"HBVideoEncoderChangedNotificatio
[fVidRatePopUp selectItemAtIndex: 0];
}
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+ if (context == NULL)
+ {
+ if ([keyPath isEqualToString:@"values.HBShowAdvancedTab"])
+ {
+ [self validateAdvancedOptionsCheckBoxForEncoder:self.codec];
+ }
+ }
+ else
+ {
+ [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
+ }
+}
+
+- (void)validateAdvancedOptionsCheckBoxForEncoder:(int)encoder
+{
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HBShowAdvancedTab"] && (encoder == HB_VCODEC_X264))
+ {
+ [fX264UseAdvancedOptionsCheck setHidden:NO];
+ [fDividerLine setHidden:YES];
+ [fEncoderOptionsLabel setStringValue:NSLocalizedString(@"Encoder Options:", @"")];
+ }
+ else
+ {
+ [fX264UseAdvancedOptionsCheck setHidden:YES];
+ [fDividerLine setHidden:NO];
+ [fEncoderOptionsLabel setStringValue:NSLocalizedString(@"Encoder Options", @"")];
+ }
+}
+
#pragma mark - apply settings
- (void)applyVideoSettingsFromQueue:(NSDictionary *)queueToApply
@@ -409,26 +447,37 @@ NSString *HBVideoEncoderChangedNotification = @"HBVideoEncoderChangedNotificatio
}
else
{
- [self.fAdvancedOptions setOptions: @""];
- [self setOptionExtra:nil];
+ [self.fAdvancedOptions setOptions:@""];
+ [self setOptionExtra:nil];
}
/* preset does not use the x264 preset system, reset the widgets */
[self setPreset: nil];
[self setTune: nil];
[self setProfile:nil];
[self setLevel: nil];
+
/* we enable the advanced panel and update the widgets */
- [fX264UseAdvancedOptionsCheck setState:NSOnState];
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HBShowAdvancedTab"])
+ {
+ [fX264UseAdvancedOptionsCheck setState:NSOnState];
+ }
+ else
+ {
+ [fX264UseAdvancedOptionsCheck setState:NSOffState];
+ }
[self updateEncoderOptionsWidgets:nil];
}
else
{
- /*
- * x264UseAdvancedOptions is set to 0 (disabled),
- * so we use the x264 preset system
- */
+ // x264UseAdvancedOptions is set to 0 (disabled),
+ // so we use the new preset system and
+ // disable the advanced panel
+ [self.fAdvancedOptions setOptions:@""];
+ [fX264UseAdvancedOptionsCheck setState:NSOffState];
+
if (preset[@"x264Preset"])
{
+ // Read the old x264 preset keys
[self setPreset: preset[@"x264Preset"]];
[self setTune: preset[@"x264Tune"]];
[self setOptionExtra:preset[@"x264OptionExtra"]];
@@ -437,16 +486,14 @@ NSString *HBVideoEncoderChangedNotification = @"HBVideoEncoderChangedNotificatio
}
else
{
+ // Read the new preset keys (0.10)
[self setPreset: preset[@"VideoPreset"]];
[self setTune: preset[@"VideoTune"]];
[self setOptionExtra:preset[@"VideoOptionExtra"]];
[self setProfile: preset[@"VideoProfile"]];
[self setLevel: preset[@"VideoLevel"]];
}
- /* preset does not use the advanced panel, reset it */
- [self.fAdvancedOptions setOptions:@""];
- /* we disable the advanced panel and update the widgets */
- [fX264UseAdvancedOptionsCheck setState:NSOffState];
+
[self updateEncoderOptionsWidgets:nil];
}
}
@@ -1016,15 +1063,14 @@ NSString *HBVideoEncoderChangedNotification = @"HBVideoEncoderChangedNotificatio
- (void) setupPresetsWidgetsForEncoder:(int)encoder
{
+ [self validateAdvancedOptionsCheckBoxForEncoder:(int)encoder];
if (encoder == HB_VCODEC_X264)
{
- [fX264UseAdvancedOptionsCheck setHidden:NO];
[fFastDecodeCheck setHidden:NO];
}
else
{
- [fX264UseAdvancedOptionsCheck setHidden:YES];
[fFastDecodeCheck setHidden:YES];
}