TUXBOX_APPS_LIB_PKGCONFIG(SIGC,sigc++-1.2)
TUXBOX_APPS_LIB_PKGCONFIG(DVBSI,libdvbsi++)
_TUXBOX_APPS_LIB_PKGCONFIG_OPTIONAL(GSTREAMER,gstreamer,HAVE_GSTREAMER)
+_TUXBOX_APPS_LIB_PKGCONFIG_OPTIONAL(GSTREAMERPBUTILS,gstreamer-pbutils,HAVE_GSTSTREAMERPBUTILS)
AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
JPEG_LIBS="-ljpeg"
AC_SUBST(JPEG_LIBS)
AM_CONDITIONAL(WITH_SDL, test "$WITH_SDL" = "yes")
CPPFLAGS="$CPPFLAGS "'-I$(top_srcdir)'
-CPPFLAGS="$CPPFLAGS -D_REENTRANT $PYTHON_CPPFLAGS $MD5SUM_CFLAGS $FREETYPE_CFLAGS $FRIBIDI_CFLAGS $ID3TAG_CFLAGS $MAD_CFLAGS $PLUGINS_CFLAGS $PNG_CFLAGS $SDL_CFLAGS $SIGC_CFLAGS $XMLTREE_CFLAGS $DVBSI_CFLAGS $GSTREAMER_CFLAGS $LIBUNGIF_CLFAGS"
+CPPFLAGS="$CPPFLAGS -D_REENTRANT $PYTHON_CPPFLAGS $MD5SUM_CFLAGS $FREETYPE_CFLAGS $FRIBIDI_CFLAGS $ID3TAG_CFLAGS $MAD_CFLAGS $PLUGINS_CFLAGS $PNG_CFLAGS $SDL_CFLAGS $SIGC_CFLAGS $XMLTREE_CFLAGS $DVBSI_CFLAGS $GSTREAMER_CFLAGS $GSTREAMERPBUTILS_CFLAGS $LIBUNGIF_CLFAGS"
#CPPFLAGS="$CPPFLAGS -DMEMLEAK_CHECK"
CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions -Wall"
-LDFLAGS="$LDFLAGS -pthread $PYTHON_LDFLAGS $SDL_LDFLAGS $GSTREAMER_LDFLAGS $LIBUNGIF_LDFLAGS"
+LDFLAGS="$LDFLAGS -pthread $PYTHON_LDFLAGS $SDL_LDFLAGS $GSTREAMER_LDFLAGS $GSTREAMERPBUTILS_LDFLAGS $LIBUNGIF_LDFLAGS"
#LDFLAGS="-rdynamic $LDFLAGS"
TUXBOX_APPS_GETTEXT
self.addPlaylistParser(PlaylistIOInternal, "e2pls")
# 'None' is magic to start at the list of mountpoints
- self.filelist = FileList(None, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob|avi|mkv|dat)", useServiceRef = True, additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
+ self.filelist = FileList(None, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob|avi|mkv|dat|flac)", useServiceRef = True, additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
self["filelist"] = self.filelist
self.playlist = MyPlayList()
self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
{
iPlayableService.evUpdatedInfo: self.__evUpdatedInfo,
- iPlayableService.evUser+11: self.__evDecodeError
+ iPlayableService.evUser+11: self.__evDecodeError,
+ iPlayableService.evUser+12: self.__evPluginError
})
def doNothing(self):
currPlay = self.session.nav.getCurrentService()
sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
- self.session.open(MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MessageBox.TYPE_INFO,timeout = 10 )
+ self.session.open(MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MessageBox.TYPE_INFO,timeout = 20 )
+
+ def __evPluginError(self):
+ currPlay = self.session.nav.getCurrentService()
+ message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
+ print "[__evPluginError]" , message
+ self.session.open(MessageBox, ("GStreamer Error: missing %s") % message, type = MessageBox.TYPE_INFO,timeout = 20 )
def delMPTimer(self):
del self.rightKeyTimer
currref = self.playlist.getServiceRefList()[idx]
text = self.getIdentifier(currref)
text = ">"+text
- ext = text[-3:].lower()
+ ext = text[-4:].lower()
# FIXME: the information if the service contains video (and we should hide our window) should com from the service instead
- if ext not in ["mp3", "wav", "ogg"] and not self.isAudioCD:
+ if ext not in [".mp3", ".wav", ".ogg", "flac"] and not self.isAudioCD:
self.hide()
else:
needsInfoUpdate = True
idx = self.playlist.getCurrentIndex()
currref = self.playlist.getServiceRefList()[idx]
text = currref.getPath()
- ext = text[-3:].lower()
- if ext not in ["mp3", "wav", "ogg"] and not self.isAudioCD:
+ ext = text[-4:].lower()
+ if ext not in [".mp3", ".wav", ".ogg", "flac"] and not self.isAudioCD:
self.hide()
else:
needsInfoUpdate = True
description = "View Video CD...",
openfnc = filescan_open,
),
- Scanner(mimetypes = ["audio/mpeg", "audio/x-wav", "application/ogg"],
+ Scanner(mimetypes = ["audio/mpeg", "audio/x-wav", "application/ogg", "audio/x-flac"],
paths_to_scan =
[
ScanPath(path = "", with_subdirs = False),
#include <lib/base/init_num.h>
#include <lib/base/init.h>
#include <gst/gst.h>
+#include <gst/pbutils/missing-plugins.h>find
#include <sys/stat.h>
/* for subtitles */
#include <lib/gui/esubtitle.h>
extensions.push_back("mkv");
extensions.push_back("avi");
extensions.push_back("dat");
+ extensions.push_back("flac");
sc->addServiceFactory(eServiceFactoryMP3::id, this, extensions);
}
case sTracknumber:
case sGenre:
case sVideoType:
+ case sUser+12:
return resIsString;
case sCurrentTitle:
tag = GST_TAG_TRACK_NUMBER;
case sVideoType:
tag = GST_TAG_VIDEO_CODEC;
break;
+ case sUser+12:
+ return m_error_message;
default:
return "";
}
}
}
}
+ case GST_MESSAGE_ELEMENT:
+ {
+ if ( gst_is_missing_plugin_message(msg) )
+ {
+ gchar *description = gst_missing_plugin_message_get_description(msg);
+ if ( description )
+ {
+ m_error_message = description;
+ g_free(description);
+ m_event((iPlayableService*)this, evUser+12);
+ }
+ }
+ }
default:
break;
}