tdm_test_client: Use tbm api for dump buffer 23/276823/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Fri, 24 Jun 2022 11:15:44 +0000 (20:15 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 27 Jun 2022 04:05:21 +0000 (13:05 +0900)
for removing duplicate code

Change-Id: I83e666c2e450c7bb884e1befee9620fd5f9c6cc1

tools/tdm_test_client.c

index 14feed9..a3f9cb2 100644 (file)
@@ -40,7 +40,6 @@
 #include <errno.h>
 #include <time.h>
 #include <stdint.h>
-#include <png.h>
 
 #include "tdm_client.h"
 #include "tdm_macro.h"
@@ -384,179 +383,26 @@ done:
                tdm_client_vblank_destroy(vblank);
 }
 
-#define PNG_DEPTH 8
-
-void
-_tdm_client_get_buffer_full_size(tbm_surface_h buffer, int *buffer_w, int *buffer_h)
-{
-       tbm_surface_info_s info;
-       int ret;
-
-       TDM_RETURN_IF_FAIL(buffer != NULL);
-
-       ret = tbm_surface_get_info(buffer, &info);
-       TDM_RETURN_IF_FAIL(ret == TBM_SURFACE_ERROR_NONE);
-
-       if (buffer_w) {
-               if (IS_RGB(info.format))
-                       *buffer_w = info.planes[0].stride >> 2;
-               else
-                       *buffer_w = info.planes[0].stride;
-       }
-
-       if (buffer_h)
-               *buffer_h = info.planes[0].size / info.planes[0].stride;
-}
-
 static void
-_tdm_client_dump_png(const char *file, const void *data, int width,
-                                        int height)
-{
-       FILE *fp;
-
-       fp = fopen(file, "wb");
-       TDM_RETURN_IF_FAIL(fp != NULL);
-
-       png_structp pPngStruct =
-               png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
-       if (!pPngStruct) {
-               fclose(fp);
-               return;
-       }
-
-       png_infop pPngInfo = png_create_info_struct(pPngStruct);
-       if (!pPngInfo) {
-               png_destroy_write_struct(&pPngStruct, NULL);
-               fclose(fp);
-               return;
-       }
-
-       png_init_io(pPngStruct, fp);
-       png_set_IHDR(pPngStruct,
-                                pPngInfo,
-                                width,
-                                height,
-                                PNG_DEPTH,
-                                PNG_COLOR_TYPE_RGBA,
-                                PNG_INTERLACE_NONE,
-                                PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
-
-       png_set_bgr(pPngStruct);
-       png_write_info(pPngStruct, pPngInfo);
-
-       const int pixel_size = 4;       // RGBA
-       png_bytep *row_pointers =
-               png_malloc(pPngStruct, height * sizeof(png_byte *));
-       if (!row_pointers) {
-               png_destroy_write_struct(&pPngStruct, &pPngInfo);
-               fclose(fp);
-               return;
-       }
-
-       unsigned int *blocks = (unsigned int *)data;
-       int y = 0;
-       int x = 0;
-
-       for (; y < height; ++y) {
-               png_bytep row =
-                       png_malloc(pPngStruct, sizeof(png_byte) * width * pixel_size);
-               if (!row) {
-                       for (x = 0; x < y; x++)
-                               png_free(pPngStruct, row_pointers[x]);
-                       png_free(pPngStruct, row_pointers);
-                       png_destroy_write_struct(&pPngStruct, &pPngInfo);
-                       fclose(fp);
-                       return;
-               }
-
-               row_pointers[y] = (png_bytep)row;
-               for (x = 0; x < width; ++x) {
-                       unsigned int curBlock = blocks[y * width + x];
-                       row[x * pixel_size] = (curBlock & 0xFF);
-                       row[1 + x * pixel_size] = (curBlock >> 8) & 0xFF;
-                       row[2 + x * pixel_size] = (curBlock >> 16) & 0xFF;
-                       row[3 + x * pixel_size] = (curBlock >> 24) & 0xFF;
-               }
-       }
-
-       png_write_image(pPngStruct, row_pointers);
-       png_write_end(pPngStruct, pPngInfo);
-
-       for (y = 0; y < height; y++)
-               png_free(pPngStruct, row_pointers[y]);
-       png_free(pPngStruct, row_pointers);
-
-       png_destroy_write_struct(&pPngStruct, &pPngInfo);
-
-       fclose(fp);
-}
-
-void
-_tdm_client_dump_buffer(tbm_surface_h buffer, const char *file)
+_dump_buffer(tbm_surface_h buffer, int count)
 {
        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;
-       const char *file_exts[2] = {"png", "raw"};
-
-       TDM_RETURN_IF_FAIL(buffer != NULL);
-       TDM_RETURN_IF_FAIL(file != NULL);
+       tbm_format tformat;
+       const char *ext, *file_exts[2] = {"png", "yuv"};
 
-       ret = tbm_surface_map(buffer, TBM_OPTION_READ, &info);
-       TDM_RETURN_IF_FAIL(ret == TBM_SURFACE_ERROR_NONE);
+       tformat = tbm_surface_get_format(buffer);
 
-       if (IS_RGB(info.format))
+       if (IS_RGB(tformat))
                ext = file_exts[0];
        else
                ext = file_exts[1];
 
-       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, 4);
-               p += 3;
-               *p = '\0';
-       } else {
-               len = strnlen(file, TDM_PATH_LEN - 1);
-               strncat(p, file, len);
-               p += len;
-               *p = '\0';
-       }
-
-       _tdm_client_get_buffer_full_size(buffer, &bw, &bh);
-
-       bo_cnt = tbm_surface_internal_get_num_bos(buffer);
-       TDM_DBG("buffer: bo_cnt(%d) %dx%d(%dx%d) %c%c%c%c, plane: (%p+%d, %d,%d) (%p+%d, %d,%d) (%p+%d, %d,%d)",
-                       bo_cnt, bw, bh, info.width, info.height, FOURCC_STR(info.format),
-                       info.planes[0].ptr, info.planes[0].offset, info.planes[0].stride, info.planes[0].size,
-                       info.planes[1].ptr, info.planes[1].offset, info.planes[1].stride, info.planes[1].size,
-                       info.planes[2].ptr, info.planes[2].offset, info.planes[2].stride, info.planes[2].size);
-
-       _tdm_client_dump_png(temp, info.planes[0].ptr, bw, bh);
-
-       tbm_surface_unmap(buffer);
-
-       printf("dump %s\n", temp);
-}
-
-static void
-_dump_buffer(tbm_surface_h buffer, int count)
-{
-       char temp[TDM_PATH_LEN] = {0,};
-
-       snprintf(temp, TDM_PATH_LEN, "/tmp/%c%c%c%c_%dx%d_%d",
+       snprintf(temp, TDM_PATH_LEN, "%c%c%c%c_%dx%d_%d",
                FOURCC_STR(tbm_surface_get_format(buffer)),
                tbm_surface_get_width(buffer),
                tbm_surface_get_height(buffer),
                count);
-       _tdm_client_dump_buffer(buffer, temp);
+       tbm_surface_internal_capture_buffer(buffer, "/tmp", temp, ext);
 }
 
 static void