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