[vdr] 01/01: Version 2.0.7 VDR version 2.0.7 is now available at

Tobias Grimm tiber-guest at moszumanska.debian.org
Sun Aug 30 16:18:05 UTC 2015


This is an automated email from the git hooks/post-receive script.

tiber-guest pushed a commit to annotated tag vdr-2.0.7
in repository vdr.

commit 6009ec60e842932f6ed2bdc6ffb4c333c52cb944
Author: Klaus Schmidinger <Klaus (dot) Schmidinger (at) tvdr (dot) de>
Date:   Tue Jan 20 10:23:00 2015 +0100

    Version 2.0.7
    VDR version 2.0.7 is now available at
    
           ftp://ftp.tvdr.de/vdr/vdr-2.0.7.tar.bz2
    
    A 'diff' against the previous version is available at
    
           ftp://ftp.tvdr.de/vdr/Developer/vdr-2.0.6-2.0.7.diff
    
    MD5 checksums:
    
    090c6f5b75b4710e39528734ebf2dcc8  vdr-2.0.7.tar.bz2
    035e2df20744f90d44017674521ebcd4  vdr-2.0.6-2.0.7.diff
    
    This version fixes a few minor bugs that came up after the release of
    version 2.0.6.
    
    From the HISTORY file:
    - Fixed a possible division by zero in frame rate detection.
    - Fixed a bug in the Makefile when installing plugins with LCLBLD=1 (thanks to
      Stefan Huelswitt).
    - Fixed jumping to an absolute position via the Red key in case replay was paused
      (reported by Dieter Ferdinand).
    - Now returning from removing deleted recordings after at most 10 seconds, or if the
      user presses a remote control key, to keep the system from getting unresponsive
      when removing a huge number of files (reported by Dieter Ferdinand).
    - Fixed generating the index file of an existing recording in case at the of a TS file
      there is less data in the buffer than needed by the frame detector. In such a case
      it was possible that frames were missed, and there was most likely a distortion
      when replaying that part of a recording. This is mostly a problem for recordings that
      consist of more than one *.ts file. Single file recordings could only lose some
      frames at their very end, which probably doesn't matter. At any rate, if you have
      generated an index file with VDR version 2.0.6 you may want to do so again with this
      version to make sure the index is OK.
---
 CONTRIBUTORS |  7 +++++++
 HISTORY      | 19 +++++++++++++++++++
 Makefile     |  4 ++--
 config.h     |  6 +++---
 menu.c       |  7 +++++--
 recording.c  | 32 +++++++++++++++++++++++++++-----
 remux.c      |  9 +++++++--
 7 files changed, 70 insertions(+), 14 deletions(-)

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index ee4e81c..20806df 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -232,6 +232,7 @@ Stefan Huelswitt <s.huelswitt at gmx.de>
  featured DVB cards
  for pointing out a bug in handling lowercase polarization characters in channel
  definitions if no DiSEqC is used
+ for fixing a bug in the Makefile when installing plugins with LCLBLD=1
 
 Ulrich R�der <roeder at efr-net.de>
  for pointing out that there are channels that have a symbol rate higher than 27500
@@ -3214,3 +3215,9 @@ Mariusz Bialonczyk <manio at skyboo.net>
 Christian Winkler <winkler_chr at yahoo.de>
  for reporting a problem with transfer mode on full featured DVB cards for encrypted
  channels that have no audio pid
+
+Dieter Ferdinand <dieter.ferdinand at gmx.de>
+ for reporting a problem with jumping to an absolute position via the Red key in
+ case replay was paused
+ for reporting a problem with the system getting unresponsive when removing a huge
+ number of files in the thread that removes deleted recordings
diff --git a/HISTORY b/HISTORY
index fa6a362..00aae4d 100644
--- a/HISTORY
+++ b/HISTORY
@@ -7915,3 +7915,22 @@ Video Disk Recorder Revision History
   on a system with a large number of recordings.
 - The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, sdt.h and
   the functional modification to cFont::CreateFont().
+
+2015-01-20: Version 2.0.7
+
+- Fixed a possible division by zero in frame rate detection.
+- Fixed a bug in the Makefile when installing plugins with LCLBLD=1 (thanks to
+  Stefan Huelswitt).
+- Fixed jumping to an absolute position via the Red key in case replay was paused
+  (reported by Dieter Ferdinand).
+- Now returning from removing deleted recordings after at most 10 seconds, or if the
+  user presses a remote control key, to keep the system from getting unresponsive
+  when removing a huge number of files (reported by Dieter Ferdinand).
+- Fixed generating the index file of an existing recording in case at the of a TS file
+  there is less data in the buffer than needed by the frame detector. In such a case
+  it was possible that frames were missed, and there was most likely a distortion
+  when replaying that part of a recording. This is mostly a problem for recordings that
+  consist of more than one *.ts file. Single file recordings could only lose some
+  frames at their very end, which probably doesn't matter. At any rate, if you have
+  generated an index file with VDR version 2.0.6 you may want to do so again with this
+  version to make sure the index is OK.
diff --git a/Makefile b/Makefile
index d24d08f..a3b238b 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
 # See the main source file 'vdr.c' for copyright information and
 # how to reach the author.
 #
-# $Id: Makefile 2.54 2013/03/11 15:01:01 kls Exp $
+# $Id: Makefile 2.54.1.1 2015/01/01 13:59:51 kls Exp $
 
 .DELETE_ON_ERROR:
 
@@ -220,7 +220,7 @@ plugins: include-dir vdr.pc
 	    INCLUDES="-I$(CWD)/include"\
 	    $(MAKE) --no-print-directory -C "$(PLUGINDIR)/src/$$i" VDRDIR="$(CWD)" || failed="$$failed $$i";\
 	    if [ -n "$(LCLBLD)" ] ; then\
-	       (cd $(PLUGINDIR)/src/$$i; for l in `find -name 'libvdr-*.so' -o -name 'lib$$i-*.so'`; do install $$l $(LIBDIR)/`basename $$l`.$(APIVERSION); done);\
+	       (cd $(PLUGINDIR)/src/$$i; for l in `find -name "libvdr-*.so" -o -name "lib$$i-*.so"`; do install $$l $(LIBDIR)/`basename $$l`.$(APIVERSION); done);\
 	       if [ -d $(PLUGINDIR)/src/$$i/po ]; then\
 	          for l in `ls $(PLUGINDIR)/src/$$i/po/*.mo`; do\
 	              install -D -m644 $$l $(LOCDIR)/`basename $$l | cut -d. -f1`/LC_MESSAGES/vdr-$$i.mo;\
diff --git a/config.h b/config.h
index b4d3756..5edc93b 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: config.h 2.76.1.7 2014/03/22 11:00:00 kls Exp $
+ * $Id: config.h 2.76.1.8 2014/04/13 14:00:42 kls Exp $
  */
 
 #ifndef __CONFIG_H
@@ -22,8 +22,8 @@
 
 // VDR's own version number:
 
-#define VDRVERSION  "2.0.6"
-#define VDRVERSNUM   20006  // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION  "2.0.7"
+#define VDRVERSNUM   20007  // Version * 10000 + Major * 100 + Minor
 
 // The plugin API's version number:
 
diff --git a/menu.c b/menu.c
index c158f02..82647b2 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menu.c 2.82.1.8 2014/02/26 11:42:28 kls Exp $
+ * $Id: menu.c 2.82.1.9 2015/01/13 09:52:59 kls Exp $
  */
 
 #include "menu.h"
@@ -4743,7 +4743,10 @@ void cReplayControl::TimeSearchProcess(eKeys Key)
     case kOk:
          if (timeSearchPos > 0) {
             Seconds = min(Total - STAY_SECONDS_OFF_END, Seconds);
-            Goto(SecondsToFrames(Seconds, FramesPerSecond()), Key == kDown || Key == kPause || Key == kOk);
+            bool Still = Key == kDown || Key == kPause || Key == kOk;
+            Goto(SecondsToFrames(Seconds, FramesPerSecond()), Still);
+            if (!Still)
+               Play();
             }
          timeSearchActive = false;
          break;
diff --git a/recording.c b/recording.c
index d62dd9c..3e680fc 100644
--- a/recording.c
+++ b/recording.c
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: recording.c 2.91.1.7 2014/03/16 11:03:18 kls Exp $
+ * $Id: recording.c 2.91.1.9 2015/01/17 13:50:38 kls Exp $
  */
 
 #include "recording.h"
@@ -63,6 +63,7 @@
 #define REMOVELATENCY      10 // seconds to wait until next check after removing a file
 #define MARKSUPDATEDELTA   10 // seconds between checks for updating editing marks
 #define MININDEXAGE      3600 // seconds before an index file is considered no longer to be written
+#define MAXREMOVETIME      10 // seconds after which to return from removing deleted recordings
 
 #define MAX_LINK_LEVEL  6
 
@@ -93,11 +94,16 @@ void cRemoveDeletedRecordingsThread::Action(void)
   // Make sure only one instance of VDR does this:
   cLockFile LockFile(VideoDirectory);
   if (LockFile.Lock()) {
+     time_t StartTime = time(NULL);
      bool deleted = false;
      cThreadLock DeletedRecordingsLock(&DeletedRecordings);
      for (cRecording *r = DeletedRecordings.First(); r; ) {
          if (cIoThrottle::Engaged())
             return;
+         if (time(NULL) - StartTime > MAXREMOVETIME)
+            return; // don't stay here too long
+         if (cRemote::HasKeys())
+            return; // react immediately on user input
          if (r->Deleted() && time(NULL) - r->Deleted() > DELETEDLIFETIME) {
             cRecording *next = DeletedRecordings.Next(r);
             r->Remove();
@@ -1740,6 +1746,7 @@ void cIndexFileGenerator::Action(void)
   off_t FileSize = 0;
   off_t FrameOffset = -1;
   Skins.QueueMessage(mtInfo, tr("Regenerating index file"));
+  bool Stuffed = false;
   while (Running()) {
         // Rewind input file:
         if (Rewind) {
@@ -1803,10 +1810,25 @@ void cIndexFileGenerator::Action(void)
         else if (ReplayFile) {
            int Result = Buffer.Read(ReplayFile, BufferChunks);
            if (Result == 0) { // EOF
-              ReplayFile = FileName.NextFile();
-              FileSize = 0;
-              FrameOffset = -1;
-              Buffer.Clear();
+              if (Buffer.Available() > 0 && !Stuffed) {
+                 // So the last call to Buffer.Get() returned NULL, but there is still
+                 // data in the buffer, and we're at the end of the current TS file.
+                 // The remaining data in the buffer is less than what's needed for the
+                 // frame detector to analyze frames, so we need to put some stuffing
+                 // packets into the buffer to flush out the rest of the data (otherwise
+                 // any frames within the remaining data would not be seen here):
+                 uchar StuffingPacket[TS_SIZE] = { TS_SYNC_BYTE, 0xFF };
+                 for (int i = 0; i <= MIN_TS_PACKETS_FOR_FRAME_DETECTOR; i++)
+                     Buffer.Put(StuffingPacket, sizeof(StuffingPacket));
+                 Stuffed = true;
+                 }
+              else {
+                 ReplayFile = FileName.NextFile();
+                 FileSize = 0;
+                 FrameOffset = -1;
+                 Buffer.Clear();
+                 Stuffed = false;
+                 }
               }
            }
         // Recording has been processed:
diff --git a/remux.c b/remux.c
index c42bf93..5aed267 100644
--- a/remux.c
+++ b/remux.c
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: remux.c 2.75.1.5 2014/03/08 15:10:24 kls Exp $
+ * $Id: remux.c 2.75.1.6 2014/04/13 13:59:21 kls Exp $
  */
 
 #include "remux.h"
@@ -1511,7 +1511,12 @@ int cFrameDetector::Analyze(const uchar *Data, int Length)
                        for (int i = 0; i < numPtsValues; i++)
                            ptsValues[i] = ptsValues[i + 1] - ptsValues[i];
                        qsort(ptsValues, numPtsValues, sizeof(uint32_t), CmpUint32);
-                       uint32_t Delta = ptsValues[0] / (framesPerPayloadUnit +  parser->IFrameTemporalReferenceOffset());
+                       int Div = framesPerPayloadUnit;
+                       if (framesPerPayloadUnit > 1)
+                          Div += parser->IFrameTemporalReferenceOffset();
+                       if (Div <= 0)
+                          Div = 1;
+                       uint32_t Delta = ptsValues[0] / Div;
                        // determine frame info:
                        if (isVideo) {
                           if (abs(Delta - 3600) <= 1)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vdr-dvb/vdr.git



More information about the pkg-vdr-dvb-changes mailing list