After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 370092 - [PATCH] Decodebin v2 : Implementation
[PATCH] Decodebin v2 : Implementation
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal blocker
: 0.10.11
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on: 344639 347785
Reported: 2006-11-03 16:27 UTC by Edward Hervey
Modified: 2006-11-28 14:43 UTC
See Also:
GNOME target: ---
GNOME version: ---

Initial patch (48.38 KB, patch)
2006-11-03 16:28 UTC, Edward Hervey
none Details | Review
Updated patch (54.56 KB, patch)
2006-11-28 13:10 UTC, Edward Hervey
committed Details | Review

Description Edward Hervey 2006-11-03 16:27:25 UTC
Below is the patch for the implementation of the newer design of decodebin (here after called decodebin2).
It requires the 'multiqueue' element (patches available in bug #347785), which itself requires the new safequeue object (patch in bug #344639).
Comment 1 Edward Hervey 2006-11-03 16:28:54 UTC
Created attachment 75945 [details] [review]
Initial patch

Initial patch. Work still has to be done to make chained oggs working (and other similar media formats).
Comment 2 Edward Hervey 2006-11-28 13:10:29 UTC
Created attachment 77293 [details] [review]
Updated patch

Updated version, with many fixes.
Now performs as well as decodebin when compared over 1000+ files with gst-media-test.
Also includes a patch to gstplaybasebin.c so that it uses decodebin2 instead of decodebin if the USE_DECODEBIN2 env variable is set.
Comment 3 Edward Hervey 2006-11-28 14:43:04 UTC
2006-11-28  Edward Hervey  <>

	* gst/playback/
	* gst/playback/gstdecodebin2.c: (gst_decode_bin_get_type),
	(_gst_boolean_accumulator), (gst_decode_bin_class_init),
	(gst_decode_bin_factory_filter), (compare_ranks), (print_feature),
	(gst_decode_bin_init), (gst_decode_bin_dispose),
	(gst_decode_bin_finalize), (gst_decode_bin_set_property),
	(gst_decode_bin_get_property), (gst_decode_bin_set_caps),
	(gst_decode_bin_get_caps), (gst_decode_bin_autoplug_continue),
	(gst_decode_bin_autoplug_sort), (analyze_new_pad), (connect_pad),
	(connect_element), (expose_pad), (type_found),
	(pad_added_group_cb), (pad_removed_group_cb),
	(no_more_pads_group_cb), (pad_added_cb), (pad_removed_cb),
	(no_more_pads_cb), (find_compatibles), (is_demuxer_element),
	(are_raw_caps), (multi_queue_overrun_cb),
	(multi_queue_underrun_cb), (gst_decode_group_new),
	(get_current_group), (group_demuxer_event_probe),
	(gst_decode_group_check_if_drained), (gst_decode_group_expose),
	(gst_decode_group_hide), (gst_decode_group_free),
	(gst_decode_group_set_complete), (source_pad_blocked_cb),
	(source_pad_event_probe), (gst_decode_pad_new), (add_fakesink),
	(remove_fakesink), (find_sink_pad), (gst_decode_bin_change_state),
	New decodebin2 element.
	Closes #370092
	* gst/playback/gstplay-marshal.list:
	Added marshallers for new signals in decodebin2
	* gst/playback/gstplaybasebin.c: (setup_subtitle), (make_decoder):
	Use decodebin2 if *and only if* the USE_DECODEBIN2 environment variable
	is set.