summaryrefslogtreecommitdiff
path: root/server/recplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/recplayer.c')
-rw-r--r--server/recplayer.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/server/recplayer.c b/server/recplayer.c
index f4fe1cd..f85ed45 100644
--- a/server/recplayer.c
+++ b/server/recplayer.c
@@ -19,6 +19,10 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+#include <iostream>
+#include <fstream>
+#include <string>
+
#include "recplayer.h"
// for TSPLAY patch detection
@@ -210,6 +214,47 @@ cRecording* RecPlayer::getCurrentRecording()
return recording;
}
+int RecPlayer::frameFromResume()
+{
+ int frame = 0;
+ char fileName[2048];
+ snprintf(fileName, 2047, "%s/resume", recording->FileName());
+ std::ifstream ifs;
+ ifs.open(fileName);
+ if (!ifs.is_open()) return 0;
+ std::string sFrame;
+ getline(ifs, sFrame);
+ ifs.close();
+ sFrame=sFrame.substr(2);
+ frame=atoi(sFrame.c_str());
+ return frame;
+}
+
+int RecPlayer::frameFromMark(int index)
+{
+ char fileName[2048];
+ snprintf(fileName, 2047, "%s/marks", recording->FileName());
+ std::ifstream ifs;
+ ifs.open(fileName);
+ if (!ifs.is_open()) return 0;
+ std::string sTime;
+ for (int i=0; i<=index; i++) {
+ getline(ifs, sTime);
+ if (ifs.eof()) break;
+ }
+ ifs.close();
+ int seconds = 0, minutes = 0, hours = 0;
+ hours = atoi(sTime.substr(0, sTime.find(":")).c_str());
+ minutes = atoi(sTime.substr(sTime.find(":") + 1, 2).c_str());
+ seconds = atoi(sTime.substr(sTime.rfind(":") + 1, 2).c_str());
+ return frameFromSeconds(seconds + minutes * 60 + hours * 3600);
+}
+
+int RecPlayer::frameFromSeconds(int seconds)
+{
+ return 25 * seconds; // 25fps
+}
+
uint64_t RecPlayer::positionFromFrameNumber(uint32_t frameNumber)
{
if (!indexFile) return 0;