OLD | NEW |
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 "base/logging.h" |
| 6 #include "services/video_capture/device_client_mojo_to_media_adapter.h" |
6 #include "services/video_capture/video_capture_device_proxy_impl.h" | 7 #include "services/video_capture/video_capture_device_proxy_impl.h" |
7 | 8 |
8 namespace video_capture { | 9 namespace video_capture { |
9 | 10 |
| 11 VideoCaptureDeviceProxyImpl::VideoCaptureDeviceProxyImpl( |
| 12 std::unique_ptr<media::VideoCaptureDevice> device) |
| 13 : device_(std::move(device)) {} |
| 14 |
| 15 VideoCaptureDeviceProxyImpl::~VideoCaptureDeviceProxyImpl() = default; |
| 16 |
10 void VideoCaptureDeviceProxyImpl::Start( | 17 void VideoCaptureDeviceProxyImpl::Start( |
11 mojom::VideoCaptureFormatPtr requested_format, | 18 mojom::VideoCaptureFormatPtr requested_format, |
12 mojom::ResolutionChangePolicy resolution_change_policy, | 19 mojom::ResolutionChangePolicy resolution_change_policy, |
13 mojom::PowerLineFrequency power_line_frequency, | 20 mojom::PowerLineFrequency power_line_frequency, |
14 mojom::VideoCaptureDeviceClientPtr client) { | 21 mojom::VideoCaptureDeviceClientPtr client) { |
15 NOTIMPLEMENTED(); | 22 media::VideoCaptureParams params; |
| 23 params.requested_format = ConvertFromMojoToMedia(std::move(requested_format)); |
| 24 params.resolution_change_policy = |
| 25 ConvertFromMojoToMedia(resolution_change_policy); |
| 26 params.power_line_frequency = ConvertFromMojoToMedia(power_line_frequency); |
| 27 auto media_client = |
| 28 base::WrapUnique(new DeviceClientMojoToMediaAdapter(std::move(client))); |
| 29 device_->AllocateAndStart(params, std::move(media_client)); |
| 30 } |
| 31 |
| 32 // static |
| 33 media::VideoCaptureFormat VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia( |
| 34 mojom::VideoCaptureFormatPtr format) { |
| 35 media::VideoCaptureFormat result; |
| 36 result.pixel_format = ConvertFromMojoToMedia(format->pixel_format); |
| 37 result.pixel_storage = ConvertFromMojoToMedia(format->pixel_storage); |
| 38 result.frame_size.SetSize(format->frame_size.width(), |
| 39 format->frame_size.height()); |
| 40 result.frame_rate = format->frame_rate; |
| 41 return result; |
| 42 } |
| 43 |
| 44 // static |
| 45 media::VideoPixelFormat VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia( |
| 46 media::mojom::VideoFormat format) { |
| 47 // Since there are static_asserts in place in |
| 48 // media/mojo/common/media_type_converters.cc to guarantee equality of the |
| 49 // underlying representations, we can simply static_cast to convert. |
| 50 return static_cast<media::VideoPixelFormat>(format); |
| 51 } |
| 52 |
| 53 // static |
| 54 media::VideoPixelStorage VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia( |
| 55 mojom::VideoPixelStorage storage) { |
| 56 switch (storage) { |
| 57 case mojom::VideoPixelStorage::CPU: |
| 58 return media::PIXEL_STORAGE_CPU; |
| 59 case mojom::VideoPixelStorage::GPUMEMORYBUFFER: |
| 60 return media::PIXEL_STORAGE_GPUMEMORYBUFFER; |
| 61 } |
| 62 } |
| 63 |
| 64 // static |
| 65 media::ResolutionChangePolicy |
| 66 VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia( |
| 67 mojom::ResolutionChangePolicy policy) { |
| 68 switch (policy) { |
| 69 case mojom::ResolutionChangePolicy::FIXED_RESOLUTION: |
| 70 return media::RESOLUTION_POLICY_FIXED_RESOLUTION; |
| 71 case mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO: |
| 72 return media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO; |
| 73 case mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT: |
| 74 return media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT; |
| 75 } |
| 76 } |
| 77 |
| 78 // static |
| 79 media::PowerLineFrequency VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia( |
| 80 mojom::PowerLineFrequency frequency) { |
| 81 switch (frequency) { |
| 82 case mojom::PowerLineFrequency::DEFAULT: |
| 83 return media::PowerLineFrequency::FREQUENCY_DEFAULT; |
| 84 case mojom::PowerLineFrequency::HZ_50: |
| 85 return media::PowerLineFrequency::FREQUENCY_50HZ; |
| 86 case mojom::PowerLineFrequency::HZ_60: |
| 87 return media::PowerLineFrequency::FREQUENCY_60HZ; |
| 88 } |
16 } | 89 } |
17 | 90 |
18 } // namespace video_capture | 91 } // namespace video_capture |
OLD | NEW |