Merge branch 'tizen_gst_1.16.2' into tizen 91/225591/1 accepted/tizen/unified/20200304.124028 submit/tizen/20200221.064623 submit/tizen/20200302.032418
authorGilbok Lee <gilbok.lee@samsung.com>
Fri, 21 Feb 2020 06:22:40 +0000 (15:22 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Fri, 21 Feb 2020 06:22:40 +0000 (15:22 +0900)
Change-Id: Ic7957406bd4feccae8151765c793c34b3c9846e4

1  2 
gst-libs/gst/allocators/gsttizenmemory.h
gst-libs/gst/video/video-converter.c
packaging/gst-plugins-base.spec

index a5db58373c0931ab0534994a3659fa67a30eaa7e,4feeae6b9f43697b38a9121b72709b5cbcb8730b..14cb569b3a86b3e9e1064df8a31342b7576db370
@@@ -5787,59 -5824,42 +5824,61 @@@ convert_scale_planes (GstVideoConverte
    convert_fill_border (convert, dest);
  }
  
+ #ifdef USE_TBM
  static void
  convert_I420_SN12 (GstVideoConverter * convert, const GstVideoFrame * src,
 -    GstVideoFrame * dest )
 +    GstVideoFrame * dst)
  {
 -  guint8 *mY, *mUV, *Y, *U, *V;
 -  gint l1, l2;
 -  int i, j;
 -  gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src);
 +  guint8 *src_Y = NULL;
 +  guint8 *src_U = NULL;
 +  guint8 *src_V = NULL;
 +  guint8 *dst_Y = NULL;
 +  guint8 *dst_UV = NULL;
 +  int i = 0;
 +  int j = 0;
  
    gint width = convert->in_width;
    gint height = convert->in_height;
 +  gint loop_count_Y = GST_ROUND_DOWN_2 (height);
 +  gint loop_count_UV = GST_ROUND_UP_2 (width) >> 1;
 +
 +  gint src_stride_Y = GST_VIDEO_FRAME_PLANE_STRIDE (src, 0);
 +  gint src_stride_U = GST_VIDEO_FRAME_PLANE_STRIDE (src, 1);
 +  gint src_stride_diff = src_stride_U - loop_count_UV;
 +
 +  gint dst_stride_Y = GST_VIDEO_FRAME_PLANE_STRIDE (dst, 0);
 +  gint dst_stride_UV = GST_VIDEO_FRAME_PLANE_STRIDE (dst, 1);
 +  gint dst_stride_diff = GST_ROUND_DOWN_2 (dst_stride_UV - width);
 +
 +  src_Y = GST_VIDEO_FRAME_PLANE_DATA (src, 0);
 +  src_U = GST_VIDEO_FRAME_PLANE_DATA (src, 1);
 +  src_V = GST_VIDEO_FRAME_PLANE_DATA (src, 2);
 +
 +  dst_Y = GST_VIDEO_FRAME_PLANE_DATA (dst, 0);
 +  dst_UV = GST_VIDEO_FRAME_PLANE_DATA (dst, 1);
 +
 +  GST_DEBUG_OBJECT (convert, "size %dx%d, stride src[0:%d,1:%d], dst[0:%d,1:%d]",
 +    width, height, src_stride_Y, src_stride_U, dst_stride_Y, dst_stride_UV);
 +
 +  for (i = 0 ; i < loop_count_Y ; i += 2) {
 +    memcpy (dst_Y, src_Y, width);
 +    src_Y += src_stride_Y;
 +    dst_Y += dst_stride_Y;
 +
 +    memcpy (dst_Y, src_Y, width);
 +    src_Y += src_stride_Y;
 +    dst_Y += dst_stride_Y;
  
 -  mY = mUV = Y = U = V = NULL;
 -  mY = GST_VIDEO_FRAME_PLANE_DATA (dest, 0);
 -  mUV = GST_VIDEO_FRAME_PLANE_DATA (dest, 1);
 -
 -  for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) {
 -    GET_LINE_OFFSETS (interlaced, i, l1, l2);
 -
 -    Y = FRAME_GET_Y_LINE (src, l1);
 -    memcpy(mY, Y, width);
 -    mY += width;
 -    Y = FRAME_GET_Y_LINE (src, l2);
 -    memcpy(mY, Y, width);
 -    mY += width;
 -
 -    U = FRAME_GET_U_LINE (src, i >> 1);
 -    V = FRAME_GET_V_LINE (src, i >> 1);
 -    for (j = 0; j < (width + 1) / 2; j++) {
 -      *mUV++ = *U++;
 -      *mUV++ = *V++;
 +    for (j = 0 ; j < loop_count_UV ; j++) {
 +      *dst_UV++ = *src_U++;
 +      *dst_UV++ = *src_V++;
      }
 +    src_U += src_stride_diff;
 +    src_V += src_stride_diff;
 +    dst_UV += dst_stride_diff;
    }
  }
+ #endif
  
  static GstVideoFormat
  get_scale_format (GstVideoFormat format, gint plane)
index c29bc0e412aaa9761ec3a1e73f45cdd641fdb620,ee23afdb718ac6ffe13d9c5b62e19832abe64d89..8bc69e2cea0abe6359696ad06a625513655674b8
@@@ -4,8 -4,8 +4,8 @@@
  %define _libdebug_dir %{_libdir}/debug/usr/lib
  
  Name:           gst-plugins-base
- Version:        1.12.2
- Release:        8
+ Version:        1.16.2
 -Release:        1
++Release:        0
  License:        LGPL-2.0+
  Summary:        GStreamer Streaming-Media Framework Plug-Ins
  Url:            http://gstreamer.freedesktop.org/