forked from mia/Aegisub
Prevent times from rounding to the magic zero in the framerate transform. Updates #1007.
Originally committed to SVN as r3839.
This commit is contained in:
parent
4a31f0375f
commit
a1f3fb7dc0
1 changed files with 6 additions and 4 deletions
|
@ -200,16 +200,12 @@ void AssTransformFramerateFilter::TransformTimeTags (wxString name,int n,AssOver
|
||||||
int value;
|
int value;
|
||||||
switch (curParam->classification) {
|
switch (curParam->classification) {
|
||||||
case PARCLASS_RELATIVE_TIME_START:
|
case PARCLASS_RELATIVE_TIME_START:
|
||||||
start = true;
|
|
||||||
mult = 1;
|
|
||||||
break;
|
break;
|
||||||
case PARCLASS_RELATIVE_TIME_END:
|
case PARCLASS_RELATIVE_TIME_END:
|
||||||
start = false;
|
start = false;
|
||||||
mult = 1;
|
|
||||||
break;
|
break;
|
||||||
case PARCLASS_KARAOKE:
|
case PARCLASS_KARAOKE:
|
||||||
karaoke = true;
|
karaoke = true;
|
||||||
start = true;
|
|
||||||
mult = 10;
|
mult = 10;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -244,6 +240,11 @@ void AssTransformFramerateFilter::TransformTimeTags (wxString name,int n,AssOver
|
||||||
int newStart = instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(curDiag->Start.GetMS()));
|
int newStart = instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(curDiag->Start.GetMS()));
|
||||||
int absTime = curDiag->Start.GetMS() + parVal;
|
int absTime = curDiag->Start.GetMS() + parVal;
|
||||||
value = instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(absTime)) - newStart;
|
value = instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(absTime)) - newStart;
|
||||||
|
|
||||||
|
// An end time of 0 is actually the end time of the line, so ensure nonzero is never converted to 0
|
||||||
|
// Needed in the start case as well as the end one due to \t, whose end time needs the start time
|
||||||
|
// behavior
|
||||||
|
if (value == 0 && parVal != 0) value = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// End time
|
// End time
|
||||||
|
@ -251,6 +252,7 @@ void AssTransformFramerateFilter::TransformTimeTags (wxString name,int n,AssOver
|
||||||
int newEnd = instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(curDiag->End.GetMS()));
|
int newEnd = instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(curDiag->End.GetMS()));
|
||||||
int absTime = curDiag->End.GetMS() - parVal;
|
int absTime = curDiag->End.GetMS() - parVal;
|
||||||
value = newEnd - instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(absTime));
|
value = newEnd - instance.Input->GetTimeAtFrame(instance.Output->GetFrameAtTime(absTime));
|
||||||
|
if (value == 0 && parVal != 0) value = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Karaoke postprocess
|
// Karaoke postprocess
|
||||||
|
|
Loading…
Reference in a new issue