mirror of https://github.com/odrling/Aegisub
Fixed minor glitch and some little update to vfr
Originally committed to SVN as r158.
This commit is contained in:
parent
41b140d6b0
commit
9e3ffaf523
19
core/vfr.cpp
19
core/vfr.cpp
|
@ -353,14 +353,23 @@ int FrameRate::GetFrameAtTime(int ms,bool start) {
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// Get correct time at frame
|
// Get correct time at frame
|
||||||
// compensates and returns an end time when start=false
|
// compensates and returns an end time when start=false
|
||||||
int FrameRate::GetTimeAtFrame(int frame,bool start) {
|
int FrameRate::GetTimeAtFrame(int frame,bool start,bool exact) {
|
||||||
int finalTime;
|
int finalTime;
|
||||||
if (start) {
|
|
||||||
finalTime = (PTimeAtFrame(frame-1) + PTimeAtFrame(frame))/2;
|
// Exact, for display
|
||||||
|
if (exact) {
|
||||||
|
finalTime = PTimeAtFrame(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adjusted, for subs sync
|
||||||
else {
|
else {
|
||||||
if (FrameRateType == VFR) finalTime = PTimeAtFrame(frame);
|
if (start) {
|
||||||
else finalTime = (PTimeAtFrame(frame) + PTimeAtFrame(frame+1))/2;
|
finalTime = (PTimeAtFrame(frame-1) + PTimeAtFrame(frame))/2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (FrameRateType == VFR) finalTime = PTimeAtFrame(frame);
|
||||||
|
else finalTime = (PTimeAtFrame(frame) + PTimeAtFrame(frame+1))/2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalTime;
|
return finalTime;
|
||||||
|
|
|
@ -88,7 +88,7 @@ public:
|
||||||
void Load(wxString file);
|
void Load(wxString file);
|
||||||
void Unload();
|
void Unload();
|
||||||
int GetFrameAtTime(int ms,bool start=true);
|
int GetFrameAtTime(int ms,bool start=true);
|
||||||
int GetTimeAtFrame(int frame,bool start=true);
|
int GetTimeAtFrame(int frame,bool start=true,bool exact=false);
|
||||||
|
|
||||||
double GetAverage() { return AverageFrameRate; };
|
double GetAverage() { return AverageFrameRate; };
|
||||||
bool IsLoaded() { return loaded; };
|
bool IsLoaded() { return loaded; };
|
||||||
|
|
|
@ -207,6 +207,7 @@ void VideoDisplay::SetVideo(const wxString &filename) {
|
||||||
Options.AddToRecentList(filename,_T("Recent vid"));
|
Options.AddToRecentList(filename,_T("Recent vid"));
|
||||||
|
|
||||||
RefreshVideo();
|
RefreshVideo();
|
||||||
|
UpdatePositionDisplay();
|
||||||
} catch (wxString &e) {
|
} catch (wxString &e) {
|
||||||
wxMessageBox(e,_T("Error setting video"),wxICON_ERROR | wxOK);
|
wxMessageBox(e,_T("Error setting video"),wxICON_ERROR | wxOK);
|
||||||
}
|
}
|
||||||
|
@ -520,8 +521,7 @@ void VideoDisplay::UpdatePositionDisplay() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get time
|
// Get time
|
||||||
int time = VFR_Output.GetTimeAtFrame(frame_n);
|
int time = VFR_Output.GetTimeAtFrame(frame_n,true,true);
|
||||||
//int time = VFR_Output.CorrectTimeAtFrame(frame_n,false);
|
|
||||||
int temp = time;
|
int temp = time;
|
||||||
int h=0, m=0, s=0, ms=0;
|
int h=0, m=0, s=0, ms=0;
|
||||||
while (temp >= 3600000) {
|
while (temp >= 3600000) {
|
||||||
|
@ -564,7 +564,7 @@ void VideoDisplay::UpdateSubsRelativeTime() {
|
||||||
|
|
||||||
// Set start/end
|
// Set start/end
|
||||||
if (curLine) {
|
if (curLine) {
|
||||||
int time = VFR_Output.GetTimeAtFrame(frame_n);
|
int time = VFR_Output.GetTimeAtFrame(frame_n,true,true);
|
||||||
startOff = time - curLine->Start.GetMS();
|
startOff = time - curLine->Start.GetMS();
|
||||||
endOff = time - curLine->End.GetMS();
|
endOff = time - curLine->End.GetMS();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue