summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dom/media/webrtc/MediaTrackConstraints.cpp43
-rw-r--r--dom/media/webrtc/MediaTrackConstraints.h46
2 files changed, 44 insertions, 45 deletions
diff --git a/dom/media/webrtc/MediaTrackConstraints.cpp b/dom/media/webrtc/MediaTrackConstraints.cpp
index 42582e3c29..08bb513955 100644
--- a/dom/media/webrtc/MediaTrackConstraints.cpp
+++ b/dom/media/webrtc/MediaTrackConstraints.cpp
@@ -34,49 +34,6 @@ NormalizedConstraintSet::Range<ValueType>::SetFrom(const ConstrainRange& aOther)
}
}
-// The Range code works surprisingly well for bool, except when averaging ideals.
-template<>
-bool
-NormalizedConstraintSet::Range<bool>::Merge(const Range& aOther) {
- if (!Intersects(aOther)) {
- return false;
- }
- Intersect(aOther);
-
- // To avoid "unsafe use of type 'bool'", we keep counter in mMergeDenominator
- uint32_t counter = mMergeDenominator >> 16;
- uint32_t denominator = mMergeDenominator & 0xffff;
-
- if (aOther.mIdeal.isSome()) {
- if (mIdeal.isNothing()) {
- mIdeal.emplace(aOther.Get(false));
- counter = aOther.Get(false);
- denominator = 1;
- } else {
- if (!denominator) {
- counter = Get(false);
- denominator = 1;
- }
- counter += aOther.Get(false);
- denominator++;
- }
- }
- mMergeDenominator = ((counter & 0xffff) << 16) + (denominator & 0xffff);
- return true;
-}
-
-template<>
-void
-NormalizedConstraintSet::Range<bool>::FinalizeMerge()
-{
- if (mMergeDenominator) {
- uint32_t counter = mMergeDenominator >> 16;
- uint32_t denominator = mMergeDenominator & 0xffff;
-
- *mIdeal = !!(counter / denominator);
- mMergeDenominator = 0;
- }
-}
NormalizedConstraintSet::LongRange::LongRange(
LongPtrType aMemberPtr,
diff --git a/dom/media/webrtc/MediaTrackConstraints.h b/dom/media/webrtc/MediaTrackConstraints.h
index 842fea0d2d..693c905d5f 100644
--- a/dom/media/webrtc/MediaTrackConstraints.h
+++ b/dom/media/webrtc/MediaTrackConstraints.h
@@ -261,8 +261,50 @@ public:
aOther.mMozAutoGainControl, advanced, aList) {}
};
-template<> bool NormalizedConstraintSet::Range<bool>::Merge(const Range& aOther);
-template<> void NormalizedConstraintSet::Range<bool>::FinalizeMerge();
+// The Range code works surprisingly well for bool, except when averaging ideals.
+template<>
+bool
+NormalizedConstraintSet::Range<bool>::Merge(const Range& aOther) {
+ if (!Intersects(aOther)) {
+ return false;
+ }
+ Intersect(aOther);
+
+ // To avoid "unsafe use of type 'bool'", we keep counter in mMergeDenominator
+ uint32_t counter = mMergeDenominator >> 16;
+ uint32_t denominator = mMergeDenominator & 0xffff;
+
+ if (aOther.mIdeal.isSome()) {
+ if (mIdeal.isNothing()) {
+ mIdeal.emplace(aOther.Get(false));
+ counter = aOther.Get(false);
+ denominator = 1;
+ } else {
+ if (!denominator) {
+ counter = Get(false);
+ denominator = 1;
+ }
+ counter += aOther.Get(false);
+ denominator++;
+ }
+ }
+ mMergeDenominator = ((counter & 0xffff) << 16) + (denominator & 0xffff);
+ return true;
+}
+
+template<>
+void
+NormalizedConstraintSet::Range<bool>::FinalizeMerge()
+{
+ if (mMergeDenominator) {
+ uint32_t counter = mMergeDenominator >> 16;
+ uint32_t denominator = mMergeDenominator & 0xffff;
+
+ *mIdeal = !!(counter / denominator);
+ mMergeDenominator = 0;
+ }
+}
+
// Used instead of MediaTrackConstraints in lower-level code.
struct NormalizedConstraints : public NormalizedConstraintSet