Custom plugin not being set to PLAYING

Hello, I’m creating a gstreamer element and it has a BIN inside to create other elements so that it can dynamically rearrange which elements are linked according to the specifications received in a callback of a service I’m using.
The issue is, whenever I’m using said element on a pipeline (not alone) it doesn’t set itself to playing after constructing the pipeline (presumably because the internal BIN is not being created).

Here’s an example generated graph.

What am I doing wrong so that it doesn’t start playing? Thank you!

Elements/bins don’t change state themselves usually, but their state is control by the outside (controlling parent bins/pipelines or the application).

When you add elements to a bin at runtime, after the pipeline has already been started up, you (whoever adds the new elements) needs to sync the state of the newly-added element(s) to the pipeline state.

I eventually found out the error. Even though that was also the case, the caps weren’t being correctly set hence not being negotiated. Thank you for the tip!