Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(504)

Unified Diff: media/mojo/common/media_type_converters.cc

Issue 2640153004: Add mailbox-based Mojo VideoFrame variant. (Closed)
Patch Set: Rebase. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/mojo/common/BUILD.gn ('k') | media/mojo/interfaces/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/mojo/common/media_type_converters.cc
diff --git a/media/mojo/common/media_type_converters.cc b/media/mojo/common/media_type_converters.cc
index 33842624ebd8dbb720a6eca8027b498a8f17aff5..23435594f07f100883e8a1e0a862c36853e62131 100644
--- a/media/mojo/common/media_type_converters.cc
+++ b/media/mojo/common/media_type_converters.cc
@@ -346,14 +346,20 @@ TypeConverter<media::mojom::VideoFramePtr, scoped_refptr<media::VideoFrame>>::
frame->visible_rect = input->visible_rect();
frame->natural_size = input->natural_size();
frame->timestamp = input->timestamp();
- frame->frame_data = std::move(duplicated_handle);
- frame->frame_data_size = input_frame->MappedSize();
- frame->y_stride = input_frame->stride(media::VideoFrame::kYPlane);
- frame->u_stride = input_frame->stride(media::VideoFrame::kUPlane);
- frame->v_stride = input_frame->stride(media::VideoFrame::kVPlane);
- frame->y_offset = input_frame->PlaneOffset(media::VideoFrame::kYPlane);
- frame->u_offset = input_frame->PlaneOffset(media::VideoFrame::kUPlane);
- frame->v_offset = input_frame->PlaneOffset(media::VideoFrame::kVPlane);
+
+ media::mojom::SharedBufferVideoFrameDataPtr data =
+ media::mojom::SharedBufferVideoFrameData::New();
+ data->frame_data = std::move(duplicated_handle);
+ data->frame_data_size = input_frame->MappedSize();
+ data->y_stride = input_frame->stride(media::VideoFrame::kYPlane);
+ data->u_stride = input_frame->stride(media::VideoFrame::kUPlane);
+ data->v_stride = input_frame->stride(media::VideoFrame::kVPlane);
+ data->y_offset = input_frame->PlaneOffset(media::VideoFrame::kYPlane);
+ data->u_offset = input_frame->PlaneOffset(media::VideoFrame::kUPlane);
+ data->v_offset = input_frame->PlaneOffset(media::VideoFrame::kVPlane);
+
+ frame->data = media::mojom::VideoFrameData::New();
+ frame->data->set_shared_buffer_data(std::move(data));
return frame;
}
@@ -364,14 +370,20 @@ TypeConverter<scoped_refptr<media::VideoFrame>, media::mojom::VideoFramePtr>::
if (input->end_of_stream)
return media::VideoFrame::CreateEOSFrame();
+ // Handle non EOS frame. It must be a MojoSharedBufferVideoFrame.
+ // TODO(jrummell): Support other types of VideoFrame.
+ DCHECK(input->data->is_shared_buffer_data());
+ const media::mojom::SharedBufferVideoFrameDataPtr& data =
+ input->data->get_shared_buffer_data();
+
return media::MojoSharedBufferVideoFrame::Create(
input->format, input->coded_size, input->visible_rect,
- input->natural_size, std::move(input->frame_data),
- base::saturated_cast<size_t>(input->frame_data_size),
- base::saturated_cast<size_t>(input->y_offset),
- base::saturated_cast<size_t>(input->u_offset),
- base::saturated_cast<size_t>(input->v_offset), input->y_stride,
- input->u_stride, input->v_stride, input->timestamp);
+ input->natural_size, std::move(data->frame_data),
+ base::saturated_cast<size_t>(data->frame_data_size),
+ base::saturated_cast<size_t>(data->y_offset),
+ base::saturated_cast<size_t>(data->u_offset),
+ base::saturated_cast<size_t>(data->v_offset), data->y_stride,
+ data->u_stride, data->v_stride, input->timestamp);
}
} // namespace mojo
« no previous file with comments | « media/mojo/common/BUILD.gn ('k') | media/mojo/interfaces/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698