OSDN Git Service

Updated the Mac GUI to use the new audio mixdowns. This means that the Mac GUI now...
authormaurj <maurj@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 12 Apr 2007 11:42:51 +0000 (11:42 +0000)
committermaurj <maurj@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 12 Apr 2007 11:42:51 +0000 (11:42 +0000)
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://localhost/HandBrake/trunk@497 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/common.c
libhb/common.h
libhb/scan.c
macosx/Controller.h
macosx/Controller.mm
macosx/English.lproj/MainMenu.nib/classes.nib
macosx/English.lproj/MainMenu.nib/info.nib
macosx/English.lproj/MainMenu.nib/keyedobjects.nib
macosx/HandBrake.xcodeproj/project.pbxproj

index d0dcef8..e7bc6db 100644 (file)
@@ -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 );
 
index 4934063..3ed8f77 100644 (file)
@@ -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 */
index 9e9f954..4f28bac 100644 (file)
@@ -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 ),
index 572bf38..8537718 100644 (file)
     /* 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;
 - (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
index 33df688..0cbc20f 100644 (file)
@@ -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*/
index cc90ca3..74266e5 100644 (file)
@@ -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; 
                 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; 
index 54edced..65baf20 100644 (file)
@@ -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>
        </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>
index 020401b..0eb8c26 100644 (file)
Binary files a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib and b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib differ
index a4d0f7c..8f9ec82 100644 (file)
                                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 = "";
                                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 = "";
                                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 = "";
                                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 = "";