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

Unified Diff: services/video_capture/video_capture_device_proxy_impl.cc

Issue 2238083004: Video Capture Mojo (1.4b): Implement ability to use fake device instance (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@FillServicePart1
Patch Set: Fix control reached end of non-void function. Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: services/video_capture/video_capture_device_proxy_impl.cc
diff --git a/services/video_capture/video_capture_device_proxy_impl.cc b/services/video_capture/video_capture_device_proxy_impl.cc
index a57e7ea5f792a447a5ef99e17e0d415200d4a147..56a3f7f2726fa8d6a72d9998fc10e5542f8631dd 100644
--- a/services/video_capture/video_capture_device_proxy_impl.cc
+++ b/services/video_capture/video_capture_device_proxy_impl.cc
@@ -3,16 +3,95 @@
// found in the LICENSE file.
#include "base/logging.h"
+#include "services/video_capture/device_client_mojo_to_media_adapter.h"
#include "services/video_capture/video_capture_device_proxy_impl.h"
namespace video_capture {
+VideoCaptureDeviceProxyImpl::VideoCaptureDeviceProxyImpl(
+ std::unique_ptr<media::VideoCaptureDevice> device)
+ : device_(std::move(device)) {}
+
+VideoCaptureDeviceProxyImpl::~VideoCaptureDeviceProxyImpl() = default;
+
void VideoCaptureDeviceProxyImpl::Start(
mojom::VideoCaptureFormatPtr requested_format,
mojom::ResolutionChangePolicy resolution_change_policy,
mojom::PowerLineFrequency power_line_frequency,
mojom::VideoCaptureDeviceClientPtr client) {
- NOTIMPLEMENTED();
+ media::VideoCaptureParams params;
+ params.requested_format = ConvertFromMojoToMedia(std::move(requested_format));
+ params.resolution_change_policy =
+ ConvertFromMojoToMedia(resolution_change_policy);
+ params.power_line_frequency = ConvertFromMojoToMedia(power_line_frequency);
+ auto media_client =
+ base::WrapUnique(new DeviceClientMojoToMediaAdapter(std::move(client)));
+ device_->AllocateAndStart(params, std::move(media_client));
+}
+
+// static
+media::VideoCaptureFormat VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
+ mojom::VideoCaptureFormatPtr format) {
+ media::VideoCaptureFormat result;
+ result.pixel_format = ConvertFromMojoToMedia(format->pixel_format);
+ result.pixel_storage = ConvertFromMojoToMedia(format->pixel_storage);
+ result.frame_size.SetSize(format->frame_size.width(),
+ format->frame_size.height());
+ result.frame_rate = format->frame_rate;
+ return result;
+}
+
+// static
+media::VideoPixelFormat VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
+ media::mojom::VideoFormat format) {
+ // Since there are static_asserts in place in
+ // media/mojo/common/media_type_converters.cc to guarantee equality of the
+ // underlying representations, we can simply static_cast to convert.
+ return static_cast<media::VideoPixelFormat>(format);
+}
+
+// static
+media::VideoPixelStorage VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
+ mojom::VideoPixelStorage storage) {
+ switch (storage) {
+ case mojom::VideoPixelStorage::CPU:
+ return media::PIXEL_STORAGE_CPU;
+ case mojom::VideoPixelStorage::GPUMEMORYBUFFER:
+ return media::PIXEL_STORAGE_GPUMEMORYBUFFER;
+ }
+ NOTREACHED();
+ return media::PIXEL_STORAGE_CPU;
+}
+
+// static
+media::ResolutionChangePolicy
+VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
+ mojom::ResolutionChangePolicy policy) {
+ switch (policy) {
+ case mojom::ResolutionChangePolicy::FIXED_RESOLUTION:
+ return media::RESOLUTION_POLICY_FIXED_RESOLUTION;
+ case mojom::ResolutionChangePolicy::FIXED_ASPECT_RATIO:
+ return media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO;
+ case mojom::ResolutionChangePolicy::ANY_WITHIN_LIMIT:
+ return media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT;
+ }
+ NOTREACHED();
+ return media::RESOLUTION_POLICY_FIXED_RESOLUTION;
+}
+
+// static
+media::PowerLineFrequency VideoCaptureDeviceProxyImpl::ConvertFromMojoToMedia(
+ mojom::PowerLineFrequency frequency) {
+ switch (frequency) {
+ case mojom::PowerLineFrequency::DEFAULT:
+ return media::PowerLineFrequency::FREQUENCY_DEFAULT;
+ case mojom::PowerLineFrequency::HZ_50:
+ return media::PowerLineFrequency::FREQUENCY_50HZ;
+ case mojom::PowerLineFrequency::HZ_60:
+ return media::PowerLineFrequency::FREQUENCY_60HZ;
+ }
+ NOTREACHED();
+ return media::PowerLineFrequency::FREQUENCY_DEFAULT;
}
} // namespace video_capture
« no previous file with comments | « services/video_capture/video_capture_device_proxy_impl.h ('k') | services/video_capture/video_capture_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698