Граф коммитов

87 Коммитов

Автор SHA1 Сообщение Дата
Andreas Pehrson b8cbd64557 Bug 1651745 - Change MediaEngineSource::SetTrack to take a MediaTrack base class. r=padenot
This allows us to pass in different sub classes, which the next patch will do.

Differential Revision: https://phabricator.services.mozilla.com/D95933
2020-11-05 16:42:07 +00:00
Gabriele Svelto ace6d1063f Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442

--HG--
extra : moz-landing-system : lando
2019-12-06 09:24:56 +00:00
Thomas Nguyen 75ec3318b6 Bug 1483631 - Using windowId when allocating media source instead of principal r=jib,farre
In post fission world, we should move the top principal and top window check
to parent, so we should pass windowId to allocate function and
get working with top in parent process.

Differential Revision: https://phabricator.services.mozilla.com/D53261

--HG--
extra : moz-landing-system : lando
2019-12-04 15:39:41 +00:00
Dorel Luca a381d5c96d Backed out changeset f6e53d1c6518 (bug 1600545) for Android build bustage. CLOSED TREE 2019-12-04 17:32:27 +02:00
Gabriele Svelto bc9290f767 Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442

--HG--
extra : moz-landing-system : lando
2019-12-04 15:01:19 +00:00
Gurzau Raul 4f21dcd081 Backed out 4 changesets (bug 1483631) for failing at browser_temporary_permissions.js on a CLOSED TREE.
Backed out changeset f5bb5f6a148f (bug 1483631)
Backed out changeset c5e562c1d590 (bug 1483631)
Backed out changeset 7ef09193a7ef (bug 1483631)
Backed out changeset a909dcbbea2b (bug 1483631)
2019-12-03 21:57:55 +02:00
Thomas Nguyen 63cef02ef4 Bug 1483631 - Using windowId when allocating media source instead of principal r=jib,farre
In post fission world, we should move the top principal and top window check
to parent, so we should pass windowId to allocate function and
get working with top in parent process.

Differential Revision: https://phabricator.services.mozilla.com/D53261

--HG--
extra : moz-landing-system : lando
2019-12-03 11:58:23 +00:00
Andreas Pehrson 1bdb34c6ec Bug 1454998 - Rename streams to tracks. r=padenot,karlt,smaug
This renames the following (in alphabetical order, non-exhaustive):

AudioCaptureStream -> AudioCaptureTrack
AudioNodeStream -> AudioNodeTrack
AudioNodeExternalInputStream -> AudioNodeExternalInputTrack
DirectMediaStreamTrackListener -> DirectMediaTrackListener
MediaStream -> MediaTrack
  - Note that there's also dom::MediaTrack. Namespaces differentiate them.
MediaStreamGraph -> MediaTrackGraph
MediaStreamTrackListener -> MediaTrackListener
MSG -> MTG (in comments)
ProcessedMediaStream -> ProcessedMediaTrack
SharedDummyStream -> SharedDummyTrack
SourceMediaStream -> SourceMediaTrack
StreamTime -> TrackTime
TrackUnionStream -> ForwardedInputTrack
  - Because this no longer takes a union of anything, but only a single track
    as input.

Other minor classes, members and comments have been updated to reflect these
name changes.

Differential Revision: https://phabricator.services.mozilla.com/D46146

--HG--
rename : dom/media/AudioCaptureStream.cpp => dom/media/AudioCaptureTrack.cpp
rename : dom/media/AudioCaptureStream.h => dom/media/AudioCaptureTrack.h
rename : dom/media/TrackUnionStream.cpp => dom/media/ForwardedInputTrack.cpp
rename : dom/media/TrackUnionStream.h => dom/media/ForwardedInputTrack.h
rename : dom/media/MediaStreamGraph.cpp => dom/media/MediaTrackGraph.cpp
rename : dom/media/MediaStreamGraph.h => dom/media/MediaTrackGraph.h
rename : dom/media/MediaStreamGraphImpl.h => dom/media/MediaTrackGraphImpl.h
rename : dom/media/MediaStreamListener.cpp => dom/media/MediaTrackListener.cpp
rename : dom/media/MediaStreamListener.h => dom/media/MediaTrackListener.h
rename : dom/media/webaudio/AudioNodeExternalInputStream.cpp => dom/media/webaudio/AudioNodeExternalInputTrack.cpp
rename : dom/media/webaudio/AudioNodeExternalInputStream.h => dom/media/webaudio/AudioNodeExternalInputTrack.h
rename : dom/media/webaudio/AudioNodeStream.cpp => dom/media/webaudio/AudioNodeTrack.cpp
rename : dom/media/webaudio/AudioNodeStream.h => dom/media/webaudio/AudioNodeTrack.h
extra : moz-landing-system : lando
2019-10-02 10:23:02 +00:00
Andreas Pehrson 8028758d0e Bug 1454998 - Remove the notion of streams from MediaStreamGraph. r=padenot,karlt
This change mainly removes the `mTracks` member from MediaStream and moves all
associated members up a level, so that a MediaStream in practice represents a
single track.

Classes will be renamed in a future patch to reflect this.

Other changes include:

The new `mEnded` member of MediaStream changes meaning to only become true when
all data in the stream has been processed. It stems from
StreamTracks::Track::mEnded which used to become true as soon as the last bit of
data had been added to a track, and there could still be data in the track that
would get processed in future iterations. We are moving towards not having any
future data in tracks, which is why this change is ok to make -- keeping the old
behavior will soon not make sense.

TrackUnionStream is changed to no longer take a list of streams as input and
forward the union of their tracks to itself. Instead it's limited to having one
track as input at a time.

The autofinishing functionality that TrackUnionStream had before has been
transformed into an autoending functionality to allow it to defer ending until
its been told that it's ok to end through the control API. This lets a single
TrackUnionStream span the lifetime of multiple inputs, which will be useful for
making DecodedStream spec compliant with HTMLMediaElement::CaptureStream(), and
for implementing the currently discussed MediaRecorder::ReplaceTrack(), to name
a few potential use cases.

AudioNodeStreams used to only have a track (and thus an AudioSegment) if the
EXTERNAL_OUTPUT flag was enabled on them. With all MediaStreams now representing
a track, AudioNodeStreams inherently have an AudioSegment as a member. It is
however only used with data if the EXTERNAL_OUTPUT flag is enabled.

Differential Revision: https://phabricator.services.mozilla.com/D45821

--HG--
extra : moz-landing-system : lando
2019-10-02 10:22:53 +00:00
Gurzau Raul 40dae37e00 Backed out 7 changesets (bug 1454998) for build bustages at MediaTrackGraph.h on a CLOSED TREE.
Backed out changeset 80417bdfa721 (bug 1454998)
Backed out changeset 8ff03f2f4ca2 (bug 1454998)
Backed out changeset ae6056b748d1 (bug 1454998)
Backed out changeset ab721cb2066b (bug 1454998)
Backed out changeset d0e8d413cd1c (bug 1454998)
Backed out changeset 3ce4dc7e9ae2 (bug 1454998)
Backed out changeset 6105a4176729 (bug 1454998)

--HG--
rename : dom/media/AudioCaptureTrack.cpp => dom/media/AudioCaptureStream.cpp
rename : dom/media/AudioCaptureTrack.h => dom/media/AudioCaptureStream.h
rename : dom/media/MediaTrackGraph.cpp => dom/media/MediaStreamGraph.cpp
rename : dom/media/MediaTrackGraph.h => dom/media/MediaStreamGraph.h
rename : dom/media/MediaTrackGraphImpl.h => dom/media/MediaStreamGraphImpl.h
rename : dom/media/MediaTrackListener.cpp => dom/media/MediaStreamListener.cpp
rename : dom/media/MediaTrackListener.h => dom/media/MediaStreamListener.h
rename : dom/media/ForwardedInputTrack.cpp => dom/media/TrackUnionStream.cpp
rename : dom/media/ForwardedInputTrack.h => dom/media/TrackUnionStream.h
rename : dom/media/webaudio/AudioNodeExternalInputTrack.cpp => dom/media/webaudio/AudioNodeExternalInputStream.cpp
rename : dom/media/webaudio/AudioNodeExternalInputTrack.h => dom/media/webaudio/AudioNodeExternalInputStream.h
rename : dom/media/webaudio/AudioNodeTrack.cpp => dom/media/webaudio/AudioNodeStream.cpp
rename : dom/media/webaudio/AudioNodeTrack.h => dom/media/webaudio/AudioNodeStream.h
2019-10-02 11:46:23 +03:00
Andreas Pehrson 36d89d91c8 Bug 1454998 - Rename streams to tracks. r=padenot,karlt,smaug
This renames the following (in alphabetical order, non-exhaustive):

AudioCaptureStream -> AudioCaptureTrack
AudioNodeStream -> AudioNodeTrack
AudioNodeExternalInputStream -> AudioNodeExternalInputTrack
DirectMediaStreamTrackListener -> DirectMediaTrackListener
MediaStream -> MediaTrack
  - Note that there's also dom::MediaTrack. Namespaces differentiate them.
MediaStreamGraph -> MediaTrackGraph
MediaStreamTrackListener -> MediaTrackListener
MSG -> MTG (in comments)
ProcessedMediaStream -> ProcessedMediaTrack
SharedDummyStream -> SharedDummyTrack
SourceMediaStream -> SourceMediaTrack
StreamTime -> TrackTime
TrackUnionStream -> ForwardedInputTrack
  - Because this no longer takes a union of anything, but only a single track
    as input.

Other minor classes, members and comments have been updated to reflect these
name changes.

Differential Revision: https://phabricator.services.mozilla.com/D46146

--HG--
rename : dom/media/AudioCaptureStream.cpp => dom/media/AudioCaptureTrack.cpp
rename : dom/media/AudioCaptureStream.h => dom/media/AudioCaptureTrack.h
rename : dom/media/TrackUnionStream.cpp => dom/media/ForwardedInputTrack.cpp
rename : dom/media/TrackUnionStream.h => dom/media/ForwardedInputTrack.h
rename : dom/media/MediaStreamGraph.cpp => dom/media/MediaTrackGraph.cpp
rename : dom/media/MediaStreamGraph.h => dom/media/MediaTrackGraph.h
rename : dom/media/MediaStreamGraphImpl.h => dom/media/MediaTrackGraphImpl.h
rename : dom/media/MediaStreamListener.cpp => dom/media/MediaTrackListener.cpp
rename : dom/media/MediaStreamListener.h => dom/media/MediaTrackListener.h
rename : dom/media/webaudio/AudioNodeExternalInputStream.cpp => dom/media/webaudio/AudioNodeExternalInputTrack.cpp
rename : dom/media/webaudio/AudioNodeExternalInputStream.h => dom/media/webaudio/AudioNodeExternalInputTrack.h
rename : dom/media/webaudio/AudioNodeStream.cpp => dom/media/webaudio/AudioNodeTrack.cpp
rename : dom/media/webaudio/AudioNodeStream.h => dom/media/webaudio/AudioNodeTrack.h
extra : moz-landing-system : lando
2019-10-02 08:18:16 +00:00
Andreas Pehrson 1bc37d8ea4 Bug 1454998 - Remove the notion of streams from MediaStreamGraph. r=padenot,karlt
This change mainly removes the `mTracks` member from MediaStream and moves all
associated members up a level, so that a MediaStream in practice represents a
single track.

Classes will be renamed in a future patch to reflect this.

Other changes include:

The new `mEnded` member of MediaStream changes meaning to only become true when
all data in the stream has been processed. It stems from
StreamTracks::Track::mEnded which used to become true as soon as the last bit of
data had been added to a track, and there could still be data in the track that
would get processed in future iterations. We are moving towards not having any
future data in tracks, which is why this change is ok to make -- keeping the old
behavior will soon not make sense.

TrackUnionStream is changed to no longer take a list of streams as input and
forward the union of their tracks to itself. Instead it's limited to having one
track as input at a time.

The autofinishing functionality that TrackUnionStream had before has been
transformed into an autoending functionality to allow it to defer ending until
its been told that it's ok to end through the control API. This lets a single
TrackUnionStream span the lifetime of multiple inputs, which will be useful for
making DecodedStream spec compliant with HTMLMediaElement::CaptureStream(), and
for implementing the currently discussed MediaRecorder::ReplaceTrack(), to name
a few potential use cases.

AudioNodeStreams used to only have a track (and thus an AudioSegment) if the
EXTERNAL_OUTPUT flag was enabled on them. With all MediaStreams now representing
a track, AudioNodeStreams inherently have an AudioSegment as a member. It is
however only used with data if the EXTERNAL_OUTPUT flag is enabled.

Differential Revision: https://phabricator.services.mozilla.com/D45821

--HG--
extra : moz-landing-system : lando
2019-10-02 08:17:51 +00:00
Andreas Pehrson 0005a9e68a Bug 1571667 - Lift constraint checking of deviceId and groupId out of MediaEngineSources. r=jib
Before this patch, it was unclear who was responsible for checking deviceId and
groupId constraints for devices. MediaManager was doing it through one path for
getUserMedia, with the help of the devices, as part of selecting the
best-fitting device. However, Reconfigure() took another path where the regular
backends for camera and microphone were implemented correctly, but fake devices
were left out so automated tests for applyConstraints were failing.

This patch lifts the responsibility for checking deviceId and groupId
constraints out of the MediaEngineSources into MediaDevice, which already is the
owner of the anonymized ids that MediaEngineSources are unaware of.
This makes constraints checking a two-staged approached where deviceId and
groupid goes first. If they satisfy the constraints, the underlying device is
queried for whether the constraints fit.

As a bonus, this unclutters a lot of the MediaEngineSource interface.

Differential Revision: https://phabricator.services.mozilla.com/D40834

--HG--
extra : moz-landing-system : lando
2019-08-28 08:39:57 +00:00
Andreas Pehrson b150866dce Bug 1571667 - Memoize capabilities in MediaEngineRemoteVideoSource. r=jib,dminor
Differential Revision: https://phabricator.services.mozilla.com/D41241

--HG--
extra : moz-landing-system : lando
2019-08-28 08:39:50 +00:00
Andreas Pehrson 10202bfc64 Bug 1561254 - Support groupId in constraints. r=achronop,jib,smaug
Differential Revision: https://phabricator.services.mozilla.com/D37692

--HG--
extra : moz-landing-system : lando
2019-07-30 16:28:44 +00:00
Andreas Pehrson 90ffbb1560 Bug 1561319 - Check facingMode constraint in MediaEngineDefaultVideo and don't match empty string by default. r=jib
This does two things:
It makes MediaEngineDefaultVideo::GetBestFitnessDistance include a facingMode
check.
It also makes FitnessDistance() for StringRanges take a Maybe<nsString>, since
the device might not have a value for all StringRange constraints, as is the
case for facingMode. This fixes this issue for a MediaEngineRemoteVideoSource
with no facingMode, since such a device would match a facingMode of the empty
string prior to this patch.

To be fully spec compliant, the Maybe should be a set instead, since a device
may support multiple values for the facingMode capability. We don't support
more than one value however, so this change can be made later as needed.

Differential Revision: https://phabricator.services.mozilla.com/D35841

--HG--
extra : moz-landing-system : lando
2019-07-05 18:46:32 +00:00
Andreas Pehrson 45fe07077f Bug 1494675 - Remove AllocationHandle. r=padenot
The handle was used to keep separate allocations of the same source in a single
process apart. Sources no longer use sharing, so we no longer need allocations
or their handles even as a concept.

Differential Revision: https://phabricator.services.mozilla.com/D24901

--HG--
extra : moz-landing-system : lando
2019-03-27 14:10:24 +00:00
Andreas Pehrson 5797084794 Bug 1525323 - Remove SourceTrackListener from MediaManager. r=padenot
This moves the responsibility of forwarding NotifyPull() from the graph thread
to MediaEngineSources out of MediaManager and into the sources themselves. This
is better aligned with how the sources work, since not all sources need pulling.
This also clarifies lifetime management of these listeners in relation to when
pulling is enabled for a track, since the sources are already handling enabling
pulling themselves.

Differential Revision: https://phabricator.services.mozilla.com/D24896

--HG--
extra : moz-landing-system : lando
2019-03-27 18:05:56 +00:00
Andreas Pehrson 7f6e56584f Bug 1538113 - Fix dom/media/webrtc static-analysis warnings. r=jib
Initially indicated by: https://phabricator.services.mozilla.com/D22910#inline-142013
Rest found by: ./mach static-analysis check dom/media/webrtc

Differential Revision: https://phabricator.services.mozilla.com/D24511

--HG--
extra : moz-landing-system : lando
2019-03-25 18:52:57 +00:00
Andreas Pehrson 78c790ab2a Bug 1423253 - Change MediaEngineRemoteVideoSource to push instead of pull. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D22901

--HG--
extra : moz-landing-system : lando
2019-03-22 11:42:23 +00:00
Alex Chronopoulos 871823085b Bug 1213453 - Add getters/setters for group id in MediaEngineSource and the derived classes. r=pehrsons
Differential Revision: https://phabricator.services.mozilla.com/D20370

--HG--
extra : moz-landing-system : lando
2019-03-08 11:51:59 +00:00
Narcis Beleuzu ccb04a4f95 Backed out 5 changesets (bug 1213453) for bustages on MediaEngineDefault.cpp . CLOSED TREE
Backed out changeset 118792523194 (bug 1213453)
Backed out changeset 6208d9e15f3d (bug 1213453)
Backed out changeset ec1da6bbf1a7 (bug 1213453)
Backed out changeset f78c357f2f5f (bug 1213453)
Backed out changeset 6903f0739e83 (bug 1213453)
2019-03-08 13:34:52 +02:00
Alex Chronopoulos c00f4787e9 Bug 1213453 - Add getters/setters for group id in MediaEngineSource and the derived classes. r=pehrsons
Differential Revision: https://phabricator.services.mozilla.com/D20370

--HG--
extra : moz-landing-system : lando
2019-03-08 10:33:51 +00:00
Andreas Pehrson d8bf65f800 Bug 1513973 - Make MediaEngineSource::SetTrack return void. r=jib
All subclasses are now returning NS_OK, so there's no point in keeping nsresult
as the return type.

Differential Revision: https://phabricator.services.mozilla.com/D15193

--HG--
extra : moz-landing-system : lando
2019-01-04 06:39:40 +00:00
Jan-Ivar Bruaroey cbb94950ec Bug 1321221 - Delay getDisplayMedia() promise until first frame arrives, to pass wpt. r=ng
Differential Revision: https://phabricator.services.mozilla.com/D15283

--HG--
extra : moz-landing-system : lando
2018-12-28 03:13:11 +00:00
Jan-Ivar Bruaroey ee3a9f9f4f Bug 1474376 - Merge window+screen sharing for content (list fullscreen as option in window-list), and get away from MediaSourceEnum. r=pehrsons,florian
Differential Revision: https://phabricator.services.mozilla.com/D14941

--HG--
extra : moz-landing-system : lando
2018-12-27 23:40:36 +00:00
Dorel Luca 12e4f91411 Backed out 5 changesets (bug 1513973) for browser-chrome failures in browser/base/content/test/webrtc/browser_devices_get_user_media_screen.js. CLOSED TREE
Backed out changeset 2ddf61b1db11 (bug 1513973)
Backed out changeset 6c839f548745 (bug 1513973)
Backed out changeset 5669b30f2265 (bug 1513973)
Backed out changeset 6781e633d62c (bug 1513973)
Backed out changeset f1892f178011 (bug 1513973)
2018-12-21 23:28:51 +02:00
Andreas Pehrson 4c26324fd2 Bug 1513973 - Make MediaEngineSource::SetTrack return void. r=jib
All subclasses are now returning NS_OK, so there's no point in keeping nsresult
as the return type.

Differential Revision: https://phabricator.services.mozilla.com/D15193

--HG--
extra : moz-landing-system : lando
2018-12-21 20:03:42 +00:00
Andreas Pehrson 193fd8f3eb Bug 1423241 - Move MediaManager from a stream listener to track listeners. r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D12268

--HG--
extra : moz-landing-system : lando
2018-11-23 15:00:20 +00:00
Sylvestre Ledru 804b8b8883 Bug 1204606 - Reformat of dom/media r=jya
# skip-blame

Differential Revision: https://phabricator.services.mozilla.com/D12251

--HG--
extra : moz-landing-system : lando
2018-11-19 13:25:37 +00:00
Emilio Cobos Álvarez 1e9c395548 Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj
Same approach as the other bug, mostly replacing automatically by removing
'using mozilla::Forward;' and then:

  s/mozilla::Forward/std::forward/
  s/Forward</std::forward</

The only file that required manual fixup was TestTreeTraversal.cpp, which had
a class called TestNodeForward with template parameters :)

MozReview-Commit-ID: A88qFG5AccP
2018-06-02 09:33:26 +02:00
Dan Minor 50a3ab6cd4 Bug 1450658 - Should bring window to front when screen-sharing a window; r=pehrsons
This adds a FocusOnSelectedSource method to PCameras and uses it to focus the
selected window while window sharing. We can't just focus the window as soon as
it is shared because we have a live preview in the getUserMedia permissions
prompt which would cause the prompt to lose focus. Instead, this only focuses the
window when the sharing is not done from a chrome context.


MozReview-Commit-ID: 5jre75E3JLi

--HG--
extra : rebase_source : 5f5154fc9fc7590cc02eb25146e5bc20b2243fa3
2018-05-08 15:55:36 -04:00
Dorel Luca 8e1a0ee1c6 Backed out changeset c13ca75c9bcb (bug 1450658) for Browser-Chrome failures on browser/base/content/test/webrtc/browser_devices_get_user_media_screen.js 2018-05-23 17:07:33 +03:00
Dan Minor 40fcbf60d9 Bug 1450658 - Should bring window to front when screen-sharing a window; r=pehrsons
This adds a FocusOnSelectedSource method to PCameras and uses it to focus the
selected window while window sharing. We can't just focus the window as soon as
it is shared because we have a live preview in the getUserMedia permissions
prompt which would cause the prompt to lose focus. Instead, this only focuses the
window when the sharing is not done from a chrome context.


MozReview-Commit-ID: 5jre75E3JLi

--HG--
extra : rebase_source : 97f472f6ed1c5d6bed1af01fb7243a82b2629b03
2018-05-08 15:55:36 -04:00
Andreas Pehrson 1c41efddfa Bug 1454625 - Don't update settings from constraints if already updated from frame. r=padenot
MozReview-Commit-ID: KgiPUnXCWoM

--HG--
extra : rebase_source : 2f378128008ed8c95fb7f3cb3b6601c54ef4c88b
2018-04-17 17:09:11 +02:00
Andreas Pehrson 3be3fab400 Bug 1454625 - Schedule settings update before setting mImage. r=padenot
MozReview-Commit-ID: 9IasAgJImuI

--HG--
extra : rebase_source : 67fc9036b72c19f8fa73084053d617537e0cdaca
2018-04-17 11:14:19 +02:00
Andreas Pehrson f5d34fea0d Bug 1430856 - Default to two default capabilities when a camera can handle anything. r=jib
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
2018-02-13 20:22:18 +01:00
Andreas Pehrson 7186f8d0f3 Bug 1430856 - Cache CaptureCapability in CapabilityCandidate. r=jib
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
2018-02-13 20:13:47 +01:00
Andreas Pehrson 422d32be88 Bug 1434861 - Simplify rescaling code in MediaEngineRemoteVideoSource::DeliverFrame. r=jib
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
2018-02-01 16:06:19 +01:00
Andreas Pehrson a9436d8f79 Bug 1299515 - Stop Camera and Microphone device when tracks become disabled. r=jib
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
2017-11-17 19:56:00 +01:00
Andreas Pehrson abde2fb147 Bug 1299516 - Allow MediaEngines to Start() and Stop() without affecting tracks. r=jib, r=padenot
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
2017-12-18 16:19:33 +01:00
Andreas Pehrson 3ceaba23ab Bug 1299515 - Flatten MediaEngineSource class hierarchy. r=jib
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
2018-01-24 16:49:13 +01:00
Munro Mengjue Chiang e782a0379f Bug 1388219 - add a nsTArray mTargetCapability to record each track target capability. r=jib
MozReview-Commit-ID: E8ZCmXEDxKs

--HG--
extra : rebase_source : 5cab9cdb5cc1a67d6cf4c0b5c5c7caef5cfe7ea0
2017-11-30 15:44:20 +08:00
Ryan VanderMeulen 5395ec18d2 Backed out 3 changesets (bug 1421025, bug 1388219) for causing bug 1421706 on a CLOSED TREE.
Backed out changeset 1a69438ec05f (bug 1421025)
Backed out changeset 213c2c200c08 (bug 1388219)
Backed out changeset 341aaeb4ce69 (bug 1388219)
2017-11-29 17:00:27 -05:00
Munro Mengjue Chiang f02f21154e Bug 1388219 - add a nsTArray mTargetCapability to record each track target capability. r=jib
MozReview-Commit-ID: 476kNk16VKR

--HG--
extra : rebase_source : c0718f640acdebaad9c314441e217f43377e12de
2017-11-23 15:46:25 +08:00
Randell Jesup 450c4d90a1 Bug 1341285: rollup of changes for webrtc after applying webrtc.org v57 update r=ng,jesup,pehrsons,drno,dminor,cpearce,jya,glandium,dmajor
Includes re-importing gyp files removed from upstream in v56, and then
updating them to match the BUILD.gn file changes.

--HG--
rename : media/webrtc/trunk/webrtc/call/audio_send_stream.cc => media/webrtc/trunk/webrtc/call/audio_send_stream_call.cc
2017-06-13 01:54:13 -04:00
Andrea Marchesini 98f845f364 Bug 1320170 - dom/media should use nsIPrincipal (and PrincipalInfo) instead origin as string, r=rjesup, r=ehsan 2017-01-28 18:29:13 +01:00
Randell Jesup ac570b16c4 Bug 1250356: rollup of changes for webrtc after applying webrtc.org v49 update r=pkerr,ng,pehrsons,etc
See ssh://hg.mozilla.org/users/paulrkerr_gmail.com/webrtc49_merge/ for the
patch development history.
2016-12-27 19:41:02 -05:00
Jan-Ivar Bruaroey fb49e07898 Bug 1284910 - Add scary boolean to mediaDeviceInfo. r=jesup
MozReview-Commit-ID: 2A7QZgUQH8l

--HG--
extra : rebase_source : 15f534bd11d1b8bb4e85de7bc8cac45c99654ce4
2016-09-29 15:37:25 -04:00
Jan-Ivar Bruaroey 1f7f1269f6 Bug 1286096 - Move UpdateSingleSource pattern to MediaEngine base class for reuse. r=padenot
MozReview-Commit-ID: IJjZayOSxp4

--HG--
extra : rebase_source : de44566213623492982653c90793be9cceee539b
2016-07-13 16:07:03 -04:00