GNOME Bugzilla – Bug 695629
rtph264pay: caps negotiation fails if upstream caps is not NULL
Last modified: 2013-03-11 23:49:14 UTC
gst_rtp_h264_pay_getcaps () calls gst_pad_peer_query_caps () on the src pad with the caps upstream can produce as a filter. As a result, caps negotiation fails if upstream caps is not NULL.
Created attachment 238576 [details] [review] rtph264pay: Don't use upstream caps with peer_query_caps ()
Comment on attachment 238576 [details] [review] rtph264pay: Don't use upstream caps with peer_query_caps () This is actually correct, passing NULL as a filter means no filter, if that fails, it means some downstream element does it wrong.
In my case the downstream element is rtpbin. I am testing with gst-rtsp-server so the payloader is linked to rtpbin:send_rtp_sink_%d. What is gst_pad_peer_query_caps (h264pay_src_pad, "video/x-h264") supposed to return if rtpbin was doing it correctly? "application/x-rtp"? Currently it returns EMPTY.
gst_pad_peer_query_caps (h264pay_src_pad, gst_caps_new_from_string("video/x-h264")) will return empty.. it should be something like gst_pad_peer_query_caps (h264pay_src_pad, gst_caps_new_from_string("application/x-rtp, encoding-name=H264"))
Comment on attachment 238576 [details] [review] rtph264pay: Don't use upstream caps with peer_query_caps () Oops, you do have a point, that the caps would have to be transformed.. My fault I'm afraid
Committed commit 3f8ad30ceeb190473d745698f347404203e19b1d Author: Ognyan Tonchev <ognyan@axis.com> Date: Mon Mar 11 14:50:41 2013 +0100 rtph264pay: Don't use upstream caps with peer_query_caps () Calling gst_pad_peer_query_caps () on the src pad with the caps upstream can produce as a filter from gst_rtp_h264_pay_getcaps () is wrong and makes caps negotiation fail if upstream caps are not NULL. https://bugzilla.gnome.org/show_bug.cgi?id=695629
Also pushed to 1.0
> Also pushed to 1.0 milestone -> 1.0.6 then :)