Sophie

Sophie

distrib > Mandriva > 2007.1 > x86_64 > by-pkgid > fdddaca718fdaac56c6bff726f3554dd > files > 16

vdr-1.4.7-9mdv2007.1.src.rpm

Common subdirectories: vdr-1.4.6-orig/PLUGINS and vdr-1.4.6/PLUGINS
diff -u vdr-1.4.6-orig/device.h vdr-1.4.6/device.h
--- vdr-1.4.6-orig/device.h	2007-06-19 10:42:07.000000000 +0300
+++ vdr-1.4.6/device.h	2007-06-19 10:43:33.000000000 +0300
@@ -452,6 +452,9 @@
        ///< which is necessary for trick modes like 'fast forward'.
        ///< Data must point to one single, complete PES packet.
 public:
+#define DEVICE_SUPPORTS_IBP_TRICKSPEED
+  virtual bool HasIBPTrickSpeed(void) { return false; }
+       ///< Returns true if this device can all frames in fast fwd trick speeds.
   virtual int64_t GetSTC(void);
        ///< Gets the current System Time Counter, which can be used to
        ///< synchronize audio and video. If this device is unable to
Only in vdr-1.4.6: device.h.flc
Only in vdr-1.4.6: device.h~
diff -u vdr-1.4.6-orig/dvbplayer.c vdr-1.4.6/dvbplayer.c
--- vdr-1.4.6-orig/dvbplayer.c	2007-06-19 10:42:07.000000000 +0300
+++ vdr-1.4.6/dvbplayer.c	2007-06-19 10:51:19.000000000 +0300
@@ -400,7 +400,13 @@
                        uchar FileNumber;
                        int FileOffset;
                        bool TimeShiftMode = index->IsStillRecording();
-                       int Index = index->GetNextIFrame(readIndex, playDir == pdForward, &FileNumber, &FileOffset, &Length, TimeShiftMode);
+                       int Index = -1;
+                       if (DeviceHasIBPTrickSpeed() && playDir == pdForward) {
+                         if (index->Get(readIndex+1, &FileNumber, &FileOffset, NULL, &Length))
+                           Index = readIndex+1;
+                       }
+                       else
+                         Index = index->GetNextIFrame(readIndex, playDir == pdForward, &FileNumber, &FileOffset, &Length, TimeShiftMode);
                        if (Index >= 0) {
                           if (!NextFile(FileNumber, FileOffset))
                              continue;
@@ -530,7 +536,8 @@
   else {
      LOCK_THREAD;
      if (playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))
-        Empty();
+        if (!(DeviceHasIBPTrickSpeed() && playDir == pdForward))
+	   Empty();
      DeviceFreeze();
      playMode = pmPause;
      }
@@ -541,7 +548,8 @@
   if (playMode != pmPlay) {
      LOCK_THREAD;
      if (playMode == pmStill || playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))
-        Empty();
+        if (!(DeviceHasIBPTrickSpeed() && playDir == pdForward))
+	    Empty();
      DevicePlay();
      playMode = pmPlay;
      playDir = pdForward;
@@ -564,7 +572,8 @@
             // run into pmPlay
        case pmPlay: {
             LOCK_THREAD;
-            Empty();
+	    if (! DeviceHasIBPTrickSpeed())
+	       Empty();
             DeviceMute();
             playMode = pmFast;
             playDir = pdForward;
Only in vdr-1.4.6: dvbplayer.c.orig
Only in vdr-1.4.6: dvbplayer.c~
Common subdirectories: vdr-1.4.6-orig/libsi and vdr-1.4.6/libsi
diff -u vdr-1.4.6-orig/player.h vdr-1.4.6/player.h
--- vdr-1.4.6-orig/player.h	2007-06-19 10:42:07.000000000 +0300
+++ vdr-1.4.6/player.h	2007-06-19 10:42:20.000000000 +0300
@@ -24,6 +24,7 @@
   bool DeviceSetCurrentAudioTrack(eTrackType Type) { return device ? device->SetCurrentAudioTrack(Type) : false; }
   bool DevicePoll(cPoller &Poller, int TimeoutMs = 0) { return device ? device->Poll(Poller, TimeoutMs) : false; }
   bool DeviceFlush(int TimeoutMs = 0) { return device ? device->Flush(TimeoutMs) : true; }
+  bool DeviceHasIBPTrickSpeed(void) { return device ? device->HasIBPTrickSpeed() : false; }
   void DeviceTrickSpeed(int Speed) { if (device) device->TrickSpeed(Speed); }
   void DeviceClear(void) { if (device) device->Clear(); }
   void DevicePlay(void) { if (device) device->Play(); }
Common subdirectories: vdr-1.4.6-orig/symbols and vdr-1.4.6/symbols