Submitting this new element from dv's repository at https://github.com/dv1/gstswitchbin for review and upstreaming.
switchbin is a helper element which chooses between a set of processing chains (paths) based on input caps, and changes if new caps arrive. Paths are child objects, which are accessed by the GstChildProxy interface.
Whenever new input caps are encountered at the switchbin's sinkpad, the * first path with matching caps is picked. The paths are looked at in order: path #0's caps are looked at first, checked against the new input caps with gst_caps_can_intersect(), and if its return value is TRUE, path #0 is picked. Otherwise, path #1's caps are looked at etc. If no path matches, an error is reported.
This is somewhat like the 'autoconvert' element, but more capable as the internal processing components can be arbitrary pipelines