Got data flow before stream-start event

I built my own pipeline and successfully called gst_element_set_state (c ->pipeline, GST -STATE-PAYING). When I pushed the data, I encountered the following warning:
gst_pad_chain_data_unchecked:jitterbuffer:sink Got data flow before stream-start event
gst_pad_chain_data_unchecked:jitterbuffer:sink Got data flow before segment event
May I ask what is causing these outputs?

This is usually a bug in some element.

I’m guessing that you’re implementing your own source element here?

If so, are you not deriving from GstBaseSrc or GstPushSrc?

In any case, it pretty much tells you what’s expected: Before you push a buffer, certain events need to be pushed, such as a stream start event and a segment event (and also a caps event in your case with RTP caps, but it looks like you send that).

My source element deriving from GstElement.

Sources must derive from GstBaseSrc (or a subclass of it like GstPushSrc). Same for sinks (with GstBaseSink or a subclass of it).

My source element derive from GstElement and only send custom data to srcpad. Is there any problem with this?

The problem is that it’s not respecting the rule I mentioned just before.

OK, thank you for your suggestion!

To be 100% clear : It’s not a suggestion, it’s a rule. If you don’t do that a ton of bad things will happen since everything in GStreamer expects that.

Well, in order to avoid some unknown problems, I decided to rewrite my source based on GstBaseSrc.