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.