mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-22 03:02:35 +01:00
Working on libVlc audio track
git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@287 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
parent
821b9d0f9c
commit
2a65e75c83
@ -37,6 +37,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
string _subtitleAlternateFileName;
|
||||
string _fileName;
|
||||
string _videoFileName;
|
||||
int _videoAudioTrackNumber = -1;
|
||||
|
||||
public string VideoFileName
|
||||
{
|
||||
@ -894,6 +895,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
var visualSync = new VisualSync();
|
||||
_formPositionsAndSizes.SetPositionAndSize(visualSync);
|
||||
visualSync.VideoFileName = _videoFileName;
|
||||
visualSync.AudioTrackNumber = _videoAudioTrackNumber;
|
||||
|
||||
SaveSubtitleListviewIndexes();
|
||||
if (onlySelectedLines)
|
||||
@ -908,6 +910,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
visualSync.Initialize(toolStripButtonVisualSync.Image as Bitmap, _subtitle, _fileName, _language.VisualSyncTitle, CurrentFrameRate);
|
||||
}
|
||||
|
||||
mediaPlayer.Pause();
|
||||
if (visualSync.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
MakeHistoryForUndo(_language.BeforeVisualSync);
|
||||
@ -1067,6 +1070,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
_findHelper = null;
|
||||
_spellCheckForm = null;
|
||||
_videoFileName = null;
|
||||
_videoAudioTrackNumber = -1;
|
||||
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
|
||||
AudioWaveForm.WavePeaks = null;
|
||||
AudioWaveForm.Invalidate();
|
||||
@ -1136,6 +1140,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
_findHelper = null;
|
||||
_spellCheckForm = null;
|
||||
_videoFileName = null;
|
||||
_videoAudioTrackNumber = -1;
|
||||
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
|
||||
AudioWaveForm.WavePeaks = null;
|
||||
AudioWaveForm.Invalidate();
|
||||
@ -1489,6 +1494,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
_findHelper = null;
|
||||
_spellCheckForm = null;
|
||||
_videoFileName = null;
|
||||
_videoAudioTrackNumber = -1;
|
||||
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
|
||||
AudioWaveForm.WavePeaks = null;
|
||||
AudioWaveForm.Invalidate();
|
||||
@ -3721,39 +3727,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
{
|
||||
int numberOfNewLines = textBoxListViewText.Text.Length - textBoxListViewText.Text.Replace(Environment.NewLine, " ").Length;
|
||||
|
||||
if (e.Modifiers == Keys.None && numberOfNewLines < 1 && textBoxListViewText.Text.Length > Configuration.Settings.General.SubtitleLineMaximumLength-5)
|
||||
{
|
||||
if (1 == 1) // auto break setting!
|
||||
{
|
||||
string newText;
|
||||
if (textBoxListViewText.Text.Length > Configuration.Settings.General.SubtitleLineMaximumLength + 30)
|
||||
{
|
||||
newText = Utilities.AutoBreakLine(textBoxListViewText.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
int lastSpace = textBoxListViewText.Text.LastIndexOf(' ');
|
||||
if (lastSpace > 0)
|
||||
newText = textBoxListViewText.Text.Remove(lastSpace, 1).Insert(lastSpace, Environment.NewLine);
|
||||
else
|
||||
newText = textBoxListViewText.Text;
|
||||
}
|
||||
|
||||
int autobreakIndex = newText.IndexOf(Environment.NewLine);
|
||||
if (autobreakIndex > 0)
|
||||
{
|
||||
int selectionStart = textBoxListViewText.SelectionStart;
|
||||
int selectionLength = textBoxListViewText.SelectionLength;
|
||||
textBoxListViewText.Text = newText;
|
||||
if (selectionStart > autobreakIndex)
|
||||
selectionStart += Environment.NewLine.Length;
|
||||
if (selectionStart >= 0)
|
||||
textBoxListViewText.SelectionStart = selectionStart;
|
||||
if (selectionLength >= 0)
|
||||
textBoxListViewText.SelectionLength = selectionLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
CheckAutoWrap(textBoxListViewText, e, numberOfNewLines);
|
||||
|
||||
if (e.KeyCode == Keys.Enter && e.Modifiers == Keys.None && numberOfNewLines > 1)
|
||||
{
|
||||
@ -3800,6 +3774,43 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
_lastTextKeyDownTicks = DateTime.Now.Ticks;
|
||||
}
|
||||
|
||||
private void CheckAutoWrap(TextBox textBox, KeyEventArgs e, int numberOfNewLines)
|
||||
{
|
||||
if (e.Modifiers == Keys.None && numberOfNewLines < 1 && textBox.Text.Length > Configuration.Settings.General.SubtitleLineMaximumLength - 3)
|
||||
{
|
||||
if (Configuration.Settings.General.AutoWrapLineWhileTyping) // only if auto-break-setting is true
|
||||
{
|
||||
string newText;
|
||||
if (textBox.Text.Length > Configuration.Settings.General.SubtitleLineMaximumLength + 30)
|
||||
{
|
||||
newText = Utilities.AutoBreakLine(textBox.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
int lastSpace = textBox.Text.LastIndexOf(' ');
|
||||
if (lastSpace > 0)
|
||||
newText = textBox.Text.Remove(lastSpace, 1).Insert(lastSpace, Environment.NewLine);
|
||||
else
|
||||
newText = textBox.Text;
|
||||
}
|
||||
|
||||
int autobreakIndex = newText.IndexOf(Environment.NewLine);
|
||||
if (autobreakIndex > 0)
|
||||
{
|
||||
int selectionStart = textBox.SelectionStart;
|
||||
int selectionLength = textBox.SelectionLength;
|
||||
textBox.Text = newText;
|
||||
if (selectionStart > autobreakIndex)
|
||||
selectionStart += Environment.NewLine.Length;
|
||||
if (selectionStart >= 0)
|
||||
textBox.SelectionStart = selectionStart;
|
||||
if (selectionLength >= 0)
|
||||
textBox.SelectionLength = selectionLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SplitLineToolStripMenuItemClick(object sender, EventArgs e)
|
||||
{
|
||||
SplitSelectedParagraph(null);
|
||||
@ -6110,7 +6121,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
if (importText.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
SyncPointsSync syncPointSync = new SyncPointsSync();
|
||||
syncPointSync.Initialize(importText.FixedSubtitle, _fileName, importText.VideoFileName);
|
||||
syncPointSync.Initialize(importText.FixedSubtitle, _fileName, importText.VideoFileName, _videoAudioTrackNumber);
|
||||
if (syncPointSync.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
ResetSubtitle();
|
||||
@ -6134,7 +6145,8 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
SyncPointsSync pointSync = new SyncPointsSync();
|
||||
_formPositionsAndSizes.SetPositionAndSize(pointSync);
|
||||
|
||||
pointSync.Initialize(_subtitle, _fileName, _videoFileName);
|
||||
pointSync.Initialize(_subtitle, _fileName, _videoFileName, _videoAudioTrackNumber);
|
||||
mediaPlayer.Pause();
|
||||
if (pointSync.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
_subtitleListViewIndex = -1;
|
||||
@ -8797,6 +8809,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
mediaPlayer.VideoPlayer = null;
|
||||
timer1.Stop();
|
||||
_videoFileName = null;
|
||||
_videoAudioTrackNumber = -1;
|
||||
labelVideoInfo.Text = Configuration.Settings.Language.General.NoVideoLoaded;
|
||||
AudioWaveForm.WavePeaks = null;
|
||||
AudioWaveForm.Invalidate();
|
||||
@ -8806,20 +8819,19 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
{
|
||||
closeVideoToolStripMenuItem.Visible = !string.IsNullOrEmpty(_videoFileName);
|
||||
|
||||
|
||||
toolStripMenuItemSetAudioTrack.Visible = false;
|
||||
if (mediaPlayer.VideoPlayer != null && mediaPlayer.VideoPlayer is Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)
|
||||
{
|
||||
var libVlc = (Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)mediaPlayer.VideoPlayer;
|
||||
int numberOfTracks = libVlc.AudioTrackCount;
|
||||
int currentTrackNumber = libVlc.AudioTrackNumber;
|
||||
if (numberOfTracks > 2)
|
||||
_videoAudioTrackNumber = libVlc.AudioTrackNumber;
|
||||
if (numberOfTracks > 1)
|
||||
{
|
||||
toolStripMenuItemSetAudioTrack.DropDownItems.Clear();
|
||||
for (int i = 0; i < numberOfTracks-1; i++)
|
||||
for (int i = 0; i < numberOfTracks; i++)
|
||||
{
|
||||
toolStripMenuItemSetAudioTrack.DropDownItems.Add((i + 1).ToString(), null, ChooseAudioTrack);
|
||||
if (i+1 == currentTrackNumber)
|
||||
if (i == _videoAudioTrackNumber)
|
||||
toolStripMenuItemSetAudioTrack.DropDownItems[toolStripMenuItemSetAudioTrack.DropDownItems.Count - 1].Select();
|
||||
}
|
||||
toolStripMenuItemSetAudioTrack.Visible = true;
|
||||
@ -8835,7 +8847,9 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
var item = sender as ToolStripItem;
|
||||
|
||||
int number = int.Parse(item.Text);
|
||||
number--;
|
||||
libVlc.AudioTrackNumber = number;
|
||||
_videoAudioTrackNumber = number;
|
||||
}
|
||||
}
|
||||
|
||||
@ -8867,39 +8881,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
|
||||
int numberOfNewLines = textBoxListViewTextAlternate.Text.Length - textBoxListViewTextAlternate.Text.Replace(Environment.NewLine, " ").Length;
|
||||
|
||||
if (e.Modifiers == Keys.None && numberOfNewLines < 1 && textBoxListViewTextAlternate.Text.Length >= Configuration.Settings.General.SubtitleLineMaximumLength)
|
||||
{
|
||||
if (1 == 1) // auto break setting!
|
||||
{
|
||||
string newText;
|
||||
if (textBoxListViewTextAlternate.Text.Length > Configuration.Settings.General.SubtitleLineMaximumLength + 30)
|
||||
{
|
||||
newText = Utilities.AutoBreakLine(textBoxListViewTextAlternate.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
int lastSpace = textBoxListViewTextAlternate.Text.LastIndexOf(' ');
|
||||
if (lastSpace > 0)
|
||||
newText = textBoxListViewTextAlternate.Text.Remove(lastSpace, 1).Insert(lastSpace, Environment.NewLine);
|
||||
else
|
||||
newText = textBoxListViewTextAlternate.Text;
|
||||
}
|
||||
|
||||
int autobreakIndex = newText.IndexOf(Environment.NewLine);
|
||||
if (autobreakIndex > 0)
|
||||
{
|
||||
int selectionStart = textBoxListViewTextAlternate.SelectionStart;
|
||||
int selectionLength = textBoxListViewTextAlternate.SelectionLength;
|
||||
textBoxListViewTextAlternate.Text = newText;
|
||||
if (selectionStart > autobreakIndex)
|
||||
selectionStart += Environment.NewLine.Length;
|
||||
if (selectionStart >= 0)
|
||||
textBoxListViewTextAlternate.SelectionStart = selectionStart;
|
||||
if (selectionLength >= 0)
|
||||
textBoxListViewTextAlternate.SelectionLength = selectionLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
CheckAutoWrap(textBoxListViewTextAlternate, e, numberOfNewLines);
|
||||
|
||||
if (e.KeyCode == Keys.Enter && e.Modifiers == Keys.None && numberOfNewLines > 1)
|
||||
{
|
||||
|
@ -684,7 +684,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAATABAQEwAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAVABAQFQAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
@ -14,6 +14,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
double _goBackPosition;
|
||||
double _stopPosition = -1.0;
|
||||
Subtitle _subtitle;
|
||||
int _audioTrackNumber = -1;
|
||||
|
||||
public string VideoFileName { get; private set; }
|
||||
|
||||
@ -51,9 +52,10 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
get { return timeUpDownLine.TimeCode.TimeSpan; }
|
||||
}
|
||||
|
||||
public void Initialize(Subtitle subtitle, string subtitleFileName, int index, string videoFileName)
|
||||
public void Initialize(Subtitle subtitle, string subtitleFileName, int index, string videoFileName, int audioTrackNumber)
|
||||
{
|
||||
_subtitle = subtitle;
|
||||
_audioTrackNumber = audioTrackNumber;
|
||||
subtitleListView1.Fill(subtitle);
|
||||
_guess = subtitle.Paragraphs[index].StartTime.TimeSpan;
|
||||
subtitleListView1.Items[index].Selected = true;
|
||||
@ -100,6 +102,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
openFileDialog1.FileName = string.Empty;
|
||||
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
_audioTrackNumber = -1;
|
||||
openFileDialog1.InitialDirectory = Path.GetDirectoryName(openFileDialog1.FileName);
|
||||
OpenVideo(openFileDialog1.FileName);
|
||||
}
|
||||
@ -143,6 +146,12 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
videoPlayerContainer1.VideoPlayer.CurrentPosition = _guess.TotalMilliseconds / 1000.0;
|
||||
videoPlayerContainer1.RefreshProgressBar();
|
||||
}
|
||||
|
||||
if (_audioTrackNumber > -1 && videoPlayerContainer1.VideoPlayer is Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)
|
||||
{
|
||||
var libVlc = (Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)videoPlayerContainer1.VideoPlayer;
|
||||
libVlc.AudioTrackNumber = _audioTrackNumber;
|
||||
}
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
|
@ -21,6 +21,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
|
||||
string _subtitleFileName;
|
||||
string _videoFileName;
|
||||
int _audioTrackNumber;
|
||||
Subtitle _subtitle;
|
||||
Subtitle _originalSubtitle;
|
||||
System.Collections.Generic.SortedDictionary<int, TimeSpan> _syncronizationPoints = new SortedDictionary<int, TimeSpan>();
|
||||
@ -65,12 +66,13 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
}
|
||||
}
|
||||
|
||||
public void Initialize(Subtitle subtitle, string subtitleFileName, string videoFileName)
|
||||
public void Initialize(Subtitle subtitle, string subtitleFileName, string videoFileName, int audioTrackNumber)
|
||||
{
|
||||
_subtitle = new Subtitle(subtitle);
|
||||
_originalSubtitle = subtitle;
|
||||
_subtitleFileName = subtitleFileName;
|
||||
_videoFileName = videoFileName;
|
||||
_audioTrackNumber = audioTrackNumber;
|
||||
SubtitleListview1.Fill(subtitle);
|
||||
if (SubtitleListview1.Items.Count > 0)
|
||||
SubtitleListview1.Items[0].Selected = true;
|
||||
@ -113,7 +115,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
{
|
||||
SetSyncPoint getTime = new SetSyncPoint();
|
||||
int index = SubtitleListview1.SelectedItems[0].Index;
|
||||
getTime.Initialize(_subtitle, _subtitleFileName, index, _videoFileName);
|
||||
getTime.Initialize(_subtitle, _subtitleFileName, index, _videoFileName, _audioTrackNumber);
|
||||
if (getTime.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
if (_syncronizationPoints.ContainsKey(index))
|
||||
|
@ -26,6 +26,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
readonly LanguageStructure.General _languageGeneral;
|
||||
|
||||
public string VideoFileName { get; set; }
|
||||
public int AudioTrackNumber { get; set; }
|
||||
|
||||
public bool OKPressed { get; set; }
|
||||
|
||||
@ -179,6 +180,12 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
Utilities.InitializeVideoPlayerAndContainer(MediaPlayerStart.VideoPlayer.VideoFileName, null, MediaPlayerEnd, VideoEndLoaded, VideoEndEnded);
|
||||
}
|
||||
timer1.Start();
|
||||
|
||||
if (AudioTrackNumber > -1 && MediaPlayerStart.VideoPlayer is Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)
|
||||
{
|
||||
var libVlc = (Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)MediaPlayerStart.VideoPlayer;
|
||||
libVlc.AudioTrackNumber = AudioTrackNumber;
|
||||
}
|
||||
}
|
||||
|
||||
void VideoEndEnded(object sender, EventArgs e)
|
||||
@ -194,6 +201,12 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
_endGoBackPosition = MediaPlayerEnd.CurrentPosition;
|
||||
_endStopPosition = _endGoBackPosition + 0.1;
|
||||
MediaPlayerEnd.Play();
|
||||
|
||||
if (AudioTrackNumber > -1 && MediaPlayerEnd.VideoPlayer is Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)
|
||||
{
|
||||
var libVlc = (Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlc11xDynamic)MediaPlayerEnd.VideoPlayer;
|
||||
libVlc.AudioTrackNumber = AudioTrackNumber;
|
||||
}
|
||||
}
|
||||
|
||||
private VideoInfo ShowVideoInfo(string fileName)
|
||||
@ -458,6 +471,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
openFileDialog1.FileName = string.Empty;
|
||||
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
AudioTrackNumber = -1;
|
||||
openFileDialog1.InitialDirectory = Path.GetDirectoryName(openFileDialog1.FileName);
|
||||
OpenVideo(openFileDialog1.FileName);
|
||||
}
|
||||
|
@ -318,7 +318,7 @@ namespace Nikse.SubtitleEdit.Logic.VideoPlayers
|
||||
{
|
||||
get
|
||||
{
|
||||
return _libvlc_audio_get_track_count(_mediaPlayer);
|
||||
return _libvlc_audio_get_track_count(_mediaPlayer)-1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -327,11 +327,11 @@ namespace Nikse.SubtitleEdit.Logic.VideoPlayers
|
||||
{
|
||||
get
|
||||
{
|
||||
return _libvlc_audio_get_track(_mediaPlayer);
|
||||
return _libvlc_audio_get_track(_mediaPlayer)-1;
|
||||
}
|
||||
set
|
||||
{
|
||||
_libvlc_audio_set_track(_mediaPlayer, value);
|
||||
_libvlc_audio_set_track(_mediaPlayer, value+1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -481,9 +481,11 @@ namespace Nikse.SubtitleEdit.Logic.VideoPlayers
|
||||
|
||||
if (state == Ended)
|
||||
{
|
||||
Stop();
|
||||
// hack to make sure VLC is in ready state
|
||||
Stop();
|
||||
Play();
|
||||
Pause();
|
||||
|
||||
OnVideoEnded.Invoke(_mediaPlayer, new EventArgs());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user