+RESULT eServiceMP3::audioTracks(ePtr<iAudioTrackSelection> &ptr)
+{
+ ptr = this;
+ return 0;
+}
+
+int eServiceMP3::getNumberOfTracks()
+{
+ eDebug("eServiceMP3::getNumberOfTracks()=%i",m_audioStreams.size());
+ return m_audioStreams.size();
+}
+
+int eServiceMP3::getCurrentTrack()
+{
+ eDebug("eServiceMP3::getCurrentTrack()=%i",m_currentAudioStream);
+ return m_currentAudioStream;
+}
+
+RESULT eServiceMP3::selectTrack(unsigned int i)
+{
+ eDebug("eServiceMP3::selectTrack(%i)",i);
+
+ GstPadLinkReturn ret;
+ gint nb_sources;
+ GstPad *active_pad;
+
+ GstElement *selector = gst_bin_get_by_name(GST_BIN(m_gst_pipeline),"switch_audio");
+ g_object_get (G_OBJECT (selector), "n-pads", &nb_sources, NULL);
+ g_object_get (G_OBJECT (selector), "active-pad", &active_pad, NULL);
+
+ if ( i >= m_audioStreams.size() || i >= nb_sources || m_currentAudioStream >= m_audioStreams.size() )
+ return -2;
+
+ char sinkpad[8];
+ sprintf(sinkpad, "sink%d", i);
+
+ g_object_set (G_OBJECT (selector), "active-pad", gst_element_get_pad (selector, sinkpad), NULL);
+ g_object_get (G_OBJECT (selector), "active-pad", &active_pad, NULL);
+
+ gchar *name;
+ name = gst_pad_get_name (active_pad);
+ eDebug ("switched audio to (%s)", name);
+
+ m_currentAudioStream = i;
+ return 0;
+}
+
+int eServiceMP3::getCurrentChannel()
+{
+ return STEREO;
+}
+
+RESULT eServiceMP3::selectChannel(int i)
+{
+ eDebug("eServiceMP3::selectChannel(%i)",i);
+ return 0;
+}
+
+RESULT eServiceMP3::getTrackInfo(struct iAudioTrackInfo &info, unsigned int i)
+{
+// eDebug("eServiceMP3::getTrackInfo(&info, %i)",i);
+ if (i >= m_audioStreams.size())
+ return -2;
+ if (m_audioStreams[i].type == audioStream::atMP2)
+ info.m_description = "MP2";
+ else if (m_audioStreams[i].type == audioStream::atMP3)
+ info.m_description = "MP3";
+ else if (m_audioStreams[i].type == audioStream::atAC3)
+ info.m_description = "AC3";
+ else if (m_audioStreams[i].type == audioStream::atAAC)
+ info.m_description = "AAC";
+ else if (m_audioStreams[i].type == audioStream::atDTS)
+ info.m_description = "DTS";
+ else
+ info.m_description = "???";
+ if (info.m_language.empty())
+ info.m_language = m_audioStreams[i].language_code;
+ return 0;
+}