After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 695629 - rtph264pay: caps negotiation fails if upstream caps is not NULL
rtph264pay: caps negotiation fails if upstream caps is not NULL
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 1.0.6
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-03-11 14:00 UTC by Ognyan Tonchev (redstar_)
Modified: 2013-03-11 23:49 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
rtph264pay: Don't use upstream caps with peer_query_caps () (1.30 KB, patch)
2013-03-11 14:01 UTC, Ognyan Tonchev (redstar_)
committed Details | Review

Description Ognyan Tonchev (redstar_) 2013-03-11 14:00:00 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.
Comment 1 Ognyan Tonchev (redstar_) 2013-03-11 14:01:19 UTC
Created attachment 238576 [details] [review]
rtph264pay: Don't use upstream caps with peer_query_caps ()
Comment 2 Olivier Crête 2013-03-11 14:35:30 UTC
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.
Comment 3 Ognyan Tonchev (redstar_) 2013-03-11 15:15:33 UTC
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.
Comment 4 Olivier Crête 2013-03-11 15:21:52 UTC
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 5 Olivier Crête 2013-03-11 15:34:49 UTC
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
Comment 6 Olivier Crête 2013-03-11 20:58:16 UTC
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
Comment 7 Olivier Crête 2013-03-11 20:59:17 UTC
Also pushed to 1.0
Comment 8 Tim-Philipp Müller 2013-03-11 23:48:56 UTC
> Also pushed to 1.0

milestone -> 1.0.6 then :)