mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-30 12:10:37 +00:00
visual: Update for negotiation related API changes
This commit is contained in:
parent
0415b90e99
commit
4027a4c34f
1 changed files with 15 additions and 6 deletions
|
@ -141,7 +141,7 @@ static gboolean gst_visual_src_query (GstPad * pad, GstQuery ** query);
|
||||||
|
|
||||||
static gboolean gst_visual_sink_setcaps (GstPad * pad, GstCaps * caps);
|
static gboolean gst_visual_sink_setcaps (GstPad * pad, GstCaps * caps);
|
||||||
static gboolean gst_visual_src_setcaps (GstPad * pad, GstCaps * caps);
|
static gboolean gst_visual_src_setcaps (GstPad * pad, GstCaps * caps);
|
||||||
static GstCaps *gst_visual_getcaps (GstPad * pad);
|
static GstCaps *gst_visual_getcaps (GstPad * pad, GstCaps * filter);
|
||||||
static void libvisual_log_handler (const char *message, const char *funcname,
|
static void libvisual_log_handler (const char *message, const char *funcname,
|
||||||
void *priv);
|
void *priv);
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ gst_visual_reset (GstVisual * visual)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_visual_getcaps (GstPad * pad)
|
gst_visual_getcaps (GstPad * pad, GstCaps * filter)
|
||||||
{
|
{
|
||||||
GstCaps *ret;
|
GstCaps *ret;
|
||||||
GstVisual *visual = GST_VISUAL (gst_pad_get_parent (pad));
|
GstVisual *visual = GST_VISUAL (gst_pad_get_parent (pad));
|
||||||
|
@ -312,6 +312,15 @@ gst_visual_getcaps (GstPad * pad)
|
||||||
|
|
||||||
beach:
|
beach:
|
||||||
|
|
||||||
|
if (filter) {
|
||||||
|
GstCaps *intersection;
|
||||||
|
|
||||||
|
intersection =
|
||||||
|
gst_caps_intersect_full (filter, ret, GST_CAPS_INTERSECT_FIRST);
|
||||||
|
gst_caps_unref (ret);
|
||||||
|
ret = intersection;
|
||||||
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (visual, "returning caps %" GST_PTR_FORMAT, ret);
|
GST_DEBUG_OBJECT (visual, "returning caps %" GST_PTR_FORMAT, ret);
|
||||||
gst_object_unref (visual);
|
gst_object_unref (visual);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -397,18 +406,18 @@ gst_vis_src_negotiate (GstVisual * visual)
|
||||||
GstBufferPool *pool = NULL;
|
GstBufferPool *pool = NULL;
|
||||||
guint size, min, max, prefix, alignment;
|
guint size, min, max, prefix, alignment;
|
||||||
|
|
||||||
caps = gst_pad_get_caps (visual->srcpad);
|
caps = gst_pad_get_caps (visual->srcpad, NULL);
|
||||||
|
|
||||||
/* see what the peer can do */
|
/* see what the peer can do */
|
||||||
othercaps = gst_pad_peer_get_caps (visual->srcpad);
|
othercaps = gst_pad_peer_get_caps (visual->srcpad, caps);
|
||||||
if (othercaps) {
|
if (othercaps) {
|
||||||
target = gst_caps_intersect (othercaps, caps);
|
target = othercaps;
|
||||||
gst_caps_unref (othercaps);
|
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
if (gst_caps_is_empty (target))
|
if (gst_caps_is_empty (target))
|
||||||
goto no_format;
|
goto no_format;
|
||||||
|
|
||||||
|
target = gst_caps_make_writable (target);
|
||||||
gst_caps_truncate (target);
|
gst_caps_truncate (target);
|
||||||
} else {
|
} else {
|
||||||
/* need a copy, we'll be modifying it when fixating */
|
/* need a copy, we'll be modifying it when fixating */
|
||||||
|
|
Loading…
Reference in a new issue