Add missing tizen feature code for encoder 00/230300/5 accepted/tizen/unified/20200413.070818 submit/tizen/20200410.044206
authorJeongmo Yang <jm80.yang@samsung.com>
Thu, 9 Apr 2020 07:48:27 +0000 (16:48 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 9 Apr 2020 11:37:15 +0000 (20:37 +0900)
- Set tizen specific parameters when open encoder
- Set input buffer information for tizen memory
- Add supported color format : SN12, ST12

[Version] 1.16.2-4
[Profile] Common
[Issue Type] Bug fix

Change-Id: I13f0e677270a78c354d26f3ce426816c5919440c
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
omx/gstomxvideoenc.c
packaging/gst-omx.spec

index 097b7cc..4a01413 100644 (file)
@@ -960,6 +960,37 @@ gst_omx_video_enc_open (GstVideoEncoder * encoder)
     return FALSE;
 #endif
 
+#ifdef TIZEN_FEATURE_OMX
+  self->enc_in_port->use_buffer = klass->cdata.in_port_usebuffer;
+  self->enc_out_port->use_buffer = klass->cdata.out_port_usebuffer;
+
+  /* get extension index and set platform specific buffer enable */
+#if defined(USE_OMX_TARGET_EXYNOS) || defined(USE_OMX_TARGET_EXYNOS64)
+  {
+    OMX_ERRORTYPE err;
+    OMX_INDEXTYPE index = OMX_IndexComponentStartUnused;
+    EnableGemBuffersParams gem_param;
+
+    err = gst_omx_component_get_extension_index (self->enc, (OMX_STRING) EXYNOS_INDEX_PARAM_STORE_METADATA_BUFFER, &index);
+    if (err != OMX_ErrorNone) {
+      GST_WARNING_OBJECT (self, "Failed to get extension index : %s (0x%08x)",
+          gst_omx_error_to_string (err), err);
+    }
+
+    OMX_INIT_PARAM (gem_param);
+    gem_param.enable = OMX_TRUE;
+    gem_param.nPortIndex = 0;
+
+    err = gst_omx_component_set_parameter (self->enc, index, &gem_param);
+    if (err != OMX_ErrorNone) {
+      GST_ERROR_OBJECT (self, "Failed to set platform specific buffer: %s (0x%08x)",
+          gst_omx_error_to_string (err), err);
+    }
+
+  }
+#endif /* USE_OMX_TARGET_EXYNOS || USE_OMX_TARGET_EXYNOS64 */
+#endif /* TIZEN_FEATURE_OMX */
+
   return TRUE;
 }
 
@@ -2704,6 +2735,33 @@ gst_omx_video_enc_fill_buffer (GstOMXVideoEnc * self, GstBuffer * inbuf,
           gst_omx_video_enc_semi_planar_manual_copy (self, inbuf, outbuf,
           info->finfo);
       break;
+#ifdef TIZEN_FEATURE_OMX
+    case GST_VIDEO_FORMAT_ST12:
+    case GST_VIDEO_FORMAT_SN12: {
+      tbm_surface_h surface;
+      GstMemory *mem = gst_buffer_peek_memory (inbuf, 0);
+
+      if (!gst_is_tizen_memory (mem)) {
+        GST_ERROR_OBJECT (self, "Invalid input buffer");
+        ret = FALSE;
+        break;
+      }
+
+      if (!(surface = gst_tizen_memory_get_surface (mem))) {
+        GST_ERROR_OBJECT (self, "Failed to get surface from tizen memory");
+        ret = FALSE;
+        break;
+      }
+      outbuf->omx_buf->pBuffer = (OMX_U8 *) surface;
+      outbuf->omx_buf->nAllocLen = (OMX_U32) tbm_surface_internal_get_size (surface);
+      outbuf->omx_buf->nFilledLen = (OMX_U32) tbm_surface_internal_get_size (surface);
+#ifdef CODEC_ENC_INPUT_DUMP
+      gst_omx_video_enc_input_dump (inbuf);
+#endif /* CODEC_ENC_INPUT_DUMP */
+      ret = TRUE;
+      break;
+    }
+#endif /* TIZEN_FEATURE_OMX */
     default:
       GST_ERROR_OBJECT (self, "Unsupported format");
       goto done;
@@ -3282,6 +3340,10 @@ filter_supported_formats (GList * negotiation_map)
     GList *next;
 
     switch (nmap->format) {
+#ifdef TIZEN_FEATURE_OMX
+      case GST_VIDEO_FORMAT_SN12:
+      case GST_VIDEO_FORMAT_ST12:
+#endif /* TIZEN_FEATURE_OMX */
       case GST_VIDEO_FORMAT_I420:
       case GST_VIDEO_FORMAT_NV12:
       case GST_VIDEO_FORMAT_NV12_10LE32:
index f934065..cbf152b 100755 (executable)
@@ -1,7 +1,7 @@
 Name:           gst-omx
 Summary:        GStreamer plug-in that allows communication with OpenMAX IL components
 Version:        1.16.2
-Release:        3
+Release:        4
 License:        LGPL-2.1+
 Group:          Multimedia/Framework
 Source0:        %{name}-%{version}.tar.gz