mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
rtp: Filter with the filter caps in the payloader's getcaps
This commit is contained in:
parent
f94c4c00c8
commit
3010d1ec2d
6 changed files with 71 additions and 3 deletions
|
@ -217,6 +217,17 @@ gst_rtp_bv_pay_sink_getcaps (GstRTPBasePayload * rtppayload, GstPad * pad,
|
||||||
}
|
}
|
||||||
gst_caps_unref (otherpadcaps);
|
gst_caps_unref (otherpadcaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
GstCaps *tmp;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (rtppayload, "Intersect %" GST_PTR_FORMAT " and filter %"
|
||||||
|
GST_PTR_FORMAT, caps, filter);
|
||||||
|
tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
caps = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,16 @@ gst_rtp_celt_pay_getcaps (GstRTPBasePayload * payload, GstPad * pad,
|
||||||
gst_caps_unref (otherpadcaps);
|
gst_caps_unref (otherpadcaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
GstCaps *tmp;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (payload, "Intersect %" GST_PTR_FORMAT " and filter %"
|
||||||
|
GST_PTR_FORMAT, caps, filter);
|
||||||
|
tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
caps = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -213,6 +213,17 @@ gst_rtp_g722_pay_getcaps (GstRTPBasePayload * rtppayload, GstPad * pad,
|
||||||
}
|
}
|
||||||
gst_caps_unref (otherpadcaps);
|
gst_caps_unref (otherpadcaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
GstCaps *tmp;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (rtppayload, "Intersect %" GST_PTR_FORMAT " and filter %"
|
||||||
|
GST_PTR_FORMAT, caps, filter);
|
||||||
|
tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
caps = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -254,8 +254,9 @@ gst_rtp_h263p_pay_sink_getcaps (GstRTPBasePayload * payload, GstPad * pad,
|
||||||
if (!peercaps || gst_caps_is_any (peercaps)) {
|
if (!peercaps || gst_caps_is_any (peercaps)) {
|
||||||
if (peercaps)
|
if (peercaps)
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
return
|
caps =
|
||||||
gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SINKPAD (payload));
|
gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SINKPAD (payload));
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We basically need to differentiate two use-cases here: One where there's
|
/* We basically need to differentiate two use-cases here: One where there's
|
||||||
|
@ -264,9 +265,11 @@ gst_rtp_h263p_pay_sink_getcaps (GstRTPBasePayload * payload, GstPad * pad,
|
||||||
* we want it to produce. The second case is simply payloader ! depayloader
|
* we want it to produce. The second case is simply payloader ! depayloader
|
||||||
* where we are dealing with the depayloader's template caps. In this case
|
* where we are dealing with the depayloader's template caps. In this case
|
||||||
* we should accept any input compatible with our sink template caps. */
|
* we should accept any input compatible with our sink template caps. */
|
||||||
if (!gst_caps_is_fixed (peercaps))
|
if (!gst_caps_is_fixed (peercaps)) {
|
||||||
return
|
caps =
|
||||||
gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SINKPAD (payload));
|
gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SINKPAD (payload));
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
templ = gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (payload));
|
templ = gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (payload));
|
||||||
intersect = gst_caps_intersect (peercaps, templ);
|
intersect = gst_caps_intersect (peercaps, templ);
|
||||||
|
@ -601,6 +604,18 @@ gst_rtp_h263p_pay_sink_getcaps (GstRTPBasePayload * payload, GstPad * pad,
|
||||||
|
|
||||||
gst_caps_unref (intersect);
|
gst_caps_unref (intersect);
|
||||||
|
|
||||||
|
done:
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
GstCaps *tmp;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (payload, "Intersect %" GST_PTR_FORMAT " and filter %"
|
||||||
|
GST_PTR_FORMAT, caps, filter);
|
||||||
|
tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
caps = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -368,6 +368,16 @@ gst_rtp_h265_pay_getcaps (GstRTPBasePayload * payload, GstPad * pad,
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
GstCaps *tmp;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (payload, "Intersect %" GST_PTR_FORMAT " and filter %"
|
||||||
|
GST_PTR_FORMAT, caps, filter);
|
||||||
|
tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
caps = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
gst_caps_unref (template_caps);
|
gst_caps_unref (template_caps);
|
||||||
gst_caps_unref (allowed_caps);
|
gst_caps_unref (allowed_caps);
|
||||||
|
|
||||||
|
|
|
@ -206,6 +206,17 @@ gst_rtp_ilbc_pay_sink_getcaps (GstRTPBasePayload * rtppayload, GstPad * pad,
|
||||||
}
|
}
|
||||||
gst_caps_unref (otherpadcaps);
|
gst_caps_unref (otherpadcaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
GstCaps *tmp;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (rtppayload, "Intersect %" GST_PTR_FORMAT " and filter %"
|
||||||
|
GST_PTR_FORMAT, caps, filter);
|
||||||
|
tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (caps);
|
||||||
|
caps = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue