1*4882a593SmuzhiyunFrom 657a83673cf21db3f6c73fe89785687f6514ef83 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Wed, 11 May 2022 17:24:49 +0800 4*4882a593SmuzhiyunSubject: [PATCH 08/12] v4l2src: Support setting max resolution 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunSet env "GST_V4L2SRC_MAX_RESOLUTION" to limit resolution, for example: 7*4882a593Smuzhiyunexport GST_V4L2SRC_MAX_RESOLUTION=1920x1080 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun sys/v4l2/gstv4l2object.c | 19 +++++++++++++------ 12*4882a593Smuzhiyun 1 file changed, 13 insertions(+), 6 deletions(-) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyundiff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c 15*4882a593Smuzhiyunindex 19ae751..09fabf0 100644 16*4882a593Smuzhiyun--- a/sys/v4l2/gstv4l2object.c 17*4882a593Smuzhiyun+++ b/sys/v4l2/gstv4l2object.c 18*4882a593Smuzhiyun@@ -2810,6 +2810,7 @@ gst_v4l2_object_probe_caps_for_format (GstV4l2Object * v4l2object, 19*4882a593Smuzhiyun gint fd = v4l2object->video_fd; 20*4882a593Smuzhiyun struct v4l2_frmsizeenum size; 21*4882a593Smuzhiyun GList *results = NULL; 22*4882a593Smuzhiyun+ guint32 max_width = G_MAXINT, max_height = G_MAXINT; 23*4882a593Smuzhiyun guint32 w, h; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun if (pixelformat == GST_MAKE_FOURCC ('M', 'P', 'E', 'G')) { 26*4882a593Smuzhiyun@@ -2817,6 +2818,12 @@ gst_v4l2_object_probe_caps_for_format (GstV4l2Object * v4l2object, 27*4882a593Smuzhiyun return ret; 28*4882a593Smuzhiyun } 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun+ if (!V4L2_TYPE_IS_OUTPUT (v4l2object->type)) { 31*4882a593Smuzhiyun+ const gchar *buf = g_getenv ("GST_V4L2SRC_MAX_RESOLUTION"); 32*4882a593Smuzhiyun+ if (buf) 33*4882a593Smuzhiyun+ sscanf (buf, "%ux%u", &max_width, &max_height); 34*4882a593Smuzhiyun+ } 35*4882a593Smuzhiyun+ 36*4882a593Smuzhiyun memset (&size, 0, sizeof (struct v4l2_frmsizeenum)); 37*4882a593Smuzhiyun size.index = 0; 38*4882a593Smuzhiyun size.pixel_format = pixelformat; 39*4882a593Smuzhiyun@@ -2833,8 +2840,8 @@ gst_v4l2_object_probe_caps_for_format (GstV4l2Object * v4l2object, 40*4882a593Smuzhiyun GST_LOG_OBJECT (v4l2object->dbg_obj, "got discrete frame size %dx%d", 41*4882a593Smuzhiyun size.discrete.width, size.discrete.height); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun- w = MIN (size.discrete.width, G_MAXINT); 44*4882a593Smuzhiyun- h = MIN (size.discrete.height, G_MAXINT); 45*4882a593Smuzhiyun+ w = MIN (size.discrete.width, max_width); 46*4882a593Smuzhiyun+ h = MIN (size.discrete.height, max_height); 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun if (w && h) { 49*4882a593Smuzhiyun tmp = 50*4882a593Smuzhiyun@@ -2868,8 +2875,8 @@ gst_v4l2_object_probe_caps_for_format (GstV4l2Object * v4l2object, 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun w = MAX (size.stepwise.min_width, 1); 53*4882a593Smuzhiyun h = MAX (size.stepwise.min_height, 1); 54*4882a593Smuzhiyun- maxw = MIN (size.stepwise.max_width, G_MAXINT); 55*4882a593Smuzhiyun- maxh = MIN (size.stepwise.max_height, G_MAXINT); 56*4882a593Smuzhiyun+ maxw = MIN (size.stepwise.max_width, max_width); 57*4882a593Smuzhiyun+ maxh = MIN (size.stepwise.max_height, max_height); 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun step_w = MAX (size.stepwise.step_width, 1); 60*4882a593Smuzhiyun step_h = MAX (size.stepwise.step_height, 1); 61*4882a593Smuzhiyun@@ -2909,8 +2916,8 @@ gst_v4l2_object_probe_caps_for_format (GstV4l2Object * v4l2object, 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun w = MAX (size.stepwise.min_width, 1); 64*4882a593Smuzhiyun h = MAX (size.stepwise.min_height, 1); 65*4882a593Smuzhiyun- maxw = MIN (size.stepwise.max_width, G_MAXINT); 66*4882a593Smuzhiyun- maxh = MIN (size.stepwise.max_height, G_MAXINT); 67*4882a593Smuzhiyun+ maxw = MIN (size.stepwise.max_width, max_width); 68*4882a593Smuzhiyun+ maxh = MIN (size.stepwise.max_height, max_height); 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun tmp = 71*4882a593Smuzhiyun gst_v4l2_object_probe_caps_for_format_and_size (v4l2object, pixelformat, 72*4882a593Smuzhiyun-- 73*4882a593Smuzhiyun2.20.1 74*4882a593Smuzhiyun 75