helper: export tdm_helper_dump_buffer_str 33/170433/2
authorBoram Park <boram1288.park@samsung.com>
Mon, 12 Feb 2018 09:09:16 +0000 (18:09 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Tue, 20 Feb 2018 06:11:56 +0000 (06:11 +0000)
Change-Id: I426b31bdbb93cfbfec651cac0a5a2eaeb139c0be

include/tdm_helper.h
src/tdm_helper.c
src/tdm_private.h

index 4c501e3..d5d8d6e 100644 (file)
@@ -77,6 +77,16 @@ void
 tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file);
 
 /**
+ * @brief Dump a buffer.
+ * @details
+ * The filename will includes the buffer information. (width, height, format)
+ * @param[in] buffer A TDM buffer
+ * @param[in] file The path of file.
+ */
+void
+tdm_helper_dump_buffer_str(tbm_surface_h buffer, char *dir, char *str);
+
+/**
  * @brief fill a buffer with 0 for given pos.
  * @details
  * This function supports only if a buffer has below formats.
index c8bcb1c..cd6426f 100644 (file)
@@ -237,30 +237,26 @@ failed_make:
        return NULL;
 }
 
-INTERN void
+EXTERN void
 tdm_helper_dump_buffer_str(tbm_surface_h buffer, char *dir, char *str)
 {
        tbm_surface_info_s info;
-       const char *ext;
        char file[TDM_PATH_LEN];
        int ret, bw, bh;
 
        TDM_RETURN_IF_FAIL(buffer != NULL);
-       TDM_RETURN_IF_FAIL(dir != NULL);
        TDM_RETURN_IF_FAIL(str != NULL);
 
+       if (!dir)
+               dir = ".";
+
        ret = tbm_surface_get_info(buffer, &info);
        TDM_RETURN_IF_FAIL(ret == TBM_SURFACE_ERROR_NONE);
 
-       if (IS_RGB(info.format))
-               ext = file_exts[0];
-       else
-               ext = file_exts[1];
-
        tdm_helper_get_buffer_full_size(buffer, &bw, &bh);
 
-       snprintf(file, TDM_PATH_LEN, "%s/%c%c%c%c_%dx%d_%dx%d_%s.%s",
-                        dir, FOURCC_STR(info.format), bw, bh, info.width, info.height, str, ext);
+       snprintf(file, TDM_PATH_LEN, "%s/%c%c%c%c_%dx%d_%dx%d_%s",
+                        dir, FOURCC_STR(info.format), bw, bh, info.width, info.height, str);
 
        tdm_helper_dump_buffer(buffer, file);
 }
@@ -269,11 +265,13 @@ tdm_helper_dump_buffer_str(tbm_surface_h buffer, char *dir, char *str)
 EXTERN void
 tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
 {
+       char temp[TDM_PATH_LEN] = {0,};
        tbm_surface_info_s info;
        int len, ret;
        const char *ext;
        int bo_cnt;
        int bw, bh;
+       char *dot, *p = temp;
 
        TDM_RETURN_IF_FAIL(buffer != NULL);
        TDM_RETURN_IF_FAIL(file != NULL);
@@ -281,16 +279,20 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
        ret = tbm_surface_map(buffer, TBM_OPTION_READ, &info);
        TDM_RETURN_IF_FAIL(ret == TBM_SURFACE_ERROR_NONE);
 
-       len = strnlen(file, 1024);
        if (IS_RGB(info.format))
                ext = file_exts[0];
        else
                ext = file_exts[1];
 
-       if (strncmp(file + (len - 3), ext, 3)) {
-               TDM_ERR("can't dump to '%s' file", file + (len - 3));
-               tbm_surface_unmap(buffer);
-               return;
+       dot = strrchr(file, '.');
+       if (!dot || strlen(dot + 1) != 3 || strncmp(dot + 1, ext, 3)) {
+               len = strnlen(file, TDM_PATH_LEN - 5);
+               strncat(p, file, len);
+               p += len;
+               *(p++) = '.';
+               strncat(p, ext, 3);
+               p += 3;
+               *p = '\0';
        }
 
        tdm_helper_get_buffer_full_size(buffer, &bw, &bh);
@@ -305,11 +307,11 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
        switch (info.format) {
        case TBM_FORMAT_ARGB8888:
        case TBM_FORMAT_XRGB8888:
-               _tdm_helper_dump_png(file, info.planes[0].ptr, bw, bh);
+               _tdm_helper_dump_png(temp, info.planes[0].ptr, bw, bh);
                break;
        case TBM_FORMAT_YVU420:
        case TBM_FORMAT_YUV420:
-               _tdm_helper_dump_raw(file,
+               _tdm_helper_dump_raw((const char*)temp,
                                                         info.planes[0].ptr,
                                                         info.planes[0].size,
                                                         info.planes[1].ptr,
@@ -319,7 +321,7 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
                break;
        case TBM_FORMAT_NV12:
        case TBM_FORMAT_NV21:
-               _tdm_helper_dump_raw(file,
+               _tdm_helper_dump_raw((const char*)temp,
                                                         info.planes[0].ptr,
                                                         info.planes[0].size,
                                                         info.planes[1].ptr,
@@ -328,7 +330,7 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
                break;
        case TBM_FORMAT_YUYV:
        case TBM_FORMAT_UYVY:
-               _tdm_helper_dump_raw(file,
+               _tdm_helper_dump_raw((const char*)temp,
                                                         info.planes[0].ptr,
                                                         info.planes[0].size, NULL, 0,
                                                         NULL, 0);
@@ -341,7 +343,7 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file)
 
        tbm_surface_unmap(buffer);
 
-       TDM_INFO("dump %s", file);
+       TDM_INFO("dump %s", temp);
 }
 
 EXTERN void
index 57f97b2..9c76d78 100644 (file)
@@ -239,8 +239,6 @@ tdm_server_enable_ttrace_client_vblank(tdm_display *dpy, tdm_output *output, int
 
 char *
 tdm_helper_dump_make_directory(const char *path, char *reply, int *len);
-void
-tdm_helper_dump_buffer_str(tbm_surface_h buffer, char *dir, char *str);
 double
 tdm_helper_get_time(void);