diff options
author | Andrei Sarakeev <sarakusha@gmail.com> | 2014-11-26 10:33:09 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-11-28 11:19:23 +0100 |
commit | 6348de195d1e29d43518b21a19659e852177e9f2 (patch) | |
tree | 66e80eafd7534cc685ca854648f9a2955f7c6466 | |
parent | f2f16636779aa9e24dde0baaa82d2f01dd73d822 (diff) |
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
-rw-r--r-- | gst/videocrop/gstaspectratiocrop.c | 12 | ||||
-rw-r--r-- | gst/videocrop/gstaspectratiocrop.h | 1 |
2 files changed, 2 insertions, 11 deletions
diff --git a/gst/videocrop/gstaspectratiocrop.c b/gst/videocrop/gstaspectratiocrop.c index a4a65537e..62e96441d 100644 --- a/gst/videocrop/gstaspectratiocrop.c +++ b/gst/videocrop/gstaspectratiocrop.c @@ -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)); } diff --git a/gst/videocrop/gstaspectratiocrop.h b/gst/videocrop/gstaspectratiocrop.h index 5e108402b..2caeb5ce9 100644 --- a/gst/videocrop/gstaspectratiocrop.h +++ b/gst/videocrop/gstaspectratiocrop.h @@ -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 */ |