video: correct the buffer size 27/133627/1
authorBoram Park <boram1288.park@samsung.com>
Sat, 10 Jun 2017 23:35:46 +0000 (08:35 +0900)
committerBoram Park <boram1288.park@samsung.com>
Sun, 11 Jun 2017 03:22:40 +0000 (12:22 +0900)
Change-Id: Ic5a72289cc15159b242f40065c3b8bd2ba8023bf

src/e_devicemgr_buffer.c
src/e_devicemgr_buffer.h
src/e_devicemgr_video.c

index 7218db332941d1e8787fbe5dd7c732baed8584e2..272c6c2a3b809b90176d08e265925cdd53169ab4 100644 (file)
@@ -211,11 +211,6 @@ _e_devmgr_buffer_create_res(struct wl_resource *resource, const char *func)
         mbuf->width = wl_shm_buffer_get_width(shm_buffer);
         mbuf->height = wl_shm_buffer_get_height(shm_buffer);
         mbuf->pitches[0] = wl_shm_buffer_get_stride(shm_buffer);
-
-        if (IS_RGB(mbuf->tbmfmt))
-          mbuf->width_from_pitch = mbuf->pitches[0]>>2;
-        else
-          mbuf->width_from_pitch = mbuf->pitches[0];
      }
    else if ((tbm_surface = wayland_tbm_server_get_surface(e_comp->wl_comp_data->tbm.server, resource)))
      {
@@ -248,11 +243,6 @@ _e_devmgr_buffer_create_res(struct wl_resource *resource, const char *func)
              mbuf->pitches[i] = pitch;
              mbuf->offsets[i] = offset;
           }
-
-        if (IS_RGB(mbuf->tbmfmt))
-          mbuf->width_from_pitch = mbuf->pitches[0]>>2;
-        else
-          mbuf->width_from_pitch = mbuf->pitches[0];
      }
    else
      {
@@ -260,10 +250,13 @@ _e_devmgr_buffer_create_res(struct wl_resource *resource, const char *func)
         goto create_fail;
      }
 
+   tdm_helper_get_buffer_full_size(tbm_surface, &mbuf->width_from_pitch, &mbuf->height_from_size);
+
    mbuf_lists = eina_list_append(mbuf_lists, mbuf);
 
-   BDB("type(%d) %dx%d, %c%c%c%c, name(%d,%d,%d) hnd(%d,%d,%d), pitch(%d,%d,%d), offset(%d,%d,%d): %s",
-       mbuf->type, mbuf->width, mbuf->height, FOURCC_STR(mbuf->tbmfmt),
+   BDB("type(%d) %dx%d(%dx%d), %c%c%c%c, name(%d,%d,%d) hnd(%d,%d,%d), pitch(%d,%d,%d), offset(%d,%d,%d): %s",
+       mbuf->type, mbuf->width_from_pitch, mbuf->height_from_size,
+       mbuf->width, mbuf->height, FOURCC_STR(mbuf->tbmfmt),
        mbuf->names[0], mbuf->names[1], mbuf->names[2],
        mbuf->handles[0], mbuf->handles[1], mbuf->handles[2],
        mbuf->pitches[0], mbuf->pitches[1], mbuf->pitches[2],
@@ -353,15 +346,13 @@ _e_devmgr_buffer_create_tbm(tbm_surface_h tbm_surface, const char *func)
         mbuf->offsets[i] = offset;
      }
 
-   if (IS_RGB(mbuf->tbmfmt))
-     mbuf->width_from_pitch = mbuf->pitches[0]>>2;
-   else
-     mbuf->width_from_pitch = mbuf->pitches[0];
+   tdm_helper_get_buffer_full_size(tbm_surface, &mbuf->width_from_pitch, &mbuf->height_from_size);
 
    mbuf_lists = eina_list_append(mbuf_lists, mbuf);
 
-   BDB("type(%d) %dx%d, %c%c%c%c, name(%d,%d,%d) hnd(%d,%d,%d), pitch(%d,%d,%d), offset(%d,%d,%d): %s",
-       mbuf->type, mbuf->width, mbuf->height, FOURCC_STR(mbuf->tbmfmt),
+   BDB("type(%d) %dx%d(%dx%d), %c%c%c%c, name(%d,%d,%d) hnd(%d,%d,%d), pitch(%d,%d,%d), offset(%d,%d,%d): %s",
+       mbuf->type, mbuf->width_from_pitch, mbuf->height_from_size,
+       mbuf->width, mbuf->height, FOURCC_STR(mbuf->tbmfmt),
        mbuf->names[0], mbuf->names[1], mbuf->names[2],
        mbuf->handles[0], mbuf->handles[1], mbuf->handles[2],
        mbuf->pitches[0], mbuf->pitches[1], mbuf->pitches[2],
@@ -499,17 +490,15 @@ _e_devmgr_buffer_alloc(int width, int height, tbm_format tbmfmt, Eina_Bool scano
         mbuf->offsets[i] = offset;
      }
 
-   if (IS_RGB(mbuf->tbmfmt))
-     mbuf->width_from_pitch = mbuf->pitches[0]>>2;
-   else
-     mbuf->width_from_pitch = mbuf->pitches[0];
+   tdm_helper_get_buffer_full_size(tbm_surface, &mbuf->width_from_pitch, &mbuf->height_from_size);
 
    tbm_surface_internal_unref(tbm_surface);
 
    mbuf_lists = eina_list_append(mbuf_lists, mbuf);
 
-   BDB("type(%d) %dx%d %c%c%c%c nm(%d,%d,%d) hnd(%d,%d,%d) pitch(%d,%d,%d) offset(%d,%d,%d): %s",
-       mbuf->type, mbuf->width, mbuf->height, FOURCC_STR(mbuf->tbmfmt),
+   BDB("type(%d) %dx%d(%dx%d) %c%c%c%c nm(%d,%d,%d) hnd(%d,%d,%d) pitch(%d,%d,%d) offset(%d,%d,%d): %s",
+       mbuf->type, mbuf->width_from_pitch, mbuf->height_from_size,
+       mbuf->width, mbuf->height, FOURCC_STR(mbuf->tbmfmt),
        mbuf->names[0], mbuf->names[1], mbuf->names[2],
        mbuf->handles[0], mbuf->handles[1], mbuf->handles[2],
        mbuf->pitches[0], mbuf->pitches[1], mbuf->pitches[2],
index a8e3315eeb036754f2a23f882dccbdbd993296d2..12d77273d1c2bb1a617f34b905a45be9aa2043f7 100644 (file)
@@ -47,6 +47,7 @@ typedef struct _E_Devmgr_Buf
    void *ptrs[4];
 
    int width_from_pitch;
+   int height_from_size;
 
    /* to avoid reading & write at same time */
    Eina_Bool in_use;
index bf692b30125d33353c6750c0f8c3fb30643d91e9..8e8bff6aa8c6c77b0d5c6cc0c4be5d95f9ccf2d3 100755 (executable)
@@ -1211,7 +1211,7 @@ _e_video_frame_buffer_show(E_Video *video, E_Devmgr_Buf *mbuf)
 
    CLEAR(info);
    info.src_config.size.h = mbuf->width_from_pitch;
-   info.src_config.size.v = mbuf->height;
+   info.src_config.size.v = mbuf->height_from_size;
    info.src_config.pos.x = mbuf->content_r.x;
    info.src_config.pos.y = mbuf->content_r.y;
    info.src_config.pos.w = mbuf->content_r.w;
@@ -1904,15 +1904,15 @@ _e_video_render(E_Video *video, const char *func)
         tdm_info_pp info;
 
         CLEAR(info);
-        info.src_config.size.h = video->geo.input_w;
-        info.src_config.size.v = video->geo.input_h;
+        info.src_config.size.h = input_buffer->width_from_pitch;
+        info.src_config.size.v = input_buffer->height_from_size;
         info.src_config.pos.x = video->geo.input_r.x;
         info.src_config.pos.y = video->geo.input_r.y;
         info.src_config.pos.w = video->geo.input_r.w;
         info.src_config.pos.h = video->geo.input_r.h;
         info.src_config.format = video->tbmfmt;
         info.dst_config.size.h = pp_buffer->width_from_pitch;
-        info.dst_config.size.v = pp_buffer->height;
+        info.dst_config.size.v = pp_buffer->height_from_size;
         info.dst_config.pos.w = video->tdm_output_r.w;
         info.dst_config.pos.h = video->tdm_output_r.h;
         info.dst_config.format = video->pp_tbmfmt;