MediaEngineDefaultAudio uses the SineWaveGenerator and passes a
TrackTicks (int64_t) arg to generate(). It need to take the same type
or bad things can happen.
MozReview-Commit-ID: EoybtTFkWhT
--HG--
extra : rebase_source : c21bbbc2729d092ad78ffe877bf141dbce3a41d3
If a camera returns no capabilities we interpret it as it being able to handle
any capability we throw at it. However, we also end up trying to start it with
the default capability of 0x0@0. This often works, but we can crash when
rescaling it to the chosen target capability 0x0@0.
With this patch we inject up to two default capabilities, one at 640x480@30 and
one at 1280x720@30. With constraints present we'll try to adjust these defaults
so they fit within the constraints while at the same time preserve the
aspect ratio given by prefs.
MozReview-Commit-ID: 3mr7Li5TTbV
--HG--
extra : rebase_source : c525c2fd8d60f5dece548216caefc4976e9afb0b
This will lead to less ipc calls, hopefully speeding up getUserMedia for many
devices.
This also lets us inject any hardcoded capabilities into the candidateSet in
the future (read: next patch).
MozReview-Commit-ID: HjIhRK1nVA1
--HG--
extra : rebase_source : f58e16c45f7bd6738ce0a0527dc86854f804bc7b
This adds back the `framerate` update that was removed in bug 1299515.
It also fixes a threading issue (not really an issue, but it broke the
documented policy) where Start() wrote to mCapability without holding mMutex.
MozReview-Commit-ID: Jda5moNhlkM
--HG--
extra : rebase_source : a8f27f064b9f818eb29aa72a18605786c474631b
Most importantly, this reduces the number of copies to 1 in the common case.
In a case where we are rescaling because there are competing gUM requests
this does two copies, where one is the crop-and-scale operation itself.
In the worst case we do two allocations, but with a buffer pool and a recycling
ImageContainer we allocate very rarely in practice.
MozReview-Commit-ID: B0Et4wZol9n
--HG--
extra : rebase_source : e0950a53278336773570c9e989a21392195f8898
Before bug 1299515 we assigned stream and track id in Allocate(), meaning that
any Deallocate() had a guarantee of them being set.
This changed to require an extra step of SetTrack() to assign stream and
track id. Deallocate() needs to handle this, which it does with this patch.
MozReview-Commit-ID: Js0cXXOR2Bb
--HG--
extra : rebase_source : f90dc1345ae0c034d2237d771630055729180df4
- add new component_id field to NrIceCandidatePair
- add the candidate pair component_id to RTCIceCandidatePairStats in
RecordIceStats_s
- add new column in ice stats table for component id
- sort ice stats by component id first
MozReview-Commit-ID: J89ZIYEUyRk
--HG--
extra : rebase_source : 681a5afa1303b4e377fcc14d099ce0b3d852f22c
As of bug 1417680, the NSS shutdown tracking infrastructure is unnecessary (and
does nothing anyway). This series of changesets removes the remaining pieces in
a way that is hopefully easy to confirm is correct.
MozReview-Commit-ID: 8Y5wpsyNlGc
--HG--
extra : rebase_source : ef6b481510d949e404a4ef5615097d66e566c947
This wires up the disabling of a track with actually stopping the device if we
allow it.
This is possible for:
- Camera (enabled by default, controlled by pref
"media.getusermedia.camera.off_while_disabled.enabled")
- Microphone (disabled by default, controlled by pref
"media.getusermedia.microphone.off_while_disabled.enabled")
Screen-, app-, or windowsharing is not supported at this time.
On disabling, there's a delay before the device is ordered to stop. This is
now defaulting to 3 seconds but can be overriden by prefs
"media.getusermedia.camera.off_while_disabled.delay_ms" and
"media.getusermedia.microphone.off_while_disabled.delay_ms".
The delay is in place to prevent misuse by malicious sites. If a track is
re-enabled before the delay has passed, the device will not be touched until
another disable followed by the full delay happens.
MozReview-Commit-ID: D4nZWzrYZGm
--HG--
extra : rebase_source : 6a54fa450bd435ed65de2a30b66d25f4a5e8241e
This is the larger change for this bug. In order to turn off a device on
disabling we want to Stop() it without ending the attached track.
To allow this, this patch breaks out track-creation from Start() to SetTrack()
and moves track-ending logic from Stop() to Deallocate().
It is a programming error to Start() or Stop() a MediaEngineSource that hasn't
seen a SetTrack().
MozReview-Commit-ID: 3KzmuDjCAH0
--HG--
extra : rebase_source : 361d9b9c2a818ce51fa90d88950d5992c51407c6
The scope of flattening this hierarchy quickly grows large, so this patch does
a couple more things:
- Creates a pure interface MediaEngineSourceInterface and a base class
MediaEngineSource with common defaults and refcount support (no state!)
- Breaks out some of the helper classes to dedicated files, e.g.,
AllocationHandle, MediaEnginePrefs.
- Clarifies the threading model (written on one thread *and* under lock,
read under either)
- Fixes style, indentation, include-sorting in the affected files
- Adds comments, especially for clarifying what responsibilities methods have,
and thread usage of class members
- Changes Monitors to Mutexes since we only use them as Mutexes anyhow
- Makes MediaEngineRemoteVideoSource no longer a shared source since we now
support scaling in this source and CamerasChild can act as a broker of frames.
This greatly simplifies it. The only shared source is now
MediaEngineWebRTCMicrophoneSource, so the sharing specific common methods have
been moved to that source.
MozReview-Commit-ID: KeVZQo6gLm2
--HG--
rename : dom/media/webrtc/MediaEngine.h => dom/media/webrtc/MediaEnginePrefs.h
extra : rebase_source : c785a5feb896312912170475d6b8d997e712e48f
This SourceMediaStream is an existing hack to fit AudioCapture into
MediaManager's gUM flow. With the invariant that NotifyPull must produce data
we need to produce silence here.
Best of all would be if this SourceMediaStream was not needed at all, but let's
look at that another time.
MozReview-Commit-ID: J3EeIut1fgy
--HG--
extra : rebase_source : 8b84d8cf0f8d359d3b1c054146b28d494ed12053
Also remove the unmatched candidates in the candidate pair table since
they are now included in the "all raw candidates" table.
MozReview-Commit-ID: 4ZvhWfmjGJh
--HG--
extra : rebase_source : bf999db83cd49dd454434d2b157023da41b0dbcd
We need to feed deinterleaved data, not interleaved data.
MozReview-Commit-ID: 99z8HA7tJgT
--HG--
extra : rebase_source : eb61b602630008683c6afdd2aad1dca0d663db86
extra : intermediate-source : 2d718ca90e07d9dfc71e86434cb04c5580405f9f
extra : source : 3ba7fe1cddec0a3dcaaf526a85b7f34072c3e199