Index: libs/libmythtv/dvbrecorder.cpp
===================================================================
--- libs/libmythtv/dvbrecorder.cpp	(revision 10446)
+++ libs/libmythtv/dvbrecorder.cpp	(working copy)
@@ -424,6 +424,8 @@
 
 bool DVBRecorder::AdjustFilters(void)
 {
+    StopDummyVideo(); // Stop the dummy video before acquiring the lock.
+
     QMutexLocker change_lock(&_pid_lock);
 
     if (!_input_pat || !_input_pmt)
@@ -491,7 +493,6 @@
 
 
     // [Re]start dummy video
-    StopDummyVideo();
     StartDummyVideo();
 
     // Report if there are no PIDs..
@@ -597,6 +598,7 @@
             {
                 CreatePAT();
                 CreatePMT();
+                _ts_packets_until_psip_sync = 0;
             }
         }
 
@@ -1125,6 +1127,7 @@
 
 void DVBRecorder::RunDummyVideo(void)
 {
+    sleep(3); // Delay start-up. This seems to avoid some problems.
     QString p = gContext->GetThemesParentDir();
     QString path[] =
     {
Index: libs/libmythtv/avformatdecoder.cpp
===================================================================
--- libs/libmythtv/avformatdecoder.cpp	(revision 10446)
+++ libs/libmythtv/avformatdecoder.cpp	(working copy)
@@ -815,7 +815,7 @@
 
     {
         int initialAudio = -1, initialVideo = -1;
-        if (itv)
+        if (itv || (itv = GetNVP()->GetInteractiveTV()) != NULL)
             itv->GetInitialStreams(initialAudio, initialVideo);
         if (initialAudio >= 0)
             SetAudioByComponentTag(initialAudio);
@@ -2095,7 +2095,7 @@
 void AvFormatDecoder::ProcessDSMCCPacket(
     const AVStream *str, const AVPacket *pkt)
 {
-    if (!itv)
+    if (!itv && ! (itv = GetNVP()->GetInteractiveTV()))
         return;
 
     // The packet may contain several tables.
