r826 - in vdr/vdr/trunk/debian: . patches

Thomas Schmidt tschmidt at costa.debian.org
Tue Aug 9 19:21:09 UTC 2005


Author: tschmidt
Date: 2005-08-09 19:21:08 +0000 (Tue, 09 Aug 2005)
New Revision: 826

Removed:
   vdr/vdr/trunk/debian/patches/13_remote.dpatch
Modified:
   vdr/vdr/trunk/debian/changelog
   vdr/vdr/trunk/debian/control
   vdr/vdr/trunk/debian/patches/00list
   vdr/vdr/trunk/debian/patches/10_dd-record-option.dpatch
   vdr/vdr/trunk/debian/patches/15_dvbplayer.dpatch
   vdr/vdr/trunk/debian/patches/16_dvbspu.dpatch
Log:
vdr: * New Upstream Release 1.3.28
     * Use ${misc:Depends} to depend on debconf in vdr-dev   


Modified: vdr/vdr/trunk/debian/changelog
===================================================================
--- vdr/vdr/trunk/debian/changelog	2005-08-07 21:25:49 UTC (rev 825)
+++ vdr/vdr/trunk/debian/changelog	2005-08-09 19:21:08 UTC (rev 826)
@@ -1,13 +1,18 @@
-vdr (1.3.27-2) UNRELEASED; urgency=low
+vdr (1.3.28-1) UNRELEASED; urgency=low
 
   * NOT RELEASED YET
   
   * Thomas Schmidt <tschmidt at debian.org>
-    - vdr-dev: depend on debhelper, dvb-dev (>= 1.0.0) | 
+    - New upstream release
+      + Removed 13_remote.dpatch
+      + Updated 10_dd-record-option.dpatch
+      + Updated 15_dvbplayer.dpatch
+      + Updated 16_dvbspu.dpatch
+    - vdr-dev: depend on ${misc:Depends}, dvb-dev (>= 1.0.0) | 
       linux-kernel-headers (>=2.5.999-test7-bk-6) 
     - vdr-dev: suggests dh-make
 
- -- Debian VDR Team <pkg-vdr-dvb-devel at lists.alioth.debian.org>  Thu, 30 Jun 2005 11:19:19 +0200
+ -- Debian VDR Team <pkg-vdr-dvb-devel at lists.alioth.debian.org>  Tue,  9 Aug 2005 20:45:37 +0200
 
 vdr (1.3.27-1) unstable; urgency=low
 

Modified: vdr/vdr/trunk/debian/control
===================================================================
--- vdr/vdr/trunk/debian/control	2005-08-07 21:25:49 UTC (rev 825)
+++ vdr/vdr/trunk/debian/control	2005-08-09 19:21:08 UTC (rev 826)
@@ -30,7 +30,7 @@
 
 Package: vdr-dev
 Architecture:  all
-Depends: debhelper, dvb-dev (>= 1.0.0) | linux-kernel-headers (>=2.5.999-test7-bk-6)
+Depends: ${misc:Depends}, dvb-dev (>= 1.0.0) | linux-kernel-headers (>=2.5.999-test7-bk-6)
 Suggests: dh-make
 Description: Video Disk Recorder for DVB cards
  Video Disk Recorder (VDR) is a digital sat-receiver program using

Modified: vdr/vdr/trunk/debian/patches/00list
===================================================================
--- vdr/vdr/trunk/debian/patches/00list	2005-08-07 21:25:49 UTC (rev 825)
+++ vdr/vdr/trunk/debian/patches/00list	2005-08-09 19:21:08 UTC (rev 826)
@@ -8,7 +8,6 @@
 08_security_CAN-2005-0071
 09_sort_options
 10_dd-record-option
-13_remote
 14_update-resume
 15_dvbplayer
 16_dvbspu

Modified: vdr/vdr/trunk/debian/patches/10_dd-record-option.dpatch
===================================================================
--- vdr/vdr/trunk/debian/patches/10_dd-record-option.dpatch	2005-08-07 21:25:49 UTC (rev 825)
+++ vdr/vdr/trunk/debian/patches/10_dd-record-option.dpatch	2005-08-09 19:21:08 UTC (rev 826)
@@ -7,9 +7,9 @@
 ## DP: dvd-plugin)
 
 @DPATCH@
-diff -urNad vdr-1.3.27/config.c /tmp/dpep.zcLqt8/vdr-1.3.27/config.c
---- vdr-1.3.27/config.c	2005-06-25 22:54:20.595508664 +0200
-+++ /tmp/dpep.zcLqt8/vdr-1.3.27/config.c	2005-06-25 22:54:21.032442240 +0200
+diff -urNad --exclude=CVS --exclude=.svn ./config.c /tmp/dpep-work.8JUm9E/vdr-1.3.28/config.c
+--- ./config.c	2005-08-07 20:48:05.000000000 +0200
++++ /tmp/dpep-work.8JUm9E/vdr-1.3.28/config.c	2005-08-07 20:48:05.000000000 +0200
 @@ -364,6 +364,7 @@
    VideoDisplayFormat = 1;
    VideoFormat = 0;
@@ -26,7 +26,7 @@
    else if (!strcasecmp(Name, "UseDolbyDigital"))     UseDolbyDigital    = atoi(Value);
    else if (!strcasecmp(Name, "ChannelInfoPos"))      ChannelInfoPos     = atoi(Value);
    else if (!strcasecmp(Name, "ChannelInfoTime"))     ChannelInfoTime    = atoi(Value);
-@@ -586,6 +588,7 @@
+@@ -587,6 +589,7 @@
    Store("VideoDisplayFormat", VideoDisplayFormat);
    Store("VideoFormat",        VideoFormat);
    Store("UpdateChannels",     UpdateChannels);
@@ -34,9 +34,9 @@
    Store("UseDolbyDigital",    UseDolbyDigital);
    Store("ChannelInfoPos",     ChannelInfoPos);
    Store("ChannelInfoTime",    ChannelInfoTime);
-diff -urNad vdr-1.3.27/config.h /tmp/dpep.zcLqt8/vdr-1.3.27/config.h
---- vdr-1.3.27/config.h	2005-06-25 22:54:20.595508664 +0200
-+++ /tmp/dpep.zcLqt8/vdr-1.3.27/config.h	2005-06-25 22:54:21.033442088 +0200
+diff -urNad --exclude=CVS --exclude=.svn ./config.h /tmp/dpep-work.8JUm9E/vdr-1.3.28/config.h
+--- ./config.h	2005-08-07 20:48:05.000000000 +0200
++++ /tmp/dpep-work.8JUm9E/vdr-1.3.28/config.h	2005-08-07 20:48:05.000000000 +0200
 @@ -258,6 +258,7 @@
    int VideoDisplayFormat;
    int VideoFormat;
@@ -45,9 +45,9 @@
    int UseDolbyDigital;
    int ChannelInfoPos;
    int ChannelInfoTime;
-diff -urNad vdr-1.3.27/i18n.c /tmp/dpep.zcLqt8/vdr-1.3.27/i18n.c
---- vdr-1.3.27/i18n.c	2005-06-18 12:42:31.000000000 +0200
-+++ /tmp/dpep.zcLqt8/vdr-1.3.27/i18n.c	2005-06-25 22:54:21.036441632 +0200
+diff -urNad --exclude=CVS --exclude=.svn ./i18n.c /tmp/dpep-work.8JUm9E/vdr-1.3.28/i18n.c
+--- ./i18n.c	2005-08-06 18:09:44.000000000 +0200
++++ /tmp/dpep-work.8JUm9E/vdr-1.3.28/i18n.c	2005-08-07 20:50:59.000000000 +0200
 @@ -3241,26 +3241,47 @@
      "TV külgsuhe",
      "Video format",
@@ -84,6 +84,7 @@
 +    "",//TODO
 +    "",//TODO
 +    "",//TODO
++    "",//TODO
      "",//TODO
      "",//TODO
 -    "Dolby Digital gebruiken",
@@ -99,15 +100,15 @@
      "",//TODO
      "",//TODO
 -    "²ÚÛîçØâì Dolby Digital",
-     "",//TODO
+-    "Koristi Dolby Digital",
 -    "Dolby Digital kasutamine",
 -    "Anvend Dolby Digital",
    },
    { "Setup.DVB$Update channels",
      "Kanäle aktualisieren",
-diff -urNad vdr-1.3.27/menu.c /tmp/dpep.zcLqt8/vdr-1.3.27/menu.c
---- vdr-1.3.27/menu.c	2005-06-25 22:54:20.804476896 +0200
-+++ /tmp/dpep.zcLqt8/vdr-1.3.27/menu.c	2005-06-25 22:54:21.038441328 +0200
+diff -urNad --exclude=CVS --exclude=.svn ./menu.c /tmp/dpep-work.8JUm9E/vdr-1.3.28/menu.c
+--- ./menu.c	2005-08-07 20:48:05.000000000 +0200
++++ /tmp/dpep-work.8JUm9E/vdr-1.3.28/menu.c	2005-08-07 20:48:05.000000000 +0200
 @@ -2074,7 +2074,8 @@
    Add(new cMenuEditBoolItem(tr("Setup.DVB$Video format"),          &data.VideoFormat, "4:3", "16:9"));
    if (data.VideoFormat == 0)
@@ -118,9 +119,9 @@
    Add(new cMenuEditStraItem(tr("Setup.DVB$Update channels"),       &data.UpdateChannels, 5, updateChannelsTexts));
    Add(new cMenuEditIntItem( tr("Setup.DVB$Audio languages"),       &numAudioLanguages, 0, I18nNumLanguages));
    for (int i = 0; i < numAudioLanguages; i++)
-diff -urNad vdr-1.3.27/recorder.c /tmp/dpep.zcLqt8/vdr-1.3.27/recorder.c
---- vdr-1.3.27/recorder.c	2005-01-16 13:53:17.000000000 +0100
-+++ /tmp/dpep.zcLqt8/vdr-1.3.27/recorder.c	2005-06-25 22:54:21.038441328 +0200
+diff -urNad --exclude=CVS --exclude=.svn ./recorder.c /tmp/dpep-work.8JUm9E/vdr-1.3.28/recorder.c
+--- ./recorder.c	2005-01-16 13:53:17.000000000 +0100
++++ /tmp/dpep-work.8JUm9E/vdr-1.3.28/recorder.c	2005-08-07 20:48:05.000000000 +0200
 @@ -128,7 +128,7 @@
  }
  

Deleted: vdr/vdr/trunk/debian/patches/13_remote.dpatch
===================================================================
--- vdr/vdr/trunk/debian/patches/13_remote.dpatch	2005-08-07 21:25:49 UTC (rev 825)
+++ vdr/vdr/trunk/debian/patches/13_remote.dpatch	2005-08-09 19:21:08 UTC (rev 826)
@@ -1,119 +0,0 @@
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## 01_remote.dpatch by  <ds at flibble.youmustbejoking.demon.co.uk>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Consolidate input device handling.
-
- at DPATCH@
-diff -urNad vdr-1.3.23/Makefile /tmp/dpep.cA36ZO/vdr-1.3.23/Makefile
---- vdr-1.3.23/Makefile	2005-04-09 21:19:37.881585136 +0200
-+++ /tmp/dpep.cA36ZO/vdr-1.3.23/Makefile	2005-04-09 21:19:38.185538928 +0200
-@@ -61,11 +61,10 @@
- OSDFONT_ISO8859_15 = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-15
- SMLFONT_ISO8859_15 = -adobe-helvetica-medium-r-normal--18-*-100-100-p-*-iso8859-15
- 
--ifndef NO_KBD
--DEFINES += -DREMOTE_KBD
--endif
-+REMOTE_LIRC ?= /dev/lircd
-+REMOTE_RCU ?= /dev/ttyS1
- 
--DEFINES += -DREMOTE_$(REMOTE)
-+DEFINES += -DREMOTE_RCU=\"$(REMOTE_RCU)\" -DREMOTE_LIRC=\"$(REMOTE_LIRC)\"
- 
- DEFINES += -DCMD_SUBMENUS
- DEFINES += -D_GNU_SOURCE
-diff -urNad vdr-1.3.23/vdr.1 /tmp/dpep.cA36ZO/vdr-1.3.23/vdr.1
---- vdr-1.3.23/vdr.1	2004-12-19 10:36:25.000000000 +0100
-+++ /tmp/dpep.cA36ZO/vdr-1.3.23/vdr.1	2005-04-09 21:20:52.156293664 +0200
-@@ -46,7 +46,18 @@
- (default is to read them from the video directory).
- .TP
- .B \-d, \-\-daemon
--Run in daemon mode.
-+Run in daemon mode. (This implies \-\-no\-kbd.)
-+.TP
-+.B \-\-no\-kbd
-+Don't use the keyboard as an input device.
-+.TP
-+.BI \-\-lirc [=DEVICE]
-+If this option is present, vdr will use a LIRC remote control device.
-+If the device name is omitted, vdr uses \fI/dev/lircd\fR.
-+.TP
-+.BI \-\-rcu [=DEVICE]
-+If this option is present, vdr will use a serial port remote control device.
-+If the device name is omitted, vdr uses \fI/dev/ttyS1\fR.
- .TP
- .BI \-D\  num ,\ \-\-device= num
- Use only the given DVB device (\fInum\fR = 0, 1, 2...).
-diff -urNad vdr-1.3.23/vdr.c /tmp/dpep.cA36ZO/vdr-1.3.23/vdr.c
---- vdr-1.3.23/vdr.c	2005-04-09 21:19:37.951574496 +0200
-+++ /tmp/dpep.cA36ZO/vdr-1.3.23/vdr.c	2005-04-09 21:19:38.186538776 +0200
-@@ -229,6 +229,8 @@
-   int WatchdogTimeout = DEFAULTWATCHDOG;
-   const char *Terminal = NULL;
-   const char *Shutdown = NULL;
-+  const char *rcu = NULL, *lirc = NULL;
-+  int kbd = 1;
-   cPluginManager PluginManager(DEFAULTPLUGINDIR);
-   const char* username = NULL;
-   const char* groupname = NULL;
-@@ -256,6 +258,9 @@
-       { "watchdog", required_argument, NULL, 'w' },
-       { "user",     required_argument, NULL, 'u' },
-       { "group",    required_argument, NULL, 'g' },
-+      { "no-kbd",   no_argument,       NULL, 'k'&31 },
-+      { "rcu",      optional_argument, NULL, 'r'&31 },
-+      { "lirc",     optional_argument, NULL, 'l'&31 },
-       { NULL }
-     };
- 
-@@ -356,6 +361,15 @@
-                     break;
-           case '!': IsAllowRootAnyway = true;
-                     break;
-+          case 'k'&31:
-+                    kbd = 0;
-+                    break;
-+          case 'r'&31:
-+                    rcu = optarg ? : REMOTE_RCU;
-+                    break;
-+          case 'l'&31:
-+                    lirc = optarg ? : REMOTE_LIRC;
-+                    break;
-           default:  return 2;
-           }
-         }
-@@ -418,6 +432,11 @@
-                "                           seconds (default: %d); '0' disables the watchdog\n"
- 	       "  -u USER,  --user=USER    run as user USER instead of root\n"
- 	       "  -g GROUP, --group=GROUP  use group GROUP instead of primary group of user\n"
-+	       "            --no-kbd       don't use the keyboard as an input device\n"
-+               "            --rcu[=PATH]   use a remote control device, attached to PATH\n"
-+               "                           (default: " REMOTE_RCU ")\n"
-+               "            --lirc[=PATH]  use a LIRC remote control device, attached to PATH\n"
-+               "                           (default: " REMOTE_LIRC ")\n"
-                "\n",
-                DEFAULTEPGDATAFILENAME,
-                DEFAULTPLUGINDIR,
-@@ -634,15 +653,12 @@
-   cThemes::Load(Skins.Current()->Name(), Setup.OSDTheme, Skins.Current()->Theme());
- 
-   // Remote Controls:
--#if defined(REMOTE_RCU)
--  new cRcuRemote("/dev/ttyS1");
--#elif defined(REMOTE_LIRC)
--  new cLircRemote("/dev/lircd");
--#endif
--#if defined(REMOTE_KBD)
--  if (!DaemonMode && HasStdin)
-+  if (rcu)
-+     new cRcuRemote((char*)rcu);
-+  if (lirc)
-+     new cLircRemote((char*)lirc);
-+  if (!DaemonMode && HasStdin && kbd)
-      new cKbdRemote;
--#endif
-   Interface->LearnKeys();
- 
-   // External audio:

Modified: vdr/vdr/trunk/debian/patches/15_dvbplayer.dpatch
===================================================================
--- vdr/vdr/trunk/debian/patches/15_dvbplayer.dpatch	2005-08-07 21:25:49 UTC (rev 825)
+++ vdr/vdr/trunk/debian/patches/15_dvbplayer.dpatch	2005-08-09 19:21:08 UTC (rev 826)
@@ -1,21 +1,113 @@
 #! /bin/sh /usr/share/dpatch/dpatch-run
-## 06_nissl_dvbplayer.dpatch by Reinhard Nissl <rnissl at gmx.de>
+## 15_dvbplayer.dpatch by Reinhard Nissl <rnissl at gmx.de>
 ##
 ## All lines beginning with `## DP:' are a description of the patch.
-## DP: send proper I-frames to the device
+## DP: Downloaded from: http://home.vrweb.de/~rnissl/
+## DP: Fixes VDR's recording replayer to send proper I-frames to a device.
+## DP: Without this patch it is very likely that incomplete I-frames are sent
+## DP: and therefore many I-frames will not be displayed by devices like
+## DP: vdr-xine or dxr3. This patch has a very positive effect on moving
+## DP: cutting marks and all fast trickspeed modes as well as slow motion
+## DP: rewind.
+## DP: NOTE: without this patch it is likely that xine disconnects from
+## DP: vdr-xine while moving cut marks.
 
 @DPATCH@
-diff -urNad vdr-1.3.24/dvbplayer.c /tmp/dpep.Ctc0VI/vdr-1.3.24/dvbplayer.c
---- vdr-1.3.24/dvbplayer.c	2005-05-08 16:52:49.000000000 +0200
-+++ /tmp/dpep.Ctc0VI/vdr-1.3.24/dvbplayer.c	2005-05-09 20:31:45.721116992 +0200
-@@ -360,6 +360,94 @@
+diff -urNad --exclude=CVS --exclude=.svn ./dvbplayer.c /tmp/dpep-work.CvTof4/vdr-1.3.28/dvbplayer.c
+--- ./dvbplayer.c	2005-07-30 12:00:24.000000000 +0200
++++ /tmp/dpep-work.CvTof4/vdr-1.3.28/dvbplayer.c	2005-08-07 23:07:35.000000000 +0200
+@@ -360,6 +360,176 @@
       }
  }
  
-+static uchar *findStartCode(uchar *Data, int Length)
++// --- BEGIN fix for I frames  -------------------------------------------
++// 
++//  Prior to the introduction of cVideoRepacker, VDR didn't start a new
++//  PES packet when a new frame started. So, it was likely that the tail
++//  of an I frame was at the beginning of the packet which started the
++//  following B frame. Due to the organisation of VDR's index file, VDR
++//  typically didn't read the tail of the I frame and therefore caused
++//  softdevice plugins to not render such a frame as it was incomplete,
++//  e. g. when moving cutting marks.
++//
++//  The following code tries to fix incomplete I frames for recordings
++//  made prior to the introdcution of cVideoRepacker, to be able to
++//  edit cutting marks for example with softdevice plugins like vdr-xine.
++//
++
++static int analyzePesHeader(const uchar *Data, int Count, int &PesPayloadOffset, bool *ContinuationHeader = 0)
 +{
++  if (Count < 7)
++     return -1; // too short
++
++  if ((Data[6] & 0xC0) == 0x80) { // MPEG 2
++     if (Count < 9)
++        return -1; // too short
++
++     PesPayloadOffset = 6 + 3 + Data[8];
++     if (Count < PesPayloadOffset)
++        return -1; // too short
++
++     if (ContinuationHeader)
++        *ContinuationHeader = ((Data[6] == 0x80) && !Data[7] && !Data[8]);
++
++     return 2; // MPEG 2
++     }
++
++  // check for MPEG 1 ...
++  PesPayloadOffset = 6;
++
++  // skip up to 16 stuffing bytes
++  for (int i = 0; i < 16; i++) {
++      if (Data[PesPayloadOffset] != 0xFF)
++         break;
++
++      if (Count <= ++PesPayloadOffset)
++         return -1; // too short
++      }
++
++  // skip STD_buffer_scale/size
++  if ((Data[PesPayloadOffset] & 0xC0) == 0x40) {
++     PesPayloadOffset += 2;
++
++     if (Count <= PesPayloadOffset)
++        return -1; // too short
++     }
++
++  if (ContinuationHeader)
++     *ContinuationHeader = false;
++
++  if ((Data[PesPayloadOffset] & 0xF0) == 0x20) {
++     // skip PTS only
++     PesPayloadOffset += 5;
++     }
++  else if ((Data[PesPayloadOffset] & 0xF0) == 0x30) {
++     // skip PTS and DTS
++     PesPayloadOffset += 10;
++     }
++  else if (Data[PesPayloadOffset] == 0x0F) {
++     // continuation header
++     PesPayloadOffset++;
++
++     if (ContinuationHeader)
++        *ContinuationHeader = true;
++     }
++  else
++     return 0; // unknown
++
++  if (Count < PesPayloadOffset)
++     return -1; // too short
++
++  return 1; // MPEG 1
++}
++
++static uchar *findStartCode(uchar *Data, int Length, int &PesPayloadOffset)
++{
 +  uchar *limit = Data + Length;
-+  Data += 6 + 3 + Data[6 + 2] + 3; // move to video payload and skip 00 00 01
++  if (analyzePesHeader(Data, Length, PesPayloadOffset) <= 0)
++     return 0; // neither MPEG1 nor MPEG2
++
++  Data += PesPayloadOffset + 3; // move to video payload and skip 00 00 01
 +  while (Data < limit) {
 +        // possible start codes that appear before/after picture data
 +        // 00 00 01 B3: sequence header code
@@ -32,47 +124,43 @@
 +
 +static void fixIFrameHead(uchar *Data, int Length)
 +{
-+  uchar *p = findStartCode(Data, Length);
++  int pesPayloadOffset = 0;
++  uchar *p = findStartCode(Data, Length, pesPayloadOffset);
 +  if (!p) {
 +     esyslog("fixIframeHead: start code not found!\n");
 +     return;
 +     }
 +
-+  Data += 6 + 3 + Data[6 + 2]; // move to video payload
++  Data += pesPayloadOffset; // move to video payload
 +  if (Data < p)
 +     memset(Data, 0, p - Data); // zero preceeding bytes
 +}
 +
-+static int fixIFrameTail(uchar *Data, int Length, bool StillImage)
++static int fixIFrameTail(uchar *Data, int Length)
 +{
-+  uchar *p = findStartCode(Data, Length);
++  int pesPayloadOffset = 0;
++  uchar *p = findStartCode(Data, Length, pesPayloadOffset);
 +  if (!p) {
 +     esyslog("fixIframeTail: start code not found!\n");
 +     return Length;
 +     }
 +
-+  if (StillImage) {
-+     // need to append sequence end code
-+     p[3] = 0xB7;
-+     p += 4;
-+     }
-+
 +  // is this PES packet required?
-+  uchar *videoPayload = Data + 6 + 3 + Data[6 + 2];
++  uchar *videoPayload = Data + pesPayloadOffset;
 +  if (videoPayload >= p)
 +     return 0; // no
 +  
-+  // adjust PES payload size
-+  int payloadSize = (p - Data) - 6;
-+  Data[4] = payloadSize >> 8;
-+  Data[5] = payloadSize & 0xFF;
++  // adjust PES length
++  int lenPES = (p - Data);
++  Data[4] = (lenPES - 6) >> 8;
++  Data[5] = (lenPES - 6) & 0xFF;
 +
-+  return payloadSize + 6;
++  return lenPES;
 +}
 +
 +#define IPACKS 2048 // originally defined in remux.c
 +
-+static void fixIFrame(uchar *Data, int &Length, bool StillImage)
++static void fixIFrame(uchar *Data, int &Length)
 +{
 +  int originalLength = Length - IPACKS; // by design
 +  int done = 0;
@@ -90,7 +178,7 @@
 +           if (0 == done) // first packet
 +              fixIFrameHead(Data, bite);
 +           else if (done >= originalLength) { // last packet
-+              Length = done + fixIFrameTail(Data, bite, StillImage);
++              Length = done + fixIFrameTail(Data, bite);
 +              return;
 +              }
 +           }
@@ -100,37 +188,37 @@
 +        }
 +}
 +
++// --- END fix for I frames  ---------------------------------------------
++
  void cDvbPlayer::Action(void)
  {
    uchar *b = NULL;
-@@ -395,6 +483,7 @@
-                        int FileOffset;
-                        int Index = index->GetNextIFrame(readIndex, playDir == pdForward, &FileNumber, &FileOffset, &Length, true);
+@@ -397,6 +567,7 @@
                         if (Index >= 0) {
-+                          Length += IPACKS; // fixIFrame needs next video packet
                            if (!NextFile(FileNumber, FileOffset))
                               continue;
++                          Length += IPACKS; // fixIFrame needs next video packet
                            }
-@@ -435,6 +524,8 @@
+                        else {
+                           // hit begin of recording: wait for device buffers to drain
+@@ -435,6 +606,8 @@
                      }
                   int r = nonBlockingFileReader->Read(replayFile, b, Length);
                   if (r > 0) {
 +                    if (playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))
-+                       fixIFrame(b, r, false);
++                       fixIFrame(b, r);
                      readFrame = new cFrame(b, -r, ftUnknown, readIndex); // hands over b to the ringBuffer
                      b = NULL;
                      }
-@@ -666,11 +757,13 @@
+@@ -668,9 +841,11 @@
       int FileOffset, Length;
       Index = index->GetNextIFrame(Index, false, &FileNumber, &FileOffset, &Length);
       if (Index >= 0 && NextFile(FileNumber, FileOffset) && Still) {
 +        Length += IPACKS; // fixIFrame needs next video packet
-         uchar b[MAXFRAMESIZE];
+         uchar b[MAXFRAMESIZE + 4 + 5 + 4];
          int r = ReadFrame(replayFile, b, Length, sizeof(b));
          if (r > 0) {
++           fixIFrame(b, r);
             if (playMode == pmPause)
                DevicePlay();
-+           fixIFrame(b, r, true);
-            DeviceStillPicture(b, r);
-            }
-         playMode = pmStill;
+            // append sequence end code to get the image shown immediately with softdevices

Modified: vdr/vdr/trunk/debian/patches/16_dvbspu.dpatch
===================================================================
--- vdr/vdr/trunk/debian/patches/16_dvbspu.dpatch	2005-08-07 21:25:49 UTC (rev 825)
+++ vdr/vdr/trunk/debian/patches/16_dvbspu.dpatch	2005-08-09 19:21:08 UTC (rev 826)
@@ -5,19 +5,10 @@
 ## DP: SPU fixes (vdr-dvd)
 
 @DPATCH@
-diff -urNad vdr-1.3.22/dvbspu.c /tmp/dpep.rB9LVD/vdr-1.3.22/dvbspu.c
---- vdr-1.3.22/dvbspu.c	2005-02-28 15:56:44.000000000 +0000
-+++ /tmp/dpep.rB9LVD/vdr-1.3.22/dvbspu.c	2005-02-28 15:56:45.000000000 +0000
-@@ -153,7 +153,7 @@
-     setMin(minsize[colorid].x1, xp);
-     setMin(minsize[colorid].y1, yp);
-     setMax(minsize[colorid].x2, xp + len - 1);
--    setMax(minsize[colorid].y2, yp + len - 1);
-+    setMax(minsize[colorid].y2, yp);
- }
- 
- static uint8_t getBits(uint8_t * &data, uint8_t & bitf)
-@@ -352,6 +352,20 @@
+diff -urNad --exclude=CVS --exclude=.svn ./dvbspu.c /tmp/dpep-work.B5kxnx/vdr-1.3.28/dvbspu.c
+--- ./dvbspu.c	2005-08-07 14:06:32.000000000 +0200
++++ /tmp/dpep-work.B5kxnx/vdr-1.3.28/dvbspu.c	2005-08-07 23:20:39.000000000 +0200
+@@ -336,6 +336,20 @@
      return size;
  }
  
@@ -38,7 +29,7 @@
  void cDvbSpuDecoder::Draw(void)
  {
      if (!spubmp) {
-@@ -389,12 +403,16 @@
+@@ -366,12 +380,16 @@
         }
  
      if (bg || fg) {




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