base:video: Add zero copy format for YUY2 and UYVY 45/282945/3 accepted/tizen/unified/20221102.020542
authorJeongmo Yang <jm80.yang@samsung.com>
Thu, 13 Oct 2022 10:46:08 +0000 (19:46 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Mon, 17 Oct 2022 09:28:27 +0000 (18:28 +0900)
[Version] 1.20.0-39
[Issue Type] New feature

Change-Id: I9e12f32de7227310d8d0b19261227f1992769197
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/gstreamer.spec
subprojects/gst-plugins-base/gst-libs/gst/allocators/gsttizenmemory.c
subprojects/gst-plugins-base/gst-libs/gst/video/video-format.c
subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h
subprojects/gst-plugins-base/gst-libs/gst/video/video-info.c

index 1542f9e..4197cd4 100644 (file)
@@ -62,7 +62,7 @@
 
 Name:           %{_name}
 Version:        1.20.0
-Release:        38
+Release:        39
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.0+
 Group:          Multimedia/Framework
index 741833d..0ce0ca5 100644 (file)
@@ -51,6 +51,8 @@ GstTizenBufferFormats yuv_formats[] = {
     {TBM_FORMAT_YUV420, GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_S420},
     {TBM_FORMAT_NV21, GST_VIDEO_FORMAT_NV21, GST_VIDEO_FORMAT_SN21},
     {TBM_FORMAT_NV12, GST_VIDEO_FORMAT_NV12, GST_VIDEO_FORMAT_SN12},
+    {TBM_FORMAT_YUYV, GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_SUYV},
+    {TBM_FORMAT_UYVY, GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_SYVY},
     {TBM_FORMAT_ARGB8888, GST_VIDEO_FORMAT_ARGB, GST_VIDEO_FORMAT_SR32}
 };
 
index 7e9ae52..dae8cee 100644 (file)
@@ -6939,13 +6939,17 @@ static const VideoFormat formats[] = {
   MAKE_YUV_FORMAT (I420, "raw video", GST_MAKE_FOURCC ('I', '4', '2', '0'),
       DPTH888, PSTR111, PLANE012, OFFS0, SUB420, PACK_420),
   MAKE_YUV_FORMAT (S420, "raw video", GST_MAKE_FOURCC ('S', '4', '2', '0'),
-      DPTH888, PSTR111, PLANE012, OFFS0, SUB420, PACK_420),      
+      DPTH888, PSTR111, PLANE012, OFFS0, SUB420, PACK_420),
   MAKE_YUV_FORMAT (YV12, "raw video", GST_MAKE_FOURCC ('Y', 'V', '1', '2'),
       DPTH888, PSTR111, PLANE021, OFFS0, SUB420, PACK_420),
   MAKE_YUV_FORMAT (YUY2, "raw video", GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'),
       DPTH888, PSTR244, PLANE0, OFFS013, SUB422, PACK_YUY2),
+  MAKE_YUV_FORMAT (SUYV, "raw video", GST_MAKE_FOURCC ('S', 'U', 'Y', 'V'),
+      DPTH888, PSTR244, PLANE0, OFFS013, SUB422, PACK_YUY2),
   MAKE_YUV_FORMAT (UYVY, "raw video", GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'),
       DPTH888, PSTR244, PLANE0, OFFS102, SUB422, PACK_UYVY),
+  MAKE_YUV_FORMAT (SYVY, "raw video", GST_MAKE_FOURCC ('S', 'Y', 'V', 'Y'),
+      DPTH888, PSTR244, PLANE0, OFFS102, SUB422, PACK_UYVY),
   MAKE_YUV_FORMAT (ITLV, "raw video", GST_MAKE_FOURCC ('I', 'T', 'L', 'V'),
       DPTH888, PSTR244, PLANE0, OFFS012, SUB422, PACK_UYVY),
   MAKE_YUVA_PACK_FORMAT (AYUV, "raw video", GST_MAKE_FOURCC ('A', 'Y', 'U',
@@ -7400,10 +7404,14 @@ gst_video_format_from_fourcc (guint32 fourcc)
       return GST_VIDEO_FORMAT_YV12;
     case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
       return GST_VIDEO_FORMAT_YUY2;
+    case GST_MAKE_FOURCC ('S', 'U', 'Y', 'V'):
+      return GST_VIDEO_FORMAT_SUYV;
     case GST_MAKE_FOURCC ('Y', 'V', 'Y', 'U'):
       return GST_VIDEO_FORMAT_YVYU;
     case GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'):
       return GST_VIDEO_FORMAT_UYVY;
+    case GST_MAKE_FOURCC ('S', 'Y', 'V', 'Y'):
+      return GST_VIDEO_FORMAT_SYVY;
     case GST_MAKE_FOURCC ('I', 'T', 'L', 'V'):
       return GST_VIDEO_FORMAT_ITLV;
     case GST_MAKE_FOURCC ('V', 'Y', 'U', 'Y'):
index 87edb3d..d31e694 100644 (file)
@@ -35,9 +35,12 @@ G_BEGIN_DECLS
  *                            memory GstCapsFeatures where it does not make sense
  *                            to specify a real video format.
  * @GST_VIDEO_FORMAT_I420: planar 4:2:0 YUV
+ * @GST_VIDEO_FORMAT_S420: zero copy format for @GST_VIDEO_FORMAT_I420
  * @GST_VIDEO_FORMAT_YV12: planar 4:2:0 YVU (like I420 but UV planes swapped)
  * @GST_VIDEO_FORMAT_YUY2: packed 4:2:2 YUV (Y0-U0-Y1-V0 Y2-U2-Y3-V2 Y4 ...)
+ * @GST_VIDEO_FORMAT_SUYV: zero copy format for @GST_VIDEO_FORMAT_YUY2
  * @GST_VIDEO_FORMAT_UYVY: packed 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...)
+ * @GST_VIDEO_FORMAT_SYVY: zero copy format for @GST_VIDEO_FORMAT_UYVY
  * @GST_VIDEO_FORMAT_VYUY: packed 4:2:2 YUV (V0-Y0-U0-Y1 V2-Y2-U2-Y3 V4 ...)
  * @GST_VIDEO_FORMAT_AYUV: packed 4:4:4 YUV with alpha channel (A0-Y0-U0-V0 ...)
  * @GST_VIDEO_FORMAT_RGBx: sparse rgb packed into 32 bit, space last
@@ -46,6 +49,7 @@ G_BEGIN_DECLS
  * @GST_VIDEO_FORMAT_xBGR: sparse reverse rgb packed into 32 bit, space first
  * @GST_VIDEO_FORMAT_RGBA: rgb with alpha channel last
  * @GST_VIDEO_FORMAT_BGRA: reverse rgb with alpha channel last
+ * @GST_VIDEO_FORMAT_SR32: zero copy format for @GST_VIDEO_FORMAT_ARGB
  * @GST_VIDEO_FORMAT_ARGB: rgb with alpha channel first
  * @GST_VIDEO_FORMAT_ABGR: reverse rgb with alpha channel first
  * @GST_VIDEO_FORMAT_RGB: RGB packed into 24 bits without padding (`R-G-B-R-G-B`)
@@ -57,7 +61,10 @@ G_BEGIN_DECLS
  * @GST_VIDEO_FORMAT_v210: packed 4:2:2 10-bit YUV, complex format
  * @GST_VIDEO_FORMAT_v216: packed 4:2:2 16-bit YUV, Y0-U0-Y1-V1 order
  * @GST_VIDEO_FORMAT_NV12: planar 4:2:0 YUV with interleaved UV plane
+ * @GST_VIDEO_FORMAT_SN12: zero copy format for @GST_VIDEO_FORMAT_NV12
+ * @GST_VIDEO_FORMAT_ST12: zero copy format for NV12T
  * @GST_VIDEO_FORMAT_NV21: planar 4:2:0 YUV with interleaved VU plane
+ * @GST_VIDEO_FORMAT_SN21: zero copy format for @GST_VIDEO_FORMAT_NV21
  * @GST_VIDEO_FORMAT_NV12_10LE32: 10-bit variant of @GST_VIDEO_FORMAT_NV12, packed into 32bit words (MSB 2 bits padding) (Since: 1.14)
  * @GST_VIDEO_FORMAT_GRAY8: 8-bit grayscale
  * @GST_VIDEO_FORMAT_GRAY10_LE32: 10-bit grayscale, packed into 32bit words (2 bits padding) (Since: 1.14)
@@ -155,7 +162,9 @@ typedef enum {
   GST_VIDEO_FORMAT_S420,
   GST_VIDEO_FORMAT_YV12,
   GST_VIDEO_FORMAT_YUY2,
+  GST_VIDEO_FORMAT_SUYV,
   GST_VIDEO_FORMAT_UYVY,
+  GST_VIDEO_FORMAT_SYVY,
   GST_VIDEO_FORMAT_ITLV,
   GST_VIDEO_FORMAT_AYUV,
   GST_VIDEO_FORMAT_RGBx,
index 0e05966..015a54f 100644 (file)
@@ -803,8 +803,10 @@ fill_planes (GstVideoInfo * info, gsize plane_size[GST_VIDEO_MAX_PLANES])
 
   switch (info->finfo->format) {
     case GST_VIDEO_FORMAT_YUY2:
+    case GST_VIDEO_FORMAT_SUYV:
     case GST_VIDEO_FORMAT_YVYU:
     case GST_VIDEO_FORMAT_UYVY:
+    case GST_VIDEO_FORMAT_SYVY:
     case GST_VIDEO_FORMAT_VYUY:
       info->stride[0] = GST_ROUND_UP_4 (width * 2);
       info->offset[0] = 0;