diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2008-11-17 15:42:54 +0100 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2008-11-17 15:42:54 +0100 |
| commit | a34ef895210161a8820e96829ac87806566e7858 (patch) | |
| tree | 55b9f104dbbdd8a1d72e598b989421f839576b9a /lib/dvb/decoder.cpp | |
| parent | 588010098dbcc24b82ea736feec6b6056cffd2e3 (diff) | |
| parent | 153e0ed5048c79c600e1acd085b62015b7314ba7 (diff) | |
| download | enigma2-a34ef895210161a8820e96829ac87806566e7858.tar.gz enigma2-a34ef895210161a8820e96829ac87806566e7858.zip | |
Merge branch 'master' into tmbinc/FixTimingBugs
Conflicts:
lib/dvb/sec.cpp
lib/python/Components/Network.py
lib/python/Components/Playlist.py
lib/python/Plugins/Extensions/DVDBurn/Process.py
lib/python/Plugins/Extensions/MediaPlayer/plugin.py
lib/python/Screens/TimerEdit.py
po/lt.po
po/nl.po
po/tr.po
Diffstat (limited to 'lib/dvb/decoder.cpp')
| -rw-r--r-- | lib/dvb/decoder.cpp | 51 |
1 files changed, 32 insertions, 19 deletions
diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index 0ce59d01..6ad39225 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -836,37 +836,40 @@ int eTSMPEGDecoder::setState() if (m_pcr) m_pcr->stop(); m_pcr = 0; - if ((m_pcrpid >= 0) && (m_pcrpid < 0x1FFF)) - { - m_pcr = new eDVBPCR(m_demux); - if (m_pcr->startPid(m_pcrpid)) - res = -1; - } - m_changed &= ~changePCR; } if (m_changed & changeVideo) { - eDebug("VIDEO CHANGED (to %04x)", m_vpid); if (m_video) { m_video->stop(); m_video = 0; m_video_event_conn = 0; } - if ((m_vpid >= 0) && (m_vpid < 0x1FFF)) - { - m_video = new eDVBVideo(m_demux, m_decoder); - m_video->connectEvent(slot(*this, &eTSMPEGDecoder::video_event), m_video_event_conn); - if (m_video->startPid(m_vpid, m_vtype)) - res = -1; - } - m_changed &= ~changeVideo; } if (m_changed & changeAudio) { if (m_audio) m_audio->stop(); m_audio = 0; + } + if (m_changed & changeText) + { + if (m_text) + m_text->stop(); + m_text = 0; + } + if (m_changed & changePCR) + { + if ((m_pcrpid >= 0) && (m_pcrpid < 0x1FFF)) + { + m_pcr = new eDVBPCR(m_demux); + if (m_pcr->startPid(m_pcrpid)) + res = -1; + } + m_changed &= ~changePCR; + } + if (m_changed & changeAudio) + { if ((m_apid >= 0) && (m_apid < 0x1FFF) && !noaudio) { m_audio = new eDVBAudio(m_demux, m_decoder); @@ -875,11 +878,19 @@ int eTSMPEGDecoder::setState() } m_changed &= ~changeAudio; } + if (m_changed & changeVideo) + { + if ((m_vpid >= 0) && (m_vpid < 0x1FFF)) + { + m_video = new eDVBVideo(m_demux, m_decoder); + m_video->connectEvent(slot(*this, &eTSMPEGDecoder::video_event), m_video_event_conn); + if (m_video->startPid(m_vpid, m_vtype)) + res = -1; + } + m_changed &= ~changeVideo; + } if (m_changed & changeText) { - if (m_text) - m_text->stop(); - m_text = 0; if ((m_textpid >= 0) && (m_textpid < 0x1FFF) && !nott) { m_text = new eDVBTText(m_demux); @@ -1069,6 +1080,7 @@ RESULT eTSMPEGDecoder::setFastForward(int frames_to_skip) m_is_ff = frames_to_skip != 0; setState(); + unfreeze(); // audio might be restarted and still in preroll (freezed) state. if (m_video) return m_video->setFastForward(frames_to_skip); @@ -1081,6 +1093,7 @@ RESULT eTSMPEGDecoder::setSlowMotion(int repeat) m_is_sm = repeat != 0; setState(); + unfreeze(); // audio might be restarted and still in preroll (freezed) state. if (m_video) return m_video->setSlowMotion(repeat); |
