rptbin: when ignore-pt is used, incomplete caps are used on the data src pad
@den_erpel
Submitted by Marc Leeman Link to original bug (#739786)
Description
The modules that are used are in bugzilla (rtpsink/rtpsrc).
We started testing encoder compatibility again, and there is one encoder where the I and Delta frames are provided with different pt values (120,121).
In order to get them decoded, ignore-pt is used on the rtpbin.
We noticed that when this is done, the incomplete caps (application/x-rtp) is used on the src pad, whiile if this is not done, the caps from the request-pt-map is used.
Since the signal is emitted (with and without using ignore-pt) and it was returned, there is a consistency there.
I can fix it in the upper bin but since rtpbin should have the complete caps in cached, I believe that one should be used.
0:00:00.101167679 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:2768:pt_map_requested:<rtpbin0>
payload map requested for pt 121 in session 0
0:00:00.101218949 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:770:get_pt_map: searching pt 121 in cache
0:00:00.101225192 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:783:get_pt_map: emiting signal for pt 121 in session 0
The caps are returned here in the upper bin:
0:00:00.101287230 16719 0xd588a0 DEBUG barcortpsrc /home/marc/gstreamer.jhbuild/sources/gst-plugins-barcortp-1.0/src/gstrtpsrc.c:614:gst_rtp_src_request_pt_map:<rtpsrc0>
Decided on caps application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, payload=(int)121
0:00:00.101307327 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:1683:_gst_caps_accumulator: got caps application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, payload=(int)121
0:00:00.101317542 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:819:get_pt_map: caching pt 121 as application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, payload=(int)121
0:00:00.101447563 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:2840:new_ssrc_pad_found:<rtpbin0>
new SSRC pad 737e118a, rtpssrcdemux0:src_1937641866
0:00:00.101878902 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:2852:new_ssrc_pad_found:<rtpbin0>
linking jitterbuffer RTP
0:00:00.101955207 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:2861:new_ssrc_pad_found:<rtpbin0>
linking jitterbuffer RTCP
0:00:00.102025751 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:2871:new_ssrc_pad_found:<rtpbin0>
connecting sync signal
At this point, the incomplete caps are returned, see if/eslse in
new_ssrc_pad_found (GstElement * element, guint ssrc, GstPad * pad,
GstRtpBinSession * session)
0:00:00.102099301 16719 0xd588a0 DEBUG barcortpsrc /home/marc/gstreamer.jhbuild/sources/gst-plugins-barcortp-1.0/src/gstrtpsrc.c:426:gst_rtp_src_rtpbin_pad_added_cb:<rtpsrc0>
Adding a pad recv_rtp_src_0_1937641866_255 with caps application/x-rtp
0:00:00.102114786 16719 0xd588a0 DEBUG barcortpsrc /home/marc/gstreamer.jhbuild/sources/gst-plugins-barcortp-1.0/src/gstrtpsrc.c:474:gst_rtp_src_rtpbin_pad_added_cb:<rtpsrc0>
New pad recv_rtp_src_0_1937641866_255 on rtpbin with caps application/x-rtp
0:00:00.102257346 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:2768:pt_map_requested:<rtpbin0>
payload map requested for pt 121 in session 0
0:00:00.102267311 16719 0xd588a0 DEBUG rtpbin gstrtpbin.c:770:get_pt_map: searching pt 121 in cache
ERROR: from element /GstPipeline:pipeline0/GstRtpMP4VDepay:rtpmp4vdepay0: No RTP format was negotiated.