- for (i = 0; i < num_bos; i++) {
- mm_vbuffer->handle.bo[i] = tbm_surface_internal_get_bo(surface, i);
- LOGD("mm_vbuffer->handle.bo[%d] : %p", i, mm_vbuffer->handle.bo[i]);
- tbm_bo_map(mm_vbuffer->handle.bo[i], TBM_DEVICE_CPU, TBM_OPTION_READ);
- tbm_bo_unmap(mm_vbuffer->handle.bo[i]);
- }
-
- mm_vbuffer->type = MM_VIDEO_BUFFER_TYPE_TBM_BO;
- mm_vbuffer->width[0] = surface_info.width;
- mm_vbuffer->height[0] = surface_info.height;
- mm_vbuffer->width[1] = surface_info.width;
- mm_vbuffer->height[1] = surface_info.height>>1;
- mm_vbuffer->size[0] = surface_info.planes[0].size;
- mm_vbuffer->size[1] = surface_info.planes[1].size;
- mm_vbuffer->stride_width[0] = surface_info.planes[0].stride;
- mm_vbuffer->stride_height[0] = surface_info.planes[0].size / surface_info.planes[0].stride;
- mm_vbuffer->stride_width[1] = surface_info.planes[1].stride;
- mm_vbuffer->stride_height[1] = surface_info.planes[1].size / surface_info.planes[1].stride;
-
- if (mm_vbuffer->handle.bo[0]) {
- handle_bo = tbm_bo_get_handle(mm_vbuffer->handle.bo[0], TBM_DEVICE_CPU);
- mm_vbuffer->data[0] = handle_bo.ptr;
-
- handle_bo = tbm_bo_get_handle(mm_vbuffer->handle.bo[0], TBM_DEVICE_MM);
- mm_vbuffer->handle.dmabuf_fd[0] = handle_bo.u32;
- }
-
- if (mm_vbuffer->handle.bo[1]) {
- handle_bo = tbm_bo_get_handle(mm_vbuffer->handle.bo[1], TBM_DEVICE_CPU);
- mm_vbuffer->data[1] = handle_bo.ptr;
-
- handle_bo = tbm_bo_get_handle(mm_vbuffer->handle.bo[1], TBM_DEVICE_MM);
- mm_vbuffer->handle.dmabuf_fd[1] = handle_bo.u32;
- } else {
- mm_vbuffer->data[1] = mm_vbuffer->data[0] + mm_vbuffer->stride_width[0] * mm_vbuffer->stride_height[0];
- }
- mm_vbuffer->plane_num = 2;
-
- LOGD("size[0] : %d, size[1] : %d, bo[0] :%p, bo[1] :%p", mm_vbuffer->size[0], mm_vbuffer->size[1], mm_vbuffer->handle.bo[0], mm_vbuffer->handle.bo[1]);