7724d5b3857ca367b1fb5ad912852fb7e042d3fa
[platform/framework/web/chromium-efl.git] / media / capture / mojom / video_capture_types_mojom_traits.cc
1 // Copyright 2016 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/capture/mojom/video_capture_types_mojom_traits.h"
6
7 #include "third_party/abseil-cpp/absl/types/optional.h"
8 #include "ui/gfx/geometry/mojom/geometry.mojom.h"
9 #include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
10
11 namespace mojo {
12
13 // static
14 media::mojom::ResolutionChangePolicy
15 EnumTraits<media::mojom::ResolutionChangePolicy,
16            media::ResolutionChangePolicy>::ToMojom(media::ResolutionChangePolicy
17                                                        input) {
18   switch (input) {
19     case media::ResolutionChangePolicy::FIXED_RESOLUTION:
20       return media::mojom::ResolutionChangePolicy::FIXED_RESOLUTION;
21     case media::ResolutionChangePolicy::FIXED_ASPECT_RATIO:
22       return media::mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO;
23     case media::ResolutionChangePolicy::ANY_WITHIN_LIMIT:
24       return media::mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT;
25   }
26   NOTREACHED_NORETURN();
27 }
28
29 // static
30 bool EnumTraits<media::mojom::ResolutionChangePolicy,
31                 media::ResolutionChangePolicy>::
32     FromMojom(media::mojom::ResolutionChangePolicy input,
33               media::ResolutionChangePolicy* output) {
34   switch (input) {
35     case media::mojom::ResolutionChangePolicy::FIXED_RESOLUTION:
36       *output = media::ResolutionChangePolicy::FIXED_RESOLUTION;
37       return true;
38     case media::mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO:
39       *output = media::ResolutionChangePolicy::FIXED_ASPECT_RATIO;
40       return true;
41     case media::mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT:
42       *output = media::ResolutionChangePolicy::ANY_WITHIN_LIMIT;
43       return true;
44   }
45   NOTREACHED_NORETURN();
46 }
47
48 // static
49 media::mojom::PowerLineFrequency EnumTraits<
50     media::mojom::PowerLineFrequency,
51     media::PowerLineFrequency>::ToMojom(media::PowerLineFrequency input) {
52   switch (input) {
53     case media::PowerLineFrequency::kDefault:
54       return media::mojom::PowerLineFrequency::DEFAULT;
55     case media::PowerLineFrequency::k50Hz:
56       return media::mojom::PowerLineFrequency::HZ_50;
57     case media::PowerLineFrequency::k60Hz:
58       return media::mojom::PowerLineFrequency::HZ_60;
59   }
60   NOTREACHED_NORETURN();
61 }
62
63 // static
64 bool EnumTraits<media::mojom::PowerLineFrequency, media::PowerLineFrequency>::
65     FromMojom(media::mojom::PowerLineFrequency input,
66               media::PowerLineFrequency* output) {
67   switch (input) {
68     case media::mojom::PowerLineFrequency::DEFAULT:
69       *output = media::PowerLineFrequency::kDefault;
70       return true;
71     case media::mojom::PowerLineFrequency::HZ_50:
72       *output = media::PowerLineFrequency::k50Hz;
73       return true;
74     case media::mojom::PowerLineFrequency::HZ_60:
75       *output = media::PowerLineFrequency::k60Hz;
76       return true;
77   }
78   NOTREACHED_NORETURN();
79 }
80
81 // static
82 media::mojom::VideoCapturePixelFormat
83 EnumTraits<media::mojom::VideoCapturePixelFormat,
84            media::VideoPixelFormat>::ToMojom(media::VideoPixelFormat input) {
85   switch (input) {
86     case media::VideoPixelFormat::PIXEL_FORMAT_UNKNOWN:
87       return media::mojom::VideoCapturePixelFormat::UNKNOWN;
88     case media::VideoPixelFormat::PIXEL_FORMAT_I420:
89       return media::mojom::VideoCapturePixelFormat::I420;
90     case media::VideoPixelFormat::PIXEL_FORMAT_YV12:
91       return media::mojom::VideoCapturePixelFormat::YV12;
92     case media::VideoPixelFormat::PIXEL_FORMAT_I422:
93       return media::mojom::VideoCapturePixelFormat::I422;
94     case media::VideoPixelFormat::PIXEL_FORMAT_I420A:
95       return media::mojom::VideoCapturePixelFormat::I420A;
96     case media::VideoPixelFormat::PIXEL_FORMAT_I444:
97       return media::mojom::VideoCapturePixelFormat::I444;
98     case media::VideoPixelFormat::PIXEL_FORMAT_NV12:
99       return media::mojom::VideoCapturePixelFormat::NV12;
100     case media::VideoPixelFormat::PIXEL_FORMAT_NV21:
101       return media::mojom::VideoCapturePixelFormat::NV21;
102     case media::VideoPixelFormat::PIXEL_FORMAT_UYVY:
103       return media::mojom::VideoCapturePixelFormat::UYVY;
104     case media::VideoPixelFormat::PIXEL_FORMAT_YUY2:
105       return media::mojom::VideoCapturePixelFormat::YUY2;
106     case media::VideoPixelFormat::PIXEL_FORMAT_ARGB:
107       return media::mojom::VideoCapturePixelFormat::ARGB;
108     case media::VideoPixelFormat::PIXEL_FORMAT_BGRA:
109       return media::mojom::VideoCapturePixelFormat::BGRA;
110     case media::VideoPixelFormat::PIXEL_FORMAT_XRGB:
111       return media::mojom::VideoCapturePixelFormat::XRGB;
112     case media::VideoPixelFormat::PIXEL_FORMAT_RGB24:
113       return media::mojom::VideoCapturePixelFormat::RGB24;
114     case media::VideoPixelFormat::PIXEL_FORMAT_MJPEG:
115       return media::mojom::VideoCapturePixelFormat::MJPEG;
116     case media::VideoPixelFormat::PIXEL_FORMAT_YUV420P9:
117       return media::mojom::VideoCapturePixelFormat::YUV420P9;
118     case media::VideoPixelFormat::PIXEL_FORMAT_YUV420P10:
119       return media::mojom::VideoCapturePixelFormat::YUV420P10;
120     case media::VideoPixelFormat::PIXEL_FORMAT_YUV422P9:
121       return media::mojom::VideoCapturePixelFormat::YUV422P9;
122     case media::VideoPixelFormat::PIXEL_FORMAT_YUV422P10:
123       return media::mojom::VideoCapturePixelFormat::YUV422P10;
124     case media::VideoPixelFormat::PIXEL_FORMAT_YUV444P9:
125       return media::mojom::VideoCapturePixelFormat::YUV444P9;
126     case media::VideoPixelFormat::PIXEL_FORMAT_YUV444P10:
127       return media::mojom::VideoCapturePixelFormat::YUV444P10;
128     case media::VideoPixelFormat::PIXEL_FORMAT_YUV420P12:
129       return media::mojom::VideoCapturePixelFormat::YUV420P12;
130     case media::VideoPixelFormat::PIXEL_FORMAT_YUV422P12:
131       return media::mojom::VideoCapturePixelFormat::YUV422P12;
132     case media::VideoPixelFormat::PIXEL_FORMAT_YUV444P12:
133       return media::mojom::VideoCapturePixelFormat::YUV444P12;
134     case media::VideoPixelFormat::PIXEL_FORMAT_Y16:
135       return media::mojom::VideoCapturePixelFormat::Y16;
136     case media::VideoPixelFormat::PIXEL_FORMAT_ABGR:
137       return media::mojom::VideoCapturePixelFormat::ABGR;
138     case media::VideoPixelFormat::PIXEL_FORMAT_XBGR:
139       return media::mojom::VideoCapturePixelFormat::XBGR;
140     case media::VideoPixelFormat::PIXEL_FORMAT_P016LE:
141       return media::mojom::VideoCapturePixelFormat::P016LE;
142     case media::VideoPixelFormat::PIXEL_FORMAT_XR30:
143       return media::mojom::VideoCapturePixelFormat::XR30;
144     case media::VideoPixelFormat::PIXEL_FORMAT_XB30:
145       return media::mojom::VideoCapturePixelFormat::XB30;
146     case media::VideoPixelFormat::PIXEL_FORMAT_RGBAF16:
147       return media::mojom::VideoCapturePixelFormat::RGBAF16;
148     case media::VideoPixelFormat::PIXEL_FORMAT_I422A:
149       return media::mojom::VideoCapturePixelFormat::I422A;
150     case media::VideoPixelFormat::PIXEL_FORMAT_I444A:
151       return media::mojom::VideoCapturePixelFormat::I444A;
152     case media::VideoPixelFormat::PIXEL_FORMAT_YUV420AP10:
153       return media::mojom::VideoCapturePixelFormat::YUV420AP10;
154     case media::VideoPixelFormat::PIXEL_FORMAT_YUV422AP10:
155       return media::mojom::VideoCapturePixelFormat::YUV422AP10;
156     case media::VideoPixelFormat::PIXEL_FORMAT_YUV444AP10:
157       return media::mojom::VideoCapturePixelFormat::YUV444AP10;
158     case media::VideoPixelFormat::PIXEL_FORMAT_NV12A:
159       return media::mojom::VideoCapturePixelFormat::NV12A;
160 #if defined(TIZEN_TBM_SUPPORT)
161     case media::VideoPixelFormat::PIXEL_FORMAT_TBM_SURFACE:
162       return media::mojom::VideoCapturePixelFormat::TBM_SURFACE;
163 #endif
164   }
165   NOTREACHED_NORETURN();
166 }
167
168 // static
169 bool EnumTraits<media::mojom::VideoCapturePixelFormat,
170                 media::VideoPixelFormat>::
171     FromMojom(media::mojom::VideoCapturePixelFormat input,
172               media::VideoPixelFormat* output) {
173   switch (input) {
174     case media::mojom::VideoCapturePixelFormat::UNKNOWN:
175       *output = media::PIXEL_FORMAT_UNKNOWN;
176       return true;
177     case media::mojom::VideoCapturePixelFormat::I420:
178       *output = media::PIXEL_FORMAT_I420;
179       return true;
180     case media::mojom::VideoCapturePixelFormat::YV12:
181       *output = media::PIXEL_FORMAT_YV12;
182       return true;
183     case media::mojom::VideoCapturePixelFormat::I422:
184       *output = media::PIXEL_FORMAT_I422;
185       return true;
186     case media::mojom::VideoCapturePixelFormat::I420A:
187       *output = media::PIXEL_FORMAT_I420A;
188       return true;
189     case media::mojom::VideoCapturePixelFormat::I444:
190       *output = media::PIXEL_FORMAT_I444;
191       return true;
192     case media::mojom::VideoCapturePixelFormat::NV12:
193       *output = media::PIXEL_FORMAT_NV12;
194       return true;
195     case media::mojom::VideoCapturePixelFormat::NV21:
196       *output = media::PIXEL_FORMAT_NV21;
197       return true;
198     case media::mojom::VideoCapturePixelFormat::UYVY:
199       *output = media::PIXEL_FORMAT_UYVY;
200       return true;
201     case media::mojom::VideoCapturePixelFormat::YUY2:
202       *output = media::PIXEL_FORMAT_YUY2;
203       return true;
204     case media::mojom::VideoCapturePixelFormat::ARGB:
205       *output = media::PIXEL_FORMAT_ARGB;
206       return true;
207     case media::mojom::VideoCapturePixelFormat::XRGB:
208       *output = media::PIXEL_FORMAT_XRGB;
209       return true;
210     case media::mojom::VideoCapturePixelFormat::RGB24:
211       *output = media::PIXEL_FORMAT_RGB24;
212       return true;
213     case media::mojom::VideoCapturePixelFormat::MJPEG:
214       *output = media::PIXEL_FORMAT_MJPEG;
215       return true;
216     case media::mojom::VideoCapturePixelFormat::YUV420P9:
217       *output = media::PIXEL_FORMAT_YUV420P9;
218       return true;
219     case media::mojom::VideoCapturePixelFormat::YUV420P10:
220       *output = media::PIXEL_FORMAT_YUV420P10;
221       return true;
222     case media::mojom::VideoCapturePixelFormat::YUV422P9:
223       *output = media::PIXEL_FORMAT_YUV422P9;
224       return true;
225     case media::mojom::VideoCapturePixelFormat::YUV422P10:
226       *output = media::PIXEL_FORMAT_YUV422P10;
227       return true;
228     case media::mojom::VideoCapturePixelFormat::YUV444P9:
229       *output = media::PIXEL_FORMAT_YUV444P9;
230       return true;
231     case media::mojom::VideoCapturePixelFormat::YUV444P10:
232       *output = media::PIXEL_FORMAT_YUV444P10;
233       return true;
234     case media::mojom::VideoCapturePixelFormat::YUV420P12:
235       *output = media::PIXEL_FORMAT_YUV420P12;
236       return true;
237     case media::mojom::VideoCapturePixelFormat::YUV422P12:
238       *output = media::PIXEL_FORMAT_YUV422P12;
239       return true;
240     case media::mojom::VideoCapturePixelFormat::YUV444P12:
241       *output = media::PIXEL_FORMAT_YUV444P12;
242       return true;
243     case media::mojom::VideoCapturePixelFormat::Y16:
244       *output = media::PIXEL_FORMAT_Y16;
245       return true;
246     case media::mojom::VideoCapturePixelFormat::ABGR:
247       *output = media::PIXEL_FORMAT_ABGR;
248       return true;
249     case media::mojom::VideoCapturePixelFormat::XBGR:
250       *output = media::PIXEL_FORMAT_XBGR;
251       return true;
252     case media::mojom::VideoCapturePixelFormat::P016LE:
253       *output = media::PIXEL_FORMAT_P016LE;
254       return true;
255     case media::mojom::VideoCapturePixelFormat::XR30:
256       *output = media::PIXEL_FORMAT_XR30;
257       return true;
258     case media::mojom::VideoCapturePixelFormat::XB30:
259       *output = media::PIXEL_FORMAT_XB30;
260       return true;
261     case media::mojom::VideoCapturePixelFormat::BGRA:
262       *output = media::PIXEL_FORMAT_BGRA;
263       return true;
264     case media::mojom::VideoCapturePixelFormat::RGBAF16:
265       *output = media::PIXEL_FORMAT_RGBAF16;
266       return true;
267     case media::mojom::VideoCapturePixelFormat::I422A:
268       *output = media::PIXEL_FORMAT_I422A;
269       return true;
270     case media::mojom::VideoCapturePixelFormat::I444A:
271       *output = media::PIXEL_FORMAT_I444A;
272       return true;
273     case media::mojom::VideoCapturePixelFormat::YUV420AP10:
274       *output = media::PIXEL_FORMAT_YUV420AP10;
275       return true;
276     case media::mojom::VideoCapturePixelFormat::YUV422AP10:
277       *output = media::PIXEL_FORMAT_YUV422AP10;
278       return true;
279     case media::mojom::VideoCapturePixelFormat::YUV444AP10:
280       *output = media::PIXEL_FORMAT_YUV444AP10;
281       return true;
282     case media::mojom::VideoCapturePixelFormat::NV12A:
283       *output = media::PIXEL_FORMAT_NV12A;
284       return true;
285 #if defined(TIZEN_TBM_SUPPORT)
286     case media::mojom::VideoCapturePixelFormat::TBM_SURFACE:
287       *output = media::PIXEL_FORMAT_TBM_SURFACE;
288       return true;
289 #endif
290   }
291   NOTREACHED_NORETURN();
292 }
293
294 // static
295 media::mojom::VideoCaptureBufferType
296 EnumTraits<media::mojom::VideoCaptureBufferType,
297            media::VideoCaptureBufferType>::ToMojom(media::VideoCaptureBufferType
298                                                        input) {
299   switch (input) {
300     case media::VideoCaptureBufferType::kSharedMemory:
301       return media::mojom::VideoCaptureBufferType::kSharedMemory;
302     case media::VideoCaptureBufferType::kMailboxHolder:
303       return media::mojom::VideoCaptureBufferType::kMailboxHolder;
304     case media::VideoCaptureBufferType::kGpuMemoryBuffer:
305       return media::mojom::VideoCaptureBufferType::kGpuMemoryBuffer;
306   }
307   NOTREACHED_NORETURN();
308 }
309
310 // static
311 bool EnumTraits<media::mojom::VideoCaptureBufferType,
312                 media::VideoCaptureBufferType>::
313     FromMojom(media::mojom::VideoCaptureBufferType input,
314               media::VideoCaptureBufferType* output) {
315   switch (input) {
316     case media::mojom::VideoCaptureBufferType::kSharedMemory:
317       *output = media::VideoCaptureBufferType::kSharedMemory;
318       return true;
319     case media::mojom::VideoCaptureBufferType::
320         kSharedMemoryViaRawFileDescriptor_DEPRECATED:
321       NOTREACHED_NORETURN();
322     case media::mojom::VideoCaptureBufferType::kMailboxHolder:
323       *output = media::VideoCaptureBufferType::kMailboxHolder;
324       return true;
325     case media::mojom::VideoCaptureBufferType::kGpuMemoryBuffer:
326       *output = media::VideoCaptureBufferType::kGpuMemoryBuffer;
327       return true;
328   }
329   NOTREACHED_NORETURN();
330 }
331
332 // static
333 media::mojom::VideoCaptureError
334 EnumTraits<media::mojom::VideoCaptureError, media::VideoCaptureError>::ToMojom(
335     media::VideoCaptureError input) {
336   switch (input) {
337     case media::VideoCaptureError::kNone:
338       return media::mojom::VideoCaptureError::kNone;
339     case media::VideoCaptureError::
340         kVideoCaptureControllerInvalidOrUnsupportedVideoCaptureParametersRequested:
341       return media::mojom::VideoCaptureError::
342           kVideoCaptureControllerInvalidOrUnsupportedVideoCaptureParametersRequested;
343     case media::VideoCaptureError::kVideoCaptureControllerIsAlreadyInErrorState:
344       return media::mojom::VideoCaptureError::
345           kVideoCaptureControllerIsAlreadyInErrorState;
346     case media::VideoCaptureError::kVideoCaptureManagerDeviceConnectionLost:
347       return media::mojom::VideoCaptureError::
348           kVideoCaptureManagerDeviceConnectionLost;
349     case media::VideoCaptureError::
350         kFrameSinkVideoCaptureDeviceAlreadyEndedOnFatalError:
351       return media::mojom::VideoCaptureError::
352           kFrameSinkVideoCaptureDeviceAlreadyEndedOnFatalError;
353     case media::VideoCaptureError::
354         kFrameSinkVideoCaptureDeviceEncounteredFatalError:
355       return media::mojom::VideoCaptureError::
356           kFrameSinkVideoCaptureDeviceEncounteredFatalError;
357     case media::VideoCaptureError::kV4L2FailedToOpenV4L2DeviceDriverFile:
358       return media::mojom::VideoCaptureError::
359           kV4L2FailedToOpenV4L2DeviceDriverFile;
360     case media::VideoCaptureError::kV4L2ThisIsNotAV4L2VideoCaptureDevice:
361       return media::mojom::VideoCaptureError::
362           kV4L2ThisIsNotAV4L2VideoCaptureDevice;
363     case media::VideoCaptureError::kV4L2FailedToFindASupportedCameraFormat:
364       return media::mojom::VideoCaptureError::
365           kV4L2FailedToFindASupportedCameraFormat;
366     case media::VideoCaptureError::kV4L2FailedToSetVideoCaptureFormat:
367       return media::mojom::VideoCaptureError::
368           kV4L2FailedToSetVideoCaptureFormat;
369     case media::VideoCaptureError::kV4L2UnsupportedPixelFormat:
370       return media::mojom::VideoCaptureError::kV4L2UnsupportedPixelFormat;
371     case media::VideoCaptureError::kV4L2FailedToSetCameraFramerate:
372       return media::mojom::VideoCaptureError::kV4L2FailedToSetCameraFramerate;
373     case media::VideoCaptureError::kV4L2ErrorRequestingMmapBuffers:
374       return media::mojom::VideoCaptureError::kV4L2ErrorRequestingMmapBuffers;
375     case media::VideoCaptureError::kV4L2AllocateBufferFailed:
376       return media::mojom::VideoCaptureError::kV4L2AllocateBufferFailed;
377     case media::VideoCaptureError::kV4L2VidiocStreamonFailed:
378       return media::mojom::VideoCaptureError::kV4L2VidiocStreamonFailed;
379     case media::VideoCaptureError::kV4L2VidiocStreamoffFailed:
380       return media::mojom::VideoCaptureError::kV4L2VidiocStreamoffFailed;
381     case media::VideoCaptureError::kV4L2FailedToVidiocReqbufsWithCount0:
382       return media::mojom::VideoCaptureError::
383           kV4L2FailedToVidiocReqbufsWithCount0;
384     case media::VideoCaptureError::kV4L2PollFailed:
385       return media::mojom::VideoCaptureError::kV4L2PollFailed;
386     case media::VideoCaptureError::
387         kV4L2MultipleContinuousTimeoutsWhileReadPolling:
388       return media::mojom::VideoCaptureError::
389           kV4L2MultipleContinuousTimeoutsWhileReadPolling;
390     case media::VideoCaptureError::kV4L2FailedToDequeueCaptureBuffer:
391       return media::mojom::VideoCaptureError::kV4L2FailedToDequeueCaptureBuffer;
392     case media::VideoCaptureError::kV4L2FailedToEnqueueCaptureBuffer:
393       return media::mojom::VideoCaptureError::kV4L2FailedToEnqueueCaptureBuffer;
394     case media::VideoCaptureError::
395         kSingleClientVideoCaptureHostLostConnectionToDevice:
396       return media::mojom::VideoCaptureError::
397           kSingleClientVideoCaptureHostLostConnectionToDevice;
398     case media::VideoCaptureError::kSingleClientVideoCaptureDeviceLaunchAborted:
399       return media::mojom::VideoCaptureError::
400           kSingleClientVideoCaptureDeviceLaunchAborted;
401     case media::VideoCaptureError::
402         kDesktopCaptureDeviceWebrtcDesktopCapturerHasFailed:
403       return media::mojom::VideoCaptureError::
404           kDesktopCaptureDeviceWebrtcDesktopCapturerHasFailed;
405     case media::VideoCaptureError::kFileVideoCaptureDeviceCouldNotOpenVideoFile:
406       return media::mojom::VideoCaptureError::
407           kFileVideoCaptureDeviceCouldNotOpenVideoFile;
408     case media::VideoCaptureError::
409         kDeviceCaptureLinuxFailedToCreateVideoCaptureDelegate:
410       return media::mojom::VideoCaptureError::
411           kDeviceCaptureLinuxFailedToCreateVideoCaptureDelegate;
412     case media::VideoCaptureError::
413         kErrorFakeDeviceIntentionallyEmittingErrorEvent:
414       return media::mojom::VideoCaptureError::
415           kErrorFakeDeviceIntentionallyEmittingErrorEvent;
416     case media::VideoCaptureError::kDeviceClientTooManyFramesDroppedY16:
417       return media::mojom::VideoCaptureError::
418           kDeviceClientTooManyFramesDroppedY16;
419     case media::VideoCaptureError::
420         kDeviceMediaToMojoAdapterEncounteredUnsupportedBufferType:
421       return media::mojom::VideoCaptureError::
422           kDeviceMediaToMojoAdapterEncounteredUnsupportedBufferType;
423     case media::VideoCaptureError::
424         kVideoCaptureManagerProcessDeviceStartQueueDeviceInfoNotFound:
425       return media::mojom::VideoCaptureError::
426           kVideoCaptureManagerProcessDeviceStartQueueDeviceInfoNotFound;
427     case media::VideoCaptureError::
428         kInProcessDeviceLauncherFailedToCreateDeviceInstance:
429       return media::mojom::VideoCaptureError::
430           kInProcessDeviceLauncherFailedToCreateDeviceInstance;
431     case media::VideoCaptureError::
432         kServiceDeviceLauncherLostConnectionToDeviceFactoryDuringDeviceStart:
433       return media::mojom::VideoCaptureError::
434           kServiceDeviceLauncherLostConnectionToDeviceFactoryDuringDeviceStart;
435     case media::VideoCaptureError::
436         kServiceDeviceLauncherServiceRespondedWithDeviceNotFound:
437       return media::mojom::VideoCaptureError::
438           kServiceDeviceLauncherServiceRespondedWithDeviceNotFound;
439     case media::VideoCaptureError::
440         kServiceDeviceLauncherConnectionLostWhileWaitingForCallback:
441       return media::mojom::VideoCaptureError::
442           kServiceDeviceLauncherConnectionLostWhileWaitingForCallback;
443     case media::VideoCaptureError::kIntentionalErrorRaisedByUnitTest:
444       return media::mojom::VideoCaptureError::kIntentionalErrorRaisedByUnitTest;
445     case media::VideoCaptureError::kCrosHalV3FailedToStartDeviceThread:
446       return media::mojom::VideoCaptureError::
447           kCrosHalV3FailedToStartDeviceThread;
448     case media::VideoCaptureError::kCrosHalV3DeviceDelegateMojoConnectionError:
449       return media::mojom::VideoCaptureError::
450           kCrosHalV3DeviceDelegateMojoConnectionError;
451     case media::VideoCaptureError::
452         kCrosHalV3DeviceDelegateFailedToGetCameraInfo:
453       return media::mojom::VideoCaptureError::
454           kCrosHalV3DeviceDelegateFailedToGetCameraInfo;
455     case media::VideoCaptureError::
456         kCrosHalV3DeviceDelegateMissingSensorOrientationInfo:
457       return media::mojom::VideoCaptureError::
458           kCrosHalV3DeviceDelegateMissingSensorOrientationInfo;
459     case media::VideoCaptureError::
460         kCrosHalV3DeviceDelegateFailedToOpenCameraDevice:
461       return media::mojom::VideoCaptureError::
462           kCrosHalV3DeviceDelegateFailedToOpenCameraDevice;
463     case media::VideoCaptureError::
464         kCrosHalV3DeviceDelegateFailedToInitializeCameraDevice:
465       return media::mojom::VideoCaptureError::
466           kCrosHalV3DeviceDelegateFailedToInitializeCameraDevice;
467     case media::VideoCaptureError::
468         kCrosHalV3DeviceDelegateFailedToConfigureStreams:
469       return media::mojom::VideoCaptureError::
470           kCrosHalV3DeviceDelegateFailedToConfigureStreams;
471     case media::VideoCaptureError::
472         kCrosHalV3DeviceDelegateWrongNumberOfStreamsConfigured:
473       return media::mojom::VideoCaptureError::
474           kCrosHalV3DeviceDelegateWrongNumberOfStreamsConfigured;
475     case media::VideoCaptureError::
476         kCrosHalV3DeviceDelegateFailedToGetDefaultRequestSettings:
477       return media::mojom::VideoCaptureError::
478           kCrosHalV3DeviceDelegateFailedToGetDefaultRequestSettings;
479     case media::VideoCaptureError::
480         kCrosHalV3BufferManagerHalRequestedTooManyBuffers:
481       return media::mojom::VideoCaptureError::
482           kCrosHalV3BufferManagerHalRequestedTooManyBuffers;
483     case media::VideoCaptureError::
484         kCrosHalV3BufferManagerFailedToCreateGpuMemoryBuffer:
485       return media::mojom::VideoCaptureError::
486           kCrosHalV3BufferManagerFailedToCreateGpuMemoryBuffer;
487     case media::VideoCaptureError::
488         kCrosHalV3BufferManagerFailedToMapGpuMemoryBuffer:
489       return media::mojom::VideoCaptureError::
490           kCrosHalV3BufferManagerFailedToMapGpuMemoryBuffer;
491     case media::VideoCaptureError::
492         kCrosHalV3BufferManagerUnsupportedVideoPixelFormat:
493       return media::mojom::VideoCaptureError::
494           kCrosHalV3BufferManagerUnsupportedVideoPixelFormat;
495     case media::VideoCaptureError::kCrosHalV3BufferManagerFailedToDupFd:
496       return media::mojom::VideoCaptureError::
497           kCrosHalV3BufferManagerFailedToDupFd;
498     case media::VideoCaptureError::
499         kCrosHalV3BufferManagerFailedToWrapGpuMemoryHandle:
500       return media::mojom::VideoCaptureError::
501           kCrosHalV3BufferManagerFailedToWrapGpuMemoryHandle;
502     case media::VideoCaptureError::
503         kCrosHalV3BufferManagerFailedToRegisterBuffer:
504       return media::mojom::VideoCaptureError::
505           kCrosHalV3BufferManagerFailedToRegisterBuffer;
506     case media::VideoCaptureError::
507         kCrosHalV3BufferManagerProcessCaptureRequestFailed:
508       return media::mojom::VideoCaptureError::
509           kCrosHalV3BufferManagerProcessCaptureRequestFailed;
510     case media::VideoCaptureError::
511         kCrosHalV3BufferManagerInvalidPendingResultId:
512       return media::mojom::VideoCaptureError::
513           kCrosHalV3BufferManagerInvalidPendingResultId;
514     case media::VideoCaptureError::
515         kCrosHalV3BufferManagerReceivedDuplicatedPartialMetadata:
516       return media::mojom::VideoCaptureError::
517           kCrosHalV3BufferManagerReceivedDuplicatedPartialMetadata;
518     case media::VideoCaptureError::
519         kCrosHalV3BufferManagerIncorrectNumberOfOutputBuffersReceived:
520       return media::mojom::VideoCaptureError::
521           kCrosHalV3BufferManagerIncorrectNumberOfOutputBuffersReceived;
522     case media::VideoCaptureError::
523         kCrosHalV3BufferManagerInvalidTypeOfOutputBuffersReceived:
524       return media::mojom::VideoCaptureError::
525           kCrosHalV3BufferManagerInvalidTypeOfOutputBuffersReceived;
526     case media::VideoCaptureError::
527         kCrosHalV3BufferManagerReceivedMultipleResultBuffersForFrame:
528       return media::mojom::VideoCaptureError::
529           kCrosHalV3BufferManagerReceivedMultipleResultBuffersForFrame;
530     case media::VideoCaptureError::
531         kCrosHalV3BufferManagerUnknownStreamInCamera3NotifyMsg:
532       return media::mojom::VideoCaptureError::
533           kCrosHalV3BufferManagerUnknownStreamInCamera3NotifyMsg;
534     case media::VideoCaptureError::
535         kCrosHalV3BufferManagerReceivedInvalidShutterTime:
536       return media::mojom::VideoCaptureError::
537           kCrosHalV3BufferManagerReceivedInvalidShutterTime;
538     case media::VideoCaptureError::kCrosHalV3BufferManagerFatalDeviceError:
539       return media::mojom::VideoCaptureError::
540           kCrosHalV3BufferManagerFatalDeviceError;
541     case media::VideoCaptureError::
542         kCrosHalV3BufferManagerReceivedFrameIsOutOfOrder:
543       return media::mojom::VideoCaptureError::
544           kCrosHalV3BufferManagerReceivedFrameIsOutOfOrder;
545     case media::VideoCaptureError::
546         kCrosHalV3BufferManagerFailedToUnwrapReleaseFenceFd:
547       return media::mojom::VideoCaptureError::
548           kCrosHalV3BufferManagerFailedToUnwrapReleaseFenceFd;
549     case media::VideoCaptureError::
550         kCrosHalV3BufferManagerSyncWaitOnReleaseFenceTimedOut:
551       return media::mojom::VideoCaptureError::
552           kCrosHalV3BufferManagerSyncWaitOnReleaseFenceTimedOut;
553     case media::VideoCaptureError::kCrosHalV3BufferManagerInvalidJpegBlob:
554       return media::mojom::VideoCaptureError::
555           kCrosHalV3BufferManagerInvalidJpegBlob;
556     case media::VideoCaptureError::kAndroidFailedToAllocate:
557       return media::mojom::VideoCaptureError::kAndroidFailedToAllocate;
558     case media::VideoCaptureError::kAndroidFailedToStartCapture:
559       return media::mojom::VideoCaptureError::kAndroidFailedToStartCapture;
560     case media::VideoCaptureError::kAndroidFailedToStopCapture:
561       return media::mojom::VideoCaptureError::kAndroidFailedToStopCapture;
562     case media::VideoCaptureError::kAndroidApi1CameraErrorCallbackReceived:
563       return media::mojom::VideoCaptureError::
564           kAndroidApi1CameraErrorCallbackReceived;
565     case media::VideoCaptureError::kAndroidApi2CameraDeviceErrorReceived:
566       return media::mojom::VideoCaptureError::
567           kAndroidApi2CameraDeviceErrorReceived;
568     case media::VideoCaptureError::kAndroidApi2CaptureSessionConfigureFailed:
569       return media::mojom::VideoCaptureError::
570           kAndroidApi2CaptureSessionConfigureFailed;
571     case media::VideoCaptureError::kAndroidApi2ImageReaderUnexpectedImageFormat:
572       return media::mojom::VideoCaptureError::
573           kAndroidApi2ImageReaderUnexpectedImageFormat;
574     case media::VideoCaptureError::
575         kAndroidApi2ImageReaderSizeDidNotMatchImageSize:
576       return media::mojom::VideoCaptureError::
577           kAndroidApi2ImageReaderSizeDidNotMatchImageSize;
578     case media::VideoCaptureError::kAndroidApi2ErrorRestartingPreview:
579       return media::mojom::VideoCaptureError::
580           kAndroidApi2ErrorRestartingPreview;
581     case media::VideoCaptureError::kAndroidScreenCaptureUnsupportedFormat:
582       return media::mojom::VideoCaptureError::
583           kAndroidScreenCaptureUnsupportedFormat;
584     case media::VideoCaptureError::
585         kAndroidScreenCaptureFailedToStartCaptureMachine:
586       return media::mojom::VideoCaptureError::
587           kAndroidScreenCaptureFailedToStartCaptureMachine;
588     case media::VideoCaptureError::
589         kAndroidScreenCaptureTheUserDeniedScreenCapture:
590       return media::mojom::VideoCaptureError::
591           kAndroidScreenCaptureTheUserDeniedScreenCapture;
592     case media::VideoCaptureError::
593         kAndroidScreenCaptureFailedToStartScreenCapture:
594       return media::mojom::VideoCaptureError::
595           kAndroidScreenCaptureFailedToStartScreenCapture;
596     case media::VideoCaptureError::kWinDirectShowCantGetCaptureFormatSettings:
597       return media::mojom::VideoCaptureError::
598           kWinDirectShowCantGetCaptureFormatSettings;
599     case media::VideoCaptureError::
600         kWinDirectShowFailedToGetNumberOfCapabilities:
601       return media::mojom::VideoCaptureError::
602           kWinDirectShowFailedToGetNumberOfCapabilities;
603     case media::VideoCaptureError::
604         kWinDirectShowFailedToGetCaptureDeviceCapabilities:
605       return media::mojom::VideoCaptureError::
606           kWinDirectShowFailedToGetCaptureDeviceCapabilities;
607     case media::VideoCaptureError::
608         kWinDirectShowFailedToSetCaptureDeviceOutputFormat:
609       return media::mojom::VideoCaptureError::
610           kWinDirectShowFailedToSetCaptureDeviceOutputFormat;
611     case media::VideoCaptureError::kWinDirectShowFailedToConnectTheCaptureGraph:
612       return media::mojom::VideoCaptureError::
613           kWinDirectShowFailedToConnectTheCaptureGraph;
614     case media::VideoCaptureError::kWinDirectShowFailedToPauseTheCaptureDevice:
615       return media::mojom::VideoCaptureError::
616           kWinDirectShowFailedToPauseTheCaptureDevice;
617     case media::VideoCaptureError::kWinDirectShowFailedToStartTheCaptureDevice:
618       return media::mojom::VideoCaptureError::
619           kWinDirectShowFailedToStartTheCaptureDevice;
620     case media::VideoCaptureError::kWinDirectShowFailedToStopTheCaptureGraph:
621       return media::mojom::VideoCaptureError::
622           kWinDirectShowFailedToStopTheCaptureGraph;
623     case media::VideoCaptureError::kWinMediaFoundationEngineIsNull:
624       return media::mojom::VideoCaptureError::kWinMediaFoundationEngineIsNull;
625     case media::VideoCaptureError::kWinMediaFoundationEngineGetSourceFailed:
626       return media::mojom::VideoCaptureError::
627           kWinMediaFoundationEngineGetSourceFailed;
628     case media::VideoCaptureError::
629         kWinMediaFoundationFillPhotoCapabilitiesFailed:
630       return media::mojom::VideoCaptureError::
631           kWinMediaFoundationFillPhotoCapabilitiesFailed;
632     case media::VideoCaptureError::
633         kWinMediaFoundationFillVideoCapabilitiesFailed:
634       return media::mojom::VideoCaptureError::
635           kWinMediaFoundationFillVideoCapabilitiesFailed;
636     case media::VideoCaptureError::kWinMediaFoundationNoVideoCapabilityFound:
637       return media::mojom::VideoCaptureError::
638           kWinMediaFoundationNoVideoCapabilityFound;
639     case media::VideoCaptureError::
640         kWinMediaFoundationGetAvailableDeviceMediaTypeFailed:
641       return media::mojom::VideoCaptureError::
642           kWinMediaFoundationGetAvailableDeviceMediaTypeFailed;
643     case media::VideoCaptureError::
644         kWinMediaFoundationSetCurrentDeviceMediaTypeFailed:
645       return media::mojom::VideoCaptureError::
646           kWinMediaFoundationSetCurrentDeviceMediaTypeFailed;
647     case media::VideoCaptureError::kWinMediaFoundationEngineGetSinkFailed:
648       return media::mojom::VideoCaptureError::
649           kWinMediaFoundationEngineGetSinkFailed;
650     case media::VideoCaptureError::
651         kWinMediaFoundationSinkQueryCapturePreviewInterfaceFailed:
652       return media::mojom::VideoCaptureError::
653           kWinMediaFoundationSinkQueryCapturePreviewInterfaceFailed;
654     case media::VideoCaptureError::
655         kWinMediaFoundationSinkRemoveAllStreamsFailed:
656       return media::mojom::VideoCaptureError::
657           kWinMediaFoundationSinkRemoveAllStreamsFailed;
658     case media::VideoCaptureError::
659         kWinMediaFoundationCreateSinkVideoMediaTypeFailed:
660       return media::mojom::VideoCaptureError::
661           kWinMediaFoundationCreateSinkVideoMediaTypeFailed;
662     case media::VideoCaptureError::
663         kWinMediaFoundationConvertToVideoSinkMediaTypeFailed:
664       return media::mojom::VideoCaptureError::
665           kWinMediaFoundationConvertToVideoSinkMediaTypeFailed;
666     case media::VideoCaptureError::kWinMediaFoundationSinkAddStreamFailed:
667       return media::mojom::VideoCaptureError::
668           kWinMediaFoundationSinkAddStreamFailed;
669     case media::VideoCaptureError::
670         kWinMediaFoundationSinkSetSampleCallbackFailed:
671       return media::mojom::VideoCaptureError::
672           kWinMediaFoundationSinkSetSampleCallbackFailed;
673     case media::VideoCaptureError::kWinMediaFoundationEngineStartPreviewFailed:
674       return media::mojom::VideoCaptureError::
675           kWinMediaFoundationEngineStartPreviewFailed;
676     case media::VideoCaptureError::kWinMediaFoundationGetMediaEventStatusFailed:
677       return media::mojom::VideoCaptureError::
678           kWinMediaFoundationGetMediaEventStatusFailed;
679     case media::VideoCaptureError::kMacSetCaptureDeviceFailed:
680       return media::mojom::VideoCaptureError::kMacSetCaptureDeviceFailed;
681     case media::VideoCaptureError::kMacCouldNotStartCaptureDevice:
682       return media::mojom::VideoCaptureError::kMacCouldNotStartCaptureDevice;
683     case media::VideoCaptureError::kMacReceivedFrameWithUnexpectedResolution:
684       return media::mojom::VideoCaptureError::
685           kMacReceivedFrameWithUnexpectedResolution;
686     case media::VideoCaptureError::kMacUpdateCaptureResolutionFailed:
687       return media::mojom::VideoCaptureError::kMacUpdateCaptureResolutionFailed;
688     case media::VideoCaptureError::kMacDeckLinkDeviceIdNotFoundInTheSystem:
689       return media::mojom::VideoCaptureError::
690           kMacDeckLinkDeviceIdNotFoundInTheSystem;
691     case media::VideoCaptureError::kMacDeckLinkErrorQueryingInputInterface:
692       return media::mojom::VideoCaptureError::
693           kMacDeckLinkErrorQueryingInputInterface;
694     case media::VideoCaptureError::kMacDeckLinkErrorCreatingDisplayModeIterator:
695       return media::mojom::VideoCaptureError::
696           kMacDeckLinkErrorCreatingDisplayModeIterator;
697     case media::VideoCaptureError::kMacDeckLinkCouldNotFindADisplayMode:
698       return media::mojom::VideoCaptureError::
699           kMacDeckLinkCouldNotFindADisplayMode;
700     case media::VideoCaptureError::
701         kMacDeckLinkCouldNotSelectTheVideoFormatWeLike:
702       return media::mojom::VideoCaptureError::
703           kMacDeckLinkCouldNotSelectTheVideoFormatWeLike;
704     case media::VideoCaptureError::kMacDeckLinkCouldNotStartCapturing:
705       return media::mojom::VideoCaptureError::
706           kMacDeckLinkCouldNotStartCapturing;
707     case media::VideoCaptureError::kMacDeckLinkUnsupportedPixelFormat:
708       return media::mojom::VideoCaptureError::
709           kMacDeckLinkUnsupportedPixelFormat;
710     case media::VideoCaptureError::
711         kMacAvFoundationReceivedAVCaptureSessionRuntimeErrorNotification:
712       return media::mojom::VideoCaptureError::
713           kMacAvFoundationReceivedAVCaptureSessionRuntimeErrorNotification;
714     case media::VideoCaptureError::kAndroidApi2ErrorConfiguringCamera:
715       return media::mojom::VideoCaptureError::
716           kAndroidApi2ErrorConfiguringCamera;
717     case media::VideoCaptureError::kCrosHalV3DeviceDelegateFailedToFlush:
718       return media::mojom::VideoCaptureError::
719           kCrosHalV3DeviceDelegateFailedToFlush;
720     case media::VideoCaptureError::kFuchsiaCameraDeviceDisconnected:
721       return media::mojom::VideoCaptureError::kFuchsiaCameraDeviceDisconnected;
722     case media::VideoCaptureError::kFuchsiaCameraStreamDisconnected:
723       return media::mojom::VideoCaptureError::kFuchsiaCameraStreamDisconnected;
724     case media::VideoCaptureError::kFuchsiaSysmemDidNotSetImageFormat:
725       return media::mojom::VideoCaptureError::
726           kFuchsiaSysmemDidNotSetImageFormat;
727     case media::VideoCaptureError::kFuchsiaSysmemInvalidBufferIndex:
728       return media::mojom::VideoCaptureError::kFuchsiaSysmemInvalidBufferIndex;
729     case media::VideoCaptureError::kFuchsiaSysmemInvalidBufferSize:
730       return media::mojom::VideoCaptureError::kFuchsiaSysmemInvalidBufferSize;
731     case media::VideoCaptureError::kFuchsiaUnsupportedPixelFormat:
732       return media::mojom::VideoCaptureError::kFuchsiaUnsupportedPixelFormat;
733     case media::VideoCaptureError::kFuchsiaFailedToMapSysmemBuffer:
734       return media::mojom::VideoCaptureError::kFuchsiaFailedToMapSysmemBuffer;
735     case media::VideoCaptureError::kCrosHalV3DeviceContextDuplicatedClient:
736       return media::mojom::VideoCaptureError::
737           kCrosHalV3DeviceContextDuplicatedClient;
738     case media::VideoCaptureError::kDesktopCaptureDeviceMacFailedStreamCreate:
739       return media::mojom::VideoCaptureError::
740           kDesktopCaptureDeviceMacFailedStreamCreate;
741     case media::VideoCaptureError::kDesktopCaptureDeviceMacFailedStreamStart:
742       return media::mojom::VideoCaptureError::
743           kDesktopCaptureDeviceMacFailedStreamStart;
744     case media::VideoCaptureError::
745         kCrosHalV3BufferManagerFailedToReserveBuffers:
746       return media::mojom::VideoCaptureError::
747           kCrosHalV3BufferManagerFailedToReserveBuffers;
748     case media::VideoCaptureError::kWinMediaFoundationSystemPermissionDenied:
749       return media::mojom::VideoCaptureError::
750           kWinMediaFoundationSystemPermissionDenied;
751     case media::VideoCaptureError::kVideoCaptureImplTimedOutOnStart:
752       return media::mojom::VideoCaptureError::kVideoCaptureImplTimedOutOnStart;
753     case media::VideoCaptureError::
754         kLacrosVideoCaptureDeviceProxyAlreadyEndedOnFatalError:
755       return media::mojom::VideoCaptureError::
756           kLacrosVideoCaptureDeviceProxyAlreadyEndedOnFatalError;
757     case media::VideoCaptureError::
758         kLacrosVideoCaptureDeviceProxyEncounteredFatalError:
759       return media::mojom::VideoCaptureError::
760           kLacrosVideoCaptureDeviceProxyEncounteredFatalError;
761     case media::VideoCaptureError::kScreenCaptureKitFailedGetShareableContent:
762       return media::mojom::VideoCaptureError::
763           kScreenCaptureKitFailedGetShareableContent;
764     case media::VideoCaptureError::kScreenCaptureKitFailedAddStreamOutput:
765       return media::mojom::VideoCaptureError::
766           kScreenCaptureKitFailedAddStreamOutput;
767     case media::VideoCaptureError::kScreenCaptureKitFailedStartCapture:
768       return media::mojom::VideoCaptureError::
769           kScreenCaptureKitFailedStartCapture;
770     case media::VideoCaptureError::kScreenCaptureKitFailedStopCapture:
771       return media::mojom::VideoCaptureError::
772           kScreenCaptureKitFailedStopCapture;
773     case media::VideoCaptureError::kScreenCaptureKitStreamError:
774       return media::mojom::VideoCaptureError::kScreenCaptureKitStreamError;
775     case media::VideoCaptureError::kScreenCaptureKitFailedToFindSCDisplay:
776       return media::mojom::VideoCaptureError::
777           kScreenCaptureKitFailedToFindSCDisplay;
778     case media::VideoCaptureError::
779         kVideoCaptureControllerUnsupportedPixelFormat:
780       return media::mojom::VideoCaptureError::
781           kVideoCaptureControllerUnsupportedPixelFormat;
782     case media::VideoCaptureError::kVideoCaptureControllerInvalid:
783       return media::mojom::VideoCaptureError::kVideoCaptureControllerInvalid;
784     case media::VideoCaptureError::
785         kVideoCaptureDeviceFactoryChromeOSCreateDeviceFailed:
786       return media::mojom::VideoCaptureError::
787           kVideoCaptureDeviceFactoryChromeOSCreateDeviceFailed;
788     case media::VideoCaptureError::kVideoCaptureDeviceAlreadyReleased:
789       return media::mojom::VideoCaptureError::
790           kVideoCaptureDeviceAlreadyReleased;
791     case media::VideoCaptureError::kVideoCaptureSystemDeviceIdNotFound:
792       return media::mojom::VideoCaptureError::
793           kVideoCaptureSystemDeviceIdNotFound;
794     case media::VideoCaptureError::kVideoCaptureDeviceFactoryWinUnknownError:
795       return media::mojom::VideoCaptureError::
796           kVideoCaptureDeviceFactoryWinUnknownError;
797     case media::VideoCaptureError::
798         kWinMediaFoundationDeviceInitializationFailed:
799       return media::mojom::VideoCaptureError::
800           kWinMediaFoundationDeviceInitializationFailed;
801     case media::VideoCaptureError::kWinMediaFoundationSourceCreationFailed:
802       return media::mojom::VideoCaptureError::
803           kWinMediaFoundationSourceCreationFailed;
804     case media::VideoCaptureError::kWinDirectShowDeviceFilterCreationFailed:
805       return media::mojom::VideoCaptureError::
806           kWinDirectShowDeviceFilterCreationFailed;
807     case media::VideoCaptureError::kWinDirectShowDeviceInitializationFailed:
808       return media::mojom::VideoCaptureError::
809           kWinDirectShowDeviceInitializationFailed;
810     case media::VideoCaptureError::kVideoCaptureDeviceFactorySecondCreateDenied:
811       return media::mojom::VideoCaptureError::
812           kVideoCaptureDeviceFactorySecondCreateDenied;
813     case media::VideoCaptureError::kScreenCaptureKitResetStreamError:
814       return media::mojom::VideoCaptureError::kScreenCaptureKitResetStreamError;
815     case media::VideoCaptureError::kWinMediaFoundationCameraBusy:
816       return media::mojom::VideoCaptureError::kWinMediaFoundationCameraBusy;
817   }
818   NOTREACHED_NORETURN();
819 }
820
821 // static
822 bool EnumTraits<media::mojom::VideoCaptureError, media::VideoCaptureError>::
823     FromMojom(media::mojom::VideoCaptureError input,
824               media::VideoCaptureError* output) {
825   switch (input) {
826     case media::mojom::VideoCaptureError::kNone:
827       *output = media::VideoCaptureError::kNone;
828       return true;
829     case media::mojom::VideoCaptureError::
830         kVideoCaptureControllerInvalidOrUnsupportedVideoCaptureParametersRequested:
831       *output = media::VideoCaptureError::
832           kVideoCaptureControllerInvalidOrUnsupportedVideoCaptureParametersRequested;
833       return true;
834     case media::mojom::VideoCaptureError::
835         kVideoCaptureControllerIsAlreadyInErrorState:
836       *output = media::VideoCaptureError::
837           kVideoCaptureControllerIsAlreadyInErrorState;
838       return true;
839     case media::mojom::VideoCaptureError::
840         kVideoCaptureManagerDeviceConnectionLost:
841       *output =
842           media::VideoCaptureError::kVideoCaptureManagerDeviceConnectionLost;
843       return true;
844     case media::mojom::VideoCaptureError::
845         kFrameSinkVideoCaptureDeviceAlreadyEndedOnFatalError:
846       *output = media::VideoCaptureError::
847           kFrameSinkVideoCaptureDeviceAlreadyEndedOnFatalError;
848       return true;
849     case media::mojom::VideoCaptureError::
850         kFrameSinkVideoCaptureDeviceEncounteredFatalError:
851       *output = media::VideoCaptureError::
852           kFrameSinkVideoCaptureDeviceEncounteredFatalError;
853       return true;
854     case media::mojom::VideoCaptureError::kV4L2FailedToOpenV4L2DeviceDriverFile:
855       *output = media::VideoCaptureError::kV4L2FailedToOpenV4L2DeviceDriverFile;
856       return true;
857     case media::mojom::VideoCaptureError::kV4L2ThisIsNotAV4L2VideoCaptureDevice:
858       *output = media::VideoCaptureError::kV4L2ThisIsNotAV4L2VideoCaptureDevice;
859       return true;
860     case media::mojom::VideoCaptureError::
861         kV4L2FailedToFindASupportedCameraFormat:
862       *output =
863           media::VideoCaptureError::kV4L2FailedToFindASupportedCameraFormat;
864       return true;
865     case media::mojom::VideoCaptureError::kV4L2FailedToSetVideoCaptureFormat:
866       *output = media::VideoCaptureError::kV4L2FailedToSetVideoCaptureFormat;
867       return true;
868     case media::mojom::VideoCaptureError::kV4L2UnsupportedPixelFormat:
869       *output = media::VideoCaptureError::kV4L2UnsupportedPixelFormat;
870       return true;
871     case media::mojom::VideoCaptureError::kV4L2FailedToSetCameraFramerate:
872       *output = media::VideoCaptureError::kV4L2FailedToSetCameraFramerate;
873       return true;
874     case media::mojom::VideoCaptureError::kV4L2ErrorRequestingMmapBuffers:
875       *output = media::VideoCaptureError::kV4L2ErrorRequestingMmapBuffers;
876       return true;
877     case media::mojom::VideoCaptureError::kV4L2AllocateBufferFailed:
878       *output = media::VideoCaptureError::kV4L2AllocateBufferFailed;
879       return true;
880     case media::mojom::VideoCaptureError::kV4L2VidiocStreamonFailed:
881       *output = media::VideoCaptureError::kV4L2VidiocStreamonFailed;
882       return true;
883     case media::mojom::VideoCaptureError::kV4L2VidiocStreamoffFailed:
884       *output = media::VideoCaptureError::kV4L2VidiocStreamoffFailed;
885       return true;
886     case media::mojom::VideoCaptureError::kV4L2FailedToVidiocReqbufsWithCount0:
887       *output = media::VideoCaptureError::kV4L2FailedToVidiocReqbufsWithCount0;
888       return true;
889     case media::mojom::VideoCaptureError::kV4L2PollFailed:
890       *output = media::VideoCaptureError::kV4L2PollFailed;
891       return true;
892     case media::mojom::VideoCaptureError::
893         kV4L2MultipleContinuousTimeoutsWhileReadPolling:
894       *output = media::VideoCaptureError::
895           kV4L2MultipleContinuousTimeoutsWhileReadPolling;
896       return true;
897     case media::mojom::VideoCaptureError::kV4L2FailedToDequeueCaptureBuffer:
898       *output = media::VideoCaptureError::kV4L2FailedToDequeueCaptureBuffer;
899       return true;
900     case media::mojom::VideoCaptureError::kV4L2FailedToEnqueueCaptureBuffer:
901       *output = media::VideoCaptureError::kV4L2FailedToEnqueueCaptureBuffer;
902       return true;
903     case media::mojom::VideoCaptureError::
904         kSingleClientVideoCaptureHostLostConnectionToDevice:
905       *output = media::VideoCaptureError::
906           kSingleClientVideoCaptureHostLostConnectionToDevice;
907       return true;
908     case media::mojom::VideoCaptureError::
909         kSingleClientVideoCaptureDeviceLaunchAborted:
910       *output = media::VideoCaptureError::
911           kSingleClientVideoCaptureDeviceLaunchAborted;
912       return true;
913     case media::mojom::VideoCaptureError::
914         kDesktopCaptureDeviceWebrtcDesktopCapturerHasFailed:
915       *output = media::VideoCaptureError::
916           kDesktopCaptureDeviceWebrtcDesktopCapturerHasFailed;
917       return true;
918     case media::mojom::VideoCaptureError::
919         kFileVideoCaptureDeviceCouldNotOpenVideoFile:
920       *output = media::VideoCaptureError::
921           kFileVideoCaptureDeviceCouldNotOpenVideoFile;
922       return true;
923     case media::mojom::VideoCaptureError::
924         kDeviceCaptureLinuxFailedToCreateVideoCaptureDelegate:
925       *output = media::VideoCaptureError::
926           kDeviceCaptureLinuxFailedToCreateVideoCaptureDelegate;
927       return true;
928     case media::mojom::VideoCaptureError::
929         kErrorFakeDeviceIntentionallyEmittingErrorEvent:
930       *output = media::VideoCaptureError::
931           kErrorFakeDeviceIntentionallyEmittingErrorEvent;
932       return true;
933     case media::mojom::VideoCaptureError::kDeviceClientTooManyFramesDroppedY16:
934       *output = media::VideoCaptureError::kDeviceClientTooManyFramesDroppedY16;
935       return true;
936     case media::mojom::VideoCaptureError::
937         kDeviceMediaToMojoAdapterEncounteredUnsupportedBufferType:
938       *output = media::VideoCaptureError::
939           kDeviceMediaToMojoAdapterEncounteredUnsupportedBufferType;
940       return true;
941     case media::mojom::VideoCaptureError::
942         kVideoCaptureManagerProcessDeviceStartQueueDeviceInfoNotFound:
943       *output = media::VideoCaptureError::
944           kVideoCaptureManagerProcessDeviceStartQueueDeviceInfoNotFound;
945       return true;
946     case media::mojom::VideoCaptureError::
947         kInProcessDeviceLauncherFailedToCreateDeviceInstance:
948       *output = media::VideoCaptureError::
949           kInProcessDeviceLauncherFailedToCreateDeviceInstance;
950       return true;
951     case media::mojom::VideoCaptureError::
952         kServiceDeviceLauncherLostConnectionToDeviceFactoryDuringDeviceStart:
953       *output = media::VideoCaptureError::
954           kServiceDeviceLauncherLostConnectionToDeviceFactoryDuringDeviceStart;
955       return true;
956     case media::mojom::VideoCaptureError::
957         kServiceDeviceLauncherServiceRespondedWithDeviceNotFound:
958       *output = media::VideoCaptureError::
959           kServiceDeviceLauncherServiceRespondedWithDeviceNotFound;
960       return true;
961     case media::mojom::VideoCaptureError::
962         kServiceDeviceLauncherConnectionLostWhileWaitingForCallback:
963       *output = media::VideoCaptureError::
964           kServiceDeviceLauncherConnectionLostWhileWaitingForCallback;
965       return true;
966     case media::mojom::VideoCaptureError::kIntentionalErrorRaisedByUnitTest:
967       *output = media::VideoCaptureError::kIntentionalErrorRaisedByUnitTest;
968       return true;
969     case media::mojom::VideoCaptureError::kCrosHalV3FailedToStartDeviceThread:
970       *output = media::VideoCaptureError::kCrosHalV3FailedToStartDeviceThread;
971       return true;
972     case media::mojom::VideoCaptureError::
973         kCrosHalV3DeviceDelegateMojoConnectionError:
974       *output =
975           media::VideoCaptureError::kCrosHalV3DeviceDelegateMojoConnectionError;
976       return true;
977     case media::mojom::VideoCaptureError::
978         kCrosHalV3DeviceDelegateFailedToGetCameraInfo:
979       *output = media::VideoCaptureError::
980           kCrosHalV3DeviceDelegateFailedToGetCameraInfo;
981       return true;
982     case media::mojom::VideoCaptureError::
983         kCrosHalV3DeviceDelegateMissingSensorOrientationInfo:
984       *output = media::VideoCaptureError::
985           kCrosHalV3DeviceDelegateMissingSensorOrientationInfo;
986       return true;
987     case media::mojom::VideoCaptureError::
988         kCrosHalV3DeviceDelegateFailedToOpenCameraDevice:
989       *output = media::VideoCaptureError::
990           kCrosHalV3DeviceDelegateFailedToOpenCameraDevice;
991       return true;
992     case media::mojom::VideoCaptureError::
993         kCrosHalV3DeviceDelegateFailedToInitializeCameraDevice:
994       *output = media::VideoCaptureError::
995           kCrosHalV3DeviceDelegateFailedToInitializeCameraDevice;
996       return true;
997     case media::mojom::VideoCaptureError::
998         kCrosHalV3DeviceDelegateFailedToConfigureStreams:
999       *output = media::VideoCaptureError::
1000           kCrosHalV3DeviceDelegateFailedToConfigureStreams;
1001       return true;
1002     case media::mojom::VideoCaptureError::
1003         kCrosHalV3DeviceDelegateWrongNumberOfStreamsConfigured:
1004       *output = media::VideoCaptureError::
1005           kCrosHalV3DeviceDelegateWrongNumberOfStreamsConfigured;
1006       return true;
1007     case media::mojom::VideoCaptureError::
1008         kCrosHalV3DeviceDelegateFailedToGetDefaultRequestSettings:
1009       *output = media::VideoCaptureError::
1010           kCrosHalV3DeviceDelegateFailedToGetDefaultRequestSettings;
1011       return true;
1012     case media::mojom::VideoCaptureError::
1013         kCrosHalV3BufferManagerHalRequestedTooManyBuffers:
1014       *output = media::VideoCaptureError::
1015           kCrosHalV3BufferManagerHalRequestedTooManyBuffers;
1016       return true;
1017     case media::mojom::VideoCaptureError::
1018         kCrosHalV3BufferManagerFailedToCreateGpuMemoryBuffer:
1019       *output = media::VideoCaptureError::
1020           kCrosHalV3BufferManagerFailedToCreateGpuMemoryBuffer;
1021       return true;
1022     case media::mojom::VideoCaptureError::
1023         kCrosHalV3BufferManagerFailedToMapGpuMemoryBuffer:
1024       *output = media::VideoCaptureError::
1025           kCrosHalV3BufferManagerFailedToMapGpuMemoryBuffer;
1026       return true;
1027     case media::mojom::VideoCaptureError::
1028         kCrosHalV3BufferManagerUnsupportedVideoPixelFormat:
1029       *output = media::VideoCaptureError::
1030           kCrosHalV3BufferManagerUnsupportedVideoPixelFormat;
1031       return true;
1032     case media::mojom::VideoCaptureError::kCrosHalV3BufferManagerFailedToDupFd:
1033       *output = media::VideoCaptureError::kCrosHalV3BufferManagerFailedToDupFd;
1034       return true;
1035     case media::mojom::VideoCaptureError::
1036         kCrosHalV3BufferManagerFailedToWrapGpuMemoryHandle:
1037       *output = media::VideoCaptureError::
1038           kCrosHalV3BufferManagerFailedToWrapGpuMemoryHandle;
1039       return true;
1040     case media::mojom::VideoCaptureError::
1041         kCrosHalV3BufferManagerFailedToRegisterBuffer:
1042       *output = media::VideoCaptureError::
1043           kCrosHalV3BufferManagerFailedToRegisterBuffer;
1044       return true;
1045     case media::mojom::VideoCaptureError::
1046         kCrosHalV3BufferManagerProcessCaptureRequestFailed:
1047       *output = media::VideoCaptureError::
1048           kCrosHalV3BufferManagerProcessCaptureRequestFailed;
1049       return true;
1050     case media::mojom::VideoCaptureError::
1051         kCrosHalV3BufferManagerInvalidPendingResultId:
1052       *output = media::VideoCaptureError::
1053           kCrosHalV3BufferManagerInvalidPendingResultId;
1054       return true;
1055     case media::mojom::VideoCaptureError::
1056         kCrosHalV3BufferManagerReceivedDuplicatedPartialMetadata:
1057       *output = media::VideoCaptureError::
1058           kCrosHalV3BufferManagerReceivedDuplicatedPartialMetadata;
1059       return true;
1060     case media::mojom::VideoCaptureError::
1061         kCrosHalV3BufferManagerIncorrectNumberOfOutputBuffersReceived:
1062       *output = media::VideoCaptureError::
1063           kCrosHalV3BufferManagerIncorrectNumberOfOutputBuffersReceived;
1064       return true;
1065     case media::mojom::VideoCaptureError::
1066         kCrosHalV3BufferManagerInvalidTypeOfOutputBuffersReceived:
1067       *output = media::VideoCaptureError::
1068           kCrosHalV3BufferManagerInvalidTypeOfOutputBuffersReceived;
1069       return true;
1070     case media::mojom::VideoCaptureError::
1071         kCrosHalV3BufferManagerReceivedMultipleResultBuffersForFrame:
1072       *output = media::VideoCaptureError::
1073           kCrosHalV3BufferManagerReceivedMultipleResultBuffersForFrame;
1074       return true;
1075     case media::mojom::VideoCaptureError::
1076         kCrosHalV3BufferManagerUnknownStreamInCamera3NotifyMsg:
1077       *output = media::VideoCaptureError::
1078           kCrosHalV3BufferManagerUnknownStreamInCamera3NotifyMsg;
1079       return true;
1080     case media::mojom::VideoCaptureError::
1081         kCrosHalV3BufferManagerReceivedInvalidShutterTime:
1082       *output = media::VideoCaptureError::
1083           kCrosHalV3BufferManagerReceivedInvalidShutterTime;
1084       return true;
1085     case media::mojom::VideoCaptureError::
1086         kCrosHalV3BufferManagerFatalDeviceError:
1087       *output =
1088           media::VideoCaptureError::kCrosHalV3BufferManagerFatalDeviceError;
1089       return true;
1090     case media::mojom::VideoCaptureError::
1091         kCrosHalV3BufferManagerReceivedFrameIsOutOfOrder:
1092       *output = media::VideoCaptureError::
1093           kCrosHalV3BufferManagerReceivedFrameIsOutOfOrder;
1094       return true;
1095     case media::mojom::VideoCaptureError::
1096         kCrosHalV3BufferManagerFailedToUnwrapReleaseFenceFd:
1097       *output = media::VideoCaptureError::
1098           kCrosHalV3BufferManagerFailedToUnwrapReleaseFenceFd;
1099       return true;
1100     case media::mojom::VideoCaptureError::
1101         kCrosHalV3BufferManagerSyncWaitOnReleaseFenceTimedOut:
1102       *output = media::VideoCaptureError::
1103           kCrosHalV3BufferManagerSyncWaitOnReleaseFenceTimedOut;
1104       return true;
1105     case media::mojom::VideoCaptureError::
1106         kCrosHalV3BufferManagerInvalidJpegBlob:
1107       *output =
1108           media::VideoCaptureError::kCrosHalV3BufferManagerInvalidJpegBlob;
1109       return true;
1110     case media::mojom::VideoCaptureError::kAndroidFailedToAllocate:
1111       *output = media::VideoCaptureError::kAndroidFailedToAllocate;
1112       return true;
1113     case media::mojom::VideoCaptureError::kAndroidFailedToStartCapture:
1114       *output = media::VideoCaptureError::kAndroidFailedToStartCapture;
1115       return true;
1116     case media::mojom::VideoCaptureError::kAndroidFailedToStopCapture:
1117       *output = media::VideoCaptureError::kAndroidFailedToStopCapture;
1118       return true;
1119     case media::mojom::VideoCaptureError::
1120         kAndroidApi1CameraErrorCallbackReceived:
1121       *output =
1122           media::VideoCaptureError::kAndroidApi1CameraErrorCallbackReceived;
1123       return true;
1124     case media::mojom::VideoCaptureError::kAndroidApi2CameraDeviceErrorReceived:
1125       *output = media::VideoCaptureError::kAndroidApi2CameraDeviceErrorReceived;
1126       return true;
1127     case media::mojom::VideoCaptureError::
1128         kAndroidApi2CaptureSessionConfigureFailed:
1129       *output =
1130           media::VideoCaptureError::kAndroidApi2CaptureSessionConfigureFailed;
1131       return true;
1132     case media::mojom::VideoCaptureError::
1133         kAndroidApi2ImageReaderUnexpectedImageFormat:
1134       *output = media::VideoCaptureError::
1135           kAndroidApi2ImageReaderUnexpectedImageFormat;
1136       return true;
1137     case media::mojom::VideoCaptureError::
1138         kAndroidApi2ImageReaderSizeDidNotMatchImageSize:
1139       *output = media::VideoCaptureError::
1140           kAndroidApi2ImageReaderSizeDidNotMatchImageSize;
1141       return true;
1142     case media::mojom::VideoCaptureError::kAndroidApi2ErrorRestartingPreview:
1143       *output = media::VideoCaptureError::kAndroidApi2ErrorRestartingPreview;
1144       return true;
1145     case media::mojom::VideoCaptureError::
1146         kAndroidScreenCaptureUnsupportedFormat:
1147       *output =
1148           media::VideoCaptureError::kAndroidScreenCaptureUnsupportedFormat;
1149       return true;
1150     case media::mojom::VideoCaptureError::
1151         kAndroidScreenCaptureFailedToStartCaptureMachine:
1152       *output = media::VideoCaptureError::
1153           kAndroidScreenCaptureFailedToStartCaptureMachine;
1154       return true;
1155     case media::mojom::VideoCaptureError::
1156         kAndroidScreenCaptureTheUserDeniedScreenCapture:
1157       *output = media::VideoCaptureError::
1158           kAndroidScreenCaptureTheUserDeniedScreenCapture;
1159       return true;
1160     case media::mojom::VideoCaptureError::
1161         kAndroidScreenCaptureFailedToStartScreenCapture:
1162       *output = media::VideoCaptureError::
1163           kAndroidScreenCaptureFailedToStartScreenCapture;
1164       return true;
1165     case media::mojom::VideoCaptureError::
1166         kWinDirectShowCantGetCaptureFormatSettings:
1167       *output =
1168           media::VideoCaptureError::kWinDirectShowCantGetCaptureFormatSettings;
1169       return true;
1170     case media::mojom::VideoCaptureError::
1171         kWinDirectShowFailedToGetNumberOfCapabilities:
1172       *output = media::VideoCaptureError::
1173           kWinDirectShowFailedToGetNumberOfCapabilities;
1174       return true;
1175     case media::mojom::VideoCaptureError::
1176         kWinDirectShowFailedToGetCaptureDeviceCapabilities:
1177       *output = media::VideoCaptureError::
1178           kWinDirectShowFailedToGetCaptureDeviceCapabilities;
1179       return true;
1180     case media::mojom::VideoCaptureError::
1181         kWinDirectShowFailedToSetCaptureDeviceOutputFormat:
1182       *output = media::VideoCaptureError::
1183           kWinDirectShowFailedToSetCaptureDeviceOutputFormat;
1184       return true;
1185     case media::mojom::VideoCaptureError::
1186         kWinDirectShowFailedToConnectTheCaptureGraph:
1187       *output = media::VideoCaptureError::
1188           kWinDirectShowFailedToConnectTheCaptureGraph;
1189       return true;
1190     case media::mojom::VideoCaptureError::
1191         kWinDirectShowFailedToPauseTheCaptureDevice:
1192       *output =
1193           media::VideoCaptureError::kWinDirectShowFailedToPauseTheCaptureDevice;
1194       return true;
1195     case media::mojom::VideoCaptureError::
1196         kWinDirectShowFailedToStartTheCaptureDevice:
1197       *output =
1198           media::VideoCaptureError::kWinDirectShowFailedToStartTheCaptureDevice;
1199       return true;
1200     case media::mojom::VideoCaptureError::
1201         kWinDirectShowFailedToStopTheCaptureGraph:
1202       *output =
1203           media::VideoCaptureError::kWinDirectShowFailedToStopTheCaptureGraph;
1204       return true;
1205     case media::mojom::VideoCaptureError::kWinMediaFoundationEngineIsNull:
1206       *output = media::VideoCaptureError::kWinMediaFoundationEngineIsNull;
1207       return true;
1208     case media::mojom::VideoCaptureError::
1209         kWinMediaFoundationEngineGetSourceFailed:
1210       *output =
1211           media::VideoCaptureError::kWinMediaFoundationEngineGetSourceFailed;
1212       return true;
1213     case media::mojom::VideoCaptureError::
1214         kWinMediaFoundationFillPhotoCapabilitiesFailed:
1215       *output = media::VideoCaptureError::
1216           kWinMediaFoundationFillPhotoCapabilitiesFailed;
1217       return true;
1218     case media::mojom::VideoCaptureError::
1219         kWinMediaFoundationFillVideoCapabilitiesFailed:
1220       *output = media::VideoCaptureError::
1221           kWinMediaFoundationFillVideoCapabilitiesFailed;
1222       return true;
1223     case media::mojom::VideoCaptureError::
1224         kWinMediaFoundationNoVideoCapabilityFound:
1225       *output =
1226           media::VideoCaptureError::kWinMediaFoundationNoVideoCapabilityFound;
1227       return true;
1228     case media::mojom::VideoCaptureError::
1229         kWinMediaFoundationGetAvailableDeviceMediaTypeFailed:
1230       *output = media::VideoCaptureError::
1231           kWinMediaFoundationGetAvailableDeviceMediaTypeFailed;
1232       return true;
1233     case media::mojom::VideoCaptureError::
1234         kWinMediaFoundationSetCurrentDeviceMediaTypeFailed:
1235       *output = media::VideoCaptureError::
1236           kWinMediaFoundationSetCurrentDeviceMediaTypeFailed;
1237       return true;
1238     case media::mojom::VideoCaptureError::
1239         kWinMediaFoundationEngineGetSinkFailed:
1240       *output =
1241           media::VideoCaptureError::kWinMediaFoundationEngineGetSinkFailed;
1242       return true;
1243     case media::mojom::VideoCaptureError::
1244         kWinMediaFoundationSinkQueryCapturePreviewInterfaceFailed:
1245       *output = media::VideoCaptureError::
1246           kWinMediaFoundationSinkQueryCapturePreviewInterfaceFailed;
1247       return true;
1248     case media::mojom::VideoCaptureError::
1249         kWinMediaFoundationSinkRemoveAllStreamsFailed:
1250       *output = media::VideoCaptureError::
1251           kWinMediaFoundationSinkRemoveAllStreamsFailed;
1252       return true;
1253     case media::mojom::VideoCaptureError::
1254         kWinMediaFoundationCreateSinkVideoMediaTypeFailed:
1255       *output = media::VideoCaptureError::
1256           kWinMediaFoundationCreateSinkVideoMediaTypeFailed;
1257       return true;
1258     case media::mojom::VideoCaptureError::
1259         kWinMediaFoundationConvertToVideoSinkMediaTypeFailed:
1260       *output = media::VideoCaptureError::
1261           kWinMediaFoundationConvertToVideoSinkMediaTypeFailed;
1262       return true;
1263     case media::mojom::VideoCaptureError::
1264         kWinMediaFoundationSinkAddStreamFailed:
1265       *output =
1266           media::VideoCaptureError::kWinMediaFoundationSinkAddStreamFailed;
1267       return true;
1268     case media::mojom::VideoCaptureError::
1269         kWinMediaFoundationSinkSetSampleCallbackFailed:
1270       *output = media::VideoCaptureError::
1271           kWinMediaFoundationSinkSetSampleCallbackFailed;
1272       return true;
1273     case media::mojom::VideoCaptureError::
1274         kWinMediaFoundationEngineStartPreviewFailed:
1275       *output =
1276           media::VideoCaptureError::kWinMediaFoundationEngineStartPreviewFailed;
1277       return true;
1278     case media::mojom::VideoCaptureError::
1279         kWinMediaFoundationGetMediaEventStatusFailed:
1280       *output = media::VideoCaptureError::
1281           kWinMediaFoundationGetMediaEventStatusFailed;
1282       return true;
1283     case media::mojom::VideoCaptureError::kMacSetCaptureDeviceFailed:
1284       *output = media::VideoCaptureError::kMacSetCaptureDeviceFailed;
1285       return true;
1286     case media::mojom::VideoCaptureError::kMacCouldNotStartCaptureDevice:
1287       *output = media::VideoCaptureError::kMacCouldNotStartCaptureDevice;
1288       return true;
1289     case media::mojom::VideoCaptureError::
1290         kMacReceivedFrameWithUnexpectedResolution:
1291       *output =
1292           media::VideoCaptureError::kMacReceivedFrameWithUnexpectedResolution;
1293       return true;
1294     case media::mojom::VideoCaptureError::kMacUpdateCaptureResolutionFailed:
1295       *output = media::VideoCaptureError::kMacUpdateCaptureResolutionFailed;
1296       return true;
1297     case media::mojom::VideoCaptureError::
1298         kMacDeckLinkDeviceIdNotFoundInTheSystem:
1299       *output =
1300           media::VideoCaptureError::kMacDeckLinkDeviceIdNotFoundInTheSystem;
1301       return true;
1302     case media::mojom::VideoCaptureError::
1303         kMacDeckLinkErrorQueryingInputInterface:
1304       *output =
1305           media::VideoCaptureError::kMacDeckLinkErrorQueryingInputInterface;
1306       return true;
1307     case media::mojom::VideoCaptureError::
1308         kMacDeckLinkErrorCreatingDisplayModeIterator:
1309       *output = media::VideoCaptureError::
1310           kMacDeckLinkErrorCreatingDisplayModeIterator;
1311       return true;
1312     case media::mojom::VideoCaptureError::kMacDeckLinkCouldNotFindADisplayMode:
1313       *output = media::VideoCaptureError::kMacDeckLinkCouldNotFindADisplayMode;
1314       return true;
1315     case media::mojom::VideoCaptureError::
1316         kMacDeckLinkCouldNotSelectTheVideoFormatWeLike:
1317       *output = media::VideoCaptureError::
1318           kMacDeckLinkCouldNotSelectTheVideoFormatWeLike;
1319       return true;
1320     case media::mojom::VideoCaptureError::kMacDeckLinkCouldNotStartCapturing:
1321       *output = media::VideoCaptureError::kMacDeckLinkCouldNotStartCapturing;
1322       return true;
1323     case media::mojom::VideoCaptureError::kMacDeckLinkUnsupportedPixelFormat:
1324       *output = media::VideoCaptureError::kMacDeckLinkUnsupportedPixelFormat;
1325       return true;
1326     case media::mojom::VideoCaptureError::
1327         kMacAvFoundationReceivedAVCaptureSessionRuntimeErrorNotification:
1328       *output = media::VideoCaptureError::
1329           kMacAvFoundationReceivedAVCaptureSessionRuntimeErrorNotification;
1330       return true;
1331     case media::mojom::VideoCaptureError::kAndroidApi2ErrorConfiguringCamera:
1332       *output = media::VideoCaptureError::kAndroidApi2ErrorConfiguringCamera;
1333       return true;
1334     case media::mojom::VideoCaptureError::kCrosHalV3DeviceDelegateFailedToFlush:
1335       *output = media::VideoCaptureError::kCrosHalV3DeviceDelegateFailedToFlush;
1336       return true;
1337     case media::mojom::VideoCaptureError::kFuchsiaCameraDeviceDisconnected:
1338       *output = media::VideoCaptureError::kFuchsiaCameraDeviceDisconnected;
1339       return true;
1340     case media::mojom::VideoCaptureError::kFuchsiaCameraStreamDisconnected:
1341       *output = media::VideoCaptureError::kFuchsiaCameraStreamDisconnected;
1342       return true;
1343     case media::mojom::VideoCaptureError::kFuchsiaSysmemDidNotSetImageFormat:
1344       *output = media::VideoCaptureError::kFuchsiaSysmemDidNotSetImageFormat;
1345       return true;
1346     case media::mojom::VideoCaptureError::kFuchsiaSysmemInvalidBufferIndex:
1347       *output = media::VideoCaptureError::kFuchsiaSysmemInvalidBufferIndex;
1348       return true;
1349     case media::mojom::VideoCaptureError::kFuchsiaSysmemInvalidBufferSize:
1350       *output = media::VideoCaptureError::kFuchsiaSysmemInvalidBufferSize;
1351       return true;
1352     case media::mojom::VideoCaptureError::kFuchsiaUnsupportedPixelFormat:
1353       *output = media::VideoCaptureError::kFuchsiaUnsupportedPixelFormat;
1354       return true;
1355     case media::mojom::VideoCaptureError::kFuchsiaFailedToMapSysmemBuffer:
1356       *output = media::VideoCaptureError::kFuchsiaFailedToMapSysmemBuffer;
1357       return true;
1358     case media::mojom::VideoCaptureError::
1359         kCrosHalV3DeviceContextDuplicatedClient:
1360       *output =
1361           media::VideoCaptureError::kCrosHalV3DeviceContextDuplicatedClient;
1362       return true;
1363     case media::mojom::VideoCaptureError::
1364         kDesktopCaptureDeviceMacFailedStreamCreate:
1365       *output =
1366           media::VideoCaptureError::kDesktopCaptureDeviceMacFailedStreamCreate;
1367       return true;
1368     case media::mojom::VideoCaptureError::
1369         kDesktopCaptureDeviceMacFailedStreamStart:
1370       *output =
1371           media::VideoCaptureError::kDesktopCaptureDeviceMacFailedStreamStart;
1372       return true;
1373     case media::mojom::VideoCaptureError::
1374         kCrosHalV3BufferManagerFailedToReserveBuffers:
1375       *output = media::VideoCaptureError::
1376           kCrosHalV3BufferManagerFailedToReserveBuffers;
1377       return true;
1378     case media::mojom::VideoCaptureError::
1379         kWinMediaFoundationSystemPermissionDenied:
1380       *output =
1381           media::VideoCaptureError::kWinMediaFoundationSystemPermissionDenied;
1382       return true;
1383     case media::mojom::VideoCaptureError::kVideoCaptureImplTimedOutOnStart:
1384       *output = media::VideoCaptureError::kVideoCaptureImplTimedOutOnStart;
1385       return true;
1386     case media::mojom::VideoCaptureError::
1387         kLacrosVideoCaptureDeviceProxyAlreadyEndedOnFatalError:
1388       *output = media::VideoCaptureError::
1389           kLacrosVideoCaptureDeviceProxyAlreadyEndedOnFatalError;
1390       return true;
1391     case media::mojom::VideoCaptureError::
1392         kLacrosVideoCaptureDeviceProxyEncounteredFatalError:
1393       *output = media::VideoCaptureError::
1394           kLacrosVideoCaptureDeviceProxyEncounteredFatalError;
1395       return true;
1396     case media::mojom::VideoCaptureError::
1397         kScreenCaptureKitFailedGetShareableContent:
1398       *output =
1399           media::VideoCaptureError::kScreenCaptureKitFailedGetShareableContent;
1400       return true;
1401     case media::mojom::VideoCaptureError::
1402         kScreenCaptureKitFailedAddStreamOutput:
1403       *output =
1404           media::VideoCaptureError::kScreenCaptureKitFailedAddStreamOutput;
1405       return true;
1406     case media::mojom::VideoCaptureError::kScreenCaptureKitFailedStartCapture:
1407       *output = media::VideoCaptureError::kScreenCaptureKitFailedStartCapture;
1408       return true;
1409     case media::mojom::VideoCaptureError::kScreenCaptureKitFailedStopCapture:
1410       *output = media::VideoCaptureError::kScreenCaptureKitFailedStopCapture;
1411       return true;
1412     case media::mojom::VideoCaptureError::kScreenCaptureKitStreamError:
1413       *output = media::VideoCaptureError::kScreenCaptureKitStreamError;
1414       return true;
1415     case media::mojom::VideoCaptureError::
1416         kScreenCaptureKitFailedToFindSCDisplay:
1417       *output =
1418           media::VideoCaptureError::kScreenCaptureKitFailedToFindSCDisplay;
1419       return true;
1420     case media::mojom::VideoCaptureError::
1421         kVideoCaptureControllerUnsupportedPixelFormat:
1422       *output = media::VideoCaptureError::
1423           kVideoCaptureControllerUnsupportedPixelFormat;
1424       return true;
1425     case media::mojom::VideoCaptureError::kVideoCaptureControllerInvalid:
1426       *output = media::VideoCaptureError::kVideoCaptureControllerInvalid;
1427       return true;
1428     case media::mojom::VideoCaptureError::
1429         kVideoCaptureDeviceFactoryChromeOSCreateDeviceFailed:
1430       *output = media::VideoCaptureError::
1431           kVideoCaptureDeviceFactoryChromeOSCreateDeviceFailed;
1432       return true;
1433     case media::mojom::VideoCaptureError::kVideoCaptureDeviceAlreadyReleased:
1434       *output = media::VideoCaptureError::kVideoCaptureDeviceAlreadyReleased;
1435       return true;
1436     case media::mojom::VideoCaptureError::kVideoCaptureSystemDeviceIdNotFound:
1437       *output = media::VideoCaptureError::kVideoCaptureSystemDeviceIdNotFound;
1438       return true;
1439     case media::mojom::VideoCaptureError::
1440         kVideoCaptureDeviceFactoryWinUnknownError:
1441       *output =
1442           media::VideoCaptureError::kVideoCaptureDeviceFactoryWinUnknownError;
1443       return true;
1444     case media::mojom::VideoCaptureError::
1445         kWinMediaFoundationDeviceInitializationFailed:
1446       *output = media::VideoCaptureError::
1447           kWinMediaFoundationDeviceInitializationFailed;
1448       return true;
1449     case media::mojom::VideoCaptureError::
1450         kWinMediaFoundationSourceCreationFailed:
1451       *output =
1452           media::VideoCaptureError::kWinMediaFoundationSourceCreationFailed;
1453       return true;
1454     case media::mojom::VideoCaptureError::
1455         kWinDirectShowDeviceFilterCreationFailed:
1456       *output =
1457           media::VideoCaptureError::kWinDirectShowDeviceFilterCreationFailed;
1458       return true;
1459     case media::mojom::VideoCaptureError::
1460         kWinDirectShowDeviceInitializationFailed:
1461       *output =
1462           media::VideoCaptureError::kWinDirectShowDeviceInitializationFailed;
1463       return true;
1464     case media::mojom::VideoCaptureError::
1465         kVideoCaptureDeviceFactorySecondCreateDenied:
1466       *output = media::VideoCaptureError::
1467           kVideoCaptureDeviceFactorySecondCreateDenied;
1468       return true;
1469     case media::mojom::VideoCaptureError::kScreenCaptureKitResetStreamError:
1470       *output = media::VideoCaptureError::kScreenCaptureKitResetStreamError;
1471       return true;
1472     case media::mojom::VideoCaptureError::kWinMediaFoundationCameraBusy:
1473       *output = media::VideoCaptureError::kWinMediaFoundationCameraBusy;
1474       return true;
1475   }
1476   NOTREACHED_NORETURN();
1477 }
1478
1479 // static
1480 media::mojom::VideoCaptureFrameDropReason
1481 EnumTraits<media::mojom::VideoCaptureFrameDropReason,
1482            media::VideoCaptureFrameDropReason>::
1483     ToMojom(media::VideoCaptureFrameDropReason input) {
1484   switch (input) {
1485     case media::VideoCaptureFrameDropReason::kNone:
1486       return media::mojom::VideoCaptureFrameDropReason::kNone;
1487     case media::VideoCaptureFrameDropReason::kDeviceClientFrameHasInvalidFormat:
1488       return media::mojom::VideoCaptureFrameDropReason::
1489           kDeviceClientFrameHasInvalidFormat;
1490     case media::VideoCaptureFrameDropReason::
1491         kDeviceClientLibyuvConvertToI420Failed:
1492       return media::mojom::VideoCaptureFrameDropReason::
1493           kDeviceClientLibyuvConvertToI420Failed;
1494     case media::VideoCaptureFrameDropReason::kV4L2BufferErrorFlagWasSet:
1495       return media::mojom::VideoCaptureFrameDropReason::
1496           kV4L2BufferErrorFlagWasSet;
1497     case media::VideoCaptureFrameDropReason::kV4L2InvalidNumberOfBytesInBuffer:
1498       return media::mojom::VideoCaptureFrameDropReason::
1499           kV4L2InvalidNumberOfBytesInBuffer;
1500     case media::VideoCaptureFrameDropReason::kAndroidThrottling:
1501       return media::mojom::VideoCaptureFrameDropReason::kAndroidThrottling;
1502     case media::VideoCaptureFrameDropReason::kAndroidGetByteArrayElementsFailed:
1503       return media::mojom::VideoCaptureFrameDropReason::
1504           kAndroidGetByteArrayElementsFailed;
1505     case media::VideoCaptureFrameDropReason::kAndroidApi1UnexpectedDataLength:
1506       return media::mojom::VideoCaptureFrameDropReason::
1507           kAndroidApi1UnexpectedDataLength;
1508     case media::VideoCaptureFrameDropReason::kAndroidApi2AcquiredImageIsNull:
1509       return media::mojom::VideoCaptureFrameDropReason::
1510           kAndroidApi2AcquiredImageIsNull;
1511     case media::VideoCaptureFrameDropReason::
1512         kWinDirectShowUnexpectedSampleLength:
1513       return media::mojom::VideoCaptureFrameDropReason::
1514           kWinDirectShowUnexpectedSampleLength;
1515     case media::VideoCaptureFrameDropReason::
1516         kWinDirectShowFailedToGetMemoryPointerFromMediaSample:
1517       return media::mojom::VideoCaptureFrameDropReason::
1518           kWinDirectShowFailedToGetMemoryPointerFromMediaSample;
1519     case media::VideoCaptureFrameDropReason::
1520         kWinMediaFoundationReceivedSampleIsNull:
1521       return media::mojom::VideoCaptureFrameDropReason::
1522           kWinMediaFoundationReceivedSampleIsNull;
1523     case media::VideoCaptureFrameDropReason::
1524         kWinMediaFoundationLockingBufferDelieveredNullptr:
1525       return media::mojom::VideoCaptureFrameDropReason::
1526           kWinMediaFoundationLockingBufferDelieveredNullptr;
1527     case media::VideoCaptureFrameDropReason::
1528         kWinMediaFoundationGetBufferByIndexReturnedNull:
1529       return media::mojom::VideoCaptureFrameDropReason::
1530           kWinMediaFoundationGetBufferByIndexReturnedNull;
1531     case media::VideoCaptureFrameDropReason::kBufferPoolMaxBufferCountExceeded:
1532       return media::mojom::VideoCaptureFrameDropReason::
1533           kBufferPoolMaxBufferCountExceeded;
1534     case media::VideoCaptureFrameDropReason::kBufferPoolBufferAllocationFailed:
1535       return media::mojom::VideoCaptureFrameDropReason::
1536           kBufferPoolBufferAllocationFailed;
1537     case media::VideoCaptureFrameDropReason::kVideoCaptureImplNotInStartedState:
1538       return media::mojom::VideoCaptureFrameDropReason::
1539           kVideoCaptureImplNotInStartedState;
1540     case media::VideoCaptureFrameDropReason::
1541         kVideoCaptureImplFailedToWrapDataAsMediaVideoFrame:
1542       return media::mojom::VideoCaptureFrameDropReason::
1543           kVideoCaptureImplFailedToWrapDataAsMediaVideoFrame;
1544     case media::VideoCaptureFrameDropReason::
1545         kVideoTrackAdapterHasNoResolutionAdapters:
1546       return media::mojom::VideoCaptureFrameDropReason::
1547           kVideoTrackAdapterHasNoResolutionAdapters;
1548     case media::VideoCaptureFrameDropReason::kResolutionAdapterFrameIsNotValid:
1549       return media::mojom::VideoCaptureFrameDropReason::
1550           kResolutionAdapterFrameIsNotValid;
1551     case media::VideoCaptureFrameDropReason::
1552         kResolutionAdapterWrappingFrameForCroppingFailed:
1553       return media::mojom::VideoCaptureFrameDropReason::
1554           kResolutionAdapterWrappingFrameForCroppingFailed;
1555     case media::VideoCaptureFrameDropReason::
1556         kResolutionAdapterFrameRateIsHigherThanRequested:
1557       return media::mojom::VideoCaptureFrameDropReason::
1558           kResolutionAdapterFrameRateIsHigherThanRequested;
1559     case media::VideoCaptureFrameDropReason::kResolutionAdapterHasNoCallbacks:
1560       return media::mojom::VideoCaptureFrameDropReason::
1561           kResolutionAdapterHasNoCallbacks;
1562     case media::VideoCaptureFrameDropReason::
1563         kVideoTrackFrameDelivererNotEnabledReplacingWithBlackFrame:
1564       return media::mojom::VideoCaptureFrameDropReason::
1565           kVideoTrackFrameDelivererNotEnabledReplacingWithBlackFrame;
1566     case media::VideoCaptureFrameDropReason::
1567         kRendererSinkFrameDelivererIsNotStarted:
1568       return media::mojom::VideoCaptureFrameDropReason::
1569           kRendererSinkFrameDelivererIsNotStarted;
1570     case media::VideoCaptureFrameDropReason::kCropVersionNotCurrent_DEPRECATED:
1571       return media::mojom::VideoCaptureFrameDropReason::
1572           kCropVersionNotCurrent_DEPRECATED;
1573     case media::VideoCaptureFrameDropReason::kGpuMemoryBufferMapFailed:
1574       return media::mojom::VideoCaptureFrameDropReason::
1575           kGpuMemoryBufferMapFailed;
1576     case media::VideoCaptureFrameDropReason::kSubCaptureTargetVersionNotCurrent:
1577       return media::mojom::VideoCaptureFrameDropReason::
1578           kSubCaptureTargetVersionNotCurrent;
1579   }
1580   NOTREACHED_NORETURN();
1581 }
1582
1583 // static
1584 bool EnumTraits<media::mojom::VideoCaptureFrameDropReason,
1585                 media::VideoCaptureFrameDropReason>::
1586     FromMojom(media::mojom::VideoCaptureFrameDropReason input,
1587               media::VideoCaptureFrameDropReason* output) {
1588   switch (input) {
1589     case media::mojom::VideoCaptureFrameDropReason::kNone:
1590       *output = media::VideoCaptureFrameDropReason::kNone;
1591       return true;
1592     case media::mojom::VideoCaptureFrameDropReason::
1593         kDeviceClientFrameHasInvalidFormat:
1594       *output = media::VideoCaptureFrameDropReason::
1595           kDeviceClientFrameHasInvalidFormat;
1596       return true;
1597     case media::mojom::VideoCaptureFrameDropReason::
1598         kDeviceClientLibyuvConvertToI420Failed:
1599       *output = media::VideoCaptureFrameDropReason::
1600           kDeviceClientLibyuvConvertToI420Failed;
1601       return true;
1602     case media::mojom::VideoCaptureFrameDropReason::kV4L2BufferErrorFlagWasSet:
1603       *output = media::VideoCaptureFrameDropReason::kV4L2BufferErrorFlagWasSet;
1604       return true;
1605     case media::mojom::VideoCaptureFrameDropReason::
1606         kV4L2InvalidNumberOfBytesInBuffer:
1607       *output =
1608           media::VideoCaptureFrameDropReason::kV4L2InvalidNumberOfBytesInBuffer;
1609       return true;
1610     case media::mojom::VideoCaptureFrameDropReason::kAndroidThrottling:
1611       *output = media::VideoCaptureFrameDropReason::kAndroidThrottling;
1612       return true;
1613     case media::mojom::VideoCaptureFrameDropReason::
1614         kAndroidGetByteArrayElementsFailed:
1615       *output = media::VideoCaptureFrameDropReason::
1616           kAndroidGetByteArrayElementsFailed;
1617       return true;
1618     case media::mojom::VideoCaptureFrameDropReason::
1619         kAndroidApi1UnexpectedDataLength:
1620       *output =
1621           media::VideoCaptureFrameDropReason::kAndroidApi1UnexpectedDataLength;
1622       return true;
1623     case media::mojom::VideoCaptureFrameDropReason::
1624         kAndroidApi2AcquiredImageIsNull:
1625       *output =
1626           media::VideoCaptureFrameDropReason::kAndroidApi2AcquiredImageIsNull;
1627       return true;
1628     case media::mojom::VideoCaptureFrameDropReason::
1629         kWinDirectShowUnexpectedSampleLength:
1630       *output = media::VideoCaptureFrameDropReason::
1631           kWinDirectShowUnexpectedSampleLength;
1632       return true;
1633     case media::mojom::VideoCaptureFrameDropReason::
1634         kWinDirectShowFailedToGetMemoryPointerFromMediaSample:
1635       *output = media::VideoCaptureFrameDropReason::
1636           kWinDirectShowFailedToGetMemoryPointerFromMediaSample;
1637       return true;
1638     case media::mojom::VideoCaptureFrameDropReason::
1639         kWinMediaFoundationReceivedSampleIsNull:
1640       *output = media::VideoCaptureFrameDropReason::
1641           kWinMediaFoundationReceivedSampleIsNull;
1642       return true;
1643     case media::mojom::VideoCaptureFrameDropReason::
1644         kWinMediaFoundationLockingBufferDelieveredNullptr:
1645       *output = media::VideoCaptureFrameDropReason::
1646           kWinMediaFoundationLockingBufferDelieveredNullptr;
1647       return true;
1648     case media::mojom::VideoCaptureFrameDropReason::
1649         kWinMediaFoundationGetBufferByIndexReturnedNull:
1650       *output = media::VideoCaptureFrameDropReason::
1651           kWinMediaFoundationGetBufferByIndexReturnedNull;
1652       return true;
1653     case media::mojom::VideoCaptureFrameDropReason::
1654         kBufferPoolMaxBufferCountExceeded:
1655       *output =
1656           media::VideoCaptureFrameDropReason::kBufferPoolMaxBufferCountExceeded;
1657       return true;
1658     case media::mojom::VideoCaptureFrameDropReason::
1659         kBufferPoolBufferAllocationFailed:
1660       *output =
1661           media::VideoCaptureFrameDropReason::kBufferPoolBufferAllocationFailed;
1662       return true;
1663     case media::mojom::VideoCaptureFrameDropReason::
1664         kVideoCaptureImplNotInStartedState:
1665       *output = media::VideoCaptureFrameDropReason::
1666           kVideoCaptureImplNotInStartedState;
1667       return true;
1668     case media::mojom::VideoCaptureFrameDropReason::
1669         kVideoCaptureImplFailedToWrapDataAsMediaVideoFrame:
1670       *output = media::VideoCaptureFrameDropReason::
1671           kVideoCaptureImplFailedToWrapDataAsMediaVideoFrame;
1672       return true;
1673     case media::mojom::VideoCaptureFrameDropReason::
1674         kVideoTrackAdapterHasNoResolutionAdapters:
1675       *output = media::VideoCaptureFrameDropReason::
1676           kVideoTrackAdapterHasNoResolutionAdapters;
1677       return true;
1678     case media::mojom::VideoCaptureFrameDropReason::
1679         kResolutionAdapterFrameIsNotValid:
1680       *output =
1681           media::VideoCaptureFrameDropReason::kResolutionAdapterFrameIsNotValid;
1682       return true;
1683     case media::mojom::VideoCaptureFrameDropReason::
1684         kResolutionAdapterWrappingFrameForCroppingFailed:
1685       *output = media::VideoCaptureFrameDropReason::
1686           kResolutionAdapterWrappingFrameForCroppingFailed;
1687       return true;
1688     case media::mojom::VideoCaptureFrameDropReason::
1689         kResolutionAdapterTimestampTooCloseToPrevious_DEPRECATED:
1690       NOTREACHED();
1691       return false;
1692     case media::mojom::VideoCaptureFrameDropReason::
1693         kResolutionAdapterFrameRateIsHigherThanRequested:
1694       *output = media::VideoCaptureFrameDropReason::
1695           kResolutionAdapterFrameRateIsHigherThanRequested;
1696       return true;
1697     case media::mojom::VideoCaptureFrameDropReason::
1698         kResolutionAdapterHasNoCallbacks:
1699       *output =
1700           media::VideoCaptureFrameDropReason::kResolutionAdapterHasNoCallbacks;
1701       return true;
1702     case media::mojom::VideoCaptureFrameDropReason::
1703         kVideoTrackFrameDelivererNotEnabledReplacingWithBlackFrame:
1704       *output = media::VideoCaptureFrameDropReason::
1705           kVideoTrackFrameDelivererNotEnabledReplacingWithBlackFrame;
1706       return true;
1707     case media::mojom::VideoCaptureFrameDropReason::
1708         kRendererSinkFrameDelivererIsNotStarted:
1709       *output = media::VideoCaptureFrameDropReason::
1710           kRendererSinkFrameDelivererIsNotStarted;
1711       return true;
1712     case media::mojom::VideoCaptureFrameDropReason::
1713         kCropVersionNotCurrent_DEPRECATED:
1714       *output =
1715           media::VideoCaptureFrameDropReason::kCropVersionNotCurrent_DEPRECATED;
1716       return true;
1717     case media::mojom::VideoCaptureFrameDropReason::kGpuMemoryBufferMapFailed:
1718       *output = media::VideoCaptureFrameDropReason::kGpuMemoryBufferMapFailed;
1719       return true;
1720     case media::mojom::VideoCaptureFrameDropReason::
1721         kSubCaptureTargetVersionNotCurrent:
1722       *output = media::VideoCaptureFrameDropReason::
1723           kSubCaptureTargetVersionNotCurrent;
1724       return true;
1725   }
1726   NOTREACHED_NORETURN();
1727 }
1728
1729 // static
1730 media::mojom::VideoFacingMode
1731 EnumTraits<media::mojom::VideoFacingMode, media::VideoFacingMode>::ToMojom(
1732     media::VideoFacingMode input) {
1733   switch (input) {
1734     case media::VideoFacingMode::MEDIA_VIDEO_FACING_NONE:
1735       return media::mojom::VideoFacingMode::NONE;
1736     case media::VideoFacingMode::MEDIA_VIDEO_FACING_USER:
1737       return media::mojom::VideoFacingMode::USER;
1738     case media::VideoFacingMode::MEDIA_VIDEO_FACING_ENVIRONMENT:
1739       return media::mojom::VideoFacingMode::ENVIRONMENT;
1740     case media::VideoFacingMode::NUM_MEDIA_VIDEO_FACING_MODES:
1741       NOTREACHED_NORETURN();
1742   }
1743   NOTREACHED_NORETURN();
1744 }
1745
1746 // static
1747 bool EnumTraits<media::mojom::VideoFacingMode, media::VideoFacingMode>::
1748     FromMojom(media::mojom::VideoFacingMode input,
1749               media::VideoFacingMode* output) {
1750   switch (input) {
1751     case media::mojom::VideoFacingMode::NONE:
1752       *output = media::VideoFacingMode::MEDIA_VIDEO_FACING_NONE;
1753       return true;
1754     case media::mojom::VideoFacingMode::USER:
1755       *output = media::VideoFacingMode::MEDIA_VIDEO_FACING_USER;
1756       return true;
1757     case media::mojom::VideoFacingMode::ENVIRONMENT:
1758       *output = media::VideoFacingMode::MEDIA_VIDEO_FACING_ENVIRONMENT;
1759       return true;
1760   }
1761   NOTREACHED_NORETURN();
1762 }
1763
1764 // static
1765 media::mojom::VideoCaptureApi
1766 EnumTraits<media::mojom::VideoCaptureApi, media::VideoCaptureApi>::ToMojom(
1767     media::VideoCaptureApi input) {
1768   switch (input) {
1769     case media::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE:
1770       return media::mojom::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
1771     case media::VideoCaptureApi::WIN_MEDIA_FOUNDATION:
1772       return media::mojom::VideoCaptureApi::WIN_MEDIA_FOUNDATION;
1773     case media::VideoCaptureApi::WIN_MEDIA_FOUNDATION_SENSOR:
1774       return media::mojom::VideoCaptureApi::WIN_MEDIA_FOUNDATION_SENSOR;
1775     case media::VideoCaptureApi::WIN_DIRECT_SHOW:
1776       return media::mojom::VideoCaptureApi::WIN_DIRECT_SHOW;
1777     case media::VideoCaptureApi::MACOSX_AVFOUNDATION:
1778       return media::mojom::VideoCaptureApi::MACOSX_AVFOUNDATION;
1779     case media::VideoCaptureApi::MACOSX_DECKLINK:
1780       return media::mojom::VideoCaptureApi::MACOSX_DECKLINK;
1781     case media::VideoCaptureApi::ANDROID_API1:
1782       return media::mojom::VideoCaptureApi::ANDROID_API1;
1783     case media::VideoCaptureApi::ANDROID_API2_LEGACY:
1784       return media::mojom::VideoCaptureApi::ANDROID_API2_LEGACY;
1785     case media::VideoCaptureApi::ANDROID_API2_FULL:
1786       return media::mojom::VideoCaptureApi::ANDROID_API2_FULL;
1787     case media::VideoCaptureApi::ANDROID_API2_LIMITED:
1788       return media::mojom::VideoCaptureApi::ANDROID_API2_LIMITED;
1789     case media::VideoCaptureApi::FUCHSIA_CAMERA3:
1790       return media::mojom::VideoCaptureApi::FUCHSIA_CAMERA3;
1791     case media::VideoCaptureApi::VIRTUAL_DEVICE:
1792       return media::mojom::VideoCaptureApi::VIRTUAL_DEVICE;
1793     case media::VideoCaptureApi::UNKNOWN:
1794       return media::mojom::VideoCaptureApi::UNKNOWN;
1795   }
1796   NOTREACHED_NORETURN();
1797 }
1798
1799 // static
1800 bool EnumTraits<media::mojom::VideoCaptureApi, media::VideoCaptureApi>::
1801     FromMojom(media::mojom::VideoCaptureApi input,
1802               media::VideoCaptureApi* output) {
1803   switch (input) {
1804     case media::mojom::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE:
1805       *output = media::VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
1806       return true;
1807     case media::mojom::VideoCaptureApi::WIN_MEDIA_FOUNDATION:
1808       *output = media::VideoCaptureApi::WIN_MEDIA_FOUNDATION;
1809       return true;
1810     case media::mojom::VideoCaptureApi::WIN_MEDIA_FOUNDATION_SENSOR:
1811       *output = media::VideoCaptureApi::WIN_MEDIA_FOUNDATION_SENSOR;
1812       return true;
1813     case media::mojom::VideoCaptureApi::WIN_DIRECT_SHOW:
1814       *output = media::VideoCaptureApi::WIN_DIRECT_SHOW;
1815       return true;
1816     case media::mojom::VideoCaptureApi::MACOSX_AVFOUNDATION:
1817       *output = media::VideoCaptureApi::MACOSX_AVFOUNDATION;
1818       return true;
1819     case media::mojom::VideoCaptureApi::MACOSX_DECKLINK:
1820       *output = media::VideoCaptureApi::MACOSX_DECKLINK;
1821       return true;
1822     case media::mojom::VideoCaptureApi::ANDROID_API1:
1823       *output = media::VideoCaptureApi::ANDROID_API1;
1824       return true;
1825     case media::mojom::VideoCaptureApi::ANDROID_API2_LEGACY:
1826       *output = media::VideoCaptureApi::ANDROID_API2_LEGACY;
1827       return true;
1828     case media::mojom::VideoCaptureApi::ANDROID_API2_FULL:
1829       *output = media::VideoCaptureApi::ANDROID_API2_FULL;
1830       return true;
1831     case media::mojom::VideoCaptureApi::ANDROID_API2_LIMITED:
1832       *output = media::VideoCaptureApi::ANDROID_API2_LIMITED;
1833       return true;
1834     case media::mojom::VideoCaptureApi::FUCHSIA_CAMERA3:
1835       *output = media::VideoCaptureApi::FUCHSIA_CAMERA3;
1836       return true;
1837     case media::mojom::VideoCaptureApi::VIRTUAL_DEVICE:
1838       *output = media::VideoCaptureApi::VIRTUAL_DEVICE;
1839       return true;
1840     case media::mojom::VideoCaptureApi::UNKNOWN:
1841       *output = media::VideoCaptureApi::UNKNOWN;
1842       return true;
1843   }
1844   NOTREACHED_NORETURN();
1845 }
1846
1847 // static
1848 media::mojom::VideoCaptureTransportType EnumTraits<
1849     media::mojom::VideoCaptureTransportType,
1850     media::VideoCaptureTransportType>::ToMojom(media::VideoCaptureTransportType
1851                                                    input) {
1852   switch (input) {
1853     case media::VideoCaptureTransportType::APPLE_USB_OR_BUILT_IN:
1854       return media::mojom::VideoCaptureTransportType::APPLE_USB_OR_BUILT_IN;
1855     case media::VideoCaptureTransportType::OTHER_TRANSPORT:
1856       return media::mojom::VideoCaptureTransportType::OTHER_TRANSPORT;
1857   }
1858   NOTREACHED_NORETURN();
1859 }
1860
1861 // static
1862 bool EnumTraits<media::mojom::VideoCaptureTransportType,
1863                 media::VideoCaptureTransportType>::
1864     FromMojom(media::mojom::VideoCaptureTransportType input,
1865               media::VideoCaptureTransportType* output) {
1866   switch (input) {
1867     case media::mojom::VideoCaptureTransportType::APPLE_USB_OR_BUILT_IN:
1868       *output = media::VideoCaptureTransportType::APPLE_USB_OR_BUILT_IN;
1869       return true;
1870     case media::mojom::VideoCaptureTransportType::OTHER_TRANSPORT:
1871       *output = media::VideoCaptureTransportType::OTHER_TRANSPORT;
1872       return true;
1873   }
1874   NOTREACHED_NORETURN();
1875 }
1876
1877 // static
1878 bool StructTraits<media::mojom::VideoCaptureControlSupportDataView,
1879                   media::VideoCaptureControlSupport>::
1880     Read(media::mojom::VideoCaptureControlSupportDataView data,
1881          media::VideoCaptureControlSupport* out) {
1882   out->pan = data.pan();
1883   out->tilt = data.tilt();
1884   out->zoom = data.zoom();
1885   return true;
1886 }
1887
1888 // static
1889 bool StructTraits<media::mojom::VideoCaptureFormatDataView,
1890                   media::VideoCaptureFormat>::
1891     Read(media::mojom::VideoCaptureFormatDataView data,
1892          media::VideoCaptureFormat* out) {
1893   if (!data.ReadFrameSize(&out->frame_size))
1894     return false;
1895   out->frame_rate = data.frame_rate();
1896   if (!data.ReadPixelFormat(&out->pixel_format))
1897     return false;
1898   return true;
1899 }
1900
1901 // static
1902 bool StructTraits<media::mojom::VideoCaptureParamsDataView,
1903                   media::VideoCaptureParams>::
1904     Read(media::mojom::VideoCaptureParamsDataView data,
1905          media::VideoCaptureParams* out) {
1906   if (!data.ReadRequestedFormat(&out->requested_format))
1907     return false;
1908   if (!data.ReadBufferType(&out->buffer_type))
1909     return false;
1910   if (!data.ReadResolutionChangePolicy(&out->resolution_change_policy))
1911     return false;
1912   if (!data.ReadPowerLineFrequency(&out->power_line_frequency))
1913     return false;
1914   out->enable_face_detection = data.enable_face_detection();
1915   out->is_high_dpi_enabled = data.is_high_dpi_enabled();
1916 #if defined(TIZEN_MULTIMEDIA)
1917   out->lazy_start = data.lazy_start();
1918 #endif
1919   return true;
1920 }
1921
1922 // static
1923 bool StructTraits<media::mojom::VideoCaptureDeviceDescriptorDataView,
1924                   media::VideoCaptureDeviceDescriptor>::
1925     Read(media::mojom::VideoCaptureDeviceDescriptorDataView data,
1926          media::VideoCaptureDeviceDescriptor* output) {
1927   std::string display_name;
1928   if (!data.ReadDisplayName(&display_name))
1929     return false;
1930   output->set_display_name(display_name);
1931   if (!data.ReadDeviceId(&(output->device_id)))
1932     return false;
1933   if (!data.ReadModelId(&(output->model_id)))
1934     return false;
1935   if (!data.ReadFacingMode(&(output->facing)))
1936     return false;
1937   if (!data.ReadCaptureApi(&(output->capture_api)))
1938     return false;
1939   media::VideoCaptureControlSupport control_support;
1940   if (!data.ReadControlSupport(&control_support))
1941     return false;
1942   output->set_control_support(control_support);
1943   if (!data.ReadTransportType(&(output->transport_type)))
1944     return false;
1945   return true;
1946 }
1947
1948 // static
1949 bool StructTraits<media::mojom::VideoCaptureDeviceInfoDataView,
1950                   media::VideoCaptureDeviceInfo>::
1951     Read(media::mojom::VideoCaptureDeviceInfoDataView data,
1952          media::VideoCaptureDeviceInfo* output) {
1953   if (!data.ReadDescriptor(&(output->descriptor)))
1954     return false;
1955   if (!data.ReadSupportedFormats(&(output->supported_formats)))
1956     return false;
1957   return true;
1958 }
1959
1960 // static
1961 bool StructTraits<media::mojom::VideoCaptureFeedbackDataView,
1962                   media::VideoCaptureFeedback>::
1963     Read(media::mojom::VideoCaptureFeedbackDataView data,
1964          media::VideoCaptureFeedback* output) {
1965   output->max_framerate_fps = data.max_framerate_fps();
1966   output->max_pixels = data.max_pixels();
1967   output->resource_utilization = data.resource_utilization();
1968   output->require_mapped_frame = data.require_mapped_frame();
1969
1970   // Only need to set the frame_id if it's valid; otherwise it is default
1971   // initialized to nullopt.
1972   if (data.has_frame_id())
1973     output->frame_id = data.frame_id();
1974   return true;
1975 }
1976
1977 }  // namespace mojo