OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef SERVICES_VIDEO_CAPTURE_PUBLIC_INTERFACES_VIDEO_CAPTURE_SETTINGS_STRUCT_T
RAITS_H_ |
| 6 #define SERVICES_VIDEO_CAPTURE_PUBLIC_INTERFACES_VIDEO_CAPTURE_SETTINGS_STRUCT_T
RAITS_H_ |
| 7 |
| 8 #include "media/base/video_capture_types.h" |
| 9 #include "services/video_capture/public/interfaces/video_capture_settings.mojom.
h" |
| 10 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h" |
| 11 |
| 12 namespace mojo { |
| 13 |
| 14 template <> |
| 15 struct EnumTraits<video_capture::mojom::ResolutionChangePolicy, |
| 16 media::ResolutionChangePolicy> { |
| 17 static video_capture::mojom::ResolutionChangePolicy ToMojom( |
| 18 media::ResolutionChangePolicy input) { |
| 19 switch (input) { |
| 20 case media::RESOLUTION_POLICY_FIXED_RESOLUTION: |
| 21 return video_capture::mojom::ResolutionChangePolicy::FIXED_RESOLUTION; |
| 22 case media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO: |
| 23 return video_capture::mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO; |
| 24 case media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT: |
| 25 return video_capture::mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT; |
| 26 } |
| 27 NOTREACHED(); |
| 28 return video_capture::mojom::ResolutionChangePolicy::FIXED_RESOLUTION; |
| 29 } |
| 30 |
| 31 static bool FromMojom(video_capture::mojom::ResolutionChangePolicy input, |
| 32 media::ResolutionChangePolicy* output) { |
| 33 switch (input) { |
| 34 case video_capture::mojom::ResolutionChangePolicy::FIXED_RESOLUTION: |
| 35 *output = media::RESOLUTION_POLICY_FIXED_RESOLUTION; |
| 36 return true; |
| 37 case video_capture::mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO: |
| 38 *output = media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO; |
| 39 return true; |
| 40 case video_capture::mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT: |
| 41 *output = media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT; |
| 42 return true; |
| 43 } |
| 44 NOTREACHED(); |
| 45 return false; |
| 46 } |
| 47 }; |
| 48 |
| 49 template <> |
| 50 struct EnumTraits<video_capture::mojom::PowerLineFrequency, |
| 51 media::PowerLineFrequency> { |
| 52 static video_capture::mojom::PowerLineFrequency ToMojom( |
| 53 media::PowerLineFrequency input) { |
| 54 switch (input) { |
| 55 case media::PowerLineFrequency::FREQUENCY_DEFAULT: |
| 56 return video_capture::mojom::PowerLineFrequency::DEFAULT; |
| 57 case media::PowerLineFrequency::FREQUENCY_50HZ: |
| 58 return video_capture::mojom::PowerLineFrequency::HZ_50; |
| 59 case media::PowerLineFrequency::FREQUENCY_60HZ: |
| 60 return video_capture::mojom::PowerLineFrequency::HZ_60; |
| 61 } |
| 62 NOTREACHED(); |
| 63 return video_capture::mojom::PowerLineFrequency::DEFAULT; |
| 64 } |
| 65 |
| 66 static bool FromMojom(video_capture::mojom::PowerLineFrequency input, |
| 67 media::PowerLineFrequency* output) { |
| 68 switch (input) { |
| 69 case video_capture::mojom::PowerLineFrequency::DEFAULT: |
| 70 *output = media::PowerLineFrequency::FREQUENCY_DEFAULT; |
| 71 return true; |
| 72 case video_capture::mojom::PowerLineFrequency::HZ_50: |
| 73 *output = media::PowerLineFrequency::FREQUENCY_50HZ; |
| 74 return true; |
| 75 case video_capture::mojom::PowerLineFrequency::HZ_60: |
| 76 *output = media::PowerLineFrequency::FREQUENCY_60HZ; |
| 77 return true; |
| 78 } |
| 79 NOTREACHED(); |
| 80 return false; |
| 81 } |
| 82 }; |
| 83 |
| 84 template <> |
| 85 struct StructTraits<video_capture::mojom::VideoCaptureFormatDataView, |
| 86 media::VideoCaptureFormat> { |
| 87 static const gfx::Size& frame_size( |
| 88 const media::VideoCaptureFormat& input) { |
| 89 return input.frame_size; |
| 90 } |
| 91 |
| 92 static float frame_rate( |
| 93 const media::VideoCaptureFormat& input) { |
| 94 return input.frame_rate; |
| 95 } |
| 96 |
| 97 static bool Read( |
| 98 video_capture::mojom::VideoCaptureFormatDataView data, |
| 99 media::VideoCaptureFormat* output) { |
| 100 if (!data.ReadFrameSize(&(output->frame_size))) |
| 101 return false; |
| 102 |
| 103 output->frame_rate = data.frame_rate(); |
| 104 return true; |
| 105 } |
| 106 }; |
| 107 |
| 108 template <> |
| 109 struct StructTraits<video_capture::mojom::VideoCaptureSettingsDataView, |
| 110 media::VideoCaptureParams> { |
| 111 static const media::VideoCaptureFormat& format( |
| 112 const media::VideoCaptureParams& input) { |
| 113 return input.requested_format; |
| 114 } |
| 115 |
| 116 static media::ResolutionChangePolicy resolution_change_policy( |
| 117 const media::VideoCaptureParams& input) { |
| 118 return input.resolution_change_policy; |
| 119 } |
| 120 |
| 121 static media::PowerLineFrequency power_line_frequency( |
| 122 const media::VideoCaptureParams& input) { |
| 123 return input.power_line_frequency; |
| 124 } |
| 125 |
| 126 static bool Read( |
| 127 video_capture::mojom::VideoCaptureSettingsDataView data, |
| 128 media::VideoCaptureParams* output) { |
| 129 |
| 130 if (!data.ReadFormat(&(output->requested_format))) |
| 131 return false; |
| 132 |
| 133 if (!data.ReadResolutionChangePolicy(&(output->resolution_change_policy))) |
| 134 return false; |
| 135 |
| 136 if (!data.ReadPowerLineFrequency(&(output->power_line_frequency))) |
| 137 return false; |
| 138 |
| 139 return true; |
| 140 } |
| 141 }; |
| 142 |
| 143 } // namespace mojo |
| 144 |
| 145 #endif // SERVICES_VIDEO_CAPTURE_PUBLIC_INTERFACES_VIDEO_CAPTURE_SETTINGS_STRUC
T_TRAITS_H_ |
OLD | NEW |