diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-10-01 14:40:56 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-10-01 14:42:36 +0200 |
commit | 02fbd5b42a9f7515904755a1b45bceeaeb3639ec (patch) | |
tree | ec63d1b9449253ecde1e09259be7553881655c22 /ext | |
parent | 157a6a7856050d3d065722ff53e6ed95e5ecf78c (diff) | |
download | gstreamer-plugins-bad-02fbd5b42a9f7515904755a1b45bceeaeb3639ec.tar.gz |
resindvdbin: Use the new video decoder
This makes resindvdbin work with other MPEG video decoders than
mpeg2dec, for example the FFMPEG or Fluendo MPEG decoders.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/resindvd/resindvdbin.c | 35 |
1 files changed, 4 insertions, 31 deletions
diff --git a/ext/resindvd/resindvdbin.c b/ext/resindvd/resindvdbin.c index 7a967998a..5f0d10303 100644 --- a/ext/resindvd/resindvdbin.c +++ b/ext/resindvd/resindvdbin.c @@ -38,7 +38,7 @@ GST_DEBUG_CATEGORY_EXTERN (resindvd_debug); #define GST_CAT_DEFAULT resindvd_debug #define USE_VIDEOQ 0 -#define USE_HARDCODED_VIDEODEC 1 +#define USE_HARDCODED_VIDEODEC 0 #define USE_HARDCODED_AUDIODEC 0 #define DVDBIN_LOCK(d) g_mutex_lock((d)->dvd_lock) @@ -90,10 +90,6 @@ GST_BOILERPLATE_FULL (RsnDvdBin, rsn_dvdbin, GstBin, static void demux_pad_added (GstElement * element, GstPad * pad, RsnDvdBin * dvdbin); -#if !USE_HARDCODED_VIDEODEC -static void viddec_pad_added (GstElement * element, GstPad * pad, - gboolean last, RsnDvdBin * dvdbin); -#endif static void rsn_dvdbin_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void rsn_dvdbin_get_property (GObject * object, guint prop_id, @@ -401,19 +397,15 @@ create_elements (RsnDvdBin * dvdbin) #else /* Decodebin will throw a missing element message to find an MPEG decoder */ - if (!try_create_piece (dvdbin, DVD_ELEM_VIDDEC, "decodebin2", 0, "viddec", - "video decoder")) + if (!try_create_piece (dvdbin, DVD_ELEM_VIDDEC, NULL, RSN_TYPE_VIDEODEC, + "viddec", "video decoder")) return FALSE; - - g_signal_connect (G_OBJECT (dvdbin->pieces[DVD_ELEM_VIDDEC]), - "new-decoded-pad", G_CALLBACK (viddec_pad_added), dvdbin); #endif if (!try_create_piece (dvdbin, DVD_ELEM_PARSET, NULL, RSN_TYPE_RSNPARSETTER, "rsnparsetter", "Aspect ratio adjustment")) return FALSE; -#if USE_HARDCODED_VIDEODEC src = gst_element_get_static_pad (dvdbin->pieces[DVD_ELEM_VIDDEC], "src"); sink = gst_element_get_static_pad (dvdbin->pieces[DVD_ELEM_PARSET], "sink"); if (src == NULL || sink == NULL) @@ -423,7 +415,6 @@ create_elements (RsnDvdBin * dvdbin) gst_object_unref (src); gst_object_unref (sink); src = sink = NULL; -#endif #if USE_VIDEOQ /* Add a small amount of queueing after the video decoder. */ @@ -581,12 +572,10 @@ failed_connect: GST_ELEMENT_ERROR (dvdbin, CORE, FAILED, (NULL), ("Could not connect DVD source and demuxer elements")); goto error_out; -#if USE_HARDCODED_VIDEODEC failed_viddec_connect: GST_ELEMENT_ERROR (dvdbin, CORE, FAILED, (NULL), ("Could not connect DVD video decoder and aspect ratio adjuster")); goto error_out; -#endif #if USE_VIDEOQ failed_vidq_connect: GST_ELEMENT_ERROR (dvdbin, CORE, FAILED, (NULL), @@ -750,7 +739,7 @@ demux_pad_added (GstElement * element, GstPad * pad, RsnDvdBin * dvdbin) s = gst_caps_get_structure (caps, 0); g_return_if_fail (s != NULL); - if (g_str_equal (gst_structure_get_name (s), "video/mpeg")) { + if (can_sink_caps (dvdbin->pieces[DVD_ELEM_VIDDEC], caps)) { dest_pad = gst_element_get_static_pad (dvdbin->pieces[DVD_ELEM_VIDDEC], "sink"); } else if (g_str_equal (gst_structure_get_name (s), "video/x-dvd-subpicture")) { @@ -871,22 +860,6 @@ dvdbin_pad_blocked_cb (GstPad * opad, gboolean blocked, } } -#if !USE_HARDCODED_VIDEODEC -static void -viddec_pad_added (GstElement * element, GstPad * pad, gboolean last, - RsnDvdBin * dvdbin) -{ - GstPad *q_pad; - - GST_DEBUG_OBJECT (dvdbin, "New video pad: %" GST_PTR_FORMAT, pad); - - q_pad = gst_element_get_static_pad (dvdbin->pieces[DVD_ELEM_PARSET], "sink"); - gst_pad_link (pad, q_pad); - - gst_object_unref (q_pad); -} -#endif - static void rsn_dvdbin_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) |