aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2011-02-23 17:22:57 +0100
committerFraxinas <andreas.frisch@multimedia-labs.de>2011-02-23 17:22:57 +0100
commitd7b2882048325bcddf00e9d19faa2e728fb7ca5b (patch)
tree729ef8dbf1af624716583935bd436095fbb8ec8b
parentd15066ea9f5412d83fb46db2974ef08646d86634 (diff)
downloadenigma2-d7b2882048325bcddf00e9d19faa2e728fb7ca5b.tar.gz
enigma2-d7b2882048325bcddf00e9d19faa2e728fb7ca5b.zip
only display missing codec warning when necessary (bixes bug #374)
-rw-r--r--lib/service/servicemp3.cpp18
-rw-r--r--lib/service/servicemp3.h1
2 files changed, 18 insertions, 1 deletions
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<audioStream> m_audioStreams;