+ if ([chosenPreset objectForKey:@"FileCodecs"])
+ {
+ /* We need to handle the audio codec popup by determining what was chosen from the deprecated Codecs PopUp for past presets*/
+ if ([[chosenPreset objectForKey:@"FileCodecs"] isEqualToString: @"AVC/H.264 Video / AAC + AC3 Audio"])
+ {
+ /* We need to address setting languages etc. here in the new multi track audio panel */
+ /* Track One set here */
+ /*for track one though a track should be selected but lets check here anyway and use track one if its not.*/
+ if ([fAudLang1PopUp indexOfSelectedItem] == 0)
+ {
+ [fAudLang1PopUp selectItemAtIndex: 1];
+ [self audioTrackPopUpChanged: fAudLang1PopUp];
+ }
+ [fAudTrack1CodecPopUp selectItemWithTitle: @"AAC (faac)"];
+ [self audioTrackPopUpChanged: fAudTrack1CodecPopUp];
+ /* Track Two, set source same as track one */
+ [fAudLang2PopUp selectItemAtIndex: [fAudLang1PopUp indexOfSelectedItem]];
+ [self audioTrackPopUpChanged: fAudLang2PopUp];
+ [fAudTrack2CodecPopUp selectItemWithTitle: @"AC3 Passthru"];
+ [self audioTrackPopUpChanged: fAudTrack2CodecPopUp];
+ }
+ else if ([[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"MPEG-4 Video / AAC Audio"] ||
+ [[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"AVC/H.264 Video / AAC Audio"])
+ {
+ if ([fAudLang1PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack1CodecPopUp selectItemWithTitle: @"AAC (faac)"];
+ [self audioTrackPopUpChanged: fAudTrack1CodecPopUp];
+ }
+ if ([fAudLang2PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack2CodecPopUp selectItemWithTitle: @"AAC (faac)"];
+ [self audioTrackPopUpChanged: fAudTrack2CodecPopUp];
+ }
+ if ([fAudLang3PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack3CodecPopUp selectItemWithTitle: @"AAC (faac)"];
+ [self audioTrackPopUpChanged: fAudTrack3CodecPopUp];
+ }
+ if ([fAudLang4PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack4CodecPopUp selectItemWithTitle: @"AAC (faac)"];
+ [self audioTrackPopUpChanged: fAudTrack4CodecPopUp];
+ }
+ }
+ else if ([[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"MPEG-4 Video / AC-3 Audio"] ||
+ [[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"AVC/H.264 Video / AC-3 Audio"])
+ {
+ if ([fAudLang1PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack1CodecPopUp selectItemWithTitle: @"AC3 Passthru"];
+ [self audioTrackPopUpChanged: fAudTrack1CodecPopUp];
+ }
+ if ([fAudLang2PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack2CodecPopUp selectItemWithTitle: @"AC3 Passthru"];
+ [self audioTrackPopUpChanged: fAudTrack2CodecPopUp];
+ }
+ if ([fAudLang3PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack3CodecPopUp selectItemWithTitle: @"AC3 Passthru"];
+ [self audioTrackPopUpChanged: fAudTrack3CodecPopUp];
+ }
+ if ([fAudLang4PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack4CodecPopUp selectItemWithTitle: @"AC3 Passthru"];
+ [self audioTrackPopUpChanged: fAudTrack4CodecPopUp];
+ }
+ }
+ else if ([[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"MPEG-4 Video / MP3 Audio"] ||
+ [[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"AVC/H.264 Video / MP3 Audio"])
+ {
+ if ([fAudLang1PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack1CodecPopUp selectItemWithTitle: @"MP3 (lame)"];
+ [self audioTrackPopUpChanged: fAudTrack1CodecPopUp];
+ }
+ if ([fAudLang2PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack2CodecPopUp selectItemWithTitle: @"MP3 (lame)"];
+ [self audioTrackPopUpChanged: fAudTrack2CodecPopUp];
+ }
+ if ([fAudLang3PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack3CodecPopUp selectItemWithTitle: @"MP3 (lame)"];
+ [self audioTrackPopUpChanged: fAudTrack3CodecPopUp];
+ }
+ if ([fAudLang4PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack4CodecPopUp selectItemWithTitle: @"MP3 (lame)"];
+ [self audioTrackPopUpChanged: fAudTrack4CodecPopUp];
+ }
+ }
+ else if ([[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"MPEG-4 Video / Vorbis Audio"])
+ {
+ if ([fAudLang1PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack1CodecPopUp selectItemWithTitle: @"Vorbis (vorbis)"];
+ [self audioTrackPopUpChanged: fAudTrack1CodecPopUp];
+ }
+ if ([fAudLang2PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack2CodecPopUp selectItemWithTitle: @"Vorbis (vorbis)"];
+ [self audioTrackPopUpChanged: fAudTrack2CodecPopUp];
+ }
+ if ([fAudLang3PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack3CodecPopUp selectItemWithTitle: @"Vorbis (vorbis)"];
+ [self audioTrackPopUpChanged: fAudTrack3CodecPopUp];
+ }
+ if ([fAudLang4PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack4CodecPopUp selectItemWithTitle: @"Vorbis (vorbis)"];
+ [self audioTrackPopUpChanged: fAudTrack4CodecPopUp];
+ }
+ }
+ /* We detect here if we have the old audio sample rate and if so we apply samplerate and bitrate to the existing four tracks if chosen
+ * UNLESS the CodecPopUp is AC3 in which case the preset values are ignored in favor of rates set in audioTrackMixdownChanged*/
+ if ([chosenPreset objectForKey:@"AudioSampleRate"])
+ {
+ if ([fAudLang1PopUp indexOfSelectedItem] > 0 && [fAudTrack1CodecPopUp titleOfSelectedItem] != @"AC3 Passthru")
+ {
+ [fAudTrack1RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioSampleRate"]];
+ [fAudTrack1BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioBitRate"]];
+ }
+ if ([fAudLang2PopUp indexOfSelectedItem] > 0 && [fAudTrack2CodecPopUp titleOfSelectedItem] != @"AC3 Passthru")
+ {
+ [fAudTrack2RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioSampleRate"]];
+ [fAudTrack2BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioBitRate"]];
+ }
+ if ([fAudLang3PopUp indexOfSelectedItem] > 0 && [fAudTrack3CodecPopUp titleOfSelectedItem] != @"AC3 Passthru")
+ {
+ [fAudTrack3RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioSampleRate"]];
+ [fAudTrack3BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioBitRate"]];
+ }
+ if ([fAudLang4PopUp indexOfSelectedItem] > 0 && [fAudTrack4CodecPopUp titleOfSelectedItem] != @"AC3 Passthru")
+ {
+ [fAudTrack4RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioSampleRate"]];
+ [fAudTrack4BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"AudioBitRate"]];
+ }
+ }
+ /* We detect here if we have the old DRC Slider and if so we apply it to the existing four tracks if chosen */
+ if ([chosenPreset objectForKey:@"AudioDRCSlider"])
+ {
+ if ([fAudLang1PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack1DrcSlider setFloatValue:[[chosenPreset objectForKey:@"AudioDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack1DrcSlider];
+ }
+ if ([fAudLang2PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack2DrcSlider setFloatValue:[[chosenPreset objectForKey:@"AudioDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack2DrcSlider];
+ }
+ if ([fAudLang3PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack3DrcSlider setFloatValue:[[chosenPreset objectForKey:@"AudioDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack3DrcSlider];
+ }
+ if ([fAudLang4PopUp indexOfSelectedItem] > 0)
+ {
+ [fAudTrack4DrcSlider setFloatValue:[[chosenPreset objectForKey:@"AudioDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack4DrcSlider];
+ }
+ }
+ }
+ else // since there was no codecs key in the preset we know we can use new multi-audio track presets
+ {
+ if ([chosenPreset objectForKey:@"Audio1Track"] > 0)
+ {
+ if ([fAudLang1PopUp indexOfSelectedItem] == 0)
+ {
+ [fAudLang1PopUp selectItemAtIndex: 1];
+ }
+ [self audioTrackPopUpChanged: fAudLang1PopUp];
+ [fAudTrack1CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Encoder"]];
+ [self audioTrackPopUpChanged: fAudTrack1CodecPopUp];
+ [fAudTrack1MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Mixdown"]];
+ /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default
+ * mixdown*/
+ if ([fAudTrack1MixPopUp selectedItem] == nil)
+ {
+ [self audioTrackPopUpChanged: fAudTrack1CodecPopUp];
+ }
+ [fAudTrack1RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Samplerate"]];
+ /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */
+ if (![[chosenPreset objectForKey:@"Audio1Encoder"] isEqualToString:@"AC3 Passthru"])
+ {
+ [fAudTrack1BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio1Bitrate"]];
+ }
+ [fAudTrack1DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio1TrackDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack1DrcSlider];
+ }
+ if ([chosenPreset objectForKey:@"Audio2Track"] > 0)
+ {
+ if ([fAudLang2PopUp indexOfSelectedItem] == 0)
+ {
+ [fAudLang2PopUp selectItemAtIndex: 1];
+ }
+ [self audioTrackPopUpChanged: fAudLang2PopUp];
+ [fAudTrack2CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Encoder"]];
+ [self audioTrackPopUpChanged: fAudTrack2CodecPopUp];
+ [fAudTrack2MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Mixdown"]];
+ /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default
+ * mixdown*/
+ if ([fAudTrack2MixPopUp selectedItem] == nil)
+ {
+ [self audioTrackPopUpChanged: fAudTrack2CodecPopUp];
+ }
+ [fAudTrack2RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Samplerate"]];
+ /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */
+ if (![[chosenPreset objectForKey:@"Audio2Encoder"] isEqualToString:@"AC3 Passthru"])
+ {
+ [fAudTrack2BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio2Bitrate"]];
+ }
+ [fAudTrack2DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio2TrackDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack2DrcSlider];
+ }
+ if ([chosenPreset objectForKey:@"Audio3Track"] > 0)
+ {
+ if ([fAudLang3PopUp indexOfSelectedItem] == 0)
+ {
+ [fAudLang3PopUp selectItemAtIndex: 1];
+ }
+ [self audioTrackPopUpChanged: fAudLang3PopUp];
+ [fAudTrack3CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Encoder"]];
+ [self audioTrackPopUpChanged: fAudTrack3CodecPopUp];
+ [fAudTrack3MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Mixdown"]];
+ /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default
+ * mixdown*/
+ if ([fAudTrack3MixPopUp selectedItem] == nil)
+ {
+ [self audioTrackPopUpChanged: fAudTrack3CodecPopUp];
+ }
+ [fAudTrack3RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Samplerate"]];
+ /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */
+ if (![[chosenPreset objectForKey:@"Audio3Encoder"] isEqualToString: @"AC3 Passthru"])
+ {
+ [fAudTrack3BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio3Bitrate"]];
+ }
+ [fAudTrack3DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio3TrackDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack3DrcSlider];
+ }
+ if ([chosenPreset objectForKey:@"Audio4Track"] > 0)
+ {
+ if ([fAudLang4PopUp indexOfSelectedItem] == 0)
+ {
+ [fAudLang4PopUp selectItemAtIndex: 1];
+ }
+ [self audioTrackPopUpChanged: fAudLang4PopUp];
+ [fAudTrack4CodecPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Encoder"]];
+ [self audioTrackPopUpChanged: fAudTrack4CodecPopUp];
+ [fAudTrack4MixPopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Mixdown"]];
+ /* check to see if the selections was available, if not, rerun audioTrackPopUpChanged using the codec to just set the default
+ * mixdown*/
+ if ([fAudTrack4MixPopUp selectedItem] == nil)
+ {
+ [self audioTrackPopUpChanged: fAudTrack4CodecPopUp];
+ }
+ [fAudTrack4RatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Samplerate"]];
+ /* We set the presets bitrate if it is *not* an AC3 track since that uses the input bitrate */
+ if (![[chosenPreset objectForKey:@"Audio4Encoder"] isEqualToString:@"AC3 Passthru"])
+ {
+ [fAudTrack4BitratePopUp selectItemWithTitle:[chosenPreset objectForKey:@"Audio4Bitrate"]];
+ }
+ [fAudTrack4DrcSlider setFloatValue:[[chosenPreset objectForKey:@"Audio4TrackDRCSlider"] floatValue]];
+ [self audioDRCSliderChanged: fAudTrack4DrcSlider];
+ }
+
+
+ }
+
+ /* We now cleanup any extra audio tracks that may be previously set if we need to, we do it here so we don't have to
+ * duplicate any code for legacy presets.*/
+ /* First we handle the legacy Codecs crazy AVC/H.264 Video / AAC + AC3 Audio atv hybrid */
+ if ([chosenPreset objectForKey:@"FileCodecs"] && [[chosenPreset objectForKey:@"FileCodecs"] isEqualToString:@"AVC/H.264 Video / AAC + AC3 Audio"])
+ {
+ [fAudLang3PopUp selectItemAtIndex: 0];
+ [self audioTrackPopUpChanged: fAudLang3PopUp];
+ [fAudLang4PopUp selectItemAtIndex: 0];
+ [self audioTrackPopUpChanged: fAudLang4PopUp];
+ }
+ else
+ {
+ if (![chosenPreset objectForKey:@"Audio2Track"] || [chosenPreset objectForKey:@"Audio2Track"] == 0)
+ {
+ [fAudLang2PopUp selectItemAtIndex: 0];
+ [self audioTrackPopUpChanged: fAudLang2PopUp];
+ }
+ if (![chosenPreset objectForKey:@"Audio3Track"] || [chosenPreset objectForKey:@"Audio3Track"] > 0)
+ {
+ [fAudLang3PopUp selectItemAtIndex: 0];
+ [self audioTrackPopUpChanged: fAudLang3PopUp];
+ }
+ if (![chosenPreset objectForKey:@"Audio4Track"] || [chosenPreset objectForKey:@"Audio4Track"] > 0)
+ {
+ [fAudLang4PopUp selectItemAtIndex: 0];
+ [self audioTrackPopUpChanged: fAudLang4PopUp];
+ }
+ }
+