]> git.vomp.tv Git - vompclient.git/commitdiff
Resume functionality switched to frame numbers
authorChris Tallon <chris@vomp.tv>
Sun, 11 Jun 2006 21:09:06 +0000 (21:09 +0000)
committerChris Tallon <chris@vomp.tv>
Sun, 11 Jun 2006 21:09:06 +0000 (21:09 +0000)
defines.h
player.cc
player.h
vdr.cc
vdr.h
vvideorec.cc
vvideorec.h

index 2fc1292324cd0b8e4a2ee1f4d95daaf8c3115363..e6e40030fdc638d97820ad971c1bdee706b1b090 100644 (file)
--- a/defines.h
+++ b/defines.h
@@ -47,7 +47,7 @@ void MILLISLEEP(ULONG a);
   #define VSNPRINTF _vsnprintf
   #define STRCASECMP _stricmp
   #define STRCASESTR StrStrI
-  #define STRTOULL _strtoui64
+/*  #define STRTOULL _strtoui64 */
   #define CLOSESOCKET closesocket
 
 #else
@@ -59,7 +59,7 @@ void MILLISLEEP(ULONG a);
   #define VSNPRINTF vsnprintf
   #define STRCASECMP strcasecmp
   #define STRCASESTR strcasestr
-  #define STRTOULL strtoull
+  #define STRTOUL strtoul
   #define CLOSESOCKET close
 
 #endif
index 628bbf5818a036ae498cea04f7c311e8087c5569..88331ab5da04e2537d87727b9e381b7242303af1 100644 (file)
--- a/player.cc
+++ b/player.cc
@@ -128,9 +128,17 @@ int Player::shutdown()
   return 1;
 }
 
-void Player::setPosition(ULLONG position)
+void Player::setStartFrame(ULONG startFrame)
 {
-  feedPosition = position;
+  startFrameNum = startFrame;
+  if (startFrameNum)
+  {
+    feedPosition = VDR::getInstance()->positionFromFrameNumber(startFrameNum);
+  }
+  else
+  {
+    feedPosition = 0;
+  }
 }
 
 void Player::setLengthBytes(ULLONG length)
@@ -277,7 +285,8 @@ int Player::playInt(bool* doUnlock)
   audio->reset();
   video->reset();
   demuxer->reset();
-  demuxer->setFrameNum(0);
+  if (startFrameNum > lengthFrames) startFrameNum = 0;
+  demuxer->setFrameNum(startFrameNum);
   if (!isRadio) demuxer->seek();
 
   videoStartup = true;
index cf25d4e5111a5125b7ea88306f00b93226f31684..4d8a25e813d04675f89b20350f4164557ef3be11 100644 (file)
--- a/player.h
+++ b/player.h
@@ -48,7 +48,7 @@ class Player : public Thread_TYPE, public Callback
 
     int init();
     int shutdown();
-    void setPosition(ULLONG position);
+    void setStartFrame(ULONG frameNum);
     void setLengthBytes(ULLONG length);
     void setLengthFrames(ULONG length);
 
@@ -118,7 +118,7 @@ class Player : public Thread_TYPE, public Callback
     void lock();
     void unLock();
 
-//    ULLONG endTS;
+    ULONG startFrameNum;
     ULLONG lengthBytes;
     ULONG lengthFrames;
     ULLONG feedPosition;
diff --git a/vdr.cc b/vdr.cc
index 36dd7da2ef35319166f5ba5a992c1cc28ab4ddcc..5a8db295aaf49ceaed729cf64b06b181c57eb157 100644 (file)
--- a/vdr.cc
+++ b/vdr.cc
@@ -886,14 +886,14 @@ EventList* VDR::getChannelSchedule(ULONG number, time_t start, ULONG duration)
   return eventList;
 }
 
-ULLONG VDR::getResumePoint(char* fileName)
+ULONG VDR::getResumePoint(char* fileName)
 {
   if (!connected) return 0;
 
   char* resumeString = configLoad("ResumeData", fileName);
   if (!resumeString) return 0;
 
-  ULLONG toReturn = STRTOULL(resumeString, NULL, 10);
+  ULONG toReturn = STRTOUL(resumeString, NULL, 10);
   delete[] resumeString;
   return toReturn;
 }
diff --git a/vdr.h b/vdr.h
index f80b6e66dbc3adcfbe36cf9db9a75bf9d4529e4e..de5a97cc826d5be81d2801779cb32541c18b614f 100644 (file)
--- a/vdr.h
+++ b/vdr.h
@@ -87,7 +87,7 @@ class VDR
     int connect();
     void disconnect();
     bool isConnected() { return connected; }
-    ULLONG getResumePoint(char* fileName);  // uses configLoad
+    ULONG getResumePoint(char* fileName);  // uses configLoad
 
     void setReceiveWindow(size_t size);
 
index 9580abae84b3fdfda0a1a0a227c5df4ef128e848..55cca718a533f92442c18d74d95ec32a4561fff5 100644 (file)
@@ -93,9 +93,9 @@ void VVideoRec::draw()
   View::draw();
 }
 
-void VVideoRec::go(ULLONG startPosition)
+void VVideoRec::go(ULONG startFrameNum)
 {
-  Log::getInstance()->log("VVideoRec", Log::DEBUG, "Starting stream: %s", myRec->getFileName());
+  Log::getInstance()->log("VVideoRec", Log::DEBUG, "Starting stream: %s at frame: %lu", myRec->getFileName(), startFrameNum);
   ULONG lengthFrames = 0;
   ULLONG lengthBytes = vdr->streamRecording(myRec->getFileName(), &lengthFrames);
   if (lengthBytes)
@@ -103,7 +103,7 @@ void VVideoRec::go(ULLONG startPosition)
     doBar(0);
     player->setLengthBytes(lengthBytes);
     player->setLengthFrames(lengthFrames);
-    player->setPosition(startPosition);
+    player->setStartFrame(startFrameNum);
     player->play();
     playing = true;
   }
index 482813b76513729ee5ae96144657e022d0b79f96..6916e0c6b315acec14d234b7c2436a9bd2f0e162 100644 (file)
@@ -44,7 +44,7 @@ class VVideoRec : public View, public TimerReceiver
     ~VVideoRec();
     void draw();
     int handleCommand(int command);
-    void go(ULLONG startPosition);
+    void go(ULONG startPosition);
 
     void timercall(int clientReference);