From: Fraxinas Date: Wed, 23 Feb 2011 16:22:57 +0000 (+0100) Subject: only display missing codec warning when necessary (bixes bug #374) X-Git-Tag: master-2011.03~3 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/d7b2882048325bcddf00e9d19faa2e728fb7ca5b only display missing codec warning when necessary (bixes bug #374) --- diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp index b05b1030..4a976313 100644 --- a/lib/service/servicemp3.cpp +++ b/lib/service/servicemp3.cpp @@ -222,6 +222,7 @@ eServiceMP3::eServiceMP3(eServiceReference ref) m_stream_tags = 0; m_currentAudioStream = -1; m_currentSubtitleStream = 0; + m_audioStream_manually_changed = FALSE; m_subtitle_widget = 0; m_currentTrickRatio = 0; m_subs_to_pull = 0; @@ -1051,6 +1052,7 @@ RESULT eServiceMP3::selectTrack(unsigned int i) if (ppos < 0) ppos = 0; + m_audioStream_manually_changed = TRUE; int ret = selectAudioStream(i); if (!ret) { /* flush */ @@ -1244,7 +1246,19 @@ void eServiceMP3::gstBusCall(GstBus *bus, GstMessage *msg) if ( g_strrstr(sourceName, "videosink") ) m_event((iPlayableService*)this, evUser+11); else if ( g_strrstr(sourceName, "audiosink") ) - m_event((iPlayableService*)this, evUser+10); + { + if ( getNumberOfTracks() == 1 || m_audioStream_manually_changed == TRUE ) + { + m_event((iPlayableService*)this, evUser+10); + } + else + { + int next_track = getCurrentTrack() + 1; + if ( next_track >= getNumberOfTracks() ) + next_track = 0; + selectAudioStream(next_track); + } + } } } g_error_free(err); @@ -1314,6 +1328,7 @@ void eServiceMP3::gstBusCall(GstBus *bus, GstMessage *msg) m_audioStreams.clear(); m_subtitleStreams.clear(); + m_audioStream_manually_changed = FALSE; for (i = 0; i < n_audio; i++) { @@ -1380,6 +1395,7 @@ void eServiceMP3::gstBusCall(GstBus *bus, GstMessage *msg) if ( gst_is_missing_plugin_message(msg) ) { gchar *description = gst_missing_plugin_message_get_description(msg); + if ( description ) { m_error_message = "GStreamer plugin " + (std::string)description + " not available!\n"; diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h index a92a4cf7..365b9963 100644 --- a/lib/service/servicemp3.h +++ b/lib/service/servicemp3.h @@ -177,6 +177,7 @@ private: static int pcm_delay; static int ac3_delay; int m_currentAudioStream; + bool m_audioStream_manually_changed; int m_currentSubtitleStream; int selectAudioStream(int i); std::vector m_audioStreams;