<div dir="ltr"><div><div>I have written an pipeline in C++ that is supposed to show a video, but it doesn't. The structure of the pipeline is:</div><div>appsrc ! VIDEO_CAPS ! rtpstreamdepay ! rtpjitterbuffer ! rtph264depay ! h264parse ! queue ! avdec_h264 ! autovideoconvert ! autovideosink<br></div><div>where VIDEO_CAPS is defined by:</div><div>"application/x-rtp-stream, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)42c01f, sprop-parameter-sets=(string)\"Z0LAH9oBQBbsBEAAAAMAQAAADyPGDKg\\=\\,aM48gA\\=\\=\", payload=(int)96"</div></div><div><br></div><div>The buffers that are put into appsrc (with gst_app_src_push_buffer()) are extracted from another pipeline:</div><div>v4l2src ! queue ! x264enc ! queue ! h264parse ! rtph264pay ! rtpstreampay ! appsink</div><div>VIDEO_CAPS of the first pipeline is set to the caps of the sample that is read from appsink.</div><div><br></div><div>To analyse the pipeline I have extracted the graph of the pipeline with gst_debug_bin_to_dot_file(). It shows that avdec_h264 and autovideoconvert are connected via "video/x-raw format: { I420, YUY2, RGB, B... }" and "ANY" caps.</div><div>When I remove autovideoconvert, the problem remains. Terminal output with GST_DEBUG=4 gives (data.video_dec=avdec_h264, data.video_convert=autovideoconvert):</div><div>0:00:00.026803608 31969      0x1675800 INFO                GST_PADS gstpad.c:3995:gst_pad_peer_query:<data.video_dec:src> pad has no peer</div><div>0:00:00.026872390 31969      0x1675800 INFO                GST_PADS gstpad.c:3995:gst_pad_peer_query:<data.video_dec:src> pad has no peer</div><div>0:00:00.026910994 31969      0x1675800 INFO        GST_ELEMENT_PADS gstutils.c:1571:gst_element_link_pads_full: trying to link element data.video_dec:(any) to element data.video_convert: any)</div><div>0:00:00.026918387 31969      0x1675800 INFO                GST_PADS gstutils.c:932:gst_pad_check_link: trying to link data.video_dec:src and data.video_convert:sink</div><div>0:00:00.026929181 31969      0x1675800 INFO                GST_PADS gstpad.c:3995:gst_pad_peer_query:<sink:proxypad0> pad has no peer</div><div>0:00:00.026935488 31969      0x1675800 INFO                GST_PADS gstutils.c:1444:prepare_link_maybe_ghosting: data.video_dec and data.video_convert in same bin, no need for ghost pads</div><div>0:00:00.026943286 31969      0x1675800 INFO                GST_PADS gstpad.c:2234:gst_pad_link_prepare: trying to link data.video_dec:src and data.video_convert:sink</div><div>0:00:00.026952808 31969      0x1675800 INFO                GST_PADS gstpad.c:3995:gst_pad_peer_query:<sink:proxypad0> pad has no peer</div><div>0:00:00.026958722 31969      0x1675800 INFO                GST_PADS gstpad.c:2440:gst_pad_link_full: linked data.video_dec:src and data.video_convert:sink, successful</div><div>0:00:00.026964302 31969      0x1675800 INFO               GST_EVENT gstevent.c:1374:gst_event_new_reconfigure: creating reconfigure event</div><div>0:00:00.026968753 31969      0x1675800 INFO               GST_EVENT gstpad.c:5499:gst_pad_send_event_unchecked:<data.video_dec:src> Received event on flushing pad. Discarding</div><div><br></div><div>My question is, what causes this problem and how can I solve it? I would rather not force caps between avdec_h264 and autovideoconvert, because that undermines the idea of autovideoconvert.</div></div>