server/gstdecode.c: Label dest element correctly on link failure.
[disorder] / server / gstdecode.c
index 7d54052..ac2884d 100644 (file)
@@ -149,7 +149,7 @@ static void link_elements(GstElement *left, GstElement *right)
   disorder_error(0, "failed to link GStreamer elements `%s' and `%s'",
                  GST_OBJECT_NAME(left), GST_OBJECT_NAME(right));
   report_element_pads("source", left, gst_element_iterate_src_pads(left));
-  report_element_pads("source", right, gst_element_iterate_sink_pads(right));
+  report_element_pads("dest", right, gst_element_iterate_sink_pads(right));
   disorder_fatal(0, "can't decode `%s'", file);
 }
 
@@ -215,6 +215,10 @@ static void prepare_pipeline(void)
   GstCaps *caps;
   const struct stream_header *fmt = &config->sample_format;
 
+  if(!source || !decode || !resample || !convert || !sink)
+    disorder_fatal(0, "failed to create GStreamer elements: "
+                   "need base and good plugins");
+
 #ifndef HAVE_GSTREAMER_0_10
   static const struct fmttab {
     const char *fmt;
@@ -291,6 +295,9 @@ static void prepare_pipeline(void)
    */
   if(mode != OFF) {
     gain = gst_element_factory_make("rgvolume", "gain");
+    if(!gain)
+      disorder_fatal(0, "failed to create GStreamer elements: "
+                     "need base and good plugins");
     g_object_set(gain,
                  "album-mode", mode == ALBUM,
                  "fallback-gain", fallback,
@@ -314,16 +321,11 @@ static void prepare_pipeline(void)
 static void bus_message(GstBus UNUSED *bus, GstMessage *msg,
                         gpointer UNUSED u)
 {
-  switch(msg->type) {
+  switch(GST_MESSAGE_TYPE(msg)) {
   case GST_MESSAGE_ERROR:
-#ifdef HAVE_GSTREAMER_0_10
-    disorder_fatal(0, "%s",
-                   gst_structure_get_string(msg->structure, "debug"));
-#else
     disorder_fatal(0, "%s",
                    gst_structure_get_string(gst_message_get_structure(msg),
                                             "debug"));
-#endif
   default:
     break;
   }