mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +00:00
aspectratiocrop: Handle resolution changes properly
When an caps-event is received, we must immediately change the crop to videocrop correctly changed caps-event dimension, otherwise the videocrop will first use the previous value of the crop that when resizing video to a smaller resolution may cause an error. https://bugzilla.gnome.org/show_bug.cgi?id=740671
This commit is contained in:
parent
f2f1663677
commit
6348de195d
2 changed files with 2 additions and 11 deletions
|
@ -152,28 +152,22 @@ static gboolean
|
|||
gst_aspect_ratio_crop_sink_event (GstPad * pad, GstObject * parent,
|
||||
GstEvent * evt)
|
||||
{
|
||||
gboolean ret;
|
||||
GstAspectRatioCrop *aspect_ratio_crop = GST_ASPECT_RATIO_CROP (parent);
|
||||
|
||||
ret =
|
||||
aspect_ratio_crop->sinkpad_old_eventfunc (pad, parent,
|
||||
gst_event_ref (evt));
|
||||
|
||||
switch (GST_EVENT_TYPE (evt)) {
|
||||
case GST_EVENT_CAPS:
|
||||
{
|
||||
GstCaps *caps;
|
||||
|
||||
gst_event_parse_caps (evt, &caps);
|
||||
ret = gst_aspect_ratio_crop_set_caps (aspect_ratio_crop, caps);
|
||||
gst_aspect_ratio_crop_set_caps (aspect_ratio_crop, caps);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
gst_event_unref (evt);
|
||||
|
||||
return ret;
|
||||
return gst_pad_event_default (pad, parent, evt);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -253,8 +247,6 @@ gst_aspect_ratio_crop_init (GstAspectRatioCrop * aspect_ratio_crop)
|
|||
aspect_ratio_crop->sink);
|
||||
gst_object_unref (link_pad);
|
||||
|
||||
aspect_ratio_crop->sinkpad_old_eventfunc =
|
||||
GST_PAD_EVENTFUNC (aspect_ratio_crop->sink);
|
||||
gst_pad_set_event_function (aspect_ratio_crop->sink,
|
||||
GST_DEBUG_FUNCPTR (gst_aspect_ratio_crop_sink_event));
|
||||
}
|
||||
|
|
|
@ -46,7 +46,6 @@ struct _GstAspectRatioCrop
|
|||
GstElement *videocrop;
|
||||
|
||||
GstPad *sink;
|
||||
GstPadEventFunction sinkpad_old_eventfunc;
|
||||
|
||||
/* target aspect ratio */
|
||||
gint ar_num; /* if < 1 then don't change ar */
|
||||
|
|
Loading…
Reference in a new issue