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;
