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

Side by Side Diff: services/video_capture/mojo_media_conversions.cc

Issue 2376013002: [Mojo Video Capture] Move conversions between mojom and media types to a separate file (Closed)
Patch Set: mcasas' comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/logging.h" 5 #include "services/video_capture/mojo_media_conversions.h"
6 #include "services/video_capture/device_client_mojo_to_media_adapter.h"
7 #include "services/video_capture/video_capture_device_proxy_impl.h"
8 6
9 namespace video_capture { 7 namespace video_capture {
10 8
11 VideoCaptureDeviceProxyImpl::VideoCaptureDeviceProxyImpl( 9 media::VideoCaptureFormat ConvertFromMojoToMedia(
12 std::unique_ptr<media::VideoCaptureDevice> device)
13 : device_(std::move(device)) {}
14
15 VideoCaptureDeviceProxyImpl::~VideoCaptureDeviceProxyImpl() {
16 if (device_running_)
17 device_->StopAndDeAllocate();
18 }
19
20 void VideoCaptureDeviceProxyImpl::Start(
21 mojom::VideoCaptureFormatPtr requested_format,
22 mojom::ResolutionChangePolicy resolution_change_policy,
23 mojom::PowerLineFrequency power_line_frequency,
24 mojom::VideoCaptureDeviceClientPtr client) {
25 media::VideoCaptureParams params;
26 params.requested_format = ConvertFromMojoToMedia(std::move(requested_format));
27 params.resolution_change_policy =
28 ConvertFromMojoToMedia(resolution_change_policy);
29 params.power_line_frequency = ConvertFromMojoToMedia(power_line_frequency);
30 client.set_connection_error_handler(
31 base::Bind(&VideoCaptureDeviceProxyImpl::OnClientConnectionErrorOrClose,
32 base::Unretained(this)));
33 auto media_client =
34 base::MakeUnique<DeviceClientMojoToMediaAdapter>(std::move(client));
35 device_->AllocateAndStart(params, std::move(media_client));
36 device_running_ = true;
37 }
38
39 void VideoCaptureDeviceProxyImpl::Stop() {
40 device_->StopAndDeAllocate();
41 device_running_ = false;
42 }
43
44 void VideoCaptureDeviceProxyImpl::OnClientConnectionErrorOrClose() {
45 device_->StopAndDeAllocate();
46 }
47
48 // static
49 media::VideoCaptureFormat VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
50 mojom::VideoCaptureFormatPtr format) { 10 mojom::VideoCaptureFormatPtr format) {
51 media::VideoCaptureFormat result; 11 media::VideoCaptureFormat result;
52 result.pixel_format = ConvertFromMojoToMedia(format->pixel_format); 12 result.pixel_format = ConvertFromMojoToMedia(format->pixel_format);
53 result.pixel_storage = ConvertFromMojoToMedia(format->pixel_storage); 13 result.pixel_storage = ConvertFromMojoToMedia(format->pixel_storage);
54 result.frame_size.SetSize(format->frame_size.width(), 14 result.frame_size.SetSize(format->frame_size.width(),
55 format->frame_size.height()); 15 format->frame_size.height());
56 result.frame_rate = format->frame_rate; 16 result.frame_rate = format->frame_rate;
57 return result; 17 return result;
58 } 18 }
59 19
60 // static 20 media::VideoPixelFormat ConvertFromMojoToMedia(
61 media::VideoPixelFormat VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
62 media::mojom::VideoFormat format) { 21 media::mojom::VideoFormat format) {
63 // Since there are static_asserts in place in 22 // Since there are static_asserts in place in
64 // media/mojo/common/media_type_converters.cc to guarantee equality of the 23 // media/mojo/common/media_type_converters.cc to guarantee equality of the
65 // underlying representations, we can simply static_cast to convert. 24 // underlying representations, we can simply static_cast to convert.
66 return static_cast<media::VideoPixelFormat>(format); 25 return static_cast<media::VideoPixelFormat>(format);
67 } 26 }
68 27
69 // static 28 media::VideoPixelStorage ConvertFromMojoToMedia(
70 media::VideoPixelStorage VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
71 mojom::VideoPixelStorage storage) { 29 mojom::VideoPixelStorage storage) {
72 switch (storage) { 30 switch (storage) {
73 case mojom::VideoPixelStorage::CPU: 31 case mojom::VideoPixelStorage::CPU:
74 return media::PIXEL_STORAGE_CPU; 32 return media::PIXEL_STORAGE_CPU;
75 case mojom::VideoPixelStorage::GPUMEMORYBUFFER: 33 case mojom::VideoPixelStorage::GPUMEMORYBUFFER:
76 return media::PIXEL_STORAGE_GPUMEMORYBUFFER; 34 return media::PIXEL_STORAGE_GPUMEMORYBUFFER;
77 } 35 }
78 NOTREACHED(); 36 NOTREACHED();
79 return media::PIXEL_STORAGE_CPU; 37 return media::PIXEL_STORAGE_CPU;
80 } 38 }
81 39
82 // static 40 media::ResolutionChangePolicy ConvertFromMojoToMedia(
83 media::ResolutionChangePolicy
84 VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
85 mojom::ResolutionChangePolicy policy) { 41 mojom::ResolutionChangePolicy policy) {
86 switch (policy) { 42 switch (policy) {
87 case mojom::ResolutionChangePolicy::FIXED_RESOLUTION: 43 case mojom::ResolutionChangePolicy::FIXED_RESOLUTION:
88 return media::RESOLUTION_POLICY_FIXED_RESOLUTION; 44 return media::RESOLUTION_POLICY_FIXED_RESOLUTION;
89 case mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO: 45 case mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO:
90 return media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO; 46 return media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO;
91 case mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT: 47 case mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT:
92 return media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT; 48 return media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT;
93 } 49 }
94 NOTREACHED(); 50 NOTREACHED();
95 return media::RESOLUTION_POLICY_FIXED_RESOLUTION; 51 return media::RESOLUTION_POLICY_FIXED_RESOLUTION;
96 } 52 }
97 53
98 // static 54 media::PowerLineFrequency ConvertFromMojoToMedia(
99 media::PowerLineFrequency VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
100 mojom::PowerLineFrequency frequency) { 55 mojom::PowerLineFrequency frequency) {
101 switch (frequency) { 56 switch (frequency) {
102 case mojom::PowerLineFrequency::DEFAULT: 57 case mojom::PowerLineFrequency::DEFAULT:
103 return media::PowerLineFrequency::FREQUENCY_DEFAULT; 58 return media::PowerLineFrequency::FREQUENCY_DEFAULT;
104 case mojom::PowerLineFrequency::HZ_50: 59 case mojom::PowerLineFrequency::HZ_50:
105 return media::PowerLineFrequency::FREQUENCY_50HZ; 60 return media::PowerLineFrequency::FREQUENCY_50HZ;
106 case mojom::PowerLineFrequency::HZ_60: 61 case mojom::PowerLineFrequency::HZ_60:
107 return media::PowerLineFrequency::FREQUENCY_60HZ; 62 return media::PowerLineFrequency::FREQUENCY_60HZ;
108 } 63 }
109 NOTREACHED(); 64 NOTREACHED();
110 return media::PowerLineFrequency::FREQUENCY_DEFAULT; 65 return media::PowerLineFrequency::FREQUENCY_DEFAULT;
111 } 66 }
112 67
113 } // namespace video_capture 68 } // namespace video_capture
OLDNEW
« no previous file with comments | « services/video_capture/mojo_media_conversions.h ('k') | services/video_capture/video_capture_device_proxy_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698