diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index e19452c..570fd5a 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -2353,6 +2353,9 @@ gst_v4l2_object_get_nearest_size (GstV4l2Object * v4l2object,
   struct v4l2_format fmt;
   gboolean ret = FALSE;
   GstVideoInterlaceMode interlace_mode;
+  gint is_mplane;
+
+  is_mplane = V4L2_TYPE_IS_MULTIPLANAR (v4l2object->type);
 
   g_return_val_if_fail (width != NULL, FALSE);
   g_return_val_if_fail (height != NULL, FALSE);
@@ -2364,13 +2367,17 @@ gst_v4l2_object_get_nearest_size (GstV4l2Object * v4l2object,
   memset (&fmt, 0, sizeof (struct v4l2_format));
 
   /* get size delimiters */
-  memset (&fmt, 0, sizeof (fmt));
   fmt.type = v4l2object->type;
   fmt.fmt.pix.width = *width;
   fmt.fmt.pix.height = *height;
   fmt.fmt.pix.pixelformat = pixelformat;
-  fmt.fmt.pix.field = V4L2_FIELD_ANY;
+  fmt.fmt.pix.field = V4L2_FIELD_NONE;
 
+  if (is_mplane) {
+    fmt.fmt.pix_mp.plane_fmt[0].sizeimage = (*width) * (*height);
+  } else {
+    fmt.fmt.pix.sizeimage = (*width) * (*height);
+  }
   if (gst_v4l2_object_try_fmt (v4l2object, &fmt) < 0)
     goto error;
 
