rpms/vdr/devel vdr-1.4.6-1-syncearly.patch, NONE, 1.1 vdr.spec, 1.12, 1.13

Ville Skytta (scop) fedora-extras-commits at redhat.com
Mon Jun 11 16:47:27 UTC 2007


Author: scop

Update of /cvs/pkgs/rpms/vdr/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv3929

Modified Files:
	vdr.spec 
Added Files:
	vdr-1.4.6-1-syncearly.patch 
Log Message:
* Mon Jun 11 2007 Ville Skyttä <ville.skytta at iki.fi> - 1.4.7-2
- Apply Reinhard Nißl's "sync early" patch for smoother channel changes.


vdr-1.4.6-1-syncearly.patch:

--- NEW FILE vdr-1.4.6-1-syncearly.patch ---
diff -Nurp ../vdr-1.4.6-1-orig/device.c ./device.c
--- ../vdr-1.4.6-1-orig/device.c	2006-09-03 12:13:25.000000000 +0200
+++ ./device.c	2007-05-06 21:22:52.000000000 +0200
@@ -691,7 +691,7 @@ eSetChannelResult cDevice::SetChannel(co
            for (int i = 0; i < MAXDPIDS; i++)
                SetAvailableTrack(ttDolby, i, Channel->Dpid(i), Channel->Dlang(i));
            }
-        if (!NeedsTransferMode)
+        if (!NeedsTransferMode || GetCurrentAudioTrack() == ttNone)
            EnsureAudioTrack(true);
         }
      cStatus::MsgChannelSwitch(this, Channel->Number()); // only report status if channel switch successfull
diff -Nurp ../vdr-1.4.6-1-orig/remux.c ./remux.c
--- ../vdr-1.4.6-1-orig/remux.c	2006-12-01 15:46:25.000000000 +0100
+++ ./remux.c	2007-05-06 21:22:52.000000000 +0200
@@ -1853,12 +1853,13 @@ void cTS2PES::ts_to_pes(const uint8_t *B
 
 #define RESULTBUFFERSIZE KILOBYTE(256)
 
-cRemux::cRemux(int VPid, const int *APids, const int *DPids, const int *SPids, bool ExitOnFailure)
+cRemux::cRemux(int VPid, const int *APids, const int *DPids, const int *SPids, bool ExitOnFailure, bool SyncEarly)
 {
   exitOnFailure = ExitOnFailure;
   isRadio = VPid == 0 || VPid == 1 || VPid == 0x1FFF;
   numUPTerrors = 0;
   synced = false;
+  syncEarly = SyncEarly;
   skipped = 0;
   numTracks = 0;
   resultSkipped = 0;
@@ -2062,12 +2063,14 @@ uchar *cRemux::Get(int &Count, uchar *Pi
                         cThread::EmergencyExit(true);
                      }
                   else if (!synced) {
-                     if (pt == I_FRAME) {
+                     if (pt == I_FRAME || syncEarly) {
                         if (PictureType)
                            *PictureType = pt;
                         resultSkipped = i; // will drop everything before this position
-                        SetBrokenLink(data + i, l);
                         synced = true;
+                        if (pt == I_FRAME) // syncEarly: it's ok but there is no need to call SetBrokenLink()
+                           SetBrokenLink(data + i, l);
+else fprintf(stderr, "video: synced early\n");
                         }
                      }
                   else if (Count)
@@ -2080,12 +2083,13 @@ uchar *cRemux::Get(int &Count, uchar *Pi
                l = GetPacketLength(data, resultCount, i);
                if (l < 0)
                   return resultData;
-               if (isRadio) {
+               if (isRadio || !synced && syncEarly) {
                   if (!synced) {
-                     if (PictureType)
+                     if (PictureType && isRadio)
                         *PictureType = I_FRAME;
                      resultSkipped = i; // will drop everything before this position
                      synced = true;
+if (!isRadio) fprintf(stderr, "audio: synced early\n");
                      }
                   else if (Count)
                      return resultData;
diff -Nurp ../vdr-1.4.6-1-orig/remux.h ./remux.h
--- ../vdr-1.4.6-1-orig/remux.h	2006-03-25 13:27:30.000000000 +0100
+++ ./remux.h	2007-05-06 21:22:52.000000000 +0200
@@ -40,6 +40,7 @@ private:
   bool isRadio;
   int numUPTerrors;
   bool synced;
+  bool syncEarly;
   int skipped;
   cTS2PES *ts2pes[MAXTRACKS];
   int numTracks;
@@ -47,12 +48,13 @@ private:
   int resultSkipped;
   int GetPid(const uchar *Data);
 public:
-  cRemux(int VPid, const int *APids, const int *DPids, const int *SPids, bool ExitOnFailure = false);
+  cRemux(int VPid, const int *APids, const int *DPids, const int *SPids, bool ExitOnFailure = false, bool SyncEarly = false);
        ///< Creates a new remuxer for the given PIDs. VPid is the video PID, while
        ///< APids, DPids and SPids are pointers to zero terminated lists of audio,
        ///< dolby and subtitle PIDs (the pointers may be NULL if there is no such
        ///< PID). If ExitOnFailure is true, the remuxer will initiate an "emergency
-       ///< exit" in case of problems with the data stream.
+       ///< exit" in case of problems with the data stream. SyncEarly causes cRemux
+       ///< to sync as soon as a video or audio frame is seen.
   ~cRemux();
   void SetTimeouts(int PutTimeout, int GetTimeout) { resultBuffer->SetTimeouts(PutTimeout, GetTimeout); }
        ///< By default cRemux assumes that Put() and Get() are called from different
diff -Nurp ../vdr-1.4.6-1-orig/transfer.c ./transfer.c
--- ../vdr-1.4.6-1-orig/transfer.c	2006-01-29 18:24:39.000000000 +0100
+++ ./transfer.c	2007-05-06 21:23:35.000000000 +0200
@@ -19,7 +19,7 @@ cTransfer::cTransfer(int VPid, const int
 ,cThread("transfer")
 {
   ringBuffer = new cRingBufferLinear(TRANSFERBUFSIZE, TS_SIZE * 2, true, "Transfer");
-  remux = new cRemux(VPid, APids, Setup.UseDolbyDigital ? DPids : NULL, SPids);
+  remux = new cRemux(VPid, APids, Setup.UseDolbyDigital ? DPids : NULL, SPids, false, true);
 }
 
 cTransfer::~cTransfer()


Index: vdr.spec
===================================================================
RCS file: /cvs/pkgs/rpms/vdr/devel/vdr.spec,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- vdr.spec	12 May 2007 14:32:11 -0000	1.12
+++ vdr.spec	11 Jun 2007 16:46:52 -0000	1.13
@@ -19,7 +19,7 @@
 
 Name:           vdr
 Version:        1.4.7
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Video Disk Recorder
 
 Group:          Applications/Multimedia
@@ -44,6 +44,8 @@
 Patch2:         http://www.saunalahti.fi/~rahrenbe/vdr/patches/vdr-1.4.6-liemikuutio-1.13.diff.gz
 Patch3:         %{name}-1.4.6-paths.patch
 Patch4:         %{name}-1.4.1-dumpable.patch
+# http://article.gmane.org/gmane.linux.vdr/32708
+Patch5:         %{name}-1.4.6-1-syncearly.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  libjpeg-devel
@@ -129,6 +131,7 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p0
 
 # Fix up paths
 sed -i \
@@ -423,6 +426,9 @@
 %endif
 
 %changelog
+* Mon Jun 11 2007 Ville Skyttä <ville.skytta at iki.fi> - 1.4.7-2
+- Apply Reinhard Nißl's "sync early" patch for smoother channel changes.
+
 * Sat May 12 2007 Ville Skyttä <ville.skytta at iki.fi> - 1.4.7-1
 - 1.4.7.
 




More information about the fedora-extras-commits mailing list