Remove TIZEN_FEATUER_PRODUCT_TM1 12/201912/6 accepted/tizen/unified/20190325.070850 submit/tizen/20190322.064153
authorSeokHoon LEE <andy.shlee@samsung.com>
Thu, 21 Mar 2019 01:41:25 +0000 (10:41 +0900)
committerSeokHoon LEE <andy.shlee@samsung.com>
Thu, 21 Mar 2019 08:18:47 +0000 (17:18 +0900)
- Remove TIZEN_FEATUER_PRODUCT_TM1 for unified code.
- add function to get number of bo(buffer object).

Change-Id: I8f86dac7576c6d719377bced9368f14f01a7ee07
Signed-off-by: SeokHoon LEE <andy.shlee@samsung.com>
packaging/gst-plugins-tizen.spec
waylandsrc/src/gstwaylandsrc.c [changed mode: 0644->0755]

index cf9d993..d3712ee 100644 (file)
@@ -9,7 +9,7 @@
 Name:       gst-plugins-tizen
 Version:    1.0.0
 Summary:    GStreamer tizen plugins (common)
-Release:    65
+Release:    66
 Group:      Multimedia/Framework
 Url:        http://gstreamer.freedesktop.org/
 License:    LGPL-2.1+
old mode 100644 (file)
new mode 100755 (executable)
index 0daf817..f56237a
@@ -168,12 +168,35 @@ static const struct tizen_screenmirror_listener mirror_listener = {
   mirror_handle_stop
 };
 
+static int get_tbm_surface_num_bos(void)
+{
+  static int num_bos = 0;
+  tbm_surface_h surface = NULL;
+
+  if(num_bos)
+    return num_bos;
+
+  surface = tbm_surface_create(128, 128, TBM_FORMAT_NV12);
+  if (surface == NULL) {
+    GST_ERROR ("waylandsrc : tbm_surface_create failed.");
+    return 0;
+  }
+
+  num_bos = tbm_surface_internal_get_num_bos(surface);
+  tbm_surface_destroy(surface);
+
+  if(num_bos == 0)
+    GST_ERROR ("waylandsrc : surface doesn't have any bo.");
+
+  return num_bos;
+}
 
 #ifdef WAYLANDSRC_BUFFER_DUMP
 static int dump_cnt;
 
 void save_waylandsrc_buffer (output_buffer * out_buffer)
 {
+  int bo_num, i;
   dump_cnt++;
 
   if (100 < dump_cnt && dump_cnt < 150) {
@@ -184,24 +207,18 @@ void save_waylandsrc_buffer (output_buffer * out_buffer)
       return;
     }
 
-    bo_handle = tbm_bo_map (out_buffer->bo[0], TBM_DEVICE_CPU, TBM_OPTION_READ);
-
-    if (bo_handle.ptr)
-      fwrite ((char *)bo_handle.ptr, tbm_bo_size(out_buffer->bo[0]), 1, fp);
-    else
-      GST_ERROR_OBJECT (src, "Failed to get tbm bo[0]'s handle: %s", strerror (errno));
-
-    tbm_bo_unmap(out_buffer->bo[0]);
+    bo_num = get_tbm_surface_num_bos();
+    for (i = 0; i < bo_num; i++)
+    {
+      bo_handle = tbm_bo_map (out_buffer->bo[i], TBM_DEVICE_CPU, TBM_OPTION_READ);
 
-    #ifndef TIZEN_FEATURE_PRODUCT_TM1
-    bo_handle = tbm_bo_map (out_buffer->bo[1], TBM_DEVICE_CPU, TBM_OPTION_READ);
-    if (bo_handle.ptr)
-      fwrite ((char *) bo_handle.ptr, tbm_bo_size(out_buffer->bo[1]), 1, fp);
-    else
-      GST_ERROR_OBJECT (src, "Failed to get tbm bo[1]'s handle:: %s", strerror (errno));
+      if (bo_handle.ptr)
+        fwrite ((char *)bo_handle.ptr, tbm_bo_size(out_buffer->bo[i]), 1, fp);
+      else
+        GST_ERROR_OBJECT (src, "Failed to get tbm bo's handle: %s", strerror (errno));
 
-    tbm_bo_unmap(out_buffer->bo[1]);
-    #endif
+      tbm_bo_unmap(out_buffer->bo[i]);
+    }
 
     GST_ERROR_OBJECT (src, "Dump (%d):%d       %d\n", dump_cnt, out_buffer->size, tbm_bo_size(out_buffer->bo[0]));
 
@@ -636,29 +653,28 @@ tbm_buffer_create (GstWaylandSrc * src)
       break;
     case TBM_FORMAT_NV12:
     case TBM_FORMAT_NV21:
+      bo_num = get_tbm_surface_num_bos();
 
-      GST_WARNING_OBJECT (src, "BO image size : %d %d %d %d", src->ts_info.planes[0].size, src->ts_info.planes[1].size, src->ts_info.num_planes, src->ts_info.size);
+      GST_WARNING_OBJECT (src, "BO image size : %d %d %d %d, Number_of_bo : %d", src->ts_info.planes[0].size, src->ts_info.planes[1].size, src->ts_info.num_planes, src->ts_info.size, bo_num);
 
-#ifdef TIZEN_FEATURE_PRODUCT_TM1
-      out_buffer->bo[0] =
+      if (bo_num == 1) {
+        out_buffer->bo[0] =
           tbm_bo_alloc (bufmgr, src->ts_info.planes[0].size + src->ts_info.planes[1].size, TBM_BO_DEFAULT);
-      if (out_buffer->bo[0] == NULL)
-        goto failed;
-
-      bo_num = 1;
-#else
-      out_buffer->bo[0] =
+        if (out_buffer->bo[0] == NULL)
+          goto failed;
+      } else if (bo_num == 2) {
+        out_buffer->bo[0] =
           tbm_bo_alloc (bufmgr, src->ts_info.planes[0].size, TBM_BO_DEFAULT);
-      if (out_buffer->bo[0] == NULL)
-        goto failed;
+        if (out_buffer->bo[0] == NULL)
+          goto failed;
 
-      out_buffer->bo[1] =
+        out_buffer->bo[1] =
           tbm_bo_alloc (bufmgr, src->ts_info.planes[1].size, TBM_BO_DEFAULT);
-      if (out_buffer->bo[1] == NULL)
+        if (out_buffer->bo[1] == NULL)
+          goto failed;
+      } else {
         goto failed;
-
-      bo_num = 2;
-#endif
+      }
 
       out_buffer->surface =
           tbm_surface_internal_create_with_bos(&src->ts_info, out_buffer->bo, bo_num);