diff options
author | maurj <[email protected]> | 2007-04-12 11:42:51 +0000 |
---|---|---|
committer | maurj <[email protected]> | 2007-04-12 11:42:51 +0000 |
commit | aa88ab8a4f716f88c8c584cd1b98fa76e2bae80b (patch) | |
tree | 5da98c0dfda6a8700bd68773d22d41a2132d2c60 | |
parent | 51eec61731b2b4b62ac73b94f35cbd3b4d6a758c (diff) |
Updated the Mac GUI to use the new audio mixdowns. This means that the Mac GUI now supports Dolby PRo Logic 2 mixdowns!
The Audio tab now has two mixdown NSPopUpButtons, which are set to display all of the possible mixdowns for the current input audio codec / output audio codec / input audio channel configuration.
A mixdown of HB_AMIXDOWN_DOLBYPLII is used by default (or the next best mixdown if this isn't possible). Ideally this will become a prefs option to specify your choice of default audio mixdown.
For AC3 passthru, a single mixdown of "AC3 Passthru" is displayed.
I've had to update the Xcode project file, to make the Handbrake target look for headers in the "../contrib/include" folder too. This is so that it can find the a52 headers which are now used by Controller.mm.
I've added an ac3flags property to hb_audio_s, to enable us to access the source ac3 flags outside of libhb. This is set in scan.c for each source audio.
I've updated hb_mixdown_s and the hb_audio_mixdowns[] to include the CLI "short name" version of the mixdowns too, ready for the Mac GUI "default mixdown" prefs saving / loading.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@497 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | libhb/common.c | 10 | ||||
-rw-r--r-- | libhb/common.h | 4 | ||||
-rw-r--r-- | libhb/scan.c | 5 | ||||
-rw-r--r-- | macosx/Controller.h | 13 | ||||
-rw-r--r-- | macosx/Controller.mm | 288 | ||||
-rw-r--r-- | macosx/English.lproj/MainMenu.nib/classes.nib | 7 | ||||
-rw-r--r-- | macosx/English.lproj/MainMenu.nib/info.nib | 8 | ||||
-rw-r--r-- | macosx/English.lproj/MainMenu.nib/keyedobjects.nib | bin | 100412 -> 101975 bytes | |||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 20 |
9 files changed, 249 insertions, 106 deletions
diff --git a/libhb/common.c b/libhb/common.c index d0dcef877..e7bc6dbb8 100644 --- a/libhb/common.c +++ b/libhb/common.c @@ -37,11 +37,11 @@ int hb_audio_bitrates_count = sizeof( hb_audio_bitrates ) / int hb_audio_bitrates_default = 8; /* 128 kbps */ hb_mixdown_t hb_audio_mixdowns[] = -{ { "Mono", "HB_AMIXDOWN_MONO", HB_AMIXDOWN_MONO }, - { "Stereo", "HB_AMIXDOWN_STEREO", HB_AMIXDOWN_STEREO }, - { "Dolby Surround", "HB_AMIXDOWN_DOLBY", HB_AMIXDOWN_DOLBY }, - { "Dolby Pro Logic II", "HB_AMIXDOWN_DOLBYPLII", HB_AMIXDOWN_DOLBYPLII }, - { "6-channel discrete", "HB_AMIXDOWN_6CH", HB_AMIXDOWN_6CH } }; +{ { "Mono", "HB_AMIXDOWN_MONO", "mono", HB_AMIXDOWN_MONO }, + { "Stereo", "HB_AMIXDOWN_STEREO", "stereo", HB_AMIXDOWN_STEREO }, + { "Dolby Surround", "HB_AMIXDOWN_DOLBY", "dpl1", HB_AMIXDOWN_DOLBY }, + { "Dolby Pro Logic II", "HB_AMIXDOWN_DOLBYPLII", "dpl2", HB_AMIXDOWN_DOLBYPLII }, + { "6-channel discrete", "HB_AMIXDOWN_6CH", "6ch", HB_AMIXDOWN_6CH } }; int hb_audio_mixdowns_count = sizeof( hb_audio_mixdowns ) / sizeof( hb_mixdown_t ); diff --git a/libhb/common.h b/libhb/common.h index 4934063e5..3ed8f7791 100644 --- a/libhb/common.h +++ b/libhb/common.h @@ -75,6 +75,7 @@ struct hb_mixdown_s { char * human_readable_name; char * internal_name; + char * short_name; int amixdown; }; @@ -271,6 +272,9 @@ struct hb_audio_s int src_discrete_lfe_channels; int src_encoded_front_channels; int src_encoded_rear_channels; + + /* ac3flags is only set when the source audio format is HB_ACODEC_AC3 */ + int ac3flags; #ifdef __LIBHB__ /* Internal data */ diff --git a/libhb/scan.c b/libhb/scan.c index 9e9f9542a..4f28bac6d 100644 --- a/libhb/scan.c +++ b/libhb/scan.c @@ -524,10 +524,13 @@ static void LookForAC3( hb_title_t * title, hb_buffer_t * b ) audio->src_discrete_lfe_channels = 0; } - /* store the AC3 FLAGS for future reference + /* store the AC3 flags for future reference This enables us to find out if we had a stereo or Dolby source later on */ audio->config.a52.ac3flags = flags; + /* store the ac3 flags in the public ac3flags property too, so we can access it from the GUI */ + audio->ac3flags = audio->config.a52.ac3flags; + /* XXX */ if ( (flags & A52_CHANNEL_MASK) == A52_DOLBY ) { sprintf( audio->lang + strlen( audio->lang ), diff --git a/macosx/Controller.h b/macosx/Controller.h index 572bf3806..8537718de 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -106,10 +106,15 @@ /* Audio box */ IBOutlet NSTextField * fAudLang1Field; IBOutlet NSPopUpButton * fAudLang1PopUp; - IBOutlet NSButton * fAudLang1SurroundCheck; IBOutlet NSTextField * fAudLang2Field; IBOutlet NSPopUpButton * fAudLang2PopUp; - IBOutlet NSTextField * fAudRateField; + /* New Audio Mix PopUps */ + IBOutlet NSTextField * fAudTrack1MixLabel; + IBOutlet NSPopUpButton * fAudTrack1MixPopUp; + IBOutlet NSTextField * fAudTrack2MixLabel; + IBOutlet NSPopUpButton * fAudTrack2MixPopUp; + + IBOutlet NSTextField * fAudRateField; IBOutlet NSPopUpButton * fAudRatePopUp; IBOutlet NSTextField * fAudBitrateField; IBOutlet NSPopUpButton * fAudBitratePopUp; @@ -163,8 +168,8 @@ - (IBAction) FormatPopUpChanged: (id) sender; - (IBAction) CodecsPopUpChanged: (id) sender; - (IBAction) EncoderPopUpChanged: (id) sender; -- (IBAction) Check6ChannelAACExtraction: (id) sender; -- (IBAction) LanguagePopUpChanged: (id) sender; +- (IBAction) SetEnabledStateOfAudioMixdownControls: (id) sender; +- (IBAction) AudioTrackPopUpChanged: (id) sender; - (IBAction) BrowseFile: (id) sender; - (void) BrowseFileDone: (NSSavePanel *) sheet diff --git a/macosx/Controller.mm b/macosx/Controller.mm index 33df688b4..0cbc20f3d 100644 --- a/macosx/Controller.mm +++ b/macosx/Controller.mm @@ -5,6 +5,7 @@ It may be used under the terms of the GNU General Public License. */ #include "Controller.h" +#include "a52dec/a52.h" #define _(a) NSLocalizedString(a,NULL) @@ -577,6 +578,7 @@ static int FormatSettings[3][4] = fVidEncoderField, fVidEncoderPopUp, fVidQualityField, fVidQualityMatrix, fVidGrayscaleCheck, fSubField, fSubPopUp, fAudLang1Field, fAudLang1PopUp, fAudLang2Field, fAudLang2PopUp, + fAudTrack1MixLabel, fAudTrack1MixPopUp, fAudTrack2MixLabel, fAudTrack2MixPopUp, fAudRateField, fAudRatePopUp, fAudBitrateField, fAudBitratePopUp, fPictureButton, fQueueCheck, fPicSrcWidth,fPicSrcHeight,fPicSettingWidth,fPicSettingHeight, @@ -605,12 +607,13 @@ static int FormatSettings[3][4] = } if (b) { - /* if we're enabling the interface, check if we should / should't offer 6-channel AAC extraction */ - [self Check6ChannelAACExtraction: NULL]; + + /* if we're enabling the interface, check if the audio mixdown controls need to be enabled or not */ + /* these will have been enabled by the mass control enablement above anyway, so we're sense-checking it here */ + [self SetEnabledStateOfAudioMixdownControls: NULL]; } else { - /* if we're disabling the interface, turn it off */ - [fAudLang1SurroundCheck setEnabled: NO]; + [tableView setEnabled: NO]; } @@ -850,12 +853,17 @@ static int FormatSettings[3][4] = indexOfSelectedItem]].rate; job->abitrate = hb_audio_bitrates[[fAudBitratePopUp indexOfSelectedItem]].rate; - /* have we selected that 5.1 should be extracted as AAC? */ - if (job->acodec == HB_ACODEC_FAAC && [fAudLang1SurroundCheck isEnabled] && [fAudLang1SurroundCheck state] == NSOnState) { - job->surround = 1; - } else { - job->surround = 0; - } + + /* Audio mixdown(s) */ + if (job->audios[0] > -1) + { + job->audio_mixdowns[0] = [[fAudTrack1MixPopUp selectedItem] tag]; + } + + if (job->audios[1] > -1) + { + job->audio_mixdowns[1] = [[fAudTrack2MixPopUp selectedItem] tag]; + } } @@ -1160,11 +1168,10 @@ static int FormatSettings[3][4] = /* END pri */ - /* changing the title may have changed the audio channels on offer, so */ - /* check if this change means we should / should't offer 6-channel AAC extraction */ - [self Check6ChannelAACExtraction: sender]; - - + /* changing the title may have changed the audio channels on offer, */ + /* so call AudioTrackPopUpChanged for both audio tracks to update the mixdown popups */ + [self AudioTrackPopUpChanged: fAudLang1PopUp]; + [self AudioTrackPopUpChanged: fAudLang2PopUp]; } @@ -1260,9 +1267,11 @@ static int FormatSettings[3][4] = @"%@.%s", string, ext]]; } - /* changing the codecs on offer may mean that we are/aren't now offering AAC, so */ - /* check if this change means we should / should't offer 6-channel AAC extraction */ - [self Check6ChannelAACExtraction: sender]; + /* 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 */ + [self AudioTrackPopUpChanged: fAudLang1PopUp]; + [self AudioTrackPopUpChanged: fAudLang2PopUp]; + /* We call method method to change UI to reflect whether a preset is used or not*/ [self CustomSettingUsed: sender]; @@ -1304,8 +1313,10 @@ static int FormatSettings[3][4] = [fAudBitratePopUp setEnabled: YES]; } - /* check if this change means we should / should't offer 6-channel AAC extraction */ - [self Check6ChannelAACExtraction: sender]; + /* changing the codecs on offer may mean that we can / can't offer mono or 6ch, */ + /* so call AudioTrackPopUpChanged for both audio tracks to update the mixdown popups */ + [self AudioTrackPopUpChanged: fAudLang1PopUp]; + [self AudioTrackPopUpChanged: fAudLang2PopUp]; [self CalculateBitrate: sender]; /* We call method method to change UI to reflect whether a preset is used or not*/ @@ -1334,7 +1345,7 @@ static int FormatSettings[3][4] = } /* uncheck the "export 5.1 as 6-channel AAC" checkbox if it is checked */ - [fAudLang1SurroundCheck setState: NSOffState]; +// [fAudLang1SurroundCheck setState: NSOffState]; } @@ -1343,80 +1354,187 @@ static int FormatSettings[3][4] = [self CustomSettingUsed: sender]; } -- (IBAction) Check6ChannelAACExtraction: (id) sender +- (IBAction) SetEnabledStateOfAudioMixdownControls: (id) sender { - /* make sure we have a selected title before continuing */ - if (fTitle == NULL) return; + /* enable/disable the mixdown text and popupbutton for audio track 1 */ + [fAudTrack1MixPopUp setEnabled: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? NO : YES]; + [fAudTrack1MixLabel setTextColor: ([fAudLang1PopUp indexOfSelectedItem] == 0) ? + [NSColor disabledControlTextColor] : [NSColor controlTextColor]]; - /* get the current title's job into a convenience variable */ - hb_job_t * job = fTitle->job; - - /* get the current audio tracks */ - /* this is done in PrepareJob too, but we want them here to check against below */ - job->audios[0] = [fAudLang1PopUp indexOfSelectedItem] - 1; - job->audios[1] = [fAudLang2PopUp indexOfSelectedItem] - 1; - job->audios[2] = -1; + /* enable/disable the mixdown text and popupbutton for audio track 2 */ + [fAudTrack2MixPopUp setEnabled: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? NO : YES]; + [fAudTrack2MixLabel setTextColor: ([fAudLang2PopUp indexOfSelectedItem] == 0) ? + [NSColor disabledControlTextColor] : [NSColor controlTextColor]]; - /* now, let's check if any selected audio track has 5.1 sound */ - hb_audio_t * audio; - bool foundfiveoneaudio = false; +} - /* find out what the currently-selected audio codec is */ +- (IBAction) AudioTrackPopUpChanged: (id) sender +{ + + /* make sure we have a selected title before continuing */ + if (fTitle == NULL) return; + + /* find out if audio track 1 or 2 was changed - this is passed to us in the tag of the sender */ + /* the sender will have been either fAudLang1PopUp (tag = 0) or fAudLang2PopUp (tag = 1) */ + int thisAudio = [sender tag]; + + /* get the index of the selected audio */ + int thisAudioIndex = [sender indexOfSelectedItem] - 1;; + + /* pointer for the hb_audio_s struct we will use later on */ + hb_audio_t * audio; + + /* find out what the currently-selected output audio codec is */ int format = [fDstFormatPopUp indexOfSelectedItem]; int codecs = [fDstCodecsPopUp indexOfSelectedItem]; - int acodec = FormatSettings[format][codecs] & HB_ACODEC_MASK; + int acodec = FormatSettings[format][codecs] & HB_ACODEC_MASK; - /* we only offer the option to extract 5.1 to 6-channel if the selected audio codec is AAC*/ - if (acodec == HB_ACODEC_FAAC) { + /* pointer to this track's mixdown NSPopUpButton */ + NSTextField * mixdownTextField; + NSPopUpButton * mixdownPopUp; - bool doneaudios = false; - int thisaudio = 0; - - while (!doneaudios) { - - if (job->audios[thisaudio] == -1) { - doneaudios = true; - } else { - audio = (hb_audio_t *) hb_list_item( fTitle->list_audio, job->audios[thisaudio] ); - if (audio != NULL) { - if (audio->src_discrete_front_channels == 3 && audio->src_discrete_rear_channels == 3 && audio->src_discrete_lfe_channels == 1) { - foundfiveoneaudio = true; - doneaudios = true; /* as it doesn't matter if we find any more! */ - } - } - } + /* find our mixdown NSTextField and NSPopUpButton */ + if (thisAudio == 0) + { + mixdownTextField = fAudTrack1MixLabel; + mixdownPopUp = fAudTrack1MixPopUp; + } + else + { + mixdownTextField = fAudTrack2MixLabel; + mixdownPopUp = fAudTrack2MixPopUp; + } - thisaudio++; - } - } + /* delete the previous audio mixdown options */ + [mixdownPopUp removeAllItems]; - /* If we are extracting to AAC, and any of our soundtracks were 5.1, then enable the checkbox */ - if (foundfiveoneaudio) { - [fAudLang1SurroundCheck setEnabled: YES]; - /* Check default surround sound pref and if it is YES, lets also check the checkbox */ - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"DefaultSurroundSound"] > 0) - { - [fAudLang1SurroundCheck setState: NSOnState]; - } - } else { - [fAudLang1SurroundCheck setEnabled: NO]; - /* as well as disabling the checkbox, let's uncheck it if it is checked */ - [fAudLang1SurroundCheck setState: NSOffState]; - - } + /* check if the audio mixdown controls need their enabled state changing */ + [self SetEnabledStateOfAudioMixdownControls: NULL]; -} + if (thisAudioIndex != -1) + { + + /* get the audio */ + audio = (hb_audio_t *) hb_list_item( fTitle->list_audio, thisAudioIndex ); + if (audio != NULL) + { + int audioCodecsSupportMono = (audio->codec == HB_ACODEC_AC3 && acodec == HB_ACODEC_FAAC); + int audioCodecsSupport6Ch = (audio->codec == HB_ACODEC_AC3 && acodec == HB_ACODEC_FAAC); -- (IBAction) LanguagePopUpChanged: (id) sender -{ - - /* selecting a different language may mean we have a different number of channels, so */ - /* check if this change means we should / should't offer 6-channel AAC extraction */ - [self Check6ChannelAACExtraction: sender]; - - /* see if the new language setting will change the bitrate we need */ + /* check for AC-3 passthru */ + if (audio->codec == HB_ACODEC_AC3 && acodec == HB_ACODEC_AC3) + { + [[mixdownPopUp menu] addItemWithTitle: + [NSString stringWithCString: "AC3 Passthru"] + action: NULL keyEquivalent: @""]; + } + else + { + + /* find out if our selected output audio codec supports mono and / or 6ch */ + /* we also check for an input codec of AC3, + as it is the only library able to do the mixdown to mono / conversion to 6-ch */ + /* audioCodecsSupportMono and audioCodecsSupport6Ch are the same for now, + but this may change in the future, so they are separated for flexibility */ + + /* find out the audio channel layout for our input audio */ + /* we'll cheat and use the liba52 layouts, even if the source isn't AC3 */ + int channel_layout; + int audio_has_lfe; + if (audio->codec == HB_ACODEC_AC3) + { + channel_layout = (audio->ac3flags & A52_CHANNEL_MASK); + audio_has_lfe = (audio->ac3flags & A52_LFE); + } + else + { + /* assume a stereo input for all other input codecs */ + channel_layout = A52_STEREO; + audio_has_lfe = 0; + } + + /* add the appropriate audio mixdown menuitems to the popupbutton */ + /* in each case, we set the new menuitem's tag to be the amixdown value for that mixdown, + so that we can reference the mixdown later */ + + /* keep a track of the min and max mixdowns we used, so we can select the best match later */ + int minMixdownUsed = 0; + int maxMixdownUsed = 0; + + /* do we want to add a mono option? */ + if (audioCodecsSupportMono == 1) { + id<NSMenuItem> menuItem = [[mixdownPopUp menu] addItemWithTitle: + [NSString stringWithCString: hb_audio_mixdowns[0].human_readable_name] + action: NULL keyEquivalent: @""]; + [menuItem setTag: hb_audio_mixdowns[0].amixdown]; + if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[0].amixdown; + maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[0].amixdown); + } + + /* do we want to add a stereo option? */ + if (channel_layout >= A52_STEREO && channel_layout != A52_CHANNEL1 && channel_layout != A52_CHANNEL2) { + id<NSMenuItem> menuItem = [[mixdownPopUp menu] addItemWithTitle: + [NSString stringWithCString: hb_audio_mixdowns[1].human_readable_name] + action: NULL keyEquivalent: @""]; + [menuItem setTag: hb_audio_mixdowns[1].amixdown]; + if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[1].amixdown; + maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[1].amixdown); + } + + /* do we want to add a dolby surround (DPL1) option? */ + if (channel_layout == A52_3F1R || channel_layout == A52_3F2R || channel_layout == A52_DOLBY) { + id<NSMenuItem> menuItem = [[mixdownPopUp menu] addItemWithTitle: + [NSString stringWithCString: hb_audio_mixdowns[2].human_readable_name] + action: NULL keyEquivalent: @""]; + [menuItem setTag: hb_audio_mixdowns[2].amixdown]; + if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[2].amixdown; + maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[2].amixdown); + } + + /* do we want to add a dolby pro logic 2 (DPL2) option? */ + if (channel_layout == A52_3F2R) { + id<NSMenuItem> menuItem = [[mixdownPopUp menu] addItemWithTitle: + [NSString stringWithCString: hb_audio_mixdowns[3].human_readable_name] + action: NULL keyEquivalent: @""]; + [menuItem setTag: hb_audio_mixdowns[3].amixdown]; + if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[3].amixdown; + maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[3].amixdown); + } + + /* do we want to add a 6-channel discrete option? */ + if (audioCodecsSupport6Ch == 1 && channel_layout == A52_3F2R && audio_has_lfe == A52_LFE) { + id<NSMenuItem> menuItem = [[mixdownPopUp menu] addItemWithTitle: + [NSString stringWithCString: hb_audio_mixdowns[4].human_readable_name] + action: NULL keyEquivalent: @""]; + [menuItem setTag: hb_audio_mixdowns[4].amixdown]; + if (minMixdownUsed == 0) minMixdownUsed = hb_audio_mixdowns[4].amixdown; + maxMixdownUsed = MAX(maxMixdownUsed, hb_audio_mixdowns[4].amixdown); + } + + /* auto-select the best mixdown based on our saved mixdown preference */ + + /* for now, this is hard-coded to a "best" mixdown of HB_AMIXDOWN_DOLBYPLII */ + /* ultimately this should be a prefs option */ + int prefsMixdown = HB_AMIXDOWN_DOLBYPLII; + + /* if prefsMixdown > maxMixdownUsed, then use maxMixdownUsed */ + if (prefsMixdown > maxMixdownUsed) prefsMixdown = maxMixdownUsed; + + /* if prefsMixdown < minMixdownUsed, then use minMixdownUsed */ + if (prefsMixdown < minMixdownUsed) prefsMixdown = minMixdownUsed; + + /* select the (possibly-amended) preferred mixdown */ + [mixdownPopUp selectItemWithTag: prefsMixdown]; + + } + + } + + } + + /* see if the new audio track choice will change the bitrate we need */ [self CalculateBitrate: sender]; } @@ -1715,7 +1833,7 @@ the user is using "Custom" settings by determining the sender*/ /* Audio Language One*/ [preset setObject:[fAudLang1PopUp titleOfSelectedItem] forKey:@"AudioLang1"]; /* Audio Language One Surround Sound Checkbox*/ - [preset setObject:[NSNumber numberWithInt:[fAudLang1SurroundCheck state]] forKey:@"AudioLang1Surround"]; +// [preset setObject:[NSNumber numberWithInt:[fAudLang1SurroundCheck state]] forKey:@"AudioLang1Surround"]; /* Audio Sample Rate*/ [preset setObject:[fAudRatePopUp titleOfSelectedItem] forKey:@"AudioSampleRate"]; /* Audio Bitrate Rate*/ @@ -2002,7 +2120,7 @@ the user is using "Custom" settings by determining the sender*/ [fDisplayX264Options setStringValue: [NSString stringWithFormat:[chosenPreset valueForKey:@"x264Option"]]]; /* Lets run through the following functions to get variables set there */ [self EncoderPopUpChanged: NULL]; - [self Check6ChannelAACExtraction: NULL]; + [self AudioTrackPopUpChanged: NULL]; [self CalculateBitrate: NULL]; /* Video quality */ @@ -2028,8 +2146,8 @@ the user is using "Custom" settings by determining the sender*/ /* Audio Language One*/ [fAudLang1PopUp selectItemWithTitle: [NSString stringWithFormat:[chosenPreset valueForKey:@"AudioLang1"]]]; /* Audio Language One Surround Sound Checkbox*/ - [fAudLang1SurroundCheck setState:[[chosenPreset objectForKey:@"AudioLang1Surround"] intValue]]; - [self Check6ChannelAACExtraction: NULL]; +// [fAudLang1SurroundCheck setState:[[chosenPreset objectForKey:@"AudioLang1Surround"] intValue]]; + [self AudioTrackPopUpChanged: NULL]; /* Audio Sample Rate*/ [fAudRatePopUp selectItemWithTitle: [NSString stringWithFormat:[chosenPreset valueForKey:@"AudioSampleRate"]]]; /* Audio Bitrate Rate*/ diff --git a/macosx/English.lproj/MainMenu.nib/classes.nib b/macosx/English.lproj/MainMenu.nib/classes.nib index cc90ca301..74266e5de 100644 --- a/macosx/English.lproj/MainMenu.nib/classes.nib +++ b/macosx/English.lproj/MainMenu.nib/classes.nib @@ -6,6 +6,7 @@ AddPreset = id; AddToQueue = id; AddUserPreset = id; + AudioTrackPopUpChanged = id; BrowseFile = id; CalculateBitrate = id; Cancel = id; @@ -19,7 +20,6 @@ EncoderPopUpChanged = id; FormatPopUpChanged = id; InsertPreset = id; - LanguagePopUpChanged = id; OpenForums = id; OpenHomepage = id; Pause = id; @@ -42,11 +42,14 @@ fAudBitratePopUp = NSPopUpButton; fAudLang1Field = NSTextField; fAudLang1PopUp = NSPopUpButton; - fAudLang1SurroundCheck = NSButton; fAudLang2Field = NSTextField; fAudLang2PopUp = NSPopUpButton; fAudRateField = NSTextField; fAudRatePopUp = NSPopUpButton; + fAudTrack1MixLabel = NSTextField; + fAudTrack1MixPopUp = NSPopUpButton; + fAudTrack2MixLabel = NSTextField; + fAudTrack2MixPopUp = NSPopUpButton; fCreateChapterMarkers = NSButton; fDisplayX264Options = NSTextField; fDstBrowseButton = NSButton; diff --git a/macosx/English.lproj/MainMenu.nib/info.nib b/macosx/English.lproj/MainMenu.nib/info.nib index 54edcedb3..65baf2026 100644 --- a/macosx/English.lproj/MainMenu.nib/info.nib +++ b/macosx/English.lproj/MainMenu.nib/info.nib @@ -3,13 +3,13 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>21 277 630 601 0 0 1440 878 </string> + <string>39 277 630 601 0 0 1440 878 </string> <key>IBEditorPositions</key> <dict> <key>1843</key> <string>610 276 220 592 0 0 1440 878 </string> <key>29</key> - <string>11 834 365 44 0 0 1440 878 </string> + <string>16 1134 365 44 0 0 1920 1178 </string> </dict> <key>IBFramework Version</key> <string>446.1</string> @@ -19,10 +19,8 @@ </array> <key>IBOpenObjects</key> <array> - <integer>29</integer> - <integer>1162</integer> - <integer>1438</integer> <integer>21</integer> + <integer>29</integer> </array> <key>IBSystem Version</key> <string>8P2137</string> diff --git a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib Binary files differindex 020401bd8..0eb8c26cb 100644 --- a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib +++ b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index a4d0f7cbe..8f9ec826b 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -948,7 +948,10 @@ FRAMEWORK_SEARCH_PATHS = ""; GCC_OPTIMIZATION_LEVEL = s; GCC_TREAT_WARNINGS_AS_ERRORS = NO; - HEADER_SEARCH_PATHS = ../libhb; + HEADER_SEARCH_PATHS = ( + ../libhb, + ../contrib/include, + ); INFOPLIST_FILE = HandBrake.plist; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = ""; @@ -1428,7 +1431,10 @@ GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = s; GCC_TREAT_WARNINGS_AS_ERRORS = NO; - HEADER_SEARCH_PATHS = ../libhb; + HEADER_SEARCH_PATHS = ( + ../libhb, + ../contrib/include, + ); INFOPLIST_FILE = HandBrake.plist; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = ""; @@ -1473,7 +1479,10 @@ GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_TREAT_WARNINGS_AS_ERRORS = NO; - HEADER_SEARCH_PATHS = ../libhb; + HEADER_SEARCH_PATHS = ( + ../libhb, + ../contrib/include, + ); INFOPLIST_FILE = HandBrake.plist; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = ""; @@ -1516,7 +1525,10 @@ FRAMEWORK_SEARCH_PATHS = ""; GCC_OPTIMIZATION_LEVEL = s; GCC_TREAT_WARNINGS_AS_ERRORS = NO; - HEADER_SEARCH_PATHS = ../libhb; + HEADER_SEARCH_PATHS = ( + ../libhb, + ../contrib/include, + ); INFOPLIST_FILE = HandBrake.plist; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = ""; |