diff -Nru banshee-community-extensions-2.4.0/debian/changelog banshee-community-extensions-2.4.0/debian/changelog --- banshee-community-extensions-2.4.0/debian/changelog 2012-09-11 17:06:59.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/changelog 2013-06-12 18:38:18.000000000 +0000 @@ -1,3 +1,25 @@ +banshee-community-extensions (2.4.0-2ubuntu1) saucy; urgency=low + + * [ff4badf] Merge from Debian Unstable, remaining changes: + + Enable AppIndicator extension + + -- Chow Loong Jin Mon, 03 Jun 2013 23:00:22 +0800 + +banshee-community-extensions (2.4.0-2) unstable; urgency=low + + * [3d02ca2] d/rules: Call dh clean in clean rule + * [2f08fee] Import patches to port extensions to gst1.0 + * [b835b2d] Exchange gst0.10 build-deps for gst1.0 + * [3b2bdc5] Disable streamrecorder and karaoke extensions + streamrecorder is still stuck on gst0.10, which doesn't work with Banshee + that has been ported to gst1.0, and karaoke depends on streamrecorder. + * [8064db4] Fix typo in -lastfmfingerprint description. + Closes: ##712068 + Thanks to Pascal De Vuyst + * [f1dd8ad] Add more patches for Gst1.0 port + + -- Chow Loong Jin Mon, 03 Jun 2013 21:43:03 +0800 + banshee-community-extensions (2.4.0-1ubuntu2) quantal; urgency=low * Rebuild to update libtaglib2.x-cil dependency. diff -Nru banshee-community-extensions-2.4.0/debian/control banshee-community-extensions-2.4.0/debian/control --- banshee-community-extensions-2.4.0/debian/control 2012-04-09 15:00:34.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/control 2013-06-12 18:38:18.000000000 +0000 @@ -17,8 +17,8 @@ libglib2.0-dev, libfftw3-dev, libsqlite3-dev (>= 3.3), - libgstreamer0.10-dev (>= 0.10.15), - libgstreamer-plugins-base0.10-dev (>= 0.10.15), + libgstreamer1.0-dev, + libgstreamer-plugins-base1.0-dev, libsamplerate0-dev, intltool (>= 0.35), libgconf2.0-cil-dev, @@ -63,7 +63,6 @@ banshee-extension-openvp (>= ${source:Version}), banshee-extension-radiostationfetcher (>= ${source:Version}), banshee-extension-randombylastfm (>= ${source:Version}), - banshee-extension-streamrecorder (>= ${source:Version}), banshee-extension-telepathy (>= ${source:Version}), banshee-extension-zeitgeistdataprovider (>= ${source:Version}) Depends: banshee-extensions-common (= ${source:Version}), @@ -186,17 +185,6 @@ . Banshee is a media management and playback application for the GNOME desktop. -Package: banshee-extension-karaoke -Enhances: banshee -Architecture: all -Depends: banshee-extension-streamrecorder (= ${source:Version}), - ${cli:Depends}, ${shlibs:Depends}, ${misc:Depends} -Description: Karaoke extension for Banshee - This package adds karaoke functionality to Banshee by allowing filtering the - singers' voice out of the song as it is played. - . - Banshee is a media management and playback application for the GNOME desktop. - Package: banshee-extension-lastfmfingerprint Enhances: banshee Architecture: any @@ -204,7 +192,7 @@ ${cli:Depends}, ${shlibs:Depends}, ${misc:Depends} Description: Last.FM fingerprinting extension for Banshee This package provides additional integration between Last.FM and Banshee, - allowing Banshee to automatically generate and audio fingerprint and correct + allowing Banshee to automatically generate an audio fingerprint and correct your metadata by querying Last.FM for the correct metadata. . Banshee is a media management and playback application for the GNOME desktop. @@ -334,22 +322,6 @@ . Banshee is a media management and playback application for the GNOME desktop. -Package: banshee-extension-streamrecorder -Enhances: banshee -Architecture: all -Depends: banshee-extensions-common (= ${source:Version}), - ${cli:Depends}, ${misc:Depends} -Description: StreamRecorder extension for Banshee - This package provides the StreamRecorder extension for Banshee which will allow - it to rip/record radio streams. It has the following features: - * Recording "what you hear is what you get" - * Multiple encoders configurable - * Recorded stream injected with metadata tags - * Automatic file splitting and naming for streams sending metadata tags for - title and artist - . - Banshee is a media management and playback application for the GNOME desktop. - Package: banshee-extension-telepathy Enhances: banshee Architecture: all diff -Nru banshee-community-extensions-2.4.0/debian/patches/LastfmFingerprint-Clean-up-caps-handling-and-make-su.patch banshee-community-extensions-2.4.0/debian/patches/LastfmFingerprint-Clean-up-caps-handling-and-make-su.patch --- banshee-community-extensions-2.4.0/debian/patches/LastfmFingerprint-Clean-up-caps-handling-and-make-su.patch 1970-01-01 00:00:00.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/patches/LastfmFingerprint-Clean-up-caps-handling-and-make-su.patch 2013-06-12 18:38:18.000000000 +0000 @@ -0,0 +1,119 @@ +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Mon, 10 Jun 2013 14:35:42 +0200 +Subject: LastfmFingerprint: Clean up caps handling and make sure to wait until + we know the audio caps + +--- + .../liblastfmfpbridge/gst-lastfmfpbridge.cpp | 59 +++++++++++++--------- + 1 file changed, 36 insertions(+), 23 deletions(-) + +diff --git a/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp b/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp +index c197b36..dcd8441 100644 +--- a/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp ++++ b/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp +@@ -63,9 +63,8 @@ struct LastfmfpAudio { + }; + + static void +-Lastfmfp_cb_newpad(GstElement *decodebin, GstPad *pad, LastfmfpAudio *ma) ++Lastfmfp_link_audio_pad(GstPad *pad, GstCaps *caps, LastfmfpAudio *ma) + { +- GstCaps *caps; + GstStructure *str; + GstPad *audiopad; + +@@ -77,21 +76,46 @@ Lastfmfp_cb_newpad(GstElement *decodebin, GstPad *pad, LastfmfpAudio *ma) + } + + // check media type +- caps = gst_pad_get_current_caps(pad); + str = gst_caps_get_structure(caps, 0); +- +- if (!g_strrstr(gst_structure_get_name(str), "audio")) { +- gst_caps_unref(caps); ++ if (!g_strrstr(gst_structure_get_name(str), "audio/")) { + gst_object_unref(audiopad); + return; + } +- gst_caps_unref(caps); ++ ++ if (!gst_structure_get_int(str, "rate", &ma->filerate)) ++ ma->filerate = -1; ++ if (!gst_structure_get_int(str, "channels", &ma->nchannels)) ++ ma->nchannels = -1; + + // link + gst_pad_link(pad, audiopad); + gst_object_unref(audiopad); + } + ++static void ++Lastfmfp_cb_caps_notify(GstPad *pad, GParamSpec *unused, LastfmfpAudio *ma) ++{ ++ GstCaps *caps; ++ ++ caps = gst_pad_get_current_caps(pad); ++ Lastfmfp_link_audio_pad(pad, caps, ma); ++ gst_caps_unref (caps); ++} ++ ++static void ++Lastfmfp_cb_newpad(GstElement *decodebin, GstPad *pad, LastfmfpAudio *ma) ++{ ++ GstCaps *caps; ++ ++ caps = gst_pad_get_current_caps(pad); ++ /* If we have no caps yet, wait until we have them */ ++ if (!caps) { ++ g_signal_connect(pad, "notify::caps", G_CALLBACK(Lastfmfp_cb_caps_notify), ma); ++ return; ++ } ++ gst_caps_unref(caps); ++} ++ + static void FingerprintFound(LastfmfpAudio *ma) + { + //we have the fingerprint +@@ -221,18 +245,6 @@ Lastfmfp_initgstreamer(LastfmfpAudio *ma, const gchar *file) + if (gst_element_set_state(ma->pipeline, GST_STATE_PAUSED) == GST_STATE_CHANGE_ASYNC) { + gst_element_get_state(ma->pipeline, NULL, NULL, max_wait); + } +- +- GstPad *pad = gst_element_get_static_pad(sink, "sink"); +- GstCaps *caps = gst_pad_get_current_caps(pad); +- if (GST_IS_CAPS(caps)) { +- GstStructure *str = gst_caps_get_structure(caps, 0); +- gst_structure_get_int(str, "rate", &ma->filerate); +- gst_structure_get_int(str, "channels", &ma->nchannels); +- } else { +- ma->filerate = -1; +- } +- gst_caps_unref(caps); +- gst_object_unref(pad); + } + + extern "C" const char* +@@ -248,11 +260,8 @@ Lastfmfp_decode(LastfmfpAudio *ma, const gchar *file, int* size, int* ret) + + // Gstreamer setup + Lastfmfp_initgstreamer(ma, file); +- //lastfm setup +- ma->extractor = new fingerprint::FingerprintExtractor(); +- ma->extractor->initForQuery(ma->filerate, ma->nchannels, ma->seconds); + +- if (ma->filerate < 0) { ++ if (ma->filerate < 0 || ma->nchannels < 0) { + *size = 0; + *ret = -1; + +@@ -263,6 +272,10 @@ Lastfmfp_decode(LastfmfpAudio *ma, const gchar *file, int* size, int* ret) + return NULL; + } + ++ //lastfm setup ++ ma->extractor = new fingerprint::FingerprintExtractor(); ++ ma->extractor->initForQuery(ma->filerate, ma->nchannels, ma->seconds); ++ + // decode... + gst_element_set_state(ma->pipeline, GST_STATE_PLAYING); + g_print("libLastfmfp: decoding %s\n", file); diff -Nru banshee-community-extensions-2.4.0/debian/patches/Mirage-Clean-up-caps-handling-and-make-sure-to-wait-.patch banshee-community-extensions-2.4.0/debian/patches/Mirage-Clean-up-caps-handling-and-make-sure-to-wait-.patch --- banshee-community-extensions-2.4.0/debian/patches/Mirage-Clean-up-caps-handling-and-make-sure-to-wait-.patch 1970-01-01 00:00:00.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/patches/Mirage-Clean-up-caps-handling-and-make-sure-to-wait-.patch 2013-06-12 18:38:18.000000000 +0000 @@ -0,0 +1,96 @@ +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Mon, 10 Jun 2013 14:28:52 +0200 +Subject: Mirage: Clean up caps handling and make sure to wait until we know + the audio caps + +--- + src/Mirage/libmirageaudio/gst-mirageaudio.c | 50 ++++++++++++++++++----------- + 1 file changed, 31 insertions(+), 19 deletions(-) + +diff --git a/src/Mirage/libmirageaudio/gst-mirageaudio.c b/src/Mirage/libmirageaudio/gst-mirageaudio.c +index 292ba74..172354e 100644 +--- a/src/Mirage/libmirageaudio/gst-mirageaudio.c ++++ b/src/Mirage/libmirageaudio/gst-mirageaudio.c +@@ -91,9 +91,8 @@ void toc() + } + + static void +-mirageaudio_cb_newpad(GstElement *decodebin, GstPad *pad, MirageAudio *ma) ++mirageaudio_link_audio_pad(GstPad *pad, GstCaps *caps, MirageAudio *ma) + { +- GstCaps *caps; + GstStructure *str; + GstPad *audiopad; + +@@ -105,15 +104,14 @@ mirageaudio_cb_newpad(GstElement *decodebin, GstPad *pad, MirageAudio *ma) + } + + // check media type +- caps = gst_pad_get_current_caps(pad); + str = gst_caps_get_structure(caps, 0); +- +- if (!g_strrstr(gst_structure_get_name(str), "audio")) { +- gst_caps_unref(caps); ++ if (!g_strrstr(gst_structure_get_name(str), "audio/")) { + gst_object_unref(audiopad); + return; + } +- gst_caps_unref(caps); ++ ++ if (!gst_structure_get_int(str, "rate", &ma->filerate)) ++ ma->filerate = -1; + + // link + gst_pad_link(pad, audiopad); +@@ -121,6 +119,32 @@ mirageaudio_cb_newpad(GstElement *decodebin, GstPad *pad, MirageAudio *ma) + } + + static void ++mirageaudio_cb_caps_notify(GstPad *pad, GParamSpec *unused, MirageAudio *ma) ++{ ++ GstCaps *caps; ++ ++ caps = gst_pad_get_current_caps(pad); ++ mirageaudio_link_audio_pad(pad, caps, ma); ++ gst_caps_unref (caps); ++} ++ ++static void ++mirageaudio_cb_newpad(GstElement *decodebin, GstPad *pad, MirageAudio *ma) ++{ ++ GstCaps *caps; ++ ++ caps = gst_pad_get_current_caps(pad); ++ /* If we have no caps yet, wait until we have them */ ++ if (!caps) { ++ g_signal_connect(pad, "notify::caps", G_CALLBACK(mirageaudio_cb_caps_notify), ma); ++ return; ++ } ++ ++ mirageaudio_link_audio_pad(pad, caps, ma); ++ gst_caps_unref (caps); ++} ++ ++static void + mirageaudio_cb_have_data(GstElement *element, GstBuffer *buffer, GstPad *pad, MirageAudio *ma) + { + gint buffersamples; +@@ -342,18 +366,6 @@ mirageaudio_initgstreamer(MirageAudio *ma, const gchar *file) + if (gst_element_set_state(ma->pipeline, GST_STATE_PAUSED) == GST_STATE_CHANGE_ASYNC) { + gst_element_get_state(ma->pipeline, NULL, NULL, max_wait); + } +- +- GstPad *pad = gst_element_get_static_pad(sink, "sink"); +- GstCaps *caps = gst_pad_get_current_caps(pad); +- if (GST_IS_CAPS(caps)) { +- GstStructure *str = gst_caps_get_structure(caps, 0); +- gst_structure_get_int(str, "rate", &ma->filerate); +- +- } else { +- ma->filerate = -1; +- } +- gst_caps_unref(caps); +- gst_object_unref(pad); + } + + float* diff -Nru banshee-community-extensions-2.4.0/debian/patches/Port-LastfmFingerprint-plugin-to-GStreamer-1.0.patch banshee-community-extensions-2.4.0/debian/patches/Port-LastfmFingerprint-plugin-to-GStreamer-1.0.patch --- banshee-community-extensions-2.4.0/debian/patches/Port-LastfmFingerprint-plugin-to-GStreamer-1.0.patch 1970-01-01 00:00:00.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/patches/Port-LastfmFingerprint-plugin-to-GStreamer-1.0.patch 2013-06-12 18:38:18.000000000 +0000 @@ -0,0 +1,164 @@ +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Tue, 28 May 2013 11:48:08 +0200 +Subject: Port LastfmFingerprint plugin to GStreamer 1.0 + +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=679433 +--- + build/m4/extensions/lastfmfingerprint.m4 | 8 ++--- + .../liblastfmfpbridge/gst-lastfmfpbridge.cpp | 40 ++++++++++++---------- + .../liblastfmfpbridge/lastfmfpbridgetest.cpp | 1 + + 3 files changed, 27 insertions(+), 22 deletions(-) + +diff --git a/build/m4/extensions/lastfmfingerprint.m4 b/build/m4/extensions/lastfmfingerprint.m4 +index 9ab0c53..21a6549 100644 +--- a/build/m4/extensions/lastfmfingerprint.m4 ++++ b/build/m4/extensions/lastfmfingerprint.m4 +@@ -19,11 +19,11 @@ AC_DEFUN([BCE_LASTFMFINGERPRINT], + [banshee-lastfm], + [banshee-lastfm was not found. Please install it or disable the LastfmFingerprint extension by passing --disable-lastfmfingerprint]) + +- GSTREAMER_REQUIRED_VERSION=0.10.15 ++ GSTREAMER_REQUIRED_VERSION=1.0 + BCE_CHECK_EXTENSION_DEP([LastfmFingerprint], [GSTREAMER], +- [gstreamer-0.10 >= $GSTREAMER_REQUIRED_VERSION +- gstreamer-base-0.10 >= $GSTREAMER_REQUIRED_VERSION +- gstreamer-plugins-base-0.10 >= $GSTREAMER_REQUIRED_VERSION], ++ [gstreamer-1.0 >= $GSTREAMER_REQUIRED_VERSION ++ gstreamer-base-1.0 >= $GSTREAMER_REQUIRED_VERSION ++ gstreamer-plugins-base-1.0 >= $GSTREAMER_REQUIRED_VERSION], + [GStreamer >= $GSTREAMER_REQUIRED_VERSION not found. Please install it or disable the LastfmFingerprint extension by passing --disable-lastfmfingerprint]) + + if test "x$enable_LastfmFingerprint" = "xtry" \ +diff --git a/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp b/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp +index 12268c1..c197b36 100644 +--- a/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp ++++ b/src/LastfmFingerprint/liblastfmfpbridge/gst-lastfmfpbridge.cpp +@@ -25,6 +25,9 @@ + + #include + #include ++#include ++ ++#include + + #include "gst-lastfmfpbridge.h" + +@@ -60,21 +63,21 @@ struct LastfmfpAudio { + }; + + static void +-Lastfmfp_cb_newpad(GstElement *decodebin, GstPad *pad, gboolean last, LastfmfpAudio *ma) ++Lastfmfp_cb_newpad(GstElement *decodebin, GstPad *pad, LastfmfpAudio *ma) + { + GstCaps *caps; + GstStructure *str; + GstPad *audiopad; + + // only link once +- audiopad = gst_element_get_pad(ma->audio, "sink"); ++ audiopad = gst_element_get_static_pad(ma->audio, "sink"); + if (GST_PAD_IS_LINKED(audiopad)) { + g_object_unref(audiopad); + return; + } + + // check media type +- caps = gst_pad_get_caps(pad); ++ caps = gst_pad_get_current_caps(pad); + str = gst_caps_get_structure(caps, 0); + + if (!g_strrstr(gst_structure_get_name(str), "audio")) { +@@ -107,17 +110,22 @@ Lastfmfp_getVersion (LastfmfpAudio *ma) + static void + Lastfmfp_cb_have_data(GstElement *element, GstBuffer *buffer, GstPad *pad, LastfmfpAudio *ma) + { ++ GstMapInfo map; ++ + // if data continues to flow/EOS is not yet processed + if (ma->quit) + return; + + // exit on empty buffer +- if (buffer->size <= 0) ++ if (gst_buffer_get_size(buffer) <= 0) ++ return; ++ ++ if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) + return; + +- ma->data_in = (short*)GST_BUFFER_DATA(buffer); ++ ma->data_in = (short*)map.data; + //ma->num_samples = (size_t)(GST_BUFFER_OFFSET_END (buffer) - GST_BUFFER_OFFSET (buffer)); +- ma->num_samples = (size_t)(GST_BUFFER_SIZE (buffer) / sizeof(guint16)); ++ ma->num_samples = (size_t)(map.size / sizeof(guint16)); + + //printf("caps: %s\n", gst_caps_to_string(GST_BUFFER_CAPS(buffer))); + //printf(" offset : %llu size: %llu \n", (unsigned long long)GST_BUFFER_OFFSET (buffer), (unsigned long long)GST_BUFFER_OFFSET_END (buffer)); +@@ -133,10 +141,9 @@ Lastfmfp_cb_have_data(GstElement *element, GstBuffer *buffer, GstPad *pad, Lastf + g_print("libLastfmfp: EOS Message sent\n"); + gst_object_unref(bus); + ma->quit = TRUE; +- return; +- + } +- ++ ++ gst_buffer_unmap (buffer, &map); + + return; + } +@@ -173,7 +180,7 @@ Lastfmfp_initgstreamer(LastfmfpAudio *ma, const gchar *file) + src = gst_element_factory_make("filesrc", "source"); + g_object_set(G_OBJECT(src), "location", file, NULL); + dec = gst_element_factory_make("decodebin", "decoder"); +- g_signal_connect(dec, "new-decoded-pad", G_CALLBACK(Lastfmfp_cb_newpad), ma); ++ g_signal_connect(dec, "pad-added", G_CALLBACK(Lastfmfp_cb_newpad), ma); + gst_bin_add_many(GST_BIN(ma->pipeline), src, dec, NULL); + gst_element_link(src, dec); + +@@ -181,11 +188,8 @@ Lastfmfp_initgstreamer(LastfmfpAudio *ma, const gchar *file) + ma->audio = gst_bin_new("audio"); + + audioconvert = gst_element_factory_make("audioconvert", "conv"); +- filter_short = gst_caps_new_simple("audio/x-raw-int", +- "width", G_TYPE_INT, 16, +- "depth", G_TYPE_INT, 16, +- "endianness", G_TYPE_INT, 1234,//BYTE_ORDER, //1234, +- "signed", G_TYPE_BOOLEAN, TRUE, ++ filter_short = gst_caps_new_simple("audio/x-raw", ++ "format", G_TYPE_STRING, GST_AUDIO_NE(S16), + NULL); + cfilt_short = gst_element_factory_make("capsfilter", "cfilt_short"); + g_object_set(G_OBJECT(cfilt_short), "caps", filter_short, NULL); +@@ -202,7 +206,7 @@ Lastfmfp_initgstreamer(LastfmfpAudio *ma, const gchar *file) + gst_element_link_many(audioconvert, cfilt_short, + sink, NULL); + +- audiopad = gst_element_get_pad(audioconvert, "sink"); ++ audiopad = gst_element_get_static_pad(audioconvert, "sink"); + gst_element_add_pad(ma->audio, + gst_ghost_pad_new("sink", audiopad)); + gst_object_unref(audiopad); +@@ -218,8 +222,8 @@ Lastfmfp_initgstreamer(LastfmfpAudio *ma, const gchar *file) + gst_element_get_state(ma->pipeline, NULL, NULL, max_wait); + } + +- GstPad *pad = gst_element_get_pad(sink, "sink"); +- GstCaps *caps = gst_pad_get_negotiated_caps(pad); ++ GstPad *pad = gst_element_get_static_pad(sink, "sink"); ++ GstCaps *caps = gst_pad_get_current_caps(pad); + if (GST_IS_CAPS(caps)) { + GstStructure *str = gst_caps_get_structure(caps, 0); + gst_structure_get_int(str, "rate", &ma->filerate); +diff --git a/src/LastfmFingerprint/liblastfmfpbridge/lastfmfpbridgetest.cpp b/src/LastfmFingerprint/liblastfmfpbridge/lastfmfpbridgetest.cpp +index 66ab448..487443e 100644 +--- a/src/LastfmFingerprint/liblastfmfpbridge/lastfmfpbridgetest.cpp ++++ b/src/LastfmFingerprint/liblastfmfpbridge/lastfmfpbridgetest.cpp +@@ -21,6 +21,7 @@ + */ + + #include ++#include + + #include "gst-lastfmfpbridge.h" + diff -Nru banshee-community-extensions-2.4.0/debian/patches/Port-Mirage-plugin-to-GStreamer-1.0.patch banshee-community-extensions-2.4.0/debian/patches/Port-Mirage-plugin-to-GStreamer-1.0.patch --- banshee-community-extensions-2.4.0/debian/patches/Port-Mirage-plugin-to-GStreamer-1.0.patch 1970-01-01 00:00:00.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/patches/Port-Mirage-plugin-to-GStreamer-1.0.patch 2013-06-12 18:38:18.000000000 +0000 @@ -0,0 +1,206 @@ +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Tue, 28 May 2013 11:39:52 +0200 +Subject: Port Mirage plugin to GStreamer 1.0 + +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=679433 +--- + README | 12 ++++----- + build/m4/extensions/mirage.m4 | 8 +++--- + src/Mirage/libmirageaudio/gst-mirageaudio.c | 39 ++++++++++++++++++----------- + 3 files changed, 35 insertions(+), 24 deletions(-) + +diff --git a/README b/README +index 8c5e53d..25eca5c 100644 +--- a/README ++++ b/README +@@ -47,9 +47,9 @@ LastfmFingerprint + glib-2.0 + fftw3f + samplerate +- gstreamer-0.10 >= 0.10.15 +- gstreamer-base-0.10 >= 0.10.15 +- gstreamer-plugins-base-0.10 >= 0.10.15 ++ gstreamer-1.0 >= 1.0 ++ gstreamer-base-1.0 >= 1.0 ++ gstreamer-plugins-base-1.0 >= 1.0 + + LCD + LCDProc +@@ -61,9 +61,9 @@ Mirage: + glib-2.0 + fftw3f + samplerate +- gstreamer-0.10 >= 0.10.15 +- gstreamer-base-0.10 >= 0.10.15 +- gstreamer-plugins-base-0.10 >= 0.10.15 ++ gstreamer-1.0 >= 1.0 ++ gstreamer-base-1.0 >= 1.0 ++ gstreamer-plugins-base-1.0 >= 1.0 + + Telepathy + empathy >= 2.27.91 +diff --git a/build/m4/extensions/mirage.m4 b/build/m4/extensions/mirage.m4 +index 689fb80..b172353 100644 +--- a/build/m4/extensions/mirage.m4 ++++ b/build/m4/extensions/mirage.m4 +@@ -14,11 +14,11 @@ AC_DEFUN([BCE_MIRAGE], + [samplerate], + [The samplerate library was not found. Please install it or disable the Mirage extension by passing --disable-mirage]) + +- GSTREAMER_REQUIRED_VERSION=0.10.15 ++ GSTREAMER_REQUIRED_VERSION=1.0 + BCE_CHECK_EXTENSION_DEP([Mirage], [GSTREAMER], +- [gstreamer-0.10 >= $GSTREAMER_REQUIRED_VERSION +- gstreamer-base-0.10 >= $GSTREAMER_REQUIRED_VERSION +- gstreamer-plugins-base-0.10 >= $GSTREAMER_REQUIRED_VERSION], ++ [gstreamer-1.0 >= $GSTREAMER_REQUIRED_VERSION ++ gstreamer-base-1.0 >= $GSTREAMER_REQUIRED_VERSION ++ gstreamer-plugins-base-1.0 >= $GSTREAMER_REQUIRED_VERSION], + [GStreamer >= $GSTREAMER_REQUIRED_VERSION not found. Please install it or disable the Mirage extension by passing --disable-mirage]) + + if test "x$enable_Mirage" = "xtry" \ +diff --git a/src/Mirage/libmirageaudio/gst-mirageaudio.c b/src/Mirage/libmirageaudio/gst-mirageaudio.c +index 3e6071d..292ba74 100644 +--- a/src/Mirage/libmirageaudio/gst-mirageaudio.c ++++ b/src/Mirage/libmirageaudio/gst-mirageaudio.c +@@ -23,10 +23,12 @@ + #include + #include + #include ++#include + + #include + #include + #include ++#include + #include + + #include "gst-mirageaudio.h" +@@ -89,21 +91,21 @@ void toc() + } + + static void +-mirageaudio_cb_newpad(GstElement *decodebin, GstPad *pad, gboolean last, MirageAudio *ma) ++mirageaudio_cb_newpad(GstElement *decodebin, GstPad *pad, MirageAudio *ma) + { + GstCaps *caps; + GstStructure *str; + GstPad *audiopad; + + // only link once +- audiopad = gst_element_get_pad(ma->audio, "sink"); ++ audiopad = gst_element_get_static_pad(ma->audio, "sink"); + if (GST_PAD_IS_LINKED(audiopad)) { + g_object_unref(audiopad); + return; + } + + // check media type +- caps = gst_pad_get_caps(pad); ++ caps = gst_pad_get_current_caps(pad); + str = gst_caps_get_structure(caps, 0); + + if (!g_strrstr(gst_structure_get_name(str), "audio")) { +@@ -126,17 +128,20 @@ mirageaudio_cb_have_data(GstElement *element, GstBuffer *buffer, GstPad *pad, Mi + gint i; + gint j; + gint fill; ++ GstMapInfo map; + + // if data continues to flow/EOS is not yet processed + if (ma->quit) + return; + + // exit on empty buffer +- if (buffer->size <= 0) ++ if (gst_buffer_get_size (buffer) <= 0) + return; ++ if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) ++ return; + +- ma->src_data.data_in = (float*)GST_BUFFER_DATA(buffer); +- ma->src_data.input_frames = GST_BUFFER_SIZE(buffer)/sizeof(float); ++ ma->src_data.data_in = (float*)map.data; ++ ma->src_data.input_frames = map.size/sizeof(float); + + do { + // set end of input flag if necessary +@@ -152,8 +157,10 @@ mirageaudio_cb_have_data(GstElement *element, GstBuffer *buffer, GstPad *pad, Mi + g_print("libmirageaudio: SRC Error - %s\n", src_strerror(err)); + } + // return if no output +- if (ma->src_data.output_frames_gen == 0) ++ if (ma->src_data.output_frames_gen == 0) { ++ gst_buffer_unmap (buffer, &map); + return; ++ } + + buffersamples = ma->src_data.output_frames_gen; + bufferpos = 0; +@@ -202,6 +209,7 @@ mirageaudio_cb_have_data(GstElement *element, GstBuffer *buffer, GstPad *pad, Mi + g_print("libmirageaudio: EOS Message sent\n"); + gst_object_unref(bus); + ma->quit = TRUE; ++ gst_buffer_unmap (buffer, &map); + return; + } + +@@ -218,6 +226,8 @@ mirageaudio_cb_have_data(GstElement *element, GstBuffer *buffer, GstPad *pad, Mi + + } while (ma->src_data.input_frames > 0); + ++ gst_buffer_unmap (buffer, &map); ++ + return; + } + +@@ -279,7 +289,7 @@ mirageaudio_initgstreamer(MirageAudio *ma, const gchar *file) + src = gst_element_factory_make("filesrc", "source"); + g_object_set(G_OBJECT(src), "location", file, NULL); + dec = gst_element_factory_make("decodebin", "decoder"); +- g_signal_connect(dec, "new-decoded-pad", G_CALLBACK(mirageaudio_cb_newpad), ma); ++ g_signal_connect(dec, "pad-added", G_CALLBACK(mirageaudio_cb_newpad), ma); + gst_bin_add_many(GST_BIN(ma->pipeline), src, dec, NULL); + gst_element_link(src, dec); + +@@ -287,8 +297,8 @@ mirageaudio_initgstreamer(MirageAudio *ma, const gchar *file) + ma->audio = gst_bin_new("audio"); + + audioconvert = gst_element_factory_make("audioconvert", "conv"); +- filter_float = gst_caps_new_simple("audio/x-raw-float", +- "width", G_TYPE_INT, 32, ++ filter_float = gst_caps_new_simple("audio/x-raw", ++ "format", G_TYPE_STRING, GST_AUDIO_NE(F32), + NULL); + cfilt_float = gst_element_factory_make("capsfilter", "cfilt_float"); + g_object_set(G_OBJECT(cfilt_float), "caps", filter_float, NULL); +@@ -296,7 +306,8 @@ mirageaudio_initgstreamer(MirageAudio *ma, const gchar *file) + + audioresample = gst_element_factory_make("audioresample", "resample"); + +- filter_resample = gst_caps_new_simple("audio/x-raw-float", ++ filter_resample = gst_caps_new_simple("audio/x-raw", ++ "format", G_TYPE_STRING, GST_AUDIO_NE(F32), + "channels", G_TYPE_INT, 1, + NULL); + cfilt_resample = gst_element_factory_make("capsfilter", "cfilt_resample"); +@@ -316,7 +327,7 @@ mirageaudio_initgstreamer(MirageAudio *ma, const gchar *file) + audioresample, cfilt_resample, + sink, NULL); + +- audiopad = gst_element_get_pad(audioconvert, "sink"); ++ audiopad = gst_element_get_static_pad(audioconvert, "sink"); + gst_element_add_pad(ma->audio, + gst_ghost_pad_new("sink", audiopad)); + gst_object_unref(audiopad); +@@ -332,8 +343,8 @@ mirageaudio_initgstreamer(MirageAudio *ma, const gchar *file) + gst_element_get_state(ma->pipeline, NULL, NULL, max_wait); + } + +- GstPad *pad = gst_element_get_pad(sink, "sink"); +- GstCaps *caps = gst_pad_get_negotiated_caps(pad); ++ GstPad *pad = gst_element_get_static_pad(sink, "sink"); ++ GstCaps *caps = gst_pad_get_current_caps(pad); + if (GST_IS_CAPS(caps)) { + GstStructure *str = gst_caps_get_structure(caps, 0); + gst_structure_get_int(str, "rate", &ma->filerate); diff -Nru banshee-community-extensions-2.4.0/debian/patches/series banshee-community-extensions-2.4.0/debian/patches/series --- banshee-community-extensions-2.4.0/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/patches/series 2013-06-12 18:38:18.000000000 +0000 @@ -0,0 +1,4 @@ +Port-Mirage-plugin-to-GStreamer-1.0.patch +Port-LastfmFingerprint-plugin-to-GStreamer-1.0.patch +Mirage-Clean-up-caps-handling-and-make-sure-to-wait-.patch +LastfmFingerprint-Clean-up-caps-handling-and-make-su.patch diff -Nru banshee-community-extensions-2.4.0/debian/rules banshee-community-extensions-2.4.0/debian/rules --- banshee-community-extensions-2.4.0/debian/rules 2012-04-09 15:00:34.000000000 +0000 +++ banshee-community-extensions-2.4.0/debian/rules 2013-06-12 18:38:18.000000000 +0000 @@ -18,7 +18,7 @@ --enable-duplicatesongdetector \ --enable-foldersync \ --enable-jamendo \ - --enable-karaoke \ + --disable-karaoke \ --enable-lastfmfingerprint \ --enable-lcd \ --enable-lirc \ @@ -29,7 +29,7 @@ --enable-openvp \ --enable-radiostationfetcher \ --enable-randombylastfm \ - --enable-streamrecorder \ + --disable-streamrecorder \ --enable-telepathy \ --enable-zeitgeistdataprovider \ --disable-shave \ @@ -54,6 +54,7 @@ clean: rm -f autogen.sh + dh $@ override_dh_clideps: dh_clideps \