diff --git a/generic-pc/playback_gst_10.cpp b/generic-pc/playback_gst_10.cpp index 8acb951..1e99a1f 100644 --- a/generic-pc/playback_gst_10.cpp +++ b/generic-pc/playback_gst_10.cpp @@ -474,6 +474,13 @@ bool cPlayback::Open(playmode_t PlayMode) { lt_info("%s: PlayMode %d\n", __func__, PlayMode); + if (PlayMode != PLAYMODE_TS) + { + audioDecoder->closeDevice(); + videoDecoder->closeDevice(); + decoders_closed = true; + } + init_jump = -1; return true; } @@ -521,6 +528,12 @@ void cPlayback::Close(void) m_gst_playbin = NULL; + if (decoders_closed) + { + audioDecoder->openDevice(); + videoDecoder->openDevice(); + decoders_closed = false; + } } } @@ -735,6 +748,14 @@ bool cPlayback::SetSpeed(int speed) { lt_info( "%s:%s speed %d\n", FILENAME, __FUNCTION__, speed); + if (!decoders_closed) + { + audioDecoder->closeDevice(); + videoDecoder->closeDevice(); + decoders_closed = true; + usleep(500000); + } + if(playing == false) return false;