cv::imwrite(mv3d->dispResultFile, dump);
}
-static int _vision_source_cb(vision_source_buffer_s *buffer, void *user_data)
+static int _vision_source_cb(media_packet_h packet, void *user_data)
{
auto app = static_cast<appdata *>(user_data);
if (app->mv_source == nullptr || app->mv3d_handle == nullptr) {
printf("_vision_source_cb: %lld ms\n", static_cast<long long int>(app->stopWatch.elapsedTime().count()));
- for (unsigned int h = 0; h < buffer->resolution.height; h++) {
- memcpy(app->buffer + buffer->resolution.width * h, buffer->planes[0].data + (buffer->planes[0].align_width * h),
- buffer->resolution.width);
+ char *plane_data_ptr;
+ int stride_w, height, width;
+ media_format_h fmt;
+ media_packet_get_format(packet, &fmt);
+ media_format_get_video_info(fmt, nullptr, &width, &height, nullptr, nullptr);
+ media_format_unref(fmt);
+
+ media_packet_get_video_stride_width(packet, 0, &stride_w);
+ media_packet_get_video_plane_data_ptr(packet, 0, (void **) (&plane_data_ptr));
+
+ for (unsigned int h = 0; h < height; h++) {
+ memcpy(app->buffer + width * h, plane_data_ptr + stride_w * h, width);
}
+
mv_source_fill_by_buffer(app->mv_source, app->buffer, app->imgWidth * app->imgHeight, app->imgWidth, app->imgHeight,
MEDIA_VISION_COLORSPACE_Y800);
+ media_packet_unref(packet);
if (isAsync)
mv_3d_run_async(app->mv3d_handle, app->mv_source, nullptr, nullptr);