gsize maxsize = 0;
gboolean is_tbm_used = FALSE;
gboolean is_delta_frame = FALSE;
+ int i = 0;
+ uint32_t actual_size_total = 0;
+ size_t actual_size_plane = 0;
GstTizenCameraBuffer *new_buffer = NULL;
GstMemory *memory = NULL;
camerasrc->pix_format == CAMERA_PIXEL_FORMAT_VP8 ||
camerasrc->pix_format == CAMERA_PIXEL_FORMAT_VP9) {
/* memory copy for h264/mjpeg/vp8/vp9 stream */
- int i = 0;
- uint32_t total_size = 0;
new_buffer->copied_data = g_malloc(buffer->total_size);
+
for (i = 0 ; i < buffer->num_planes ; i++) {
- memcpy(new_buffer->copied_data + total_size, buffer->planes[i].data, buffer->planes[i].size);
- total_size += buffer->planes[i].size;
+ actual_size_plane = buffer->planes[i].bytesused > 0 ? buffer->planes[i].bytesused : buffer->planes[i].size;
+ memcpy(new_buffer->copied_data + actual_size_total, buffer->planes[i].data, actual_size_plane);
+ actual_size_total += actual_size_plane;
}
} else {
new_buffer->copied_data = g_memdup2(buffer->planes[0].data, buffer->total_size);
new_buffer->copied_data,
buffer->total_size,
0,
- buffer->total_size,
+ actual_size_total,
(gpointer)new_buffer,
(GDestroyNotify)gst_tizencamerasrc_buffer_finalize);
}
cam_buffer->planes[0].data,
cam_buffer->planes[0].size,
0,
- cam_buffer->planes[0].bytesused,
+ (cam_buffer->planes[0].bytesused > 0 ? cam_buffer->planes[0].bytesused : cam_buffer->planes[0].size),
NULL, NULL);
if (!gst_buffer) {
GST_ERROR_OBJECT(camerasrc, "failed to allocate gst buffer for %p", cam_buffer);