Now I don’t want to switch between those manually depending on which encoding is currenty used, so I tried to use switchbin, which just doesn’t seem to work for me…
That sounds like you’re missing the rtph264depay element which comes with gstreamer1.0-plugins-good on debian/ubuntu, and should be included in any Windows build and our Windows binary packages, so I’m surprised you don’t have it. Does gst-inspect-1.0.exe rtph264depay work?
decodebin and decodebin3 should handle RTP caps just fine (unless mandatory fields are missing), e.g. this works just fine for me: gst-launch-1.0 rtspsrc location=rtsp://127.0.0.1:8554/test ! application/x-rtp,media=video ! decodebin3 ! videoconvert ! ximagesink (and it has to, otherwise playbin/playbin3 wouldn’t be able to play RTSP streams).
So not sure what the problem is in your case with decodebin. A GST_DEBUG=*decode*:6 debug log might shed some light.