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

Unified Diff: services/video_capture/public/interfaces/video_capture_format_traits.cc

Issue 2379253003: Video Capture Service: typemap video_capture's and media's VideoCaptureFormat (Closed)
Patch Set: more traits methods inlining Created 4 years, 2 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
Index: services/video_capture/public/interfaces/video_capture_format_traits.cc
diff --git a/services/video_capture/public/interfaces/video_capture_format_traits.cc b/services/video_capture/public/interfaces/video_capture_format_traits.cc
new file mode 100644
index 0000000000000000000000000000000000000000..10ed015d30e3861c675ae9110ebbd8c1202002c2
--- /dev/null
+++ b/services/video_capture/public/interfaces/video_capture_format_traits.cc
@@ -0,0 +1,63 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "services/video_capture/public/interfaces/video_capture_format_traits.h"
+
+#include "ui/gfx/geometry/mojo/geometry.mojom.h"
+#include "ui/gfx/geometry/mojo/geometry_struct_traits.h"
+
+namespace mojo {
+
+// static
+bool StructTraits<video_capture::mojom::VideoCaptureFormatDataView,
+ media::VideoCaptureFormat>::
+ Read(video_capture::mojom::VideoCaptureFormatDataView data,
+ media::VideoCaptureFormat* out) {
+ if (!data.ReadFrameSize(&out->frame_size))
+ return false;
+ out->frame_rate = data.frame_rate();
+
+ // Since there are static_asserts in place in
+ // media/mojo/common/media_type_converters.cc to guarantee equality of the
+ // underlying representations, we can simply static_cast to convert.
+ // TODO(mcasas): Use EnumTraits for VideoPixelFormat, https://crbug.com/651897
+ out->pixel_format =
+ static_cast<media::VideoPixelFormat>(data.pixel_format());
+ if (!data.ReadPixelStorage(&out->pixel_storage))
+ return false;
+ return true;
+}
+
+// static
+video_capture::mojom::VideoPixelStorage
+EnumTraits<video_capture::mojom::VideoPixelStorage, media::VideoPixelStorage>::
+ ToMojom(media::VideoPixelStorage video_pixel_storage) {
+ switch (video_pixel_storage) {
+ case media::PIXEL_STORAGE_CPU:
+ return video_capture::mojom::VideoPixelStorage::CPU;
+ case media::PIXEL_STORAGE_GPUMEMORYBUFFER:
+ return video_capture::mojom::VideoPixelStorage::GPUMEMORYBUFFER;
+ }
+ NOTREACHED();
+ return video_capture::mojom::VideoPixelStorage::CPU;
+}
+
+// static
+bool EnumTraits<video_capture::mojom::VideoPixelStorage,
+ media::VideoPixelStorage>::
+ FromMojom(video_capture::mojom::VideoPixelStorage input,
+ media::VideoPixelStorage* out) {
+ switch (input) {
+ case video_capture::mojom::VideoPixelStorage::CPU:
+ *out = media::PIXEL_STORAGE_CPU;
+ return true;
+ case video_capture::mojom::VideoPixelStorage::GPUMEMORYBUFFER:
+ *out = media::PIXEL_STORAGE_GPUMEMORYBUFFER;
+ return true;
+ }
+ NOTREACHED();
+ return false;
+}
+
+} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698