{\r
public partial class AudioPanel : UserControl\r
{\r
+ public event EventHandler AudioListChanged;\r
+\r
public AudioPanel()\r
{\r
InitializeComponent();\r
+ drp_audioMix.SelectedIndex = 0;\r
}\r
- \r
+\r
// Audio Track Options\r
- private void drp_track1Audio_SelectedIndexChanged(object sender, EventArgs e)\r
+ private void drp_audioTrack_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
{\r
- lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text = drp_track1Audio.Text;\r
+ lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text = drp_audioTrack.Text;\r
lv_audioList.Select();\r
}\r
-\r
}\r
- private void drp_audenc_1_SelectedIndexChanged(object sender, EventArgs e)\r
+ private void drp_audenc_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
- if (drp_audenc_1.Text.Contains("AC3") || drp_audenc_1.Text.Contains("DTS"))\r
+ // Setup the widgets with the correct avail options\r
+ if (drp_audioEncoder.Text.Contains("AAC"))\r
{\r
- drp_audmix_1.Enabled = false;\r
- drp_audbit_1.Enabled = false;\r
- drp_audsr_1.Enabled = false;\r
-\r
- drp_audmix_1.SelectedIndex = 0;\r
- drp_audbit_1.SelectedIndex = 0;\r
- drp_audsr_1.SelectedIndex = 0;\r
+ setMixDown(true);\r
+ setBitrate(160);\r
}\r
else\r
{\r
- drp_audmix_1.Enabled = true;\r
- drp_audbit_1.Enabled = true;\r
- drp_audsr_1.Enabled = true;\r
-\r
- drp_audmix_1.Text = "Automatic";\r
- drp_audbit_1.Text = "160";\r
- drp_audsr_1.Text = "Auto";\r
+ setMixDown(false);\r
+ setBitrate(320);\r
}\r
\r
- if (drp_audenc_1.Text.Contains("AAC"))\r
+ // Configure the widgets with values\r
+ if (drp_audioEncoder.Text.Contains("AC3") || drp_audioEncoder.Text.Contains("DTS"))\r
{\r
- setMixDownAllOptions(drp_audmix_1);\r
- setBitrateSelections160(drp_audbit_1);\r
+ drp_audioMix.Enabled = false;\r
+ drp_audioBitrate.Enabled = false;\r
+ drp_audioSample.Enabled = false;\r
+\r
+ drp_audioMix.SelectedIndex = 0;\r
+ drp_audioBitrate.SelectedIndex = 0;\r
+ drp_audioSample.SelectedIndex = 0;\r
}\r
else\r
{\r
- setMixDownNotAAC(drp_audmix_1);\r
- setBitrateSelections320(drp_audbit_1);\r
+ drp_audioMix.Enabled = true;\r
+ drp_audioBitrate.Enabled = true;\r
+ drp_audioSample.Enabled = true;\r
+\r
+ drp_audioMix.SelectedIndex = 0;\r
+ drp_audioBitrate.SelectedIndex = 9;\r
+ drp_audioSample.SelectedIndex = 0;\r
}\r
\r
// Update an item in the Audio list if required.\r
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
{\r
- lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text = drp_audenc_1.Text;\r
+ lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text = drp_audioEncoder.Text;\r
lv_audioList.Select();\r
}\r
}\r
- private void drp_audmix_1_SelectedIndexChanged(object sender, EventArgs e)\r
+ private void drp_audmix_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
- if ((drp_audenc_1.Text.Contains("AAC")) && (drp_audmix_1.Text == "6 Channel Discrete"))\r
- setBitrateSelections384(drp_audbit_1);\r
- else if ((drp_audenc_1.Text.Contains("AAC")) && (drp_audmix_1.Text != "6 Channel Discrete"))\r
- setBitrateSelections160(drp_audbit_1); drp_audbit_1.Text = "160";\r
+ if ((drp_audioEncoder.Text.Contains("AAC")) && (drp_audioMix.Text == "6 Channel Discrete"))\r
+ setBitrate(384);\r
+ else if ((drp_audioEncoder.Text.Contains("AAC")) && (drp_audioMix.Text != "6 Channel Discrete"))\r
+ setBitrate(160);\r
\r
// Update an item in the Audio list if required.\r
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
{\r
- lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text = drp_audmix_1.Text;\r
+ lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text = drp_audioMix.Text;\r
lv_audioList.Select();\r
}\r
}\r
- private void drp_audsr_1_SelectedIndexChanged(object sender, EventArgs e)\r
+ private void drp_audsr_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
// Update an item in the Audio list if required.\r
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
{\r
- lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text = drp_audsr_1.Text;\r
+ lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text = drp_audioSample.Text;\r
lv_audioList.Select();\r
}\r
}\r
- private void drp_audbit_1_SelectedIndexChanged(object sender, EventArgs e)\r
+ private void drp_audbit_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
// Update an item in the Audio list if required.\r
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
{\r
- if (drp_audenc_1.Text.Contains("AC3"))\r
- drp_audbit_1.Text = "Auto";\r
- lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text = drp_audbit_1.Text;\r
+ if (drp_audioEncoder.Text.Contains("AC3"))\r
+ drp_audioBitrate.SelectedItem = "Auto";\r
+ lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text = drp_audioBitrate.Text;\r
lv_audioList.Select();\r
}\r
}\r
// Update an item in the Audio list if required.\r
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
{\r
- lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text = lbl_drc.Text;\r
+ lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text = value.ToString();\r
lv_audioList.Select();\r
}\r
}\r
// Track Controls\r
private void btn_addAudioTrack_Click(object sender, EventArgs e)\r
{\r
+ double value = 0;\r
+ if (tb_drc.Value != 0)\r
+ value = ((tb_drc.Value - 1) / 10.0) + 1;\r
+\r
// Create a new row for the Audio list based on the currently selected items in the dropdown.\r
- ListViewItem newTrack = new ListViewItem(getNewID().ToString());\r
- newTrack.SubItems.Add(drp_track1Audio.Text);\r
- newTrack.SubItems.Add(drp_audenc_1.Text);\r
- newTrack.SubItems.Add(drp_audmix_1.Text);\r
- newTrack.SubItems.Add(drp_audsr_1.Text);\r
- newTrack.SubItems.Add(drp_audbit_1.Text);\r
- newTrack.SubItems.Add(lbl_drc.Text);\r
+ ListViewItem newTrack = new ListViewItem(GetNewID().ToString());\r
+ newTrack.SubItems.Add(drp_audioTrack.Text);\r
+ newTrack.SubItems.Add(drp_audioEncoder.Text);\r
+ newTrack.SubItems.Add(drp_audioMix.Text);\r
+ newTrack.SubItems.Add(drp_audioSample.Text);\r
+ newTrack.SubItems.Add(drp_audioBitrate.Text);\r
+ newTrack.SubItems.Add(value.ToString());\r
lv_audioList.Items.Add(newTrack);\r
\r
+ // The Audio List has changed to raise the event.\r
+ if (this.AudioListChanged != null)\r
+ this.AudioListChanged(this, new EventArgs());\r
+\r
// Select the newly added track and select the control \r
lv_audioList.Items[lv_audioList.Items.Count - 1].Selected = true;\r
lv_audioList.Select();\r
}\r
private void btn_RemoveAudioTrack_Click(object sender, EventArgs e)\r
{\r
- // Remove the Item and reselect the control if the following conditions are met.\r
- if (lv_audioList.SelectedItems.Count != 0)\r
- {\r
- // Record the current selected index.\r
- int currentPosition = lv_audioList.SelectedIndices[0];\r
-\r
- lv_audioList.Items.RemoveAt(lv_audioList.SelectedIndices[0]);\r
-\r
- // Now reslect the correct item and give focus to the audio list.\r
- if (lv_audioList.Items.Count != 0)\r
- {\r
- if (currentPosition <= (lv_audioList.Items.Count - 1))\r
- lv_audioList.Items[currentPosition].Selected = true;\r
- else if (currentPosition > (lv_audioList.Items.Count - 1))\r
- lv_audioList.Items[lv_audioList.Items.Count - 1].Selected = true;\r
-\r
- lv_audioList.Select();\r
- }\r
- // Regenerate the ID numers\r
- reGenerateListIDs();\r
- }\r
+ RemoveAudioTrack();\r
}\r
\r
// Audio List Menu\r
}\r
private void audioList_remove_Click(object sender, EventArgs e)\r
{\r
- removeAudioTrack();\r
+ RemoveAudioTrack();\r
}\r
- private void removeAudioTrack()\r
+ private void RemoveAudioTrack()\r
{\r
// Remove the Item and reselect the control if the following conditions are met.\r
if (lv_audioList.SelectedItems.Count != 0)\r
{\r
+ // The Audio List is about to change so raise the event.\r
+ if (this.AudioListChanged != null)\r
+ this.AudioListChanged(this, new EventArgs());\r
+\r
// Record the current selected index.\r
int currentPosition = lv_audioList.SelectedIndices[0];\r
\r
\r
lv_audioList.Select();\r
}\r
+ // Regenerate the ID numers\r
+ reGenerateListIDs();\r
}\r
}\r
\r
// Public Functions\r
- public void setTrackList(Parsing.Title selectedTitle)\r
+ public void SetTrackList(Parsing.Title selectedTitle)\r
{\r
- drp_track1Audio.Items.Clear();\r
- drp_track1Audio.Items.Add("Automatic");\r
- drp_track1Audio.Items.Add("None");\r
- drp_track1Audio.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
- drp_track1Audio.SelectedIndex = 0;\r
+ drp_audioTrack.Items.Clear();\r
+ drp_audioTrack.Items.Add("Automatic");\r
+ drp_audioTrack.Items.Add("None");\r
+ drp_audioTrack.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
+\r
+ // Handle Native Language and "Dub Foreign language audio" and "Use Foreign language audio and Subtitles" Options\r
+ if (Properties.Settings.Default.NativeLanguage == "Any")\r
+ drp_audioTrack.SelectedIndex = 0;\r
+ else\r
+ {\r
+ if (Properties.Settings.Default.DubAudio) // "Dub Foreign language audio" \r
+ {\r
+ int i = 0;\r
+ foreach (object item in drp_audioTrack.Items)\r
+ {\r
+ if (item.ToString().Contains(Properties.Settings.Default.NativeLanguage))\r
+ {\r
+ drp_audioTrack.SelectedIndex = i;\r
+ break;\r
+ }\r
+\r
+ i++;\r
+ }\r
+\r
+ if (drp_audioTrack.SelectedItem != null)\r
+ foreach (ListViewItem item in lv_audioList.Items)\r
+ item.SubItems[1].Text = drp_audioTrack.SelectedItem.ToString();\r
+ else\r
+ {\r
+ drp_audioTrack.SelectedIndex = 0;\r
+ if (drp_audioTrack.SelectedItem != null)\r
+ foreach (ListViewItem item in lv_audioList.Items)\r
+ item.SubItems[1].Text = drp_audioTrack.SelectedItem.ToString();\r
+ }\r
+ }\r
+ else\r
+ drp_audioTrack.SelectedIndex = 0; // "Use Foreign language audio and Subtitles"\r
+ }\r
+ drp_audioMix.SelectedIndex = 0;\r
}\r
- public ListView getAudioPanel()\r
+ public ListView GetAudioPanel()\r
{\r
return lv_audioList;\r
}\r
- public void setAudioByContainer(String path)\r
+ public void SetContainer(String path)\r
{\r
+ string oldval = drp_audioEncoder.Text;\r
if ((path.Contains("MP4")) || (path.Contains("M4V")))\r
{\r
- string oldval = drp_audenc_1.Text;\r
- drp_audenc_1.Items.Clear();\r
- drp_audenc_1.Items.Add("AAC (faac)");\r
- drp_audenc_1.Items.Add("AC3 Passthru");\r
+ drp_audioEncoder.Items.Clear();\r
+ drp_audioEncoder.Items.Add("AAC (faac)");\r
+ drp_audioEncoder.Items.Add("AC3 Passthru");\r
if ((oldval != "AAC (faac)") && (oldval != "AC3 Passthru"))\r
- drp_audenc_1.SelectedIndex = 0;\r
+ drp_audioEncoder.SelectedIndex = 0;\r
+ else\r
+ drp_audioEncoder.SelectedItem = oldval;\r
\r
}\r
else if (path.Contains("MKV"))\r
{\r
- drp_audenc_1.Items.Clear();\r
- drp_audenc_1.Items.Add("AAC (faac)");\r
- drp_audenc_1.Items.Add("MP3 (lame)");\r
- drp_audenc_1.Items.Add("AC3 Passthru");\r
- drp_audenc_1.Items.Add("DTS Passthru");\r
- drp_audenc_1.Items.Add("Vorbis (vorbis)");\r
-\r
- if (drp_audenc_1.Text == string.Empty)\r
- drp_audenc_1.SelectedIndex = 0;\r
+ drp_audioEncoder.Items.Clear();\r
+ drp_audioEncoder.Items.Add("AAC (faac)");\r
+ drp_audioEncoder.Items.Add("MP3 (lame)");\r
+ drp_audioEncoder.Items.Add("AC3 Passthru");\r
+ drp_audioEncoder.Items.Add("DTS Passthru");\r
+ drp_audioEncoder.Items.Add("Vorbis (vorbis)");\r
+ drp_audioEncoder.SelectedItem = oldval;\r
+\r
+ if (drp_audioEncoder.Text == string.Empty)\r
+ drp_audioEncoder.SelectedIndex = 0;\r
}\r
\r
// Make sure the table is updated with new audio codecs\r
foreach (ListViewItem row in lv_audioList.Items)\r
{\r
- if (!drp_audenc_1.Items.Contains(row.SubItems[2].Text))\r
- row.SubItems[2].Text = drp_audenc_1.Items[0].ToString();\r
+ if (!drp_audioEncoder.Items.Contains(row.SubItems[2].Text))\r
+ row.SubItems[2].Text = drp_audioEncoder.Items[0].ToString();\r
}\r
}\r
- public void addTrackForPreset(ListViewItem item)\r
+ public void AddTrackForPreset(ListViewItem item)\r
{\r
lv_audioList.Items.Add(item);\r
+ if (this.AudioListChanged != null)\r
+ this.AudioListChanged(this, new EventArgs());\r
}\r
- public void clearAudioList()\r
+ public void ClearAudioList()\r
{\r
lv_audioList.Items.Clear();\r
+ if (this.AudioListChanged != null)\r
+ this.AudioListChanged(this, new EventArgs());\r
}\r
- public int getNewID()\r
+ public int GetNewID()\r
{\r
return lv_audioList.Items.Count + 1;\r
}\r
+ public Boolean RequiresM4V()\r
+ {\r
+ foreach (ListViewItem item in lv_audioList.Items)\r
+ {\r
+ if (item.SubItems[2].Text.Contains("AC3"))\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
\r
// Helper Functions \r
private void reGenerateListIDs()\r
i++;\r
}\r
}\r
- private static void setBitrateSelections384(ComboBox dropDown)\r
- {\r
- dropDown.Items.Clear();\r
- dropDown.Items.Add("32");\r
- dropDown.Items.Add("40");\r
- dropDown.Items.Add("48");\r
- dropDown.Items.Add("56");\r
- dropDown.Items.Add("64");\r
- dropDown.Items.Add("80");\r
- dropDown.Items.Add("86");\r
- dropDown.Items.Add("112");\r
- dropDown.Items.Add("128");\r
- dropDown.Items.Add("160");\r
- dropDown.Items.Add("192");\r
- dropDown.Items.Add("224");\r
- dropDown.Items.Add("256");\r
- dropDown.Items.Add("320");\r
- dropDown.Items.Add("384");\r
- }\r
- private static void setBitrateSelections320(ComboBox dropDown)\r
- {\r
- dropDown.Items.Clear();\r
- dropDown.Items.Add("32");\r
- dropDown.Items.Add("40");\r
- dropDown.Items.Add("48");\r
- dropDown.Items.Add("56");\r
- dropDown.Items.Add("64");\r
- dropDown.Items.Add("80");\r
- dropDown.Items.Add("86");\r
- dropDown.Items.Add("112");\r
- dropDown.Items.Add("128");\r
- dropDown.Items.Add("160");\r
- dropDown.Items.Add("192");\r
- dropDown.Items.Add("224");\r
- dropDown.Items.Add("256");\r
- dropDown.Items.Add("320");\r
- }\r
- private static void setBitrateSelections160(ComboBox dropDown)\r
+ private void setBitrate(int max)\r
{\r
- dropDown.Items.Clear();\r
- dropDown.Items.Add("32");\r
- dropDown.Items.Add("40");\r
- dropDown.Items.Add("48");\r
- dropDown.Items.Add("56");\r
- dropDown.Items.Add("64");\r
- dropDown.Items.Add("80");\r
- dropDown.Items.Add("86");\r
- dropDown.Items.Add("112");\r
- dropDown.Items.Add("128");\r
- dropDown.Items.Add("160");\r
- }\r
- private static void setMixDownAllOptions(ComboBox dropdown)\r
- {\r
- dropdown.Items.Clear();\r
- dropdown.Items.Add("Automatic");\r
- dropdown.Items.Add("Mono");\r
- dropdown.Items.Add("Stereo");\r
- dropdown.Items.Add("Dolby Surround");\r
- dropdown.Items.Add("Dolby Pro Logic II");\r
- dropdown.Items.Add("6 Channel Discrete");\r
+ if (max > 160)\r
+ {\r
+ drp_audioBitrate.Items.Add("192");\r
+ drp_audioBitrate.Items.Add("224");\r
+ drp_audioBitrate.Items.Add("256");\r
+ drp_audioBitrate.Items.Add("320");\r
+ if (max == 384)\r
+ drp_audioBitrate.Items.Add("384");\r
+ else\r
+ drp_audioBitrate.Items.Remove("384");\r
+ }\r
+ else\r
+ {\r
+ drp_audioBitrate.Items.Remove("192");\r
+ drp_audioBitrate.Items.Remove("224");\r
+ drp_audioBitrate.Items.Remove("256");\r
+ drp_audioBitrate.Items.Remove("320");\r
+ drp_audioBitrate.Items.Remove("384");\r
+ }\r
+ if (drp_audioBitrate.SelectedItem == null)\r
+ drp_audioBitrate.SelectedIndex = drp_audioBitrate.Items.Count - 1;\r
}\r
- private static void setMixDownNotAAC(ComboBox dropdown)\r
+ private void setMixDown(Boolean aac)\r
{\r
- dropdown.Items.Clear();\r
- dropdown.Items.Add("Automatic");\r
- dropdown.Items.Add("Stereo");\r
- dropdown.Items.Add("Dolby Surround");\r
- dropdown.Items.Add("Dolby Pro Logic II");\r
+ drp_audioMix.Items.Clear();\r
+ drp_audioMix.Items.Add("Automatic");\r
+ if (aac)\r
+ drp_audioMix.Items.Add("Mono");\r
+ drp_audioMix.Items.Add("Stereo");\r
+ drp_audioMix.Items.Add("Dolby Surround");\r
+ drp_audioMix.Items.Add("Dolby Pro Logic II");\r
+ if (aac)\r
+ drp_audioMix.Items.Add("6 Channel Discrete");\r
}\r
private void lv_audioList_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
// Set the dropdown controls based on the selected item in the Audio List.\r
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
{\r
- drp_track1Audio.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text;\r
- drp_audenc_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text;\r
- drp_audmix_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text;\r
- drp_audsr_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text;\r
- drp_audbit_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text;\r
+ drp_audioTrack.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text;\r
+ drp_audioEncoder.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text;\r
+ drp_audioMix.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text;\r
+ drp_audioSample.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text;\r
+ drp_audioBitrate.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text;\r
double drcValue; int drcCalculated;\r
double.TryParse(lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text, out drcValue);\r
if (drcValue == 0) drcCalculated = 0;\r
drcValue = ((drcValue * 10) + 1) - 10;\r
int.TryParse(drcValue.ToString(), out drcCalculated);\r
tb_drc.Value = drcCalculated;\r
+ lbl_drc.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text;\r
\r
AudioTrackGroup.Text = "Selected Track: " + lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[0].Text;\r
}\r
}\r
\r
}\r
-}\r
+}
\ No newline at end of file