mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-22 09:41:07 +00:00
rtppassthroughpay: Fix reading clock-rate and payload type from caps
They were using wrong types - while uint is correct technically, for compatibility reasons caps have them as signed int. Values are now correctly read + added simple guards just to be sure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7526>
This commit is contained in:
parent
363154d855
commit
a6fa53b7b1
3 changed files with 11 additions and 7 deletions
|
@ -16344,7 +16344,7 @@
|
||||||
"construct": false,
|
"construct": false,
|
||||||
"construct-only": false,
|
"construct-only": false,
|
||||||
"controllable": false,
|
"controllable": false,
|
||||||
"default": "application/x-rtp-payload-stats, clock-rate=(uint)0, running-time=(guint64)0, seqnum=(uint)0, timestamp=(uint)0, ssrc=(uint)0, pt=(uint)128, seqnum-offset=(uint)0, timestamp-offset=(uint)0;",
|
"default": "application/x-rtp-payload-stats, clock-rate=(int)0, running-time=(guint64)0, seqnum=(uint)0, timestamp=(uint)0, ssrc=(uint)0, pt=(int)128, seqnum-offset=(uint)0, timestamp-offset=(uint)0;",
|
||||||
"mutable": "null",
|
"mutable": "null",
|
||||||
"readable": true,
|
"readable": true,
|
||||||
"type": "GstStructure",
|
"type": "GstStructure",
|
||||||
|
|
|
@ -502,8 +502,12 @@ gst_rtp_passthrough_pay_sink_event (GstPad * pad,
|
||||||
|
|
||||||
s = gst_caps_get_structure (caps, 0);
|
s = gst_caps_get_structure (caps, 0);
|
||||||
|
|
||||||
gst_structure_get_uint (s, "payload", &self->pt);
|
if (!self->pt_override
|
||||||
gst_structure_get_uint (s, "clock-rate", &self->clock_rate);
|
&& !gst_structure_get_int (s, "payload", &self->pt)) {
|
||||||
|
GST_WARNING_OBJECT (self, "Caps are missing payload type!");
|
||||||
|
}
|
||||||
|
if (!gst_structure_get_int (s, "clock-rate", &self->clock_rate))
|
||||||
|
GST_WARNING_OBJECT (self, "Caps are missing clock-rate!");
|
||||||
if (gst_structure_get_uint (s, "ssrc", &self->ssrc))
|
if (gst_structure_get_uint (s, "ssrc", &self->ssrc))
|
||||||
self->ssrc_set = TRUE;
|
self->ssrc_set = TRUE;
|
||||||
if (gst_structure_get_uint (s, "clock-base", &self->timestamp_offset))
|
if (gst_structure_get_uint (s, "clock-base", &self->timestamp_offset))
|
||||||
|
@ -551,10 +555,10 @@ gst_rtp_passthrough_pay_create_stats (GstRtpPassthroughPay * self)
|
||||||
}
|
}
|
||||||
|
|
||||||
return gst_structure_new ("application/x-rtp-payload-stats", "clock-rate",
|
return gst_structure_new ("application/x-rtp-payload-stats", "clock-rate",
|
||||||
G_TYPE_UINT, (guint) self->clock_rate, "running-time", G_TYPE_UINT64,
|
G_TYPE_INT, self->clock_rate, "running-time", G_TYPE_UINT64,
|
||||||
running_time, "seqnum", G_TYPE_UINT, (guint) self->seqnum, "timestamp",
|
running_time, "seqnum", G_TYPE_UINT, (guint) self->seqnum, "timestamp",
|
||||||
G_TYPE_UINT, (guint) self->timestamp, "ssrc", G_TYPE_UINT, self->ssrc,
|
G_TYPE_UINT, (guint) self->timestamp, "ssrc", G_TYPE_UINT, self->ssrc,
|
||||||
"pt", G_TYPE_UINT, self->pt, "seqnum-offset", G_TYPE_UINT,
|
"pt", G_TYPE_INT, self->pt, "seqnum-offset", G_TYPE_UINT,
|
||||||
(guint) self->seqnum_offset, "timestamp-offset", G_TYPE_UINT,
|
(guint) self->seqnum_offset, "timestamp-offset", G_TYPE_UINT,
|
||||||
(guint) self->timestamp_offset, NULL);
|
(guint) self->timestamp_offset, NULL);
|
||||||
|
|
||||||
|
|
|
@ -66,8 +66,8 @@ struct _GstRtpPassthroughPay
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
GstSegment segment;
|
GstSegment segment;
|
||||||
|
|
||||||
guint clock_rate;
|
gint clock_rate;
|
||||||
guint pt;
|
gint pt;
|
||||||
gboolean pt_override;
|
gboolean pt_override;
|
||||||
guint ssrc;
|
guint ssrc;
|
||||||
gboolean ssrc_set;
|
gboolean ssrc_set;
|
||||||
|
|
Loading…
Reference in a new issue