I'm not quite sure where you're getting that,
I do believe I'm right about this. I'm getting it from: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/g...
The decodebin source code shows:
```c analyse_new_pad() { ... for (tmps = gst_element_factory_get_static_pad_templates (factory); tmps && !dontuse; tmps = tmps->next) { GstStaticPadTemplate *st = (GstStaticPadTemplate *) tmps->data; if (st->direction != GST_PAD_SRC) continue; tcaps = gst_static_pad_template_get_caps (st);
apcontinue = TRUE;
/* Emit autoplug-continue to see if the caps are considered to be raw caps */ g_signal_emit (G_OBJECT (dbin), gst_decode_bin_signals[SIGNAL_AUTOPLUG_CONTINUE], 0, dpad, tcaps, &apcontinue);
/* If autoplug-continue returns TRUE and the caps are not final, and * we haven't found any way to output finals yet, don't use them */ if (are_final_caps (dbin, tcaps)) found_finals = TRUE; else if (apcontinue && !found_finals) dontuse = TRUE; gst_caps_unref (tcaps); } ... } ```
It does not use get_pad_caps(), instead, it uses gst_static_pad_template_get_caps() to get caps (the `tcaps` virable), and then pass it to autoplug_continue.