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

Side by Side Diff: services/video_capture/public/interfaces/video_capture_settings_struct_traits.h

Issue 2386183002: Replace manual conversions with Mojo type mappings
Patch Set: 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 unified diff | Download patch
OLDNEW
(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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698