Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:13.1
kid3-qt
kid3-2.3-gstreamer1.0.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kid3-2.3-gstreamer1.0.diff of Package kid3-qt
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d5bf9b..b5d7ee6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -398,7 +398,10 @@ if(WITH_CHROMAPRINT) find_package(FFmpeg REQUIRED) elseif(WITH_GSTREAMER) find_package(PkgConfig) - pkg_check_modules(GSTREAMER REQUIRED gstreamer-0.10) + pkg_check_modules(GSTREAMER gstreamer-1.0) + if (NOT GSTREAMER_FOUND) + pkg_check_modules(GSTREAMER REQUIRED gstreamer-0.10) + endif (NOT GSTREAMER_FOUND) elseif(HAVE_QT5 AND WITH_QAUDIODECODER) message(STATUS "QAudioDecoder selected for decoding.") else(WITH_FFMPEG) @@ -413,7 +416,10 @@ if(WITH_CHROMAPRINT) else() message(STATUS "GStreamer selected for decoding, use WITH_FFMPEG=ON to use FFmpeg instead.") find_package(PkgConfig) - pkg_check_modules(GSTREAMER REQUIRED gstreamer-0.10) + pkg_check_modules(GSTREAMER gstreamer-1.0) + if (NOT GSTREAMER_FOUND) + pkg_check_modules(GSTREAMER REQUIRED gstreamer-0.10) + endif (NOT GSTREAMER_FOUND) endif() endif(WITH_FFMPEG) if(GSTREAMER_FOUND) diff --git a/src/core/import/gstfingerprintdecoder.cpp b/src/core/import/gstfingerprintdecoder.cpp index d55e6c8..d2bfd4a 100644 --- a/src/core/import/gstfingerprintdecoder.cpp +++ b/src/core/import/gstfingerprintdecoder.cpp @@ -62,10 +62,20 @@ GstFingerprintDecoder::GstFingerprintDecoder(QObject* parent) : g_signal_connect(m_dec, "no-more-pads", G_CALLBACK(cb_no_more_pads), this); g_signal_connect(m_dec, "unknown-type", G_CALLBACK(cb_unknown_type), this); - if (GstCaps* sinkcaps = gst_caps_new_simple("audio/x-raw-int", + if (GstCaps* sinkcaps = gst_caps_new_simple( +#if GST_CHECK_VERSION(1, 0, 0) + "audio/x-raw", + "format", G_TYPE_STRING, "S16LE", + "layout", G_TYPE_STRING, "interleaved", + "rate", G_TYPE_INT, 44100, + "channels", G_TYPE_INT, 2, + "channel-mask", GST_TYPE_BITMASK, (gint64)0x3, +#else + "audio/x-raw-int", "width", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16, "signed", G_TYPE_BOOLEAN, TRUE, +#endif NULL)) { g_object_set(G_OBJECT(sink), "caps", sinkcaps, NULL); gst_caps_unref(sinkcaps); @@ -76,7 +86,11 @@ GstFingerprintDecoder::GstFingerprintDecoder(QObject* parent) : "sync", FALSE, "emit-signals", TRUE, NULL); +#if GST_CHECK_VERSION(1, 0, 0) + g_signal_connect(sink, "new-sample", G_CALLBACK(cb_new_buffer), this); +#else g_signal_connect(sink, "new-buffer", G_CALLBACK(cb_new_buffer), this); +#endif if (GstPad* pad = gst_element_get_static_pad(sink, "sink")) { g_signal_connect(pad, "notify::caps", G_CALLBACK(cb_notify_caps), this); gst_object_unref(pad); @@ -171,10 +185,16 @@ void GstFingerprintDecoder::cb_message(GstBus*, GstMessage* message, void GstFingerprintDecoder::cb_pad_added(GstElement*, GstPad* pad, GstFingerprintDecoder* self) { - if (GstCaps* caps = gst_pad_get_caps(pad)) { + if (GstCaps* caps = +#if GST_CHECK_VERSION(1, 0, 0) + gst_pad_query_caps(pad, 0) +#else + gst_pad_get_caps(pad) +#endif + ) { const GstStructure* str = gst_caps_get_structure(caps, 0); const gchar* name = gst_structure_get_name(str); - if (name && strncmp(name, "audio/x-raw-", 12) == 0) { + if (name && strncmp(name, "audio/x-raw", 11) == 0) { if (GstPad* nextpad = gst_element_get_static_pad(self->m_conv, "sink")) { if (!gst_pad_is_linked(nextpad)) { if (gst_pad_link(pad, nextpad) == GST_PAD_LINK_OK) { @@ -199,7 +219,13 @@ void GstFingerprintDecoder::cb_no_more_pads(GstElement*, GstFingerprintDecoder* void GstFingerprintDecoder::cb_notify_caps(GstPad *pad, GParamSpec*, GstFingerprintDecoder* self) { - if (GstCaps* caps = gst_pad_get_negotiated_caps(pad)) { + if (GstCaps* caps = +#if GST_CHECK_VERSION(1, 0, 0) + gst_pad_get_current_caps(pad) +#else + gst_pad_get_negotiated_caps(pad) +#endif + ) { const GstStructure* str = gst_caps_get_structure(caps, 0); if (gst_structure_get_int(str, "channels", &self->m_channels) && gst_structure_get_int(str, "rate", &self->m_rate)) { @@ -240,7 +266,20 @@ void GstFingerprintDecoder::cb_unknown_type(GstElement*, GstPad*, GstCaps* caps, void GstFingerprintDecoder::cb_new_buffer(GstElement* sink, GstFingerprintDecoder* self) { - GstBuffer *buffer; +#if GST_CHECK_VERSION(1, 0, 0) + GstSample* sample = 0; + g_signal_emit_by_name(sink, "pull-sample", &sample); + if (sample) { + GstBuffer* buffer = gst_sample_get_buffer(sample); + gint64 buf_pos = GST_BUFFER_TIMESTAMP(buffer); + GstMapInfo mapinfo = {0, }; + gst_buffer_map(buffer, &mapinfo, GST_MAP_READ); + emit self->bufferReady(QByteArray(reinterpret_cast<char*>(mapinfo.data), + mapinfo.size)); + gst_buffer_unmap(buffer, &mapinfo); + gst_sample_unref(sample); +#else + GstBuffer* buffer = 0; g_signal_emit_by_name(sink, "pull-buffer", &buffer); if (buffer) { gint64 buf_pos = GST_BUFFER_TIMESTAMP(buffer); @@ -248,6 +287,7 @@ void GstFingerprintDecoder::cb_new_buffer(GstElement* sink, GstFingerprintDecode guint8* data = GST_BUFFER_DATA(buffer); emit self->bufferReady(QByteArray(reinterpret_cast<char*>(data), len)); gst_buffer_unref(buffer); +#endif if (self->isStopped()) { self->raiseError(FingerprintCalculator::FingerprintCalculationFailed); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor