]> git.vomp.tv Git - vompclient.git/commitdiff
Minor changes ready for radio nav
authorChris Tallon <chris@vomp.tv>
Sat, 11 Nov 2006 23:55:47 +0000 (23:55 +0000)
committerChris Tallon <chris@vomp.tv>
Sat, 11 Nov 2006 23:55:47 +0000 (23:55 +0000)
recinfo.cc
recinfo.h
recording.cc
vdr.h
vrecordinglist.cc
vrecordinglist.h
vvideorec.cc
vvideorec.h

index 84eb11159c2b8f8c50a1b7911494a29874838659..3a22c35f9bc3f0a1518e4bbc2d6342482fc5a573 100644 (file)
@@ -36,12 +36,16 @@ RecInfo::RecInfo()
 
 RecInfo::~RecInfo()
 {
+  Log::getInstance()->log("RecInfo", Log::CRAZY, "Deleting recinfo: %lu, %s", numComponents, summary);
+
   if (summary) delete[] summary;
 
   for (ULONG i = 0; i < numComponents; i++)
   {
-    delete[] languages[i];
-    delete[] descriptions[i];
+    Log::getInstance()->log("RecInfo", Log::CRAZY, "i: %lu, languages[i]=%p:%s", i, languages[i], languages[i]);
+    Log::getInstance()->log("RecInfo", Log::CRAZY, "i: %lu, descripti[i]=%p:%s", i, descriptions[i], descriptions[i]);
+    if (languages[i]) delete[] (languages[i]);
+    if (descriptions[i]) delete[] (descriptions[i]);
   }
 
   if (numComponents)
@@ -101,3 +105,13 @@ void RecInfo::print()
     logger->log("RecInfo", Log::DEBUG, "descriptions[%lu]: %s", i, descriptions[i]);
   }
 }
+
+bool RecInfo::hasVideo()
+{
+  // video = 1, audio = 2
+
+  for (ULONG i = 0; i < numComponents; i++)
+    if (streams[i] == 1) return true;
+
+  return false;
+}
index 880d9abf518f969ce4a4fa8b4efb2d5796715ab4..9442f327c0d22ebea419537532015fe1820b7e91 100644 (file)
--- a/recinfo.h
+++ b/recinfo.h
@@ -49,6 +49,8 @@ class RecInfo
 
     void print();
 
+    bool hasVideo();
+
   private:
 
 };
index 28423477e9ec68c1dd62de21b309f2e548b6bd64..c0d1157f19e4e85a4d0e571084077336357cbd54 100644 (file)
@@ -81,6 +81,7 @@ void Recording::loadRecInfo()
   if (recInfo) delete recInfo;
   recInfoFor = this;
   recInfo = VDR::getInstance()->getRecInfo(fileName);
+  Log::getInstance()->log("Recording", Log::DEBUG, "Recording has loaded recInfo %p", recInfo);
 }
 
 void Recording::dropRecInfo()
diff --git a/vdr.h b/vdr.h
index 5d512e12901eddf5ef17ed977ac913146b2b97fb..6133d8bf9212f077b8fcdfb6eca6192f3525fcee 100644 (file)
--- a/vdr.h
+++ b/vdr.h
@@ -198,3 +198,23 @@ class VDR
 
 #endif
 
+/*
+
+index.vdr file format for video:
+
+For every video frame:
+{
+  File offset    4 bytes
+  Picture type   1 byte
+  File number    1 byte
+  Zero           2 bytes
+}
+
+Picture types:
+
+#define NO_PICTURE 0
+#define I_FRAME    1
+#define P_FRAME    2
+#define B_FRAME    3
+
+*/
index ec4bcd2b4d75d56fb0386659e4554ef43356dac7..822de8b3679f71efd0ff86281165fa571946bf47 100644 (file)
@@ -202,13 +202,13 @@ void VRecordingList::processMessage(Message* m)
 
   if (m->message == Message::PLAY_SELECTED_RECORDING)
   {
-    doPlay();
+    doPlay(false);
     return;
   }
 
   if (m->message == Message::RESUME_SELECTED_RECORDING)
   {
-    doResume();
+    doPlay(true);
     return;
   }
 }
@@ -291,7 +291,7 @@ void VRecordingList::doMoveRecording(Directory* toDir)
   }
 }
 
-int VRecordingList::doPlay()
+int VRecordingList::doPlay(bool resume)
 {
   Recording* toPlay = getCurrentOptionRecording();
   if (toPlay)
@@ -301,33 +301,13 @@ int VRecordingList::doPlay()
     vidrec->draw();
     viewman->add(vidrec);
     viewman->updateView(vidrec);
-    vidrec->go(0);
+    vidrec->go(resume);
     return 1;
   }
   // should not get to here
   return 0;
 }
 
-int VRecordingList::doResume()
-{
-  Recording* toResume = getCurrentOptionRecording();
-
-  if (toResume)
-  {
-    toResume->loadRecInfo();
-
-    VVideoRec* vidrec = new VVideoRec(toResume);
-    vidrec->draw();
-    viewman->add(vidrec);
-    viewman->updateView(vidrec);
-    vidrec->go(toResume->recInfo->resumePoint);
-    return 1;
-  }
-
-// should not get to here
-  return 0;
-}
-
 Recording* VRecordingList::getCurrentOptionRecording()
 {
   Recording* currentRec;
@@ -447,7 +427,7 @@ int VRecordingList::handleCommand(int command)
     }
     case Remote::PLAY:
     {
-      if (doResume()) return 2;
+      if (doPlay(true)) return 2;
       return 1;
     }
 
index 7f3bdebc3452babee4b8a3281f0dadefbf97b242..007c8e93b2014cbf672240a86da101b70f8f5986 100644 (file)
@@ -66,8 +66,7 @@ class VRecordingList : public View
 
     void doShowingBar();
     void doDeleteSelected();
-    int doPlay();
-    int doResume();
+    int doPlay(bool resume);
     void doMoveRecording(Directory* toDir);
     Recording* getCurrentOptionRecording();
 
index 2f48e3ca6aced9bfc593be185c28161bbef5f2fa..d9b3b2326e09b583a021dfa5115f6499a3bcb39a 100644 (file)
@@ -26,9 +26,11 @@ VVideoRec::VVideoRec(Recording* rec)
   video = Video::getInstance();
   timers = Timers::getInstance();
 
-  // TODO Work out if is a radio stream
+  isRadio = !(rec->recInfo->hasVideo());
 
-  player = new Player(Command::getInstance(), this, true, false);
+  Log::getInstance()->log("VVideoRec", Log::DEBUG, "hasVideo = %i", isRadio);
+
+  player = new Player(Command::getInstance(), this, true, isRadio);
   player->init();
 
   videoMode = video->getMode();
@@ -110,8 +112,14 @@ void VVideoRec::draw()
   View::draw();
 }
 
-void VVideoRec::go(ULONG startFrameNum)
+void VVideoRec::go(bool resume)
 {
+  ULONG startFrameNum;
+  if (resume)
+    startFrameNum = myRec->recInfo->resumePoint;
+  else
+    startFrameNum = 0;
+
   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);
index 775afc321c4539896b53ec4b930076f61f0a5eec..15f619c94ee34251071643f5d98ed046c1edb109 100644 (file)
@@ -46,7 +46,7 @@ class VVideoRec : public View, public TimerReceiver
     ~VVideoRec();
     void draw();
     int handleCommand(int command);
-    void go(ULONG startPosition);
+    void go(bool resume);
 
     void timercall(int clientReference);
     void processMessage(Message* m);
@@ -67,6 +67,8 @@ class VVideoRec : public View, public TimerReceiver
     bool playing;
     bool barShowing;
     bool stickyBar;
+    bool isRadio;
+
     void doBar(int action);
     void drawBarClocks();
     void stopPlay();