Hello community, here is the log from the commit of package vdr for openSUSE:Factory checked in at 2015-02-11 16:44:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vdr (Old) and /work/SRC/openSUSE:Factory/.vdr.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vdr" Changes: -------- --- /work/SRC/openSUSE:Factory/vdr/vdr.changes 2015-01-07 09:39:16.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.vdr.new/vdr.changes 2015-02-11 16:44:39.000000000 +0100 @@ -1,0 +2,23 @@ +Wed Feb 4 12:42:31 UTC 2015 - [email protected] + +- update to 2.0.7: + * Fixed a possible division by zero in frame rate detection. + * Fixed jumping to an absolute position via the Red key in case + replay was paused + * 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 + * 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. 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. +- vdrapi version stays at 2.0.6 + +------------------------------------------------------------------- Old: ---- vdr-2.0.6.tar.bz2 New: ---- vdr-2.0.7.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vdr.spec ++++++ --- /var/tmp/diff_new_pack.LHQnOw/_old 2015-02-11 16:44:40.000000000 +0100 +++ /var/tmp/diff_new_pack.LHQnOw/_new 2015-02-11 16:44:40.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package vdr # -# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -39,7 +39,7 @@ # Url: http://www.tvdr.de/ PreReq: /usr/sbin/useradd -Version: 2.0.6 +Version: 2.0.7 Release: 0 Summary: Video Disk Recorder License: GPL-2.0+ ++++++ vdr-2.0.6.tar.bz2 -> vdr-2.0.7.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdr-2.0.6/CONTRIBUTORS new/vdr-2.0.7/CONTRIBUTORS --- old/vdr-2.0.6/CONTRIBUTORS 2014-03-09 13:15:08.000000000 +0100 +++ new/vdr-2.0.7/CONTRIBUTORS 2015-01-17 11:55:42.000000000 +0100 @@ -232,6 +232,7 @@ 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 <[email protected]> for pointing out that there are channels that have a symbol rate higher than 27500 @@ -3214,3 +3215,9 @@ Christian Winkler <[email protected]> for reporting a problem with transfer mode on full featured DVB cards for encrypted channels that have no audio pid + +Dieter Ferdinand <[email protected]> + 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdr-2.0.6/HISTORY new/vdr-2.0.7/HISTORY --- old/vdr-2.0.6/HISTORY 2014-03-22 12:03:39.000000000 +0100 +++ new/vdr-2.0.7/HISTORY 2015-01-20 10:13:08.000000000 +0100 @@ -7915,3 +7915,22 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdr-2.0.6/Makefile new/vdr-2.0.7/Makefile --- old/vdr-2.0.6/Makefile 2013-03-11 16:01:01.000000000 +0100 +++ new/vdr-2.0.7/Makefile 2015-01-01 14:59:51.000000000 +0100 @@ -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 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdr-2.0.6/config.h new/vdr-2.0.7/config.h --- old/vdr-2.0.6/config.h 2014-03-22 12:00:00.000000000 +0100 +++ new/vdr-2.0.7/config.h 2014-04-13 16:00:42.000000000 +0200 @@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdr-2.0.6/menu.c new/vdr-2.0.7/menu.c --- old/vdr-2.0.6/menu.c 2014-02-26 12:42:28.000000000 +0100 +++ new/vdr-2.0.7/menu.c 2015-01-13 10:52:59.000000000 +0100 @@ -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 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdr-2.0.6/recording.c new/vdr-2.0.7/recording.c --- old/vdr-2.0.6/recording.c 2014-03-16 12:03:18.000000000 +0100 +++ new/vdr-2.0.7/recording.c 2015-01-17 14:50:38.000000000 +0100 @@ -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 @@ // 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 @@ 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 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdr-2.0.6/remux.c new/vdr-2.0.7/remux.c --- old/vdr-2.0.6/remux.c 2014-03-08 16:10:24.000000000 +0100 +++ new/vdr-2.0.7/remux.c 2014-04-13 15:59:21.000000000 +0200 @@ -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 @@ 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) -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
