int32_t stride[NX_MAX_PLANES];
int32_t size[NX_MAX_PLANES];
uint32_t flink[NX_MAX_PLANES];
+#ifdef TIZEN_FEATURE_ARTIK530
+ tbm_surface_info_s info;
+#endif
NX_VID_MEMORY_INFO *pVidMem = NULL;
pVidMem->planes = planes;
pVidMem->format = format;
pVidMem->drmFd = drmFd;
+
+#ifdef TIZEN_FEATURE_ARTIK530
+ info.width = width;
+ info.height = height;
+ info.format = TBM_FORMAT_YUV420;
+ info.size = size[0];
+ info.num_planes = 3;
+ info.planes[0].stride = luStride;
+ info.planes[0].size = luStride * luVStride;
+ info.planes[0].offset = 0;
+ info.planes[1].stride = cStride;
+ info.planes[1].size = cStride * cVStride;
+ info.planes[1].offset = info.planes[0].size;
+ info.planes[2].stride = cStride;
+ info.planes[2].size = cStride * cVStride;
+ info.planes[2].offset = info.planes[1].offset + info.planes[1].size;
+#endif
for (i = 0; i < planes; i++) {
pVidMem->dmaFd[i] = dmaFd[i];
pVidMem->gemFd[i] = gemFd[i];
pVidMem->stride[i] = stride[i];
#ifdef TIZEN_FEATURE_ARTIK530
pVidMem->bo[i] = tbm_bo_import_fd (bufmgr, dmaFd[i]);
- _D ("bo[%d] = %p", i, pVidMem->bo[i]);
if (!pVidMem->bo[i])
goto alloc_bo_fail;
#endif
}
+ pVidMem->surface = tbm_surface_internal_create_with_bos (&info, pVidMem->bo, planes);
+ if (!pVidMem->surface)
+ goto alloc_bo_fail;
+
return pVidMem;
#ifdef TIZEN_FEATURE_ARTIK530
free_gem (pMem->drmFd, pMem->gemFd[i]);
close (pMem->dmaFd[i]);
}
+#ifdef TIZEN_FEATURE_ARTIK530
+ if (pMem->surface)
+ tbm_surface_internal_destroy (pMem->surface);
+#endif
close (pMem->drmFd);
free (pMem);
}
#endif
#include <stdint.h>
+#include <tbm_surface.h>
+#include <tbm_surface_internal.h>
#define NX_MAX_PLANES 4
void *pBuffer[NX_MAX_PLANES]; // virtual address.
uint32_t reserved[NX_MAX_PLANES]; // for debugging or future user.
#ifdef TIZEN_FEATURE_ARTIK530
- void *bo[NX_MAX_PLANES]; // tbm bo
+ void *bo[NX_MAX_PLANES]; // tbm bo
+ tbm_surface_h surface;
#endif
} NX_VID_MEMORY_INFO, *NX_VID_MEMORY_HANDLE;