Update resolution with using OMX_IndexConfigCommonOutputCrop 56/138456/2
authorSejun Park <sejun79.park@samsung.com>
Wed, 12 Jul 2017 08:02:10 +0000 (17:02 +0900)
committerSejun Park <sejun79.park@samsung.com>
Wed, 12 Jul 2017 08:04:00 +0000 (17:04 +0900)
Change-Id: I1f588d820682dfe03e9f7686db44ab52c6221a38

omx/gstomx.c
packaging/gst-omx.spec

index 795399d..de792a5 100644 (file)
@@ -1742,18 +1742,38 @@ gst_omx_port_tbm_allocate_dec_buffers (GstOMXPort * port, tbm_bufmgr bufmgr, int
   guint n = 0;
   gint num = 0;
   gint i = 0 , j = 0;
-  int y_size = 0;
-  int uv_size = 0;
+  gint nRight = 0;
+  gint nBottom = 0;
+  gint planes[MAX_BUFFER_PLANE];
   GList *buffers = NULL;
   MMVideoBuffer *mm_vbuffer[MAX_INPUT_BUFFER];
   tbm_bo_handle handle_bo;
   GstOMXComponent *comp;
   OMX_ERRORTYPE err = OMX_ErrorNone;
+  OMX_CONFIG_RECTTYPE rect;
 
   g_return_val_if_fail (port != NULL, OMX_ErrorUndefined);
 
   comp = port->comp;
 
+  GST_OMX_INIT_STRUCT (&rect);
+  rect.nPortIndex = port->index;
+
+  err =
+      gst_omx_component_get_config (comp, OMX_IndexConfigCommonOutputCrop,
+      &rect);
+  if (err != OMX_ErrorNone) {
+    rect.nLeft = 0;
+    rect.nTop = 0;
+    rect.nWidth = port->port_def.format.video.nFrameWidth;
+    rect.nHeight = port->port_def.format.video.nFrameHeight;
+  }
+  nRight = port->port_def.format.video.nFrameWidth - rect.nLeft - rect.nWidth;
+  nBottom = port->port_def.format.video.nFrameHeight - rect.nTop - rect.nHeight;
+
+  GST_INFO_OBJECT (comp->parent, "crop info: nLeft %d, nRight %d, nTop %d, nBottom %d",
+      rect.nLeft, nRight, rect.nTop, nBottom);
+
   g_mutex_lock (&port->comp->lock);
 
   /* deallocate previous allocated buffers... */
@@ -1772,22 +1792,22 @@ gst_omx_port_tbm_allocate_dec_buffers (GstOMXPort * port, tbm_bufmgr bufmgr, int
         mm_vbuffer[i]->size[0] = port->port_def.nBufferSize;
         mm_vbuffer[i]->plane_num = 1;
       } else {
-        y_size = gst_omx_calculate_y_size (eCompressionFormat,
-          port->port_def.format.video.nStride, port->port_def.format.video.nSliceHeight);
+        planes[0] = gst_omx_calculate_y_size (eCompressionFormat,
+            port->port_def.format.video.nStride, port->port_def.format.video.nSliceHeight);
 
-        mm_vbuffer[i]->handle.bo[0] = tbm_bo_alloc (bufmgr, y_size, TBM_BO_WC);
-        mm_vbuffer[i]->size[0] = y_size;
-        mm_vbuffer[i]->width[0] = port->port_def.format.video.nFrameWidth;
-        mm_vbuffer[i]->height[0] = port->port_def.format.video.nFrameHeight;
+        mm_vbuffer[i]->handle.bo[0] = tbm_bo_alloc (bufmgr, planes[0], TBM_BO_WC);
+        mm_vbuffer[i]->size[0] = planes[0];
+        mm_vbuffer[i]->width[0] = rect.nWidth;
+        mm_vbuffer[i]->height[0] = rect.nHeight;
         mm_vbuffer[i]->stride_width[0] = ALIGN (port->port_def.format.video.nFrameWidth, 16);
         mm_vbuffer[i]->stride_height[0] = ALIGN (port->port_def.format.video.nSliceHeight, 16);
 
-        uv_size = gst_omx_calculate_uv_size (eCompressionFormat,
-          port->port_def.format.video.nStride, port->port_def.format.video.nSliceHeight >> 1);
-        mm_vbuffer[i]->handle.bo[1] = tbm_bo_alloc (bufmgr, uv_size, TBM_BO_WC);
-        mm_vbuffer[i]->size[1] = uv_size;
-        mm_vbuffer[i]->width[1] = port->port_def.format.video.nFrameWidth;
-        mm_vbuffer[i]->height[1] = port->port_def.format.video.nFrameHeight>>1;
+        planes[1] = gst_omx_calculate_uv_size (eCompressionFormat,
+            port->port_def.format.video.nStride, port->port_def.format.video.nSliceHeight >> 1);
+        mm_vbuffer[i]->handle.bo[1] = tbm_bo_alloc (bufmgr, planes[1], TBM_BO_WC);
+        mm_vbuffer[i]->size[1] = planes[1];
+        mm_vbuffer[i]->width[1] = rect.nWidth;
+        mm_vbuffer[i]->height[1] = rect.nHeight>>1;
         mm_vbuffer[i]->stride_width[1] = ALIGN (port->port_def.format.video.nFrameWidth, 16);
         mm_vbuffer[i]->stride_height[1] = ALIGN (port->port_def.format.video.nSliceHeight>>1, 16);
         mm_vbuffer[i]->plane_num = 2;
index 9217cfe..c56613b 100644 (file)
@@ -1,7 +1,7 @@
 Name:           gst-omx
 Summary:        GStreamer plug-in that allows communication with OpenMAX IL components
 Version:        1.2.4
-Release:        2
+Release:        3
 License:        LGPL-2.1+
 Group:          Multimedia/Framework
 Source0:        %{name}-%{version}.tar.gz