diff -urN live555-old/groupsock/include/NetCommon.h live555-20060707/groupsock/include/NetCommon.h
--- live555-old/groupsock/include/NetCommon.h	2006-07-04 06:25:30.000000000 +0100
+++ live555-20060707/groupsock/include/NetCommon.h	2006-07-18 11:04:25.000000000 +0100
@@ -91,8 +91,10 @@
 #endif
 #endif

+
 #ifndef SOCKLEN_T
-#define SOCKLEN_T int
+#define SOCKLEN_T unsigned int
 #endif

+
 #endif
diff -urN live555-old/testProgs/Makefile.tail live555-20060707/testProgs/Makefile.tail
--- live555-old/testProgs/Makefile.tail	2006-07-04 06:25:30.000000000 +0100
+++ live555-20060707/testProgs/Makefile.tail	2006-07-25 08:58:55.000000000 +0100
@@ -1,7 +1,7 @@
 ##### End of variables to change

 MULTICAST_STREAMER_APPS = testMP3Streamer$(EXE) testMPEG1or2VideoStreamer$(EXE) testMPEG1or2AudioVideoStreamer$(EXE) testMPEG2TransportStreamer$(EXE) testMPEG4VideoStreamer$(EXE) testWAVAudioStreamer$(EXE) testAMRAudioStreamer$(EXE) vobStreamer$(EXE)
-MULTICAST_RECEIVER_APPS = testMP3Receiver$(EXE) testMPEG1or2VideoReceiver$(EXE) sapWatch$(EXE)
+MULTICAST_RECEIVER_APPS = testMP3Receiver$(EXE) testMPEG1or2VideoReceiver$(EXE) sapWatch$(EXE) testMPEG2TransportReceiver$(EXE)
 MULTICAST_MISC_APPS = testRelay$(EXE)
 MULTICAST_APPS = $(MULTICAST_STREAMER_APPS) $(MULTICAST_RECEIVER_APPS) $(MULTICAST_MISC_APPS)

@@ -24,6 +24,7 @@

 MP3_STREAMER_OBJS = testMP3Streamer.$(OBJ)
 MP3_RECEIVER_OBJS = testMP3Receiver.$(OBJ)
+MPEG2_TS_RECEIVER_OBJS = testMPEG2TransportReceiver.$(OBJ)
 RELAY_OBJS = testRelay.$(OBJ)
 MPEG_1OR2_SPLITTER_OBJS = testMPEG1or2Splitter.$(OBJ)
 MPEG_1OR2_VIDEO_STREAMER_OBJS = testMPEG1or2VideoStreamer.$(OBJ)
@@ -64,6 +65,8 @@
 	$(LINK)$@ $(CONSOLE_LINK_OPTS) $(MP3_STREAMER_OBJS) $(LIBS)
 testMP3Receiver$(EXE):	$(MP3_RECEIVER_OBJS) $(LOCAL_LIBS)
 	$(LINK)$@ $(CONSOLE_LINK_OPTS) $(MP3_RECEIVER_OBJS) $(LIBS)
+testMPEG2TransportReceiver$(EXE):	$(MPEG2_TS_RECEIVER_OBJS) $(LOCAL_LIBS)
+	$(LINK)$@ $(CONSOLE_LINK_OPTS) $(MPEG2_TS_RECEIVER_OBJS) $(LIBS)
 testRelay$(EXE):	$(RELAY_OBJS) $(LOCAL_LIBS)
 	$(LINK)$@ $(CONSOLE_LINK_OPTS) $(RELAY_OBJS) $(LIBS)
 testMPEG1or2Splitter$(EXE):	$(MPEG_1OR2_SPLITTER_OBJS) $(LOCAL_LIBS)
diff -urN live555-old/testProgs/playCommon.cpp live555-20060707/testProgs/playCommon.cpp
--- live555-old/testProgs/playCommon.cpp	2006-07-04 06:25:30.000000000 +0100
+++ live555-20060707/testProgs/playCommon.cpp	2006-07-13 14:32:37.000000000 +0100
@@ -24,6 +24,24 @@
 #include "../RealRTSP/include/RealRTSP.hh"
 #endif

+#include <linux/dvb/dmx.h>
+#include <linux/dvb/frontend.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+
+//#define VIDEOPID 0x1000 //iceage
+//#define VIDEOPID 0x20 //equilibrium
+//#define VIDEOPID 0x44 //lost in space
+#define VIDEOPID 0x208 //footy
+//#define PCRPID 0x1000 //iceage
+//#define PCRPID 0x20 //equilibrium
+//#define PCRPID 0x44 //lost in space
+#define PCRPID 0x208 //footy
+//#define AUDIOPID 0x1001 //iceage
+//#define AUDIOPID 0x40 //equilibrium
+#define AUDIOPID 0x209 //footy
+
 #if defined(__WIN32__) || defined(_WIN32)
 #define snprintf _snprintf
 #else
@@ -99,6 +117,98 @@

 struct timeval startTime;

+int setup_dvb(){
+
+
+    struct dmx_pes_filter_params pesfilterv;
+    struct dmx_pes_filter_params pesfiltera;
+    struct dmx_pes_filter_params pesfilterp;
+
+    int fdv, fda, fdp, ret;
+
+    if ( (fdv = open ("/dev/dvb/adapter2/demux0", O_NONBLOCK)) < 0 )
+    {
+        *env << "open failed";
+        return -1;
+    }
+
+
+    if ( (fdp = open ("/dev/dvb/adapter2/demux0", O_NONBLOCK)) < 0 )
+    {
+        *env << "open failed";
+        return -1;
+    }
+
+    if ( (fda = open ("/dev/dvb/adapter2/demux0", O_NONBLOCK)) < 0 )
+    {
+        *env << "open failed";
+        return -1;
+    }
+
+    pesfilterv.pid = VIDEOPID;
+    pesfilterv.input = DMX_IN_DVR;
+    pesfilterv.output = DMX_OUT_DECODER;
+    pesfilterv.pes_type = DMX_PES_VIDEO;
+    pesfilterv.flags = 0;
+
+    pesfilterp.pid = PCRPID;
+    pesfilterp.input = DMX_IN_DVR;
+    pesfilterp.output = DMX_OUT_DECODER;
+    pesfilterp.pes_type = DMX_PES_PCR;
+    pesfilterp.flags = 0;
+
+    pesfiltera.pid = AUDIOPID;
+    pesfiltera.input = DMX_IN_DVR;
+    pesfiltera.output = DMX_OUT_DECODER;
+    pesfiltera.pes_type = DMX_PES_AUDIO;
+    pesfiltera.flags = 0;
+
+    ret = ioctl(fdv, DMX_SET_PES_FILTER, &pesfilterv);
+    if (ret != 0)
+    {
+
+       *env << "ioctl DMX_SET_PES_FILTER fdv failed\n";
+       return ret;
+    }
+
+    ret = ioctl(fdp, DMX_SET_PES_FILTER, &pesfilterp);
+    if (ret != 0)
+    {
+       *env << "ioctl DMX_SET_PES_FILTER fdp failed\n";
+       return ret;
+    }
+
+    ret = ioctl(fda, DMX_SET_PES_FILTER, &pesfiltera);
+    if (ret != 0)
+    {
+       *env << "ioctl DMX_SET_PES_FILTER fda failed\n";
+       return ret;
+    }
+
+    ret = ioctl(fdv, DMX_START);
+    if (ret != 0)
+    {
+       *env << "ioctl DMX_START fdv failed\n";
+       return ret;
+    }
+
+    ret = ioctl(fda, DMX_START);
+    if (ret != 0)
+    {
+       *env << "ioctl DMX_START fda failed\n";
+       return ret;
+    }
+
+    ret = ioctl(fdp, DMX_START);
+    if (ret != 0)
+    {
+        *env << "ioctl DMX_START fdp failed\n";
+        return ret;
+    }
+
+    ret = 0;
+}
+
 void usage() {
   *env << "Usage: " << progName
        << " [-p <startPortNum>] [-r|-q|-4|-i] [-a|-v] [-V] [-e <endTime>] [-E <max-inter-packet-gap-time> [-c] [-s <offset>] [-n] [-O]"
@@ -128,6 +238,14 @@

   unsigned short desiredPortNum = 0;

+  // setups dvb device (added by Theo)
+  int ret;
+  ret = setup_dvb();
+  if ( ret != 0 )
+  {
+      *env << "Setting up DVB failed.. \n";
+  }
+
   // unfortunately we can't use getopt() here, as Windoze doesn't have it
   while (argc > 2) {
     char* const opt = argv[1];
