Bug 169700 - [PATCH] multimedia/gstreamermm can't load plugins
Summary: [PATCH] multimedia/gstreamermm can't load plugins
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-multimedia (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-07-07 19:50 UTC by heathn
Modified: 2012-07-13 11:10 UTC (History)
0 users

See Also:


Attachments
file.diff (1.83 KB, patch)
2012-07-07 19:50 UTC, heathn
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description heathn 2012-07-07 19:50:08 UTC
gstreamermm-0.10.10.1 contains some function names which are identical to some of the function names found in the gstreamer-plugins package.  When a plugin is initialized by the gstreamer framework the plugin makes a call to what is supposed to be a local function call but instead calls a similarly named function in the gstreamer library which eventually causes the plugin to fail initialization.

Fix: This problem appears to have already been identified here: 

web.archiveorange.com/archive/v/zb6jHVcFoud9WvczVnQZ

It looks like one of the committers changed the name of the functions in gstreamermm-0.10.10.2 to avoid the duplicate symbol problem.  Updating the port fixes both multimedia/subtitleeditor and the test program.

Patch attached with submission follows:
How-To-Repeat: Install and run multimedia/subtitleeditor.  When a video file is opened, you should see the error, 

Media file could not be played.
Failed to create a GStreamer textoverlay (textoverlay). Please check your GStreamer installation.

A simpler way to repeat the problem is with the following test code:

#include <gstreamermm.h>

test.cpp:
int main(int argc, char* argv[]) {
  Gst::init(argc, argv);
  Glib::RefPtr<Gst::Element> textoverlay;
  textoverlay = Gst::ElementFactory::create_element("textoverlay", "overlay");
  printf("textoverlay: %s\n", textoverlay ? "true":"false");
  return 0;
}

$ clang++ test.cpp -o test -g `pkg-config --cflags --libs gstreamermm-0.10`
$ ./test --gst-debug-level=5

You should see, among several other warnings:
0:00:00.348919067 0x805c17080 LOG    GST_ELEMENT_FACTORY gstelementfactory.c:450:GstElement *gst_element_factory_make(const gchar *, const gchar *): gstelementfactory: make "textoverlay" "overlay"
0:00:00.348954686 0x805c17080 LOG    GST_ELEMENT_FACTORY gstelementfactory.c:456:GstElement *gst_element_factory_make(const gchar *, const gchar *):<textoverlay> found factory 0x805f0e6c0
0:00:00.348977454 0x805c17080 DEBUG  GST_PLUGIN_LOADING gstpluginfeature.c:106:GstPluginFeature *gst_plugin_feature_load(GstPluginFeature *): loading plugin for feature 0x805f0e6c0; 'textoverlay'
0:00:00.348989397 0x805c17080 DEBUG  GST_PLUGIN_LOADING gstpluginfeature.c:110:GstPluginFeature *gst_plugin_feature_load(GstPluginFeature *): loading plugin pango
0:00:00.348999943 0x805c17080 DEBUG  GST_PLUGIN_LOADING gstplugin.c:1293:GstPlugin *gst_plugin_load_by_name(const gchar *): looking up plugin pango in default registry
0:00:00.349046597 0x805c17080 DEBUG  GST_PLUGIN_LOADING gstplugin.c:1296:GstPlugin *gst_plugin_load_by_name(const gchar *): loading plugin pango from file /usr/local/lib/gstreamer-0.10/libgstpango.so
0:00:00.349084102 0x805c17080 DEBUG  GST_PLUGIN_LOADING gstpluginfeature.c:115:GstPluginFeature *gst_plugin_feature_load(GstPluginFeature *): loaded plugin pango
0:00:00.349119791 0x805c17080 INFO   GST_PLUGIN_LOADING gstpluginfeature.c:145:GstPluginFeature *gst_plugin_feature_load(GstPluginFeature *): Tried to load plugin containing feature 'textoverlay', but feature was not found.
0:00:00.349131105 0x805c17080 WARN   GST_ELEMENT_FACTORY gstelementfactory.c:410:GstElement *gst_element_factory_create(GstElementFactory *, const gchar *):<textoverlay> loading plugin containing feature overlay returned NULL!
0:00:00.349142629 0x805c17080 INFO   GST_ELEMENT_FACTORY gstelementfactory.c:472:GstElement *gst_element_factory_make(const gchar *, const gchar *):<textoverlay> couldn't create instance!
textoverlay: false
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2012-07-07 19:50:21 UTC
Responsible Changed
From-To: freebsd-ports-bugs->freebsd-multimedia

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 dfilter service freebsd_committer freebsd_triage 2012-07-13 11:06:36 UTC
kwm         2012-07-13 10:06:26 UTC

  FreeBSD ports repository

  Modified files:
    multimedia/gstreamermm Makefile distinfo 
  Log:
  Update to 0.10.10.2.
  
  This should fix loading plugins again.
  
  PR:             ports/169700
  Submitted by:   Heath Nielson <heathn@gmail.com>
  
  Revision  Changes    Path
  1.27      +1 -2      ports/multimedia/gstreamermm/Makefile
  1.15      +2 -2      ports/multimedia/gstreamermm/distinfo
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
Comment 3 Koop Mast freebsd_committer freebsd_triage 2012-07-13 11:06:38 UTC
State Changed
From-To: open->closed

Committed with small changes, Thanks!