}
static void
-new_decoded_pad (GstElement * dec, GstPad * new_pad, gboolean last,
- AppInfo * info)
+new_decoded_pad (GstElement * dec, GstPad * new_pad, AppInfo * info)
{
const gchar *sname;
GstElement *csp, *scale, *filter;
if (info->got_video)
return;
- /* FIXME: is this racy or does decodebin2 make sure caps are always
+ /* FIXME: is this racy or does decodebin make sure caps are always
* negotiated at this point? */
caps = gst_pad_query_caps (new_pad, NULL);
g_return_if_fail (caps != NULL);
return;
not_video:
- {
- if (last) {
- g_error ("This file does not contain a video track, or you do not have "
- "the necessary decoder(s) installed");
- }
+ return;
+}
+
+static void
+no_more_pads (GstElement * decodebin, AppInfo * info)
+{
+ if (!info->got_video) {
+ g_error ("This file does not contain a video track, or you do not have "
+ "the necessary decoder(s) installed");
}
}
src = create_element ("filesrc");
g_object_set (src, "location", filename, NULL);
- dec = create_element ("decodebin2");
+ dec = create_element ("decodebin");
gst_bin_add_many (GST_BIN (info->pipe), src, dec, NULL);
if (!gst_element_link (src, dec))
- g_error ("Can't link filesrc to decodebin2");
+ g_error ("Can't link filesrc to decodebin");
+
+ g_signal_connect (dec, "pad-added", G_CALLBACK (new_decoded_pad), info);
- g_signal_connect (dec, "new-decoded-pad", G_CALLBACK (new_decoded_pad), info);
+ g_signal_connect (dec, "no-more-pads", G_CALLBACK (no_more_pads), info);
/* set up bus */
bus = gst_element_get_bus (info->pipe);