Index: components/arc/video_accelerator/video_encode_accelerator_struct_traits.cc |
diff --git a/components/arc/video_accelerator/video_encode_accelerator_struct_traits.cc b/components/arc/video_accelerator/video_encode_accelerator_struct_traits.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cd79b839ceff959b667100dc280e1d9370b99512 |
--- /dev/null |
+++ b/components/arc/video_accelerator/video_encode_accelerator_struct_traits.cc |
@@ -0,0 +1,163 @@ |
+// Copyright 2017 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 "components/arc/video_accelerator/video_encode_accelerator_struct_traits.h" |
+ |
+namespace mojo { |
+ |
+// Make sure values in arc::mojom::VideoEncodeAccelerator::Error and |
+// media::VideoEncodeAccelerator::Error match. |
+#define CHECK_ERROR_ENUM(value) \ |
+ static_assert( \ |
+ static_cast<int>(arc::mojom::VideoEncodeAccelerator::Error::value) == \ |
+ media::VideoEncodeAccelerator::Error::value, \ |
+ "enum ##value mismatch") |
+ |
+CHECK_ERROR_ENUM(kIllegalStateError); |
+CHECK_ERROR_ENUM(kInvalidArgumentError); |
+CHECK_ERROR_ENUM(kPlatformFailureError); |
+CHECK_ERROR_ENUM(kErrorMax); |
+ |
+#undef CHECK_ERROR_ENUM |
+ |
+// static |
+arc::mojom::VideoEncodeAccelerator::Error |
+EnumTraits<arc::mojom::VideoEncodeAccelerator::Error, |
+ media::VideoEncodeAccelerator::Error>:: |
+ ToMojom(media::VideoEncodeAccelerator::Error input) { |
+ return static_cast<arc::mojom::VideoEncodeAccelerator::Error>(input); |
+} |
+ |
+// static |
+bool EnumTraits<arc::mojom::VideoEncodeAccelerator::Error, |
+ media::VideoEncodeAccelerator::Error>:: |
+ FromMojom(arc::mojom::VideoEncodeAccelerator::Error input, |
+ media::VideoEncodeAccelerator::Error* output) { |
+ NOTIMPLEMENTED(); |
+ return false; |
+} |
+ |
+// Make sure values in arc::mojom::VideoPixelFormat match to the values in |
+// media::VideoPixelFormat. The former is a subset of the later. |
+#define CHECK_PIXEL_FORMAT_ENUM(value) \ |
+ static_assert( \ |
+ static_cast<int>(arc::mojom::VideoPixelFormat::value) == media::value, \ |
+ "enum ##value mismatch") |
+ |
+CHECK_PIXEL_FORMAT_ENUM(PIXEL_FORMAT_I420); |
+ |
+#undef CHECK_PXIEL_FORMAT_ENUM |
+ |
+// static |
+arc::mojom::VideoPixelFormat |
+EnumTraits<arc::mojom::VideoPixelFormat, media::VideoPixelFormat>::ToMojom( |
+ media::VideoPixelFormat input) { |
+ NOTIMPLEMENTED(); |
+ return arc::mojom::VideoPixelFormat::PIXEL_FORMAT_I420; |
+} |
+ |
+// static |
+bool EnumTraits<arc::mojom::VideoPixelFormat, media::VideoPixelFormat>:: |
+ FromMojom(arc::mojom::VideoPixelFormat input, |
+ media::VideoPixelFormat* output) { |
+ switch (input) { |
+ case arc::mojom::VideoPixelFormat::PIXEL_FORMAT_I420: |
+ *output = static_cast<media::VideoPixelFormat>(input); |
+ return true; |
+ default: |
+ LOG(ERROR) << "Unknown VideoPixelFormat: " << input; |
+ return false; |
+ } |
+} |
+ |
+// Make sure values in arc::mojom::VideoCodecProfile match to the values in |
+// media::VideoCodecProfile. |
+#define CHECK_PROFILE_ENUM(value) \ |
+ static_assert( \ |
+ static_cast<int>(arc::mojom::VideoCodecProfile::value) == media::value, \ |
+ "enum ##value mismatch") |
+ |
+CHECK_PROFILE_ENUM(VIDEO_CODEC_PROFILE_UNKNOWN); |
+CHECK_PROFILE_ENUM(VIDEO_CODEC_PROFILE_MIN); |
+CHECK_PROFILE_ENUM(H264PROFILE_MIN); |
+CHECK_PROFILE_ENUM(H264PROFILE_BASELINE); |
+CHECK_PROFILE_ENUM(H264PROFILE_MAIN); |
+CHECK_PROFILE_ENUM(H264PROFILE_EXTENDED); |
+CHECK_PROFILE_ENUM(H264PROFILE_HIGH); |
+CHECK_PROFILE_ENUM(H264PROFILE_HIGH10PROFILE); |
+CHECK_PROFILE_ENUM(H264PROFILE_HIGH422PROFILE); |
+CHECK_PROFILE_ENUM(H264PROFILE_HIGH444PREDICTIVEPROFILE); |
+CHECK_PROFILE_ENUM(H264PROFILE_SCALABLEBASELINE); |
+CHECK_PROFILE_ENUM(H264PROFILE_SCALABLEHIGH); |
+CHECK_PROFILE_ENUM(H264PROFILE_STEREOHIGH); |
+CHECK_PROFILE_ENUM(H264PROFILE_MULTIVIEWHIGH); |
+CHECK_PROFILE_ENUM(H264PROFILE_MAX); |
+CHECK_PROFILE_ENUM(VP8PROFILE_MIN); |
+CHECK_PROFILE_ENUM(VP8PROFILE_ANY); |
+CHECK_PROFILE_ENUM(VP8PROFILE_MAX); |
+CHECK_PROFILE_ENUM(VP9PROFILE_MIN); |
+CHECK_PROFILE_ENUM(VP9PROFILE_PROFILE0); |
+CHECK_PROFILE_ENUM(VP9PROFILE_PROFILE1); |
+CHECK_PROFILE_ENUM(VP9PROFILE_PROFILE2); |
+CHECK_PROFILE_ENUM(VP9PROFILE_PROFILE3); |
+CHECK_PROFILE_ENUM(VP9PROFILE_MAX); |
+CHECK_PROFILE_ENUM(HEVCPROFILE_MIN); |
+CHECK_PROFILE_ENUM(HEVCPROFILE_MAIN); |
+CHECK_PROFILE_ENUM(HEVCPROFILE_MAIN10); |
+CHECK_PROFILE_ENUM(HEVCPROFILE_MAIN_STILL_PICTURE); |
+CHECK_PROFILE_ENUM(HEVCPROFILE_MAX); |
+CHECK_PROFILE_ENUM(DOLBYVISION_MIN); |
+CHECK_PROFILE_ENUM(DOLBYVISION_PROFILE0); |
+CHECK_PROFILE_ENUM(DOLBYVISION_PROFILE4); |
+CHECK_PROFILE_ENUM(DOLBYVISION_PROFILE5); |
+CHECK_PROFILE_ENUM(DOLBYVISION_PROFILE7); |
+CHECK_PROFILE_ENUM(DOLBYVISION_MAX); |
+CHECK_PROFILE_ENUM(VIDEO_CODEC_PROFILE_MAX); |
+ |
+#undef CHECK_PROFILE_ENUM |
+ |
+// static |
+arc::mojom::VideoCodecProfile |
+EnumTraits<arc::mojom::VideoCodecProfile, media::VideoCodecProfile>::ToMojom( |
+ media::VideoCodecProfile input) { |
+ return static_cast<arc::mojom::VideoCodecProfile>(input); |
+} |
+ |
+// static |
+bool EnumTraits<arc::mojom::VideoCodecProfile, media::VideoCodecProfile>:: |
+ FromMojom(arc::mojom::VideoCodecProfile input, |
+ media::VideoCodecProfile* output) { |
+ switch (input) { |
+ case arc::mojom::VideoCodecProfile::VIDEO_CODEC_PROFILE_UNKNOWN: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_BASELINE: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_MAIN: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_EXTENDED: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_HIGH: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_HIGH10PROFILE: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_HIGH422PROFILE: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_HIGH444PREDICTIVEPROFILE: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_SCALABLEBASELINE: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_SCALABLEHIGH: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_STEREOHIGH: |
+ case arc::mojom::VideoCodecProfile::H264PROFILE_MULTIVIEWHIGH: |
+ case arc::mojom::VideoCodecProfile::VP8PROFILE_ANY: |
+ case arc::mojom::VideoCodecProfile::VP9PROFILE_PROFILE0: |
+ case arc::mojom::VideoCodecProfile::VP9PROFILE_PROFILE1: |
+ case arc::mojom::VideoCodecProfile::VP9PROFILE_PROFILE2: |
+ case arc::mojom::VideoCodecProfile::VP9PROFILE_PROFILE3: |
+ case arc::mojom::VideoCodecProfile::HEVCPROFILE_MAIN: |
+ case arc::mojom::VideoCodecProfile::HEVCPROFILE_MAIN10: |
+ case arc::mojom::VideoCodecProfile::HEVCPROFILE_MAIN_STILL_PICTURE: |
+ case arc::mojom::VideoCodecProfile::DOLBYVISION_PROFILE0: |
+ case arc::mojom::VideoCodecProfile::DOLBYVISION_PROFILE4: |
+ case arc::mojom::VideoCodecProfile::DOLBYVISION_PROFILE5: |
+ case arc::mojom::VideoCodecProfile::DOLBYVISION_PROFILE7: |
+ *output = static_cast<media::VideoCodecProfile>(input); |
+ return true; |
+ } |
+ DLOG(ERROR) << "unknown profile: " << input; |
+ return false; |
+} |
+ |
+} // namespace mojo |