mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 14:32:35 +01:00
Added two new subtitle formats + some subtitle format refactoring
git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@852 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
parent
7825f013ba
commit
b259574bbf
@ -147,7 +147,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
int frames = (int)(time.TotalMilliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate)) + 1;
|
||||
int frames = MillisecondsToFrames(time.TotalMilliseconds) + 1;
|
||||
return frames.ToString();
|
||||
}
|
||||
|
||||
|
@ -58,8 +58,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
139
src/Logic/SubtitleFormats/AdobeEncoreLineTabs.cs
Normal file
139
src/Logic/SubtitleFormats/AdobeEncoreLineTabs.cs
Normal file
@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
{
|
||||
class AdobeEncoreLineTabs : SubtitleFormat
|
||||
{
|
||||
public override string Extension
|
||||
{
|
||||
get { return ".txt"; }
|
||||
}
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get { return "Adobe Encore (line/tabs)"; }
|
||||
}
|
||||
|
||||
public override bool HasLineNumber
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool IsTimeBased
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool IsMine(List<string> lines, string fileName)
|
||||
{
|
||||
var subtitle = new Subtitle();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
foreach (string line in lines)
|
||||
sb.AppendLine(line);
|
||||
|
||||
LoadSubtitle(subtitle, lines, fileName);
|
||||
return subtitle.Paragraphs.Count > _errorCount;
|
||||
}
|
||||
|
||||
public override string ToText(Subtitle subtitle, string title)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int index = 0;
|
||||
foreach (Paragraph p in subtitle.Paragraphs)
|
||||
{
|
||||
index++;
|
||||
//0002 00:01:48:22 00:01:52:17 - I need those samples, fast!//- Yes, professor.
|
||||
string text = p.Text;
|
||||
text = text.Replace("<i>", "@Italic@");
|
||||
text = text.Replace("</i>", "@Italic@");
|
||||
text = text.Replace(Environment.NewLine, "//");
|
||||
sb.AppendLine(string.Format("{0:0000}\t{1}\t{2}\t{3}", index, EncodeTimeCode(p.StartTime), EncodeTimeCode(p.EndTime), Utilities.RemoveHtmlTags(text)));
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
{
|
||||
//0002 00:01:48:22 00:01:52:17 - I need those samples, fast!//- Yes, professor.
|
||||
Paragraph p = null;
|
||||
subtitle.Paragraphs.Clear();
|
||||
var regexTimeCodes = new Regex(@"^\d\d\d\d\t\d\d:\d\d:\d\d:\d\d\t\d\d:\d\d:\d\d:\d\d\t", RegexOptions.Compiled);
|
||||
foreach (string line in lines)
|
||||
{
|
||||
string s = line.Replace(" ", "\t");
|
||||
if (regexTimeCodes.IsMatch(s))
|
||||
{
|
||||
var temp = s.Split('\t');
|
||||
if (temp.Length > 1)
|
||||
{
|
||||
string start = temp[1];
|
||||
string end = temp[2];
|
||||
|
||||
string[] startParts = start.Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] endParts = end.Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
||||
if (startParts.Length == 4 && endParts.Length == 4)
|
||||
{
|
||||
string text = s.Remove(0, regexTimeCodes.Match(s).Length - 1).Trim();
|
||||
if (!text.Contains(Environment.NewLine))
|
||||
text = text.Replace("//", Environment.NewLine);
|
||||
if (text.Contains("@Italic@"))
|
||||
{
|
||||
bool italicOn = false;
|
||||
while (text.Contains("@Italic@"))
|
||||
{
|
||||
int index = text.IndexOf("@Italic@");
|
||||
string italicTag = "<i>";
|
||||
if (italicOn)
|
||||
italicTag = "</i>";
|
||||
text = text.Remove(index, "@Italic@".Length).Insert(index, italicTag);
|
||||
italicOn = !italicOn;
|
||||
}
|
||||
text = Utilities.FixInvalidItalicTags(text);
|
||||
}
|
||||
p = new Paragraph(DecodeTimeCode(startParts), DecodeTimeCode(endParts), text);
|
||||
subtitle.Paragraphs.Add(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (line.Trim().Length == 0)
|
||||
{
|
||||
// skip these lines
|
||||
}
|
||||
else if (line.Trim().Length > 0 && p != null)
|
||||
{
|
||||
_errorCount++;
|
||||
}
|
||||
}
|
||||
|
||||
subtitle.Renumber(1);
|
||||
}
|
||||
|
||||
private TimeCode DecodeTimeCode(string[] parts)
|
||||
{
|
||||
//00:00:07:12
|
||||
string hour = parts[0];
|
||||
string minutes = parts[1];
|
||||
string seconds = parts[2];
|
||||
string frames = parts[3];
|
||||
|
||||
int milliseconds = (int)((1000.0 / Configuration.Settings.General.CurrentFrameRate) * int.Parse(frames));
|
||||
if (milliseconds > 999)
|
||||
milliseconds = 999;
|
||||
|
||||
TimeCode tc = new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), milliseconds);
|
||||
return tc;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -55,8 +55,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
int frames = (int) (time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
@ -58,8 +58,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
@ -137,8 +137,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
|
||||
private static string ConvertToTimeString(TimeCode time)
|
||||
{
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -87,8 +87,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
private TimeCode DecodeTimeCode(string[] parts)
|
||||
|
@ -120,8 +120,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
private TimeCode DecodeTimeCode(string[] parts)
|
||||
|
@ -670,7 +670,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
if (timeCode.Hours == 7 && timeCode.Minutes == 35)
|
||||
highPart = "065535";
|
||||
|
||||
byte frames = (byte)(timeCode.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
byte frames = (byte)MillisecondsToFrames(timeCode.Milliseconds);
|
||||
string lowPart = string.Format("{0:00}", timeCode.Seconds) + string.Format("{0:00}", frames);
|
||||
|
||||
int high = int.Parse(highPart);
|
||||
|
@ -64,8 +64,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//[00:00:07.12]
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("[{0:00}:{1:00}:{2:00}.{3:00}]", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("[{0:00}:{1:00}:{2:00}.{3:00}]", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
@ -55,8 +55,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
int frames = (int) (time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
@ -54,8 +54,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
125
src/Logic/SubtitleFormats/SonyDVDArchitectLineAndDuration.cs
Normal file
125
src/Logic/SubtitleFormats/SonyDVDArchitectLineAndDuration.cs
Normal file
@ -0,0 +1,125 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
{
|
||||
public class SonyDVDArchitectLineAndDuration : SubtitleFormat
|
||||
{
|
||||
public override string Extension
|
||||
{
|
||||
get { return ".txt"; }
|
||||
}
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get { return "Sony DVDArchitect line/duration"; }
|
||||
}
|
||||
|
||||
public override bool HasLineNumber
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool IsTimeBased
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool IsMine(List<string> lines, string fileName)
|
||||
{
|
||||
var subtitle = new Subtitle();
|
||||
LoadSubtitle(subtitle, lines, fileName);
|
||||
return subtitle.Paragraphs.Count > _errorCount;
|
||||
}
|
||||
|
||||
public override string ToText(Subtitle subtitle, string title)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine("Title: " + title);
|
||||
sb.AppendLine("Translator: No Author");
|
||||
sb.AppendLine("Date: " + DateTime.Now.ToString("dd-MM-yyyy").Replace("-",".")); // 25.08.2011
|
||||
double milliseconds = 0;
|
||||
if (subtitle.Paragraphs.Count > 0)
|
||||
milliseconds = subtitle.Paragraphs[subtitle.Paragraphs.Count-1].EndTime.TotalMilliseconds;
|
||||
var tc = new TimeCode(TimeSpan.FromMilliseconds(milliseconds));
|
||||
sb.AppendLine(string.Format("Duration: {0:00}:{1:00}:{2:00}:{3:00}", tc.Hours, tc.Minutes, tc.Seconds, MillisecondsToFrames(tc.Milliseconds))); // 01:20:49:12
|
||||
sb.AppendLine("Program start: 00:00:00:00");
|
||||
sb.AppendLine("Title count: " + subtitle.Paragraphs.Count);
|
||||
sb.AppendLine();
|
||||
sb.AppendLine("#\tIn\tOut\tDuration");
|
||||
sb.AppendLine();
|
||||
int count = 0;
|
||||
foreach (Paragraph p in subtitle.Paragraphs)
|
||||
{
|
||||
count++;
|
||||
string text = Utilities.RemoveHtmlTags(p.Text);
|
||||
sb.AppendLine(string.Format("{13}\t{0:00}:{1:00}:{2:00}:{3:00}\t{4:00}:{5:00}:{6:00}:{7:00}\t{8:00}:{9:00}:{10:00}:{11:00}\r\n{12:00}" + Environment.NewLine,
|
||||
p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, MillisecondsToFrames(p.StartTime.Milliseconds),
|
||||
p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, MillisecondsToFrames(p.EndTime.Milliseconds),
|
||||
p.Duration.Hours, p.Duration.Minutes, p.Duration.Seconds, MillisecondsToFrames(p.Duration.Milliseconds),
|
||||
text, count));
|
||||
}
|
||||
return sb.ToString().Trim() + Environment.NewLine + Environment.NewLine + Environment.NewLine;
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
{ //22 00:04:19:12 00:04:21:09 00:00:01:21
|
||||
|
||||
var regex = new Regex(@"^\d+\t\d\d:\d\d:\d\d:\d\d\t\d\d:\d\d:\d\d:\d\d\t\d\d:\d\d:\d\d:\d\d$", RegexOptions.Compiled);
|
||||
_errorCount = 0;
|
||||
Paragraph lastParagraph = null;
|
||||
int count = 0;
|
||||
foreach (string line in lines)
|
||||
{
|
||||
string s = line;
|
||||
if (s.Length > 0)
|
||||
{
|
||||
bool success = false;
|
||||
var match = regex.Match(s);
|
||||
if (s.Length > 31 && match.Success)
|
||||
{
|
||||
if (lastParagraph != null)
|
||||
subtitle.Paragraphs.Add(lastParagraph);
|
||||
|
||||
var arr = s.Split('\t');
|
||||
TimeCode start = DecodeTimeCode(arr[1]);
|
||||
TimeCode end = DecodeTimeCode(arr[2]);
|
||||
lastParagraph = new Paragraph(start, end, string.Empty);
|
||||
success = true;
|
||||
}
|
||||
else if (line.Trim().Length > 0 && lastParagraph != null && Utilities.CountTagInText(lastParagraph.Text, Environment.NewLine) < 4)
|
||||
{
|
||||
lastParagraph.Text = (lastParagraph.Text + Environment.NewLine + line).Trim();
|
||||
success = true;
|
||||
}
|
||||
if (!success && count > 9)
|
||||
_errorCount++;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
if (lastParagraph != null)
|
||||
subtitle.Paragraphs.Add(lastParagraph);
|
||||
subtitle.Renumber(1);
|
||||
}
|
||||
|
||||
private TimeCode DecodeTimeCode(string s)
|
||||
{
|
||||
var parts = s.Split(':');
|
||||
|
||||
//00:00:07:12
|
||||
string hour = parts[0];
|
||||
string minutes = parts[1];
|
||||
string seconds = parts[2];
|
||||
string frames = parts[3];
|
||||
|
||||
int milliseconds = (int)((1000.0 / Configuration.Settings.General.CurrentFrameRate) * int.Parse(frames));
|
||||
if (milliseconds > 999)
|
||||
milliseconds = 999;
|
||||
|
||||
TimeCode tc = new TimeCode(int.Parse(hour), int.Parse(minutes), int.Parse(seconds), milliseconds);
|
||||
return tc;
|
||||
}
|
||||
}
|
||||
}
|
@ -86,10 +86,7 @@ $TapeOffset = FALSE
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:01:54:19
|
||||
|
||||
int frames = (int) (time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
@ -69,8 +69,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
@ -17,6 +17,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
new SubRip(),
|
||||
new AbcIViewer(),
|
||||
new AdobeEncore(),
|
||||
new AdobeEncoreLineTabs(),
|
||||
new AdobeEncoreTabs(),
|
||||
new AdobeEncoreWithLineNumbers(),
|
||||
new AdvancedSubStationAlpha(),
|
||||
@ -50,6 +51,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
new ScenaristClosedCaptions(),
|
||||
new SonyDVDArchitect(),
|
||||
new SonyDVDArchitectExplicitDuration(),
|
||||
new SonyDVDArchitectLineAndDuration(),
|
||||
new SonyDVDArchitectTabs(),
|
||||
new SonyDVDArchitectWithLineNumbers(),
|
||||
new SubStationAlpha(),
|
||||
@ -157,5 +159,10 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
}
|
||||
}
|
||||
|
||||
public static int MillisecondsToFrames(double milliseconds)
|
||||
{
|
||||
return (int)(milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -139,8 +139,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate))+1;
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
private TimeCode DecodeTimeCode(string[] parts)
|
||||
|
@ -94,8 +94,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//0:03:02.15
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0}:{1:00}:{2:00}.{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0}:{1:00}:{2:00}.{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
private TimeCode DecodeTimeCode(string timePart)
|
||||
|
@ -58,8 +58,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
private string EncodeTimeCode(TimeCode time)
|
||||
{
|
||||
//00:03:15:22 (last is frame)
|
||||
int frames = (int)(time.Milliseconds / (1000.0 / Configuration.Settings.General.CurrentFrameRate));
|
||||
return string.Format("{0:00}{1:00}{2:00}{3:00}", time.Hours, time.Minutes, time.Seconds, frames);
|
||||
return string.Format("{0:00}{1:00}{2:00}{3:00}", time.Hours, time.Minutes, time.Seconds, MillisecondsToFrames(time.Milliseconds));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
|
@ -576,6 +576,7 @@
|
||||
<Compile Include="Logic\Spellcheck\WindowsHunspell.cs" />
|
||||
<Compile Include="Logic\StripableText.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdobeEncore.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdobeEncoreLineTabs.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdobeEncoreTabs.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdobeEncoreWithLineNumbers.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdvancedSubStationAlpha.cs" />
|
||||
@ -605,6 +606,7 @@
|
||||
<Compile Include="Logic\SubtitleFormats\ScenaristClosedCaptions.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\Son.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\SonyDVDArchitectExplicitDuration.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\SonyDVDArchitectLineAndDuration.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\SonyDVDArchitectTabs.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\SonyDVDArchitectWithLineNumbers.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\Ebu.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user