upgrade-gst-base-to-1_14_4
diff --git a/gst-libs/gst/video/video-format.c b/gst-libs/gst/video/video-format.c
index f2fa22b..ebe1ad5 100644
--- a/gst-libs/gst/video/video-format.c
+++ b/gst-libs/gst/video/video-format.c
@@ -5240,6 +5240,12 @@
       PSTR222, PLANE012, OFFS0, SUB444, PACK_Y444_12BE),
   MAKE_YUV_LE_FORMAT (Y444_12LE, "raw video", 0x00000000, DPTH12_12_12,
       PSTR222, PLANE012, OFFS0, SUB444, PACK_Y444_12LE),
+
+  MAKE_YUV_FORMAT (MT21, "raw video", GST_MAKE_FOURCC ('M', 'M', '2', '1'),
+      DPTH888, PSTR122, PLANE011, OFFS001, SUB420, PACK_NV12),
+  MAKE_YUV_FORMAT (I422, "raw video", GST_MAKE_FOURCC ('Y', 'M', '1', '6'),
+      DPTH888, PSTR111, PLANE012, OFFS0, SUB422, PACK_420),
+
   MAKE_GRAY_C_LE_FORMAT (GRAY10_LE32, "raw video", DPTH10, PSTR0, PLANE0, OFFS0,
       SUB4, PACK_GRAY10_LE32),
   MAKE_YUV_C_LE_FORMAT (NV12_10LE32, "raw video",
@@ -5480,6 +5486,10 @@
       return GST_VIDEO_FORMAT_IYU1;
     case GST_MAKE_FOURCC ('A', 'Y', '6', '4'):
       return GST_VIDEO_FORMAT_AYUV64;
+	case GST_MAKE_FOURCC ('M', 'M', '2', '1'):
+      return GST_VIDEO_FORMAT_MT21;
+    case GST_MAKE_FOURCC ('Y', 'M', '1', '6'):
+      return GST_VIDEO_FORMAT_I422;
     case GST_MAKE_FOURCC ('X', 'V', '1', '0'):
       return GST_VIDEO_FORMAT_GRAY10_LE32;
     case GST_MAKE_FOURCC ('X', 'V', '1', '5'):
@@ -5504,9 +5514,11 @@
 gst_video_format_from_string (const gchar * format)
 {
   guint i;
-
   g_return_val_if_fail (format != NULL, GST_VIDEO_FORMAT_UNKNOWN);
 
+  if (strcmp ("MT21", format) == 0)
+  return GST_VIDEO_FORMAT_MT21;
+
   for (i = 0; i < G_N_ELEMENTS (formats); i++) {
     if (strcmp (GST_VIDEO_FORMAT_INFO_NAME (&formats[i].info), format) == 0)
       return GST_VIDEO_FORMAT_INFO_FORMAT (&formats[i].info);
diff --git a/gst-libs/gst/video/video-format.h b/gst-libs/gst/video/video-format.h
index dbf514d..325e0c8 100644
--- a/gst-libs/gst/video/video-format.h
+++ b/gst-libs/gst/video/video-format.h
@@ -195,6 +195,8 @@
   GST_VIDEO_FORMAT_I422_12LE,
   GST_VIDEO_FORMAT_Y444_12BE,
   GST_VIDEO_FORMAT_Y444_12LE,
+  GST_VIDEO_FORMAT_MT21,
+  GST_VIDEO_FORMAT_I422,
   GST_VIDEO_FORMAT_GRAY10_LE32,
   GST_VIDEO_FORMAT_NV12_10LE32,
   GST_VIDEO_FORMAT_NV16_10LE32,
diff --git a/gst-libs/gst/video/video-info.c b/gst-libs/gst/video/video-info.c
index 25f7027..1ffabee 100644
--- a/gst-libs/gst/video/video-info.c
+++ b/gst-libs/gst/video/video-info.c
@@ -785,12 +785,24 @@
       info->stride[1] = GST_ROUND_UP_4 (GST_ROUND_UP_2 (width) / 2);
       info->stride[2] = info->stride[1];
       info->offset[0] = 0;
-      info->offset[1] = info->stride[0] * GST_ROUND_UP_2 (height);
+	  info->offset[1] = GST_ROUND_UP_128 (info->stride[0] * GST_ROUND_UP_2 (height));
       cr_h = GST_ROUND_UP_2 (height) / 2;
       if (GST_VIDEO_INFO_IS_INTERLACED (info))
         cr_h = GST_ROUND_UP_2 (cr_h);
-      info->offset[2] = info->offset[1] + info->stride[1] * cr_h;
-      info->size = info->offset[2] + info->stride[2] * cr_h;
+	  info->offset[2] = info->offset[1] + GST_ROUND_UP_128 (info->stride[1] * cr_h);
+      info->size = info->offset[2] + GST_ROUND_UP_128 (info->stride[2] * cr_h);
+      break;
+
+    case GST_VIDEO_FORMAT_I422:
+      info->stride[0] = GST_ROUND_UP_4 (width);
+      info->stride[1] = GST_ROUND_UP_4 (GST_ROUND_UP_2 (width) / 2);
+      info->stride[2] = info->stride[1];
+
+      info->offset[0] = 0;
+      info->offset[1] = GST_ROUND_UP_128 (info->stride[0] * GST_ROUND_UP_2 (height));
+      info->offset[2] = info->offset[1] + GST_ROUND_UP_128 (info->stride[1] * GST_ROUND_UP_2 (height));
+
+      info->size = info->stride[0] * GST_ROUND_UP_2 (height) * 2;
       break;
     case GST_VIDEO_FORMAT_Y41B:
       info->stride[0] = GST_ROUND_UP_4 (width);
@@ -835,6 +847,7 @@
       break;
     case GST_VIDEO_FORMAT_NV12:
     case GST_VIDEO_FORMAT_NV21:
+	case GST_VIDEO_FORMAT_MT21:
       info->stride[0] = GST_ROUND_UP_4 (width);
       info->stride[1] = info->stride[0];
       info->offset[0] = 0;