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

Side by Side Diff: content/renderer/media/media_stream_constraints_util_video_source.cc

Issue 2664673002: Media Capture Depth Stream Extensions API: videoKind settings and constraint. (Closed)
Patch Set: GetVideoKindForFormat moved to utility. thanks guidou@. Created 3 years, 10 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "content/renderer/media/media_stream_constraints_util_video_source.h" 5 #include "content/renderer/media/media_stream_constraints_util_video_source.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <utility> 10 #include <utility>
(...skipping 12 matching lines...) Expand all
23 // device ID, power-line frequency, resolution and frame rate. 23 // device ID, power-line frequency, resolution and frame rate.
24 const int kNumDefaultDistanceEntries = 4; 24 const int kNumDefaultDistanceEntries = 4;
25 25
26 // The default resolution to be preferred as tie-breaking criterion. 26 // The default resolution to be preferred as tie-breaking criterion.
27 const int kDefaultResolutionArea = MediaStreamVideoSource::kDefaultWidth * 27 const int kDefaultResolutionArea = MediaStreamVideoSource::kDefaultWidth *
28 MediaStreamVideoSource::kDefaultHeight; 28 MediaStreamVideoSource::kDefaultHeight;
29 29
30 // The minimum aspect ratio to be supported by sources. 30 // The minimum aspect ratio to be supported by sources.
31 const double kMinSourceAspectRatio = 0.05; 31 const double kMinSourceAspectRatio = 0.05;
32 32
33 // VideoKind enum values. See https://w3c.github.io/mediacapture-depth.
34 const char kVideoKindColor[] = "color";
35 const char kVideoKindDepth[] = "depth";
36
33 blink::WebString ToWebString(::mojom::FacingMode facing_mode) { 37 blink::WebString ToWebString(::mojom::FacingMode facing_mode) {
34 switch (facing_mode) { 38 switch (facing_mode) {
35 case ::mojom::FacingMode::USER: 39 case ::mojom::FacingMode::USER:
36 return blink::WebString::fromASCII("user"); 40 return blink::WebString::fromASCII("user");
37 case ::mojom::FacingMode::ENVIRONMENT: 41 case ::mojom::FacingMode::ENVIRONMENT:
38 return blink::WebString::fromASCII("environment"); 42 return blink::WebString::fromASCII("environment");
39 case ::mojom::FacingMode::LEFT: 43 case ::mojom::FacingMode::LEFT:
40 return blink::WebString::fromASCII("left"); 44 return blink::WebString::fromASCII("left");
41 case ::mojom::FacingMode::RIGHT: 45 case ::mojom::FacingMode::RIGHT:
42 return blink::WebString::fromASCII("right"); 46 return blink::WebString::fromASCII("right");
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 failed_constraint_name) + 304 failed_constraint_name) +
301 ResolutionConstraintSourceDistance(format.frame_size.width(), 305 ResolutionConstraintSourceDistance(format.frame_size.width(),
302 constraint_set.width, 306 constraint_set.width,
303 failed_constraint_name) + 307 failed_constraint_name) +
304 AspectRatioConstraintSourceDistance( 308 AspectRatioConstraintSourceDistance(
305 format.frame_size.height(), format.frame_size.width(), 309 format.frame_size.height(), format.frame_size.width(),
306 constraint_set.height, constraint_set.width, 310 constraint_set.height, constraint_set.width,
307 constraint_set.aspectRatio, failed_constraint_name) + 311 constraint_set.aspectRatio, failed_constraint_name) +
308 FrameRateConstraintSourceDistance(format.frame_rate, 312 FrameRateConstraintSourceDistance(format.frame_rate,
309 constraint_set.frameRate, 313 constraint_set.frameRate,
310 failed_constraint_name); 314 failed_constraint_name) +
315 StringConstraintSourceDistance(GetVideoKindForFormat(format),
316 constraint_set.videoKind,
317 failed_constraint_name);
311 } 318 }
312 319
313 // Returns a custom distance between a set of candidate settings and a 320 // Returns a custom distance between a set of candidate settings and a
314 // constraint set. It is simply the sum of the distances for each individual 321 // constraint set. It is simply the sum of the distances for each individual
315 // setting in |candidate|. 322 // setting in |candidate|.
316 // If |candidate| cannot satisfy constraint, the distance is HUGE_VAL. 323 // If |candidate| cannot satisfy constraint, the distance is HUGE_VAL.
317 // Otherwise the distance is a finite value. Candidates with lower distance 324 // Otherwise the distance is a finite value. Candidates with lower distance
318 // satisfy |constraint_set| in a "better" way. 325 // satisfy |constraint_set| in a "better" way.
319 double CandidateSourceDistance( 326 double CandidateSourceDistance(
320 const VideoCaptureSourceSettings& candidate, 327 const VideoCaptureSourceSettings& candidate,
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 double fitness = 0.0; 477 double fitness = 0.0;
471 fitness += AspectRatioConstraintFitnessDistance( 478 fitness += AspectRatioConstraintFitnessDistance(
472 candidate.GetHeight(), candidate.GetWidth(), constraint_set.height, 479 candidate.GetHeight(), candidate.GetWidth(), constraint_set.height,
473 constraint_set.width, constraint_set.aspectRatio); 480 constraint_set.width, constraint_set.aspectRatio);
474 fitness += StringConstraintFitnessDistance(candidate.GetDeviceId(), 481 fitness += StringConstraintFitnessDistance(candidate.GetDeviceId(),
475 constraint_set.deviceId); 482 constraint_set.deviceId);
476 fitness += StringConstraintFitnessDistance(candidate.GetFacingMode(), 483 fitness += StringConstraintFitnessDistance(candidate.GetFacingMode(),
477 constraint_set.facingMode); 484 constraint_set.facingMode);
478 fitness += FrameRateConstraintFitnessDistance(candidate.GetFrameRate(), 485 fitness += FrameRateConstraintFitnessDistance(candidate.GetFrameRate(),
479 constraint_set.frameRate); 486 constraint_set.frameRate);
487 fitness += StringConstraintFitnessDistance(candidate.GetVideoKind(),
488 constraint_set.videoKind);
480 fitness += PowerLineFrequencyConstraintFitnessDistance( 489 fitness += PowerLineFrequencyConstraintFitnessDistance(
481 candidate.GetPowerLineFrequency(), constraint_set.googPowerLineFrequency); 490 candidate.GetPowerLineFrequency(), constraint_set.googPowerLineFrequency);
482 fitness += ResolutionConstraintFitnessDistance(candidate.GetHeight(), 491 fitness += ResolutionConstraintFitnessDistance(candidate.GetHeight(),
483 constraint_set.height); 492 constraint_set.height);
484 fitness += ResolutionConstraintFitnessDistance(candidate.GetWidth(), 493 fitness += ResolutionConstraintFitnessDistance(candidate.GetWidth(),
485 constraint_set.width); 494 constraint_set.width);
486 495
487 return fitness; 496 return fitness;
488 } 497 }
489 498
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 double frame_rate_distance = 556 double frame_rate_distance =
548 candidate.format().frame_rate == MediaStreamVideoSource::kDefaultFrameRate 557 candidate.format().frame_rate == MediaStreamVideoSource::kDefaultFrameRate
549 ? 0.0 558 ? 0.0
550 : Distance(candidate.format().frame_rate, 559 : Distance(candidate.format().frame_rate,
551 MediaStreamVideoSource::kDefaultFrameRate); 560 MediaStreamVideoSource::kDefaultFrameRate);
552 distance_vector->push_back(frame_rate_distance); 561 distance_vector->push_back(frame_rate_distance);
553 } 562 }
554 563
555 } // namespace 564 } // namespace
556 565
566 blink::WebString GetVideoKindForFormat(
567 const media::VideoCaptureFormat& format) {
568 return (format.pixel_format == media::PIXEL_FORMAT_Y16)
569 ? blink::WebString::fromASCII(kVideoKindDepth)
570 : blink::WebString::fromASCII(kVideoKindColor);
571 }
572
557 VideoCaptureCapabilities::VideoCaptureCapabilities() = default; 573 VideoCaptureCapabilities::VideoCaptureCapabilities() = default;
558 VideoCaptureCapabilities::VideoCaptureCapabilities( 574 VideoCaptureCapabilities::VideoCaptureCapabilities(
559 VideoCaptureCapabilities&& other) = default; 575 VideoCaptureCapabilities&& other) = default;
560 VideoCaptureCapabilities::~VideoCaptureCapabilities() = default; 576 VideoCaptureCapabilities::~VideoCaptureCapabilities() = default;
561 VideoCaptureCapabilities& VideoCaptureCapabilities::operator=( 577 VideoCaptureCapabilities& VideoCaptureCapabilities::operator=(
562 VideoCaptureCapabilities&& other) = default; 578 VideoCaptureCapabilities&& other) = default;
563 579
564 VideoCaptureSourceSettings::VideoCaptureSourceSettings( 580 VideoCaptureSourceSettings::VideoCaptureSourceSettings(
565 const VideoCaptureSourceSettings& other) = default; 581 const VideoCaptureSourceSettings& other) = default;
566 VideoCaptureSourceSettings::VideoCaptureSourceSettings( 582 VideoCaptureSourceSettings::VideoCaptureSourceSettings(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 } 618 }
603 619
604 double VideoCaptureSourceSettings::GetFrameRate() const { 620 double VideoCaptureSourceSettings::GetFrameRate() const {
605 return format_.frame_rate; 621 return format_.frame_rate;
606 } 622 }
607 623
608 blink::WebString VideoCaptureSourceSettings::GetDeviceId() const { 624 blink::WebString VideoCaptureSourceSettings::GetDeviceId() const {
609 return blink::WebString::fromASCII(device_id_.data()); 625 return blink::WebString::fromASCII(device_id_.data());
610 } 626 }
611 627
628 blink::WebString VideoCaptureSourceSettings::GetVideoKind() const {
629 return GetVideoKindForFormat(format_);
630 }
631
612 const char kDefaultFailedConstraintName[] = ""; 632 const char kDefaultFailedConstraintName[] = "";
613 633
614 VideoCaptureSourceSelectionResult::VideoCaptureSourceSelectionResult() 634 VideoCaptureSourceSelectionResult::VideoCaptureSourceSelectionResult()
615 : failed_constraint_name(kDefaultFailedConstraintName) {} 635 : failed_constraint_name(kDefaultFailedConstraintName) {}
616 VideoCaptureSourceSelectionResult::VideoCaptureSourceSelectionResult( 636 VideoCaptureSourceSelectionResult::VideoCaptureSourceSelectionResult(
617 const VideoCaptureSourceSelectionResult& other) = default; 637 const VideoCaptureSourceSelectionResult& other) = default;
618 VideoCaptureSourceSelectionResult::VideoCaptureSourceSelectionResult( 638 VideoCaptureSourceSelectionResult::VideoCaptureSourceSelectionResult(
619 VideoCaptureSourceSelectionResult&& other) = default; 639 VideoCaptureSourceSelectionResult&& other) = default;
620 VideoCaptureSourceSelectionResult::~VideoCaptureSourceSelectionResult() = 640 VideoCaptureSourceSelectionResult::~VideoCaptureSourceSelectionResult() =
621 default; 641 default;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 } 743 }
724 } 744 }
725 745
726 if (!result.has_value()) 746 if (!result.has_value())
727 result.failed_constraint_name = failed_constraint_name; 747 result.failed_constraint_name = failed_constraint_name;
728 748
729 return result; 749 return result;
730 } 750 }
731 751
732 } // namespace content 752 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698