display->bo[i] = 0;
}
display->plane_size[i] = mm_video_buf->size[i];
+ display->width[i] = mm_video_buf->width[i];
+ display->height[i] = mm_video_buf->height[i];
display->stride_width[i] = mm_video_buf->stride_width[i];
display->stride_height[i] = mm_video_buf->stride_height[i];
display->native_video_size += display->plane_size[i];
+ GST_LOG ("TBM bo[%d]:%p", i, display->bo[i]);
+ GST_LOG ("width[%d]:%d, height[%d]:%d", i, display->width[i], i,
+ display->height[i]);
+ GST_LOG ("stride_width[%d]:%d, stride_height[%d]:%d", i,
+ display->stride_width[i], i, display->stride_height[i]);
+ GST_LOG ("plane size[%d]:%d", i, display->plane_size[i]);
}
memset (mm_video_buf, 0, sizeof (MMVideoBuffer));
}
display->bo[i] = 0;
}
display->plane_size[i] = mm_video_buf->size[i];
+ display->width[i] = mm_video_buf->width[i];
+ display->height[i] = mm_video_buf->height[i];
display->stride_width[i] = mm_video_buf->stride_width[i];
display->stride_height[i] = mm_video_buf->stride_height[i];
display->native_video_size += display->plane_size[i];
+ GST_LOG ("TBM bo[%d]:%p", i, display->bo[i]);
+ GST_LOG ("width[%d]:%d, height[%d]:%d", i, display->width[i], i,
+ display->height[i]);
+ GST_LOG ("stride_width[%d]:%d, stride_height[%d]:%d", i,
+ display->stride_width[i], i, display->stride_height[i]);
+ GST_LOG ("plane size[%d]:%d", i, display->plane_size[i]);
}
}
GST_ERROR ("Buffer type is not TBM");
return NULL;
}
- GST_DEBUG ("TBM bo %p %p", mm_video_buf->handle.bo[0],
- mm_video_buf->handle.bo[1]);
+ GST_DEBUG ("TBM: handle.bo[0]:%p, handle.bo[1]:%p",
+ mm_video_buf->handle.bo[0], mm_video_buf->handle.bo[1]);
return mm_video_buf;
}
const GstVideoInfo * info)
{
GstWlShmMemory *shm_mem = (GstWlShmMemory *) mem;
- gint width, height, stride;
+ gint width, height, stride, offset;
gsize size;
enum wl_shm_format format;
struct wl_shm_pool *wl_pool;
int num_bo;
if (display->is_native_format == TRUE) {
- width = GST_VIDEO_INFO_WIDTH (info);
- height = GST_VIDEO_INFO_HEIGHT (info);
+ /* In case of native format, use MMVideoBuffer data instead of GstVideoInfo */
size = display->native_video_size;
- format = gst_video_format_to_wl_tbm_format (GST_VIDEO_INFO_FORMAT (info));
- GST_LOG ("format %s, width(%d), height(%d), size(%d)",
- gst_wl_tbm_format_to_string (format), width, height, size);
-
if (display->dump_video)
gst_wl_tbm_dump_native_raw_video (display->bo[0], size,
display->dump_count++, display->total_dump);
- GST_LOG ("TBM bo %p %p", display->bo[0], display->bo[1]);
- GST_LOG ("stride_width[0]: %d stride_height[0]:%d",
- display->stride_width[0], display->stride_height[0]);
- width = display->stride_width[0];
- height = display->stride_height[0];
+ width = display->width[0];
+ height = display->height[0];
+ format = gst_video_format_to_wl_tbm_format (GST_VIDEO_INFO_FORMAT (info));
+ offset = display->stride_width[0] * display->stride_height[0];
ts_info.width = width;
ts_info.height = height;
ts_info.format = format;
ts_info.bpp = tbm_surface_internal_get_bpp (ts_info.format);
ts_info.num_planes = tbm_surface_internal_get_num_planes (ts_info.format);
- GST_DEBUG
- ("ts_info.width(%d) height(%d) bpp(%d) num_planes(%d)",
- ts_info.width, ts_info.height, ts_info.bpp, ts_info.num_planes);
-
ts_info.planes[0].stride = display->stride_width[0];
ts_info.planes[1].stride = display->stride_width[1];
ts_info.planes[0].offset = 0;
- ts_info.planes[1].offset = (display->bo[1]) ? 0 : display->plane_size[0];
+ ts_info.planes[1].offset = (display->bo[1]) ? 0 : offset;
+
+ GST_LOG
+ ("set tbm_surface_info_s: width(%d) height(%d) format(%s) bpp(%d) num_planes(%d)",
+ ts_info.width, ts_info.height, gst_wl_tbm_format_to_string (format),
+ ts_info.bpp, ts_info.num_planes);
+ GST_LOG
+ ("set tbm_surface_info_s: planse[0].stride(%d) planes[1].stride(%d) planes[0].offset(%d) planes[1].offset(%d)",
+ ts_info.planes[0].stride, ts_info.planes[1].stride,
+ ts_info.planes[0].offset, ts_info.planes[1].offset);
+
num_bo = (display->bo[1]) ? 2 : 1;
GST_LOG ("num_bo(%d)", num_bo);
display->tsurface =
tbm_surface_internal_create_with_bos (&ts_info,
(tbm_bo *) display->bo, num_bo);
- GST_LOG ("display->tsurface(%p)", display->tsurface);
- GST_LOG ("tbm_client(%p),tsurface(%p)", display->tbm_client,
- display->tsurface);
+ GST_LOG ("create tbm surface(%p)", display->tsurface);
wbuffer =
wayland_tbm_client_create_buffer (display->tbm_client,
display->tsurface);
wayland_tbm_client_create_buffer (display->tbm_client,
display->tsurface);
}
- GST_LOG ("wayland_tbm_client_create_buffer create wl_buffer %p", wbuffer);
+ GST_LOG ("create wbuffer(%p)", wbuffer);
} else { /* USE SHM */
width = GST_VIDEO_INFO_WIDTH (info);