dont't start vpid/apid if not available
[enigma2.git] / lib / dvb / decoder.cpp
index b9cfcded4bec68bdbda4c8b10055b0c5d9a53c95..28d877df1c0268164c1755d8d4e986485e9c203c 100644 (file)
@@ -309,11 +309,14 @@ int eTSMPEGDecoder::setState()
                if (m_video)
                        m_video->stop();
                m_video = 0;
-               m_video = new eDVBVideo(m_demux, 0);
-               if (m_video->startPid(m_vpid))
+               if ((m_vpid >= 0) && (m_vpid < 0x1FFF))
                {
-                       eWarning("video: startpid failed!");
-                       res = -1;
+                       m_video = new eDVBVideo(m_demux, 0);
+                       if (m_video->startPid(m_vpid))
+                       {
+                               eWarning("video: startpid failed!");
+                               res = -1;
+                       }
                }
                m_changed &= ~changeVideo;
        }
@@ -322,11 +325,14 @@ int eTSMPEGDecoder::setState()
                if (m_audio)
                        m_audio->stop();
                m_audio = 0;
-               m_audio = new eDVBAudio(m_demux, 0);
-               if (m_audio->startPid(m_apid))
+               if ((m_apid >= 0) && (m_apid < 0x1FFF))
                {
-                       eWarning("audio: startpid failed!");
-                       res = -1;
+                       m_audio = new eDVBAudio(m_demux, 0);
+                       if (m_audio->startPid(m_apid))
+                       {
+                               eWarning("audio: startpid failed!");
+                               res = -1;
+                       }
                }
                m_changed &= ~changeAudio;
        }