X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=meta-agl-bsp%2Fmeta-rcar-gen3%2Frecipes-backport%2Fgstreamer_bp_krogoth%2Fgstreamer1.0-plugins-base%2F0005-convertframe-Support-video-crop-when-convert-frame.patch;fp=meta-agl-bsp%2Fmeta-rcar-gen3%2Frecipes-backport%2Fgstreamer_bp_krogoth%2Fgstreamer1.0-plugins-base%2F0005-convertframe-Support-video-crop-when-convert-frame.patch;h=0000000000000000000000000000000000000000;hb=3f0d2e62f0dd36d58150011a0398638c25256ffc;hp=096a6f4cba7732ef52f595f5b169358713413bbd;hpb=d9dc7d14ce997dda7cb02d0f1bd6ccf1cf6d5e65;p=AGL%2Fmeta-agl.git diff --git a/meta-agl-bsp/meta-rcar-gen3/recipes-backport/gstreamer_bp_krogoth/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch b/meta-agl-bsp/meta-rcar-gen3/recipes-backport/gstreamer_bp_krogoth/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch deleted file mode 100755 index 096a6f4cb..000000000 --- a/meta-agl-bsp/meta-rcar-gen3/recipes-backport/gstreamer_bp_krogoth/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 5be6ed00aad028d9cbb4e0c63af0be69d335c71e Mon Sep 17 00:00:00 2001 -From: Song Bing -Date: Fri, 11 Dec 2015 21:42:00 +0800 -Subject: [PATCH] convertframe: Support video crop when convert frame - -Get thumbnail will user convertframe to convert video frame to -desired video format and size. But haven't process crop meta on -the video buffer. Add support video crop. - -https://bugzilla.gnome.org/show_bug.cgi?id=759329 - -Upstream-Status: Backport [1.7.1] - ---- - gst-libs/gst/video/convertframe.c | 65 +++++++++++++++++++++++++++++++++------ - 1 file changed, 56 insertions(+), 9 deletions(-) - -diff --git a/gst-libs/gst/video/convertframe.c b/gst-libs/gst/video/convertframe.c -index aa9c3d3..942a51e 100644 ---- a/gst-libs/gst/video/convertframe.c -+++ b/gst-libs/gst/video/convertframe.c -@@ -110,12 +110,23 @@ fail: - static GstElement * - build_convert_frame_pipeline (GstElement ** src_element, - GstElement ** sink_element, const GstCaps * from_caps, -- const GstCaps * to_caps, GError ** err) -+ GstVideoCropMeta * cmeta, const GstCaps * to_caps, GError ** err) - { -- GstElement *src = NULL, *csp = NULL, *vscale = NULL; -- GstElement *sink = NULL, *encoder = NULL, *pipeline; -+ GstElement *vcrop = NULL, *csp = NULL, *csp2 = NULL, *vscale = NULL; -+ GstElement *src = NULL, *sink = NULL, *encoder = NULL, *pipeline; -+ GstVideoInfo info; - GError *error = NULL; - -+ if (cmeta) { -+ if (!create_element ("videocrop", &vcrop, &error)) { -+ g_warning -+ ("build_convert_frame_pipeline: Buffer has crop metadata but videocrop element is not found. Cropping will be disabled"); -+ } else { -+ if (!create_element ("videoconvert", &csp2, &error)) -+ goto no_elements; -+ } -+ } -+ - /* videoscale is here to correct for the pixel-aspect-ratio for us */ - GST_DEBUG ("creating elements"); - if (!create_element ("appsrc", &src, &error) || -@@ -133,15 +144,42 @@ build_convert_frame_pipeline (GstElement ** src_element, - - GST_DEBUG ("adding elements"); - gst_bin_add_many (GST_BIN (pipeline), src, csp, vscale, sink, NULL); -+ if (vcrop) -+ gst_bin_add_many (GST_BIN (pipeline), vcrop, csp2, NULL); - - /* set caps */ - g_object_set (src, "caps", from_caps, NULL); -+ if (vcrop) { -+ gst_video_info_from_caps (&info, from_caps); -+ g_object_set (vcrop, "left", cmeta->x, NULL); -+ g_object_set (vcrop, "top", cmeta->y, NULL); -+ g_object_set (vcrop, "right", GST_VIDEO_INFO_WIDTH (&info) - cmeta->width, -+ NULL); -+ g_object_set (vcrop, "bottom", -+ GST_VIDEO_INFO_HEIGHT (&info) - cmeta->height, NULL); -+ GST_DEBUG ("crop meta [x,y,width,height]: %d %d %d %d", cmeta->x, cmeta->y, -+ cmeta->width, cmeta->height); -+ } - g_object_set (sink, "caps", to_caps, NULL); - - /* FIXME: linking is still way too expensive, profile this properly */ -- GST_DEBUG ("linking src->csp"); -- if (!gst_element_link_pads (src, "src", csp, "sink")) -- goto link_failed; -+ if (vcrop) { -+ GST_DEBUG ("linking src->csp2"); -+ if (!gst_element_link_pads (src, "src", csp2, "sink")) -+ goto link_failed; -+ -+ GST_DEBUG ("linking csp2->vcrop"); -+ if (!gst_element_link_pads (csp2, "src", vcrop, "sink")) -+ goto link_failed; -+ -+ GST_DEBUG ("linking vcrop->csp"); -+ if (!gst_element_link_pads (vcrop, "src", csp, "sink")) -+ goto link_failed; -+ } else { -+ GST_DEBUG ("linking src->csp"); -+ if (!gst_element_link_pads (src, "src", csp, "sink")) -+ goto link_failed; -+ } - - GST_DEBUG ("linking csp->vscale"); - if (!gst_element_link_pads_full (csp, "src", vscale, "sink", -@@ -193,8 +231,12 @@ no_elements: - { - if (src) - gst_object_unref (src); -+ if (vcrop) -+ gst_object_unref (vcrop); - if (csp) - gst_object_unref (csp); -+ if (csp2) -+ gst_object_unref (csp2); - if (vscale) - gst_object_unref (vscale); - if (sink) -@@ -209,7 +251,11 @@ no_elements: - no_pipeline: - { - gst_object_unref (src); -+ if (vcrop) -+ gst_object_unref (vcrop); - gst_object_unref (csp); -+ if (csp2) -+ gst_object_unref (csp2); - gst_object_unref (vscale); - gst_object_unref (sink); - -@@ -282,7 +328,8 @@ gst_video_convert_sample (GstSample * sample, const GstCaps * to_caps, - } - - pipeline = -- build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy, &err); -+ build_convert_frame_pipeline (&src, &sink, from_caps, -+ gst_buffer_get_video_crop_meta (buf), to_caps_copy, &err); - if (!pipeline) - goto no_pipeline; - -@@ -646,8 +693,8 @@ gst_video_convert_sample_async (GstSample * sample, - } - - pipeline = -- build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy, -- &error); -+ build_convert_frame_pipeline (&src, &sink, from_caps, -+ gst_buffer_get_video_crop_meta (buf), to_caps_copy, &error); - if (!pipeline) - goto no_pipeline; - --- -2.5.0 -