From: SooChan Lim Date: Mon, 23 Apr 2018 08:02:51 +0000 (+0900) Subject: surface_internal: make _tbm_surface_internal_get_num_planes function X-Git-Tag: submit/tizen/20180426.070622~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b444dc75227261801e32b326490d9c7197dfbf30;p=platform%2Fcore%2Fuifw%2Flibtbm.git surface_internal: make _tbm_surface_internal_get_num_planes function Change-Id: Idb474ec39f48f6ce3a0979b5f98fc67f3b050899 --- diff --git a/src/tbm_surface_internal.c b/src/tbm_surface_internal.c index ca26e4c..ade66ef 100644 --- a/src/tbm_surface_internal.c +++ b/src/tbm_surface_internal.c @@ -404,6 +404,86 @@ _tbm_surface_check_file_is_symbolic_link(const char* path) } /* LCOV_EXCL_STOP */ +static int +_tbm_surface_internal_get_num_planes(tbm_format format) +{ + int num_planes = 0; + + switch (format) { + case TBM_FORMAT_C8: + case TBM_FORMAT_RGB332: + case TBM_FORMAT_BGR233: + case TBM_FORMAT_XRGB4444: + case TBM_FORMAT_XBGR4444: + case TBM_FORMAT_RGBX4444: + case TBM_FORMAT_BGRX4444: + case TBM_FORMAT_ARGB4444: + case TBM_FORMAT_ABGR4444: + case TBM_FORMAT_RGBA4444: + case TBM_FORMAT_BGRA4444: + case TBM_FORMAT_XRGB1555: + case TBM_FORMAT_XBGR1555: + case TBM_FORMAT_RGBX5551: + case TBM_FORMAT_BGRX5551: + case TBM_FORMAT_ARGB1555: + case TBM_FORMAT_ABGR1555: + case TBM_FORMAT_RGBA5551: + case TBM_FORMAT_BGRA5551: + case TBM_FORMAT_RGB565: + case TBM_FORMAT_BGR565: + case TBM_FORMAT_RGB888: + case TBM_FORMAT_BGR888: + case TBM_FORMAT_XRGB8888: + case TBM_FORMAT_XBGR8888: + case TBM_FORMAT_RGBX8888: + case TBM_FORMAT_BGRX8888: + case TBM_FORMAT_ARGB8888: + case TBM_FORMAT_ABGR8888: + case TBM_FORMAT_RGBA8888: + case TBM_FORMAT_BGRA8888: + case TBM_FORMAT_XRGB2101010: + case TBM_FORMAT_XBGR2101010: + case TBM_FORMAT_RGBX1010102: + case TBM_FORMAT_BGRX1010102: + case TBM_FORMAT_ARGB2101010: + case TBM_FORMAT_ABGR2101010: + case TBM_FORMAT_RGBA1010102: + case TBM_FORMAT_BGRA1010102: + case TBM_FORMAT_YUYV: + case TBM_FORMAT_YVYU: + case TBM_FORMAT_UYVY: + case TBM_FORMAT_VYUY: + case TBM_FORMAT_AYUV: + num_planes = 1; + break; + case TBM_FORMAT_NV12: + case TBM_FORMAT_NV12MT: + case TBM_FORMAT_NV21: + case TBM_FORMAT_NV16: + case TBM_FORMAT_NV61: + num_planes = 2; + break; + case TBM_FORMAT_YUV410: + case TBM_FORMAT_YVU410: + case TBM_FORMAT_YUV411: + case TBM_FORMAT_YVU411: + case TBM_FORMAT_YUV420: + case TBM_FORMAT_YVU420: + case TBM_FORMAT_YUV422: + case TBM_FORMAT_YVU422: + case TBM_FORMAT_YUV444: + case TBM_FORMAT_YVU444: + num_planes = 3; + break; + + default: + _tbm_set_last_result(TBM_ERROR_INVALID_PARAMETER); + break; + } + + return num_planes; +} + int tbm_surface_internal_is_valid(tbm_surface_h surface) { @@ -501,79 +581,20 @@ tbm_surface_internal_get_num_planes(tbm_format format) { int num_planes = 0; - switch (format) { - case TBM_FORMAT_C8: - case TBM_FORMAT_RGB332: - case TBM_FORMAT_BGR233: - case TBM_FORMAT_XRGB4444: - case TBM_FORMAT_XBGR4444: - case TBM_FORMAT_RGBX4444: - case TBM_FORMAT_BGRX4444: - case TBM_FORMAT_ARGB4444: - case TBM_FORMAT_ABGR4444: - case TBM_FORMAT_RGBA4444: - case TBM_FORMAT_BGRA4444: - case TBM_FORMAT_XRGB1555: - case TBM_FORMAT_XBGR1555: - case TBM_FORMAT_RGBX5551: - case TBM_FORMAT_BGRX5551: - case TBM_FORMAT_ARGB1555: - case TBM_FORMAT_ABGR1555: - case TBM_FORMAT_RGBA5551: - case TBM_FORMAT_BGRA5551: - case TBM_FORMAT_RGB565: - case TBM_FORMAT_BGR565: - case TBM_FORMAT_RGB888: - case TBM_FORMAT_BGR888: - case TBM_FORMAT_XRGB8888: - case TBM_FORMAT_XBGR8888: - case TBM_FORMAT_RGBX8888: - case TBM_FORMAT_BGRX8888: - case TBM_FORMAT_ARGB8888: - case TBM_FORMAT_ABGR8888: - case TBM_FORMAT_RGBA8888: - case TBM_FORMAT_BGRA8888: - case TBM_FORMAT_XRGB2101010: - case TBM_FORMAT_XBGR2101010: - case TBM_FORMAT_RGBX1010102: - case TBM_FORMAT_BGRX1010102: - case TBM_FORMAT_ARGB2101010: - case TBM_FORMAT_ABGR2101010: - case TBM_FORMAT_RGBA1010102: - case TBM_FORMAT_BGRA1010102: - case TBM_FORMAT_YUYV: - case TBM_FORMAT_YVYU: - case TBM_FORMAT_UYVY: - case TBM_FORMAT_VYUY: - case TBM_FORMAT_AYUV: - num_planes = 1; - break; - case TBM_FORMAT_NV12: - case TBM_FORMAT_NV12MT: - case TBM_FORMAT_NV21: - case TBM_FORMAT_NV16: - case TBM_FORMAT_NV61: - num_planes = 2; - break; - case TBM_FORMAT_YUV410: - case TBM_FORMAT_YVU410: - case TBM_FORMAT_YUV411: - case TBM_FORMAT_YVU411: - case TBM_FORMAT_YUV420: - case TBM_FORMAT_YVU420: - case TBM_FORMAT_YUV422: - case TBM_FORMAT_YVU422: - case TBM_FORMAT_YUV444: - case TBM_FORMAT_YVU444: - num_planes = 3; - break; + _tbm_surface_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); - default: - break; + num_planes = _tbm_surface_internal_get_num_planes(format); + if (!num_planes) { + TBM_ERR("error: tbm_error(%s)\n", tbm_error_str(tbm_get_last_error())); + _tbm_surface_mutex_unlock(); + return 0; } TBM_TRACE_SURFACE_INTERNAL("tbm_format(%s) num_planes(%d)\n", _tbm_surface_internal_format_to_str(format), num_planes); + _tbm_surface_mutex_unlock(); + return num_planes; } @@ -720,7 +741,11 @@ tbm_surface_internal_create_with_flags(int width, int height, surf->info.height = height; surf->info.format = format; surf->info.bpp = tbm_surface_internal_get_bpp(format); - surf->info.num_planes = tbm_surface_internal_get_num_planes(format); + surf->info.num_planes = _tbm_surface_internal_get_num_planes(format); + if (!surf->info.num_planes) { + TBM_ERR("fail to get num_planes. error(%s)\n", tbm_error_str(tbm_get_last_error())); + goto num_planes_fail; + } surf->refcnt = 1; /* get size, stride and offset bo_idx */ @@ -858,6 +883,7 @@ alloc_bo_fail: tbm_bo_unref(surf->bos[j]); } query_plane_data_fail: +num_planes_fail: free(surf); alloc_surf_fail: check_valid_fail: