mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-22 03:02:35 +01:00
Fixed bug where wave form data would not match with actual video (sample rate problem)
Mousewheel will work in video player (also un-docked) git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@220 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
parent
fe8896ab2a
commit
79dd4d1238
@ -11,7 +11,7 @@ Subtitle Edit Changelog
|
|||||||
* Options to choose font color and background color (for list view/text-boxes)
|
* Options to choose font color and background color (for list view/text-boxes)
|
||||||
* Can now import VobSub subtitles embedded in Matroska (.mkv) files (thx mosu for mkv info)
|
* Can now import VobSub subtitles embedded in Matroska (.mkv) files (thx mosu for mkv info)
|
||||||
* Wave form position can be locked at center via new 'Center' button (thx Krystian)
|
* Wave form position can be locked at center via new 'Center' button (thx Krystian)
|
||||||
* Can insert subtitle after a line in the list view via context menu
|
* Can insert (a whole) subtitle after a line in the list view via context menu
|
||||||
* IMPROVED:
|
* IMPROVED:
|
||||||
* Main window: Video player will now automatically move up beside subtitle if waveform is
|
* Main window: Video player will now automatically move up beside subtitle if waveform is
|
||||||
displayed + some resizing of controls allowed via splitters
|
displayed + some resizing of controls allowed via splitters
|
||||||
@ -22,10 +22,11 @@ Subtitle Edit Changelog
|
|||||||
* Moved video controls below subtitle preview (which now displays italic)
|
* Moved video controls below subtitle preview (which now displays italic)
|
||||||
* Fix common ocr errors improed (thx aMvEL, sialivi, Alberto)
|
* Fix common ocr errors improed (thx aMvEL, sialivi, Alberto)
|
||||||
* FIXED:
|
* FIXED:
|
||||||
|
* Wave form: Fix bug with unprecise data (only for some sample rates)
|
||||||
* OCR Fix Engine: Lines after "..." will no longer be changed to start with uppercase letter
|
* OCR Fix Engine: Lines after "..." will no longer be changed to start with uppercase letter
|
||||||
* Missing line break in Sony Dvd Architecht w line numbers (thx Rosa)
|
* Missing line break in Sony Dvd Architecht w line numbers (thx Rosa)
|
||||||
* A minor bug in initialization of waveform (thx Frederic)
|
* A minor bug in initialization of waveform (thx Frederic)
|
||||||
* A minor bug in Visual Sync, if end scene was after video length
|
* A minor bug in Visual Sync, if end scene was after video length (thx tsieberg)
|
||||||
* Fixed crash with wave form track bar (thx Christian)
|
* Fixed crash with wave form track bar (thx Christian)
|
||||||
* Fixed several bugs regarding 'large fonts' / higher dpi (thx Radbert)
|
* Fixed several bugs regarding 'large fonts' / higher dpi (thx Radbert)
|
||||||
|
|
||||||
|
@ -3,15 +3,39 @@ using System.Drawing;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Nikse.SubtitleEdit.Logic.VideoPlayers;
|
using Nikse.SubtitleEdit.Logic.VideoPlayers;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Nikse.SubtitleEdit.Controls
|
namespace Nikse.SubtitleEdit.Controls
|
||||||
{
|
{
|
||||||
public sealed class VideoPlayerContainer : Panel
|
public sealed class VideoPlayerContainer : Panel
|
||||||
{
|
{
|
||||||
|
class RichTextBoxViewOnly : System.Windows.Forms.RichTextBox
|
||||||
|
{
|
||||||
|
public RichTextBoxViewOnly()
|
||||||
|
{
|
||||||
|
base.ReadOnly = true;
|
||||||
|
base.BorderStyle = BorderStyle.None;
|
||||||
|
base.TabStop = false;
|
||||||
|
base.SetStyle(ControlStyles.Selectable, false);
|
||||||
|
base.SetStyle(ControlStyles.UserMouse, true);
|
||||||
|
base.MouseEnter += delegate(object sender, EventArgs e) { this.Cursor = Cursors.Default; };
|
||||||
|
base.ScrollBars = RichTextBoxScrollBars.None;
|
||||||
|
base.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
base.TabStop = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WndProc(ref Message m)
|
||||||
|
{
|
||||||
|
if (m.Msg == 0x204) return; // WM_RBUTTONDOWN
|
||||||
|
if (m.Msg == 0x205) return; // WM_RBUTTONUP
|
||||||
|
base.WndProc(ref m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public event EventHandler OnButtonClicked;
|
public event EventHandler OnButtonClicked;
|
||||||
public Panel PanelPlayer { get; private set; }
|
public Panel PanelPlayer { get; private set; }
|
||||||
private Panel _panelSubtitle;
|
private Panel _panelSubtitle;
|
||||||
private RichTextBox _subtitleTextBox;
|
private RichTextBoxViewOnly _subtitleTextBox;
|
||||||
private string _subtitleText = string.Empty;
|
private string _subtitleText = string.Empty;
|
||||||
private VideoPlayer _videoPlayer;
|
private VideoPlayer _videoPlayer;
|
||||||
public VideoPlayer VideoPlayer
|
public VideoPlayer VideoPlayer
|
||||||
@ -104,24 +128,49 @@ namespace Nikse.SubtitleEdit.Controls
|
|||||||
|
|
||||||
_pictureBoxProgressBar.Width = 0;
|
_pictureBoxProgressBar.Width = 0;
|
||||||
|
|
||||||
PanelPlayer.MouseDown += PanelPlayer_MouseDown;
|
PanelPlayer.MouseDown += PanelPlayer_MouseDown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void EnableMouseWheelStep()
|
||||||
|
{
|
||||||
|
AddMouseWheelEvent(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddMouseWheelEvent(Control control)
|
||||||
|
{
|
||||||
|
control.MouseWheel += Control_MouseWheel;
|
||||||
|
foreach (Control ctrl in control.Controls)
|
||||||
|
AddMouseWheelEvent(ctrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Control_MouseWheel(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
int delta = e.Delta;
|
||||||
|
double newPosition = CurrentPosition - (delta / 256.0);
|
||||||
|
if (newPosition < 0)
|
||||||
|
newPosition = 0;
|
||||||
|
else if (newPosition > Duration)
|
||||||
|
newPosition = Duration;
|
||||||
|
CurrentPosition = newPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Control MakeSubtitlesPanel()
|
private Control MakeSubtitlesPanel()
|
||||||
{
|
{
|
||||||
_panelSubtitle = new Panel { BackColor = _backgroundColor, Left = 0, Top = 0 };
|
_panelSubtitle = new Panel { BackColor = _backgroundColor, Left = 0, Top = 0 };
|
||||||
_panelSubtitle.Height = SubtitlesHeight + 1;
|
_panelSubtitle.Height = SubtitlesHeight + 1;
|
||||||
_subtitleTextBox = new RichTextBox();
|
_subtitleTextBox = new RichTextBoxViewOnly();
|
||||||
_panelSubtitle.Controls.Add(_subtitleTextBox);
|
_panelSubtitle.Controls.Add(_subtitleTextBox);
|
||||||
_subtitleTextBox.ReadOnly = true;
|
|
||||||
_subtitleTextBox.ScrollBars = RichTextBoxScrollBars.None;
|
|
||||||
_subtitleTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
|
||||||
_subtitleTextBox.Margin = new System.Windows.Forms.Padding(0);
|
|
||||||
_subtitleTextBox.BackColor = _backgroundColor;
|
_subtitleTextBox.BackColor = _backgroundColor;
|
||||||
_subtitleTextBox.ForeColor = Color.White;
|
_subtitleTextBox.ForeColor = Color.White;
|
||||||
_subtitleTextBox.Dock = DockStyle.Fill;
|
_subtitleTextBox.Dock = DockStyle.Fill;
|
||||||
_subtitleTextBox.Font = new Font("Tahoma", 8, FontStyle.Bold);
|
_subtitleTextBox.Font = new Font("Tahoma", 8, FontStyle.Bold);
|
||||||
|
_subtitleTextBox.MouseClick += SubtitleTextBox_MouseClick;
|
||||||
return _panelSubtitle;
|
return _panelSubtitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SubtitleTextBox_MouseClick(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
TooglePlayPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string RemoveSubStationAlphaFormatting(string s)
|
private static string RemoveSubStationAlphaFormatting(string s)
|
||||||
|
@ -996,19 +996,17 @@ namespace Nikse.SubtitleEdit.Controls
|
|||||||
void WaveForm_MouseWheel(object sender, MouseEventArgs e)
|
void WaveForm_MouseWheel(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
int delta = e.Delta;
|
int delta = e.Delta;
|
||||||
|
if (Locked)
|
||||||
{
|
{
|
||||||
if (Locked)
|
OnPositionSelected.Invoke(_currentVideoPositionSeconds + (-delta / 256.0), null);
|
||||||
{
|
|
||||||
OnPositionSelected.Invoke(_currentVideoPositionSeconds + (-delta / 256.0), null);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StartPositionSeconds -= delta / 256.0;
|
|
||||||
if (_currentVideoPositionSeconds < StartPositionSeconds || _currentVideoPositionSeconds >= EndPositionSeconds)
|
|
||||||
OnPositionSelected.Invoke(StartPositionSeconds, null);
|
|
||||||
}
|
|
||||||
Invalidate();
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartPositionSeconds -= delta / 256.0;
|
||||||
|
if (_currentVideoPositionSeconds < StartPositionSeconds || _currentVideoPositionSeconds >= EndPositionSeconds)
|
||||||
|
OnPositionSelected.Invoke(StartPositionSeconds, null);
|
||||||
|
}
|
||||||
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Text;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Windows.Forms;
|
||||||
using Nikse.SubtitleEdit.Logic;
|
using Nikse.SubtitleEdit.Logic;
|
||||||
|
|
||||||
namespace Nikse.SubtitleEdit.Forms
|
namespace Nikse.SubtitleEdit.Forms
|
||||||
{
|
{
|
||||||
public partial class AddWareForm : Form
|
public sealed partial class AddWareForm : Form
|
||||||
{
|
{
|
||||||
public string SourceVideoFileName { get; private set; }
|
public string SourceVideoFileName { get; private set; }
|
||||||
private bool _cancel = false;
|
private bool _cancel = false;
|
||||||
@ -118,7 +113,12 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
private void ReadWaveFile(string targetFile)
|
private void ReadWaveFile(string targetFile)
|
||||||
{
|
{
|
||||||
WavePeakGenerator waveFile = new WavePeakGenerator(targetFile);
|
WavePeakGenerator waveFile = new WavePeakGenerator(targetFile);
|
||||||
waveFile.GeneratePeakSamples(128); // samples per second - SampleRate
|
|
||||||
|
int sampleRate = 126;
|
||||||
|
while (!(waveFile.Header.SampleRate % sampleRate == 0) && sampleRate < 1000)
|
||||||
|
sampleRate++; // old sample-rate / new sample-rate must have rest = 0
|
||||||
|
waveFile.GeneratePeakSamples(sampleRate); // samples per second - SampleRate
|
||||||
|
|
||||||
WavePeak = waveFile;
|
WavePeak = waveFile;
|
||||||
waveFile.Close();
|
waveFile.Close();
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
if (versionInfo.Length >= 3 && versionInfo[2] != "0")
|
if (versionInfo.Length >= 3 && versionInfo[2] != "0")
|
||||||
_title += "." + versionInfo[2];
|
_title += "." + versionInfo[2];
|
||||||
}
|
}
|
||||||
return _title + " Beta";
|
return _title + " Beta 2";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,12 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
_mainForm = main;
|
_mainForm = main;
|
||||||
_positionsAndSizes = positionsAndSizes;
|
_positionsAndSizes = positionsAndSizes;
|
||||||
_videoPlayerContainer = videoPlayerContainer;
|
_videoPlayerContainer = videoPlayerContainer;
|
||||||
Text = title;
|
Text = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VideoPlayerContainer_MouseWheel(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Test");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VideoPlayerUnDocked_FormClosing(object sender, FormClosingEventArgs e)
|
private void VideoPlayerUnDocked_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
@ -54,36 +59,9 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
WindowState = FormWindowState.Maximized;
|
WindowState = FormWindowState.Maximized;
|
||||||
e.SuppressKeyPress = true;
|
e.SuppressKeyPress = true;
|
||||||
}
|
}
|
||||||
else if (_videoPlayerContainer.VideoPlayer != null)
|
else
|
||||||
{
|
{
|
||||||
if (e.Modifiers == Keys.None && e.KeyCode == Keys.Space)
|
_mainForm.Main_KeyDown(sender, e);
|
||||||
{
|
|
||||||
if (_videoPlayerContainer.VideoPlayer.IsPlaying)
|
|
||||||
_videoPlayerContainer.VideoPlayer.Pause();
|
|
||||||
else
|
|
||||||
_videoPlayerContainer.VideoPlayer.Play();
|
|
||||||
e.SuppressKeyPress = true;
|
|
||||||
}
|
|
||||||
else if (e.KeyCode == Keys.Right && e.Modifiers == Keys.Control)
|
|
||||||
{
|
|
||||||
_videoPlayerContainer.CurrentPosition += 0.10;
|
|
||||||
e.SuppressKeyPress = true;
|
|
||||||
}
|
|
||||||
else if (e.KeyCode == Keys.Left && e.Modifiers == Keys.Control)
|
|
||||||
{
|
|
||||||
_videoPlayerContainer.CurrentPosition -= 0.10;
|
|
||||||
e.SuppressKeyPress = true;
|
|
||||||
}
|
|
||||||
else if (e.KeyCode == Keys.Right && e.Modifiers == Keys.Alt)
|
|
||||||
{
|
|
||||||
_videoPlayerContainer.CurrentPosition += 0.5;
|
|
||||||
e.SuppressKeyPress = true;
|
|
||||||
}
|
|
||||||
else if (e.KeyCode == Keys.Left && e.Modifiers == Keys.Alt)
|
|
||||||
{
|
|
||||||
_videoPlayerContainer.CurrentPosition -= 0.5;
|
|
||||||
e.SuppressKeyPress = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1157,6 +1157,7 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
videoPlayerContainer.VideoPlayer.Initialize(videoPlayerContainer.PanelPlayer, fileName, onVideoLoaded, onVideoEnded);
|
videoPlayerContainer.VideoPlayer.Initialize(videoPlayerContainer.PanelPlayer, fileName, onVideoLoaded, onVideoEnded);
|
||||||
videoPlayerContainer.ShowStopButton = Configuration.Settings.General.VideoPlayerShowStopButton;
|
videoPlayerContainer.ShowStopButton = Configuration.Settings.General.VideoPlayerShowStopButton;
|
||||||
videoPlayerContainer.Volume = Configuration.Settings.General.VideoPlayerDefaultVolume;
|
videoPlayerContainer.Volume = Configuration.Settings.General.VideoPlayerDefaultVolume;
|
||||||
|
videoPlayerContainer.EnableMouseWheelStep();
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user