Allow front-end to mute/unmute all camera tracks
Categories
(Core :: WebRTC: Audio/Video, enhancement, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox81 | --- | fixed |
People
(Reporter: jib, Assigned: jib)
References
(Blocks 2 open bugs)
Details
Attachments
(15 files, 2 obsolete files)
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review |
From bug 1564451 comment 20 (android):
- Temporarily mute/unmute camera's video track(s) when app goes into/out of background, for parity with Chrome for Android. Test it here.
For #1 we need to expose a platform API to mute/unmute all camera tracks, since nothing does that yet AFAIK.
Assignee | ||
Comment 1•3 years ago
|
||
Assignee | ||
Comment 2•3 years ago
|
||
Depends on D84222
Assignee | ||
Comment 3•3 years ago
|
||
Depends on D84223
Assignee | ||
Comment 4•3 years ago
|
||
Depends on D84243
Assignee | ||
Comment 5•3 years ago
|
||
Assignee | ||
Comment 6•3 years ago
|
||
Depends on D84268
Assignee | ||
Comment 7•3 years ago
|
||
Depends on D86070
Assignee | ||
Comment 8•3 years ago
|
||
Depends on D86071
Assignee | ||
Comment 9•3 years ago
|
||
Depends on D86072
Assignee | ||
Comment 10•3 years ago
|
||
Depends on D86875
Comment 11•3 years ago
|
||
This enables a use case where MediaManager disables a MediaStreamTrack's input
track, and all listeners of NotifyEnabledStateChanged on the MediaStreamTrack's
main track will get notified.
There can be 1 input track for N MediaStreamTracks, so this simplifies how many
tracks will need to be tracked by MediaManager and explicitly disabled in the
graph.
Depends on D86072.
Comment 12•3 years ago
|
||
Before this patch, re-enabling a camera track would first render an old frame
(from when it got disabled), then when the camera has started anew, render the
new frames.
With the patch, the black frame from disabling remains until the camera has
started and is sending new frames.
Depends on D86925
Updated•3 years ago
|
Updated•3 years ago
|
Comment 13•3 years ago
|
||
Previously it listened for them on main thread, as notified by the
MediaStreamTrack it was transmitting directly. With this patch it
listens for them through the TrackListener in the graph, and will
get notified when any track prior to the MediaStreamTrack's main
track in the graph changes enabled state as well.
Depends on D86926.
Comment 14•3 years ago
|
||
This allows newly created window listeners, in MediaManager instances where the
cameras have already been muted, to get the right state.
Depends on D86931
Comment 15•3 years ago
|
||
This affects HTMLMediaElement and MediaRecorder, which are the only implementors
of NotifyEnabledStateChanged.
This use case is going to become more common as users will be able to globally
mute cameras before requesting one. While muted, the camera is off and no frames
will flow. The old logic for showing disabled video tracks as black relied on a
frame appearing that could be turned black.
With this patch in this case we will create a frame if none has been seen yet,
and it will have a hardcoded size.
Depends on D87127
Assignee | ||
Comment 16•3 years ago
|
||
Depends on D87128
Comment 17•3 years ago
|
||
r=karlt
This follows on the same logic ForwardedInputTrack is using.
Note that this patch was reviewed out of band at
https://phabricator.services.mozilla.com/D86925#inline-497307
Depends on D86925
Updated•3 years ago
|
Comment 18•3 years ago
|
||
Pushed by jbruaroey@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/763f39eb5c13 Add observer messages to mute/unmute all camera tracks. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/9010365ffa66 Test browser muting/unmuting of camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/76b4abccd61b Test that mute/unmute track events fire from UA muting camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/32f4aae2b5fe Test combination of disabling track & muting camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/e0b1266231bf Rename MediaTrack::SetEnabled to SetDisabledTrackMode. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/e6ed13952b67 Produce black on UA camera mute. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/438cce7456fb Mute new cam tracks on start when window has cameras UA muted, to avoid JS circumventing mute. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/6b37b60b6662 Propagate disabled mode to consumer tracks in the graph. r=karlt https://hg.mozilla.org/integration/autoland/rev/eaa171643447 Maintain direct listener disabled state also when adding/removing to source tracks. https://hg.mozilla.org/integration/autoland/rev/569ff85dfc2e Keep a disabled video track black until new frames arrive after enabling. r=jib https://hg.mozilla.org/integration/autoland/rev/6f5833203763 Make MediaPipelineTransmit listen for track enabled state changes from the graph. r=jib https://hg.mozilla.org/integration/autoland/rev/8e67fe040e4a Add state for camera muting to MediaManager. r=jib https://hg.mozilla.org/integration/autoland/rev/658ba8f39abe Make disabled tracks, that haven't seen a frame, black. r=jib https://hg.mozilla.org/integration/autoland/rev/28c4e8c373f0 Be ready to mute cameras while mobile is in the background r=agi,pehrsons
Comment 19•3 years ago
|
||
Backed out 14 changesets (bug 1652884) for VideoFrameConverter related failures.
Backout link: https://hg.mozilla.org/integration/autoland/rev/e8054b77177ab72fe86d6f2038f1c23cc44af0b8
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=313475583&repo=autoland&lineNumber=29421
[task 2020-08-19T19:23:32.727Z] 19:23:32 INFO - TEST-START | VideoFrameConverterTest.BlackOnDisable
[task 2020-08-19T19:23:32.944Z] 19:23:32 WARNING - TEST-UNEXPECTED-FAIL | VideoFrameConverterTest.BlackOnDisable | Expected: (TimeStamp::Now() - now) > (TimeDuration::FromMilliseconds(1100)), actual: 218.005 ms vs 1100 ms @ /builds/worker/checkouts/gecko/dom/media/gtest/TestVideoFrameConverter.cpp:178
[task 2020-08-19T19:23:32.944Z] 19:23:32 WARNING - TEST-UNEXPECTED-FAIL | VideoFrameConverterTest.BlackOnDisable | Expected: (frames[0].second - now) > (future1 - now), actual: 0.088467 ms vs 100 ms @ /builds/worker/checkouts/gecko/dom/media/gtest/TestVideoFrameConverter.cpp:182
[task 2020-08-19T19:23:32.944Z] 19:23:32 WARNING - TEST-UNEXPECTED-FAIL | VideoFrameConverterTest.BlackOnDisable | Expected: (frames[1].second - now) > (future1 - now + TimeDuration::FromSeconds(1)), actual: 217.99 ms vs 1100 ms @ /builds/worker/checkouts/gecko/dom/media/gtest/TestVideoFrameConverter.cpp:186
[task 2020-08-19T19:23:32.944Z] 19:23:32 WARNING - TEST-UNEXPECTED-FAIL | VideoFrameConverterTest.BlackOnDisable | The difference between frames[1].first.timestamp_us() and frames[0].first.timestamp_us() + ((1000000L * 3) / 2) is 1282000, which exceeds 1000000L / 2, where
[task 2020-08-19T19:23:32.945Z] 19:23:32 INFO - frames[1].first.timestamp_us() evaluates to 663720000,
[task 2020-08-19T19:23:32.945Z] 19:23:32 INFO - frames[0].first.timestamp_us() + ((1000000L * 3) / 2) evaluates to 665002000, and
[task 2020-08-19T19:23:32.945Z] 19:23:32 INFO - 1000000L / 2 evaluates to 500000. @ /builds/worker/checkouts/gecko/dom/media/gtest/TestVideoFrameConverter.cpp:190
[task 2020-08-19T19:23:32.945Z] 19:23:32 WARNING - TEST-UNEXPECTED-FAIL | VideoFrameConverterTest.BlackOnDisable | test completed (time: 218ms)
Comment 20•3 years ago
|
||
Pushed by jbruaroey@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/de7537bda499 Add observer messages to mute/unmute all camera tracks. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/8f60e3af2a19 Test browser muting/unmuting of camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/876dbad27af5 Test that mute/unmute track events fire from UA muting camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/84e82e25929f Test combination of disabling track & muting camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/b9f419aed12d Rename MediaTrack::SetEnabled to SetDisabledTrackMode. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/74a2f5a9eea2 Produce black on UA camera mute. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/dd6edf636659 Mute new cam tracks on start when window has cameras UA muted, to avoid JS circumventing mute. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/605c1ac3081a Propagate disabled mode to consumer tracks in the graph. r=karlt https://hg.mozilla.org/integration/autoland/rev/9e9511e32cdd Maintain direct listener disabled state also when adding/removing to source tracks. https://hg.mozilla.org/integration/autoland/rev/991e8975f03d Keep a disabled video track black until new frames arrive after enabling. r=jib https://hg.mozilla.org/integration/autoland/rev/c99c32323c76 Make MediaPipelineTransmit listen for track enabled state changes from the graph. r=jib https://hg.mozilla.org/integration/autoland/rev/20a10128b5e1 Add state for camera muting to MediaManager. r=jib https://hg.mozilla.org/integration/autoland/rev/fc697986d538 Make disabled tracks, that haven't seen a frame, black. r=jib https://hg.mozilla.org/integration/autoland/rev/f83951453e94 Be ready to mute cameras while mobile is in the background r=agi,pehrsons
Comment 21•3 years ago
|
||
Backed out 14 changesets (bug 1652884) for test_peerConnection_trackDisabling.html failures.
Backout link: https://hg.mozilla.org/integration/autoland/rev/0ba7afbc4eee63f52955c97412dac0b1a7191248
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=313483606&repo=autoland&lineNumber=53892
...
[task 2020-08-19T21:54:05.674Z] 21:54:05 INFO - Run step 49: CHECK_ASSUMPTIONS
[task 2020-08-19T21:54:05.674Z] 21:54:05 INFO - TEST-PASS | dom/media/tests/mochitest/test_peerConnection_trackDisabling.html | pcLocal should have one media element
[task 2020-08-19T21:54:05.674Z] 21:54:05 INFO - TEST-PASS | dom/media/tests/mochitest/test_peerConnection_trackDisabling.html | pcRemote should have one media element
[task 2020-08-19T21:54:05.675Z] 21:54:05 INFO - TEST-PASS | dom/media/tests/mochitest/test_peerConnection_trackDisabling.html | pcLocal should have one stream
[task 2020-08-19T21:54:05.675Z] 21:54:05 INFO - TEST-PASS | dom/media/tests/mochitest/test_peerConnection_trackDisabling.html | pcRemote should have one stream
[task 2020-08-19T21:54:05.675Z] 21:54:05 INFO - Run step 50: CHECK_VIDEO
[task 2020-08-19T21:54:05.675Z] 21:54:05 INFO - Checking local video enabled
[task 2020-08-19T21:54:05.676Z] 21:54:05 INFO - Checking remote video enabled
[task 2020-08-19T21:54:05.676Z] 21:54:05 INFO - Disabling original
[task 2020-08-19T21:54:05.677Z] 21:54:05 INFO - Checking local video disabled
[task 2020-08-19T21:54:05.677Z] 21:54:05 INFO - Checking remote video disabled
[task 2020-08-19T21:54:05.677Z] 21:54:05 INFO - Buffered messages finished
[task 2020-08-19T21:54:05.677Z] 21:54:05 INFO - TEST-UNEXPECTED-FAIL | dom/media/tests/mochitest/test_peerConnection_trackDisabling.html | Test timed out.
[task 2020-08-19T21:54:05.677Z] 21:54:05 INFO - SimpleTest.ok@https://example.com/tests/SimpleTest/SimpleTest.js:417:16
[task 2020-08-19T21:54:05.677Z] 21:54:05 INFO - reportError@https://example.com/tests/SimpleTest/TestRunner.js:143:22
[task 2020-08-19T21:54:05.677Z] 21:54:05 INFO - TestRunner._checkForHangs@https://example.com/tests/SimpleTest/TestRunner.js:165:18
[task 2020-08-19T21:54:05.678Z] 21:54:05 INFO - GECKO(2005) | [Child 2062: Main Thread]: E/signaling [main|PeerConnectionImpl] PeerConnectionImpl.cpp:2754: GetStats: Found no pipelines matching selector.
[task 2020-08-19T21:54:06.547Z] 21:54:06 INFO - {"EMEInfo":{"keySystem":"","sessionsInfo":""},"compositorDroppedFrames":0,"decoder":{"PlayState":"","channels":0,"containerType":"","hasAudio":false,"hasVideo":false,"instance":"","rate":0,"reader":{"audioChannels":0,"audioDecoderName":"","audioFramesDecoded":0,"audioRate":0,"audioState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"audioType":"","frameStats":{"droppedCompositorFrames":0,"droppedDecodedFrames":0,"droppedSinkFrames":0},"videoDecoderName":"","videoHardwareAccelerated":false,"videoHeight":0,"videoNumSamplesOutputTotal":0,"videoNumSamplesSkippedTotal":0,"videoRate":0,"videoState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"videoType":"","videoWidth":0},"resource":{"cacheStream":{"cacheSuspended":false,"channelEnded":false,"channelOffset":0,"loadID":0,"streamLength":0}},"stateMachine":{"audioCompleted":false,"audioRequestStatus":"","clock":0,"decodedAudioEndTime":0,"decodedVideoEndTime":0,"duration":0,"isPlaying":false,"mediaSink":{"audioSinkWrapper":{"audioEnded":false,"audioSink":{"audioEnded":false,"hasErrored":false,"isPlaying":false,"isStarted":false,"lastGoodPosition":0,"outputRate":0,"playbackComplete":false,"startTime":0,"written":0},"isPlaying":false,"isStarted":false},"decodedStream":{"audioQueueFinished":false,"audioQueueSize":0,"data":{"audioFramesWritten":0,"haveSentFinishAudio":false,"haveSentFinishVideo":false,"instance":"","lastVideoEndTime":0,"lastVideoStartTime":0,"nextAudioTime":0,"streamAudioWritten":0,"streamVideoWritten":0},"instance":"","lastAudio":0,"lastOutputTime":0,"playing":0,"startTime":0},"videoSink":{"endPromiseHolderIsEmpty":false,"finished":false,"hasVideo":false,"isPlaying":false,"isStarted":false,"size":0,"videoFrameEndTime":0,"videoSinkEndRequestExists":false}},"mediaTime":0,"playState":0,"sentFirstFrameLoadedEvent":false,"state":"","stateObj":{"isPrerolling":false},"videoCompleted":false,"videoRequestStatus":""}}}
[task 2020-08-19T21:54:06.668Z] 21:54:06 INFO - {"EMEInfo":{"keySystem":"","sessionsInfo":""},"compositorDroppedFrames":0,"decoder":{"PlayState":"","channels":0,"containerType":"","hasAudio":false,"hasVideo":false,"instance":"","rate":0,"reader":{"audioChannels":0,"audioDecoderName":"","audioFramesDecoded":0,"audioRate":0,"audioState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"audioType":"","frameStats":{"droppedCompositorFrames":0,"droppedDecodedFrames":0,"droppedSinkFrames":0},"videoDecoderName":"","videoHardwareAccelerated":false,"videoHeight":0,"videoNumSamplesOutputTotal":0,"videoNumSamplesSkippedTotal":0,"videoRate":0,"videoState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"videoType":"","videoWidth":0},"resource":{"cacheStream":{"cacheSuspended":false,"channelEnded":false,"channelOffset":0,"loadID":0,"streamLength":0}},"stateMachine":{"audioCompleted":false,"audioRequestStatus":"","clock":0,"decodedAudioEndTime":0,"decodedVideoEndTime":0,"duration":0,"isPlaying":false,"mediaSink":{"audioSinkWrapper":{"audioEnded":false,"audioSink":{"audioEnded":false,"hasErrored":false,"isPlaying":false,"isStarted":false,"lastGoodPosition":0,"outputRate":0,"playbackComplete":false,"startTime":0,"written":0},"isPlaying":false,"isStarted":false},"decodedStream":{"audioQueueFinished":false,"audioQueueSize":0,"data":{"audioFramesWritten":0,"haveSentFinishAudio":false,"haveSentFinishVideo":false,"instance":"","lastVideoEndTime":0,"lastVideoStartTime":0,"nextAudioTime":0,"streamAudioWritten":0,"streamVideoWritten":0},"instance":"","lastAudio":0,"lastOutputTime":0,"playing":0,"startTime":0},"videoSink":{"endPromiseHolderIsEmpty":false,"finished":false,"hasVideo":false,"isPlaying":false,"isStarted":false,"size":0,"videoFrameEndTime":0,"videoSinkEndRequestExists":false}},"mediaTime":0,"playState":0,"sentFirstFrameLoadedEvent":false,"state":"","stateObj":{"isPrerolling":false},"videoCompleted":false,"videoRequestStatus":""}}}
[task 2020-08-19T21:54:06.786Z] 21:54:06 INFO - {"EMEInfo":{"keySystem":"","sessionsInfo":""},"compositorDroppedFrames":0,"decoder":{"PlayState":"","channels":0,"containerType":"","hasAudio":false,"hasVideo":false,"instance":"","rate":0,"reader":{"audioChannels":0,"audioDecoderName":"","audioFramesDecoded":0,"audioRate":0,"audioState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"audioType":"","frameStats":{"droppedCompositorFrames":0,"droppedDecodedFrames":0,"droppedSinkFrames":0},"videoDecoderName":"","videoHardwareAccelerated":false,"videoHeight":0,"videoNumSamplesOutputTotal":0,"videoNumSamplesSkippedTotal":0,"videoRate":0,"videoState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"videoType":"","videoWidth":0},"resource":{"cacheStream":{"cacheSuspended":false,"channelEnded":false,"channelOffset":0,"loadID":0,"streamLength":0}},"stateMachine":{"audioCompleted":false,"audioRequestStatus":"","clock":0,"decodedAudioEndTime":0,"decodedVideoEndTime":0,"duration":0,"isPlaying":false,"mediaSink":{"audioSinkWrapper":{"audioEnded":false,"audioSink":{"audioEnded":false,"hasErrored":false,"isPlaying":false,"isStarted":false,"lastGoodPosition":0,"outputRate":0,"playbackComplete":false,"startTime":0,"written":0},"isPlaying":false,"isStarted":false},"decodedStream":{"audioQueueFinished":false,"audioQueueSize":0,"data":{"audioFramesWritten":0,"haveSentFinishAudio":false,"haveSentFinishVideo":false,"instance":"","lastVideoEndTime":0,"lastVideoStartTime":0,"nextAudioTime":0,"streamAudioWritten":0,"streamVideoWritten":0},"instance":"","lastAudio":0,"lastOutputTime":0,"playing":0,"startTime":0},"videoSink":{"endPromiseHolderIsEmpty":false,"finished":false,"hasVideo":false,"isPlaying":false,"isStarted":false,"size":0,"videoFrameEndTime":0,"videoSinkEndRequestExists":false}},"mediaTime":0,"playState":0,"sentFirstFrameLoadedEvent":false,"state":"","stateObj":{"isPrerolling":false},"videoCompleted":false,"videoRequestStatus":""}}}
[task 2020-08-19T21:54:06.895Z] 21:54:06 INFO - {"EMEInfo":{"keySystem":"","sessionsInfo":""},"compositorDroppedFrames":0,"decoder":{"PlayState":"","channels":0,"containerType":"","hasAudio":false,"hasVideo":false,"instance":"","rate":0,"reader":{"audioChannels":0,"audioDecoderName":"","audioFramesDecoded":0,"audioRate":0,"audioState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"audioType":"","frameStats":{"droppedCompositorFrames":0,"droppedDecodedFrames":0,"droppedSinkFrames":0},"videoDecoderName":"","videoHardwareAccelerated":false,"videoHeight":0,"videoNumSamplesOutputTotal":0,"videoNumSamplesSkippedTotal":0,"videoRate":0,"videoState":{"demuxEOS":0,"demuxQueueSize":0,"drainState":0,"hasDecoder":false,"hasDemuxRequest":false,"hasPromise":false,"lastStreamSourceID":0,"needInput":false,"numSamplesInput":0,"numSamplesOutput":0,"pending":0,"queueSize":0,"timeTreshold":0,"timeTresholdHasSeeked":false,"waitingForData":false,"waitingForKey":false,"waitingPromise":false},"videoType":"","videoWidth":0},"resource":{"cacheStream":{"cacheSuspended":false,"channelEnded":false,"channelOffset":0,"loadID":0,"streamLength":0}},"stateMachine":{"audioCompleted":false,"audioRequestStatus":"","clock":0,"decodedAudioEndTime":0,"decodedVideoEndTime":0,"duration":0,"isPlaying":false,"mediaSink":{"audioSinkWrapper":{"audioEnded":false,"audioSink":{"audioEnded":false,"hasErrored":false,"isPlaying":false,"isStarted":false,"lastGoodPosition":0,"outputRate":0,"playbackComplete":false,"startTime":0,"written":0},"isPlaying":false,"isStarted":false},"decodedStream":{"audioQueueFinished":false,"audioQueueSize":0,"data":{"audioFramesWritten":0,"haveSentFinishAudio":false,"haveSentFinishVideo":false,"instance":"","lastVideoEndTime":0,"lastVideoStartTime":0,"nextAudioTime":0,"streamAudioWritten":0,"streamVideoWritten":0},"instance":"","lastAudio":0,"lastOutputTime":0,"playing":0,"startTime":0},"videoSink":{"endPromiseHolderIsEmpty":false,"finished":false,"hasVideo":false,"isPlaying":false,"isStarted":false,"size":0,"videoFrameEndTime":0,"videoSinkEndRequestExists":false}},"mediaTime":0,"playState":0,"sentFirstFrameLoadedEvent":false,"state":"","stateObj":{"isPrerolling":false},"videoCompleted":false,"videoRequestStatus":""}}}
[task 2020-08-19T21:54:06.912Z] 21:54:06 INFO - GECKO(2005) | MEMORY STAT | vsize 2937MB | residentFast 279MB | heapAllocated 55MB
[task 2020-08-19T21:54:06.914Z] 21:54:06 INFO - GECKO(2005) | [Child 2062: Main Thread]: E/signaling [main|PeerConnectionImpl] PeerConnectionImpl.cpp:2754: GetStats: Found no pipelines matching selector.
[task 2020-08-19T21:54:06.936Z] 21:54:06 INFO - TEST-OK | dom/media/tests/mochitest/test_peerConnection_trackDisabling.html | took 305609ms
Assignee | ||
Comment 22•3 years ago
|
||
Depends on D87539
Comment 23•3 years ago
|
||
Pushed by jbruaroey@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/3479d6d4720e Add observer messages to mute/unmute all camera tracks. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/149ca1a09c5a Test browser muting/unmuting of camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/714a543f5a2b Test that mute/unmute track events fire from UA muting camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/a7bce4685014 Test combination of disabling track & muting camera. r=padenot https://hg.mozilla.org/integration/autoland/rev/1c059a524a70 Rename MediaTrack::SetEnabled to SetDisabledTrackMode. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/048e722589de Produce black on UA camera mute. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/b16a8e267157 Mute new cam tracks on start when window has cameras UA muted, to avoid JS circumventing mute. r=pehrsons https://hg.mozilla.org/integration/autoland/rev/cca31f035f18 Propagate disabled mode to consumer tracks in the graph. r=karlt https://hg.mozilla.org/integration/autoland/rev/46132c70fae0 Maintain direct listener disabled state also when adding/removing to source tracks. r=karlt https://hg.mozilla.org/integration/autoland/rev/bebda52cc325 Keep a disabled video track black until new frames arrive after enabling. r=jib https://hg.mozilla.org/integration/autoland/rev/2a0f6a9af680 Make MediaPipelineTransmit listen for track enabled state changes from the graph. r=jib https://hg.mozilla.org/integration/autoland/rev/eab2a5693e01 Add state for camera muting to MediaManager. r=jib https://hg.mozilla.org/integration/autoland/rev/76ec485606bd Make disabled tracks, that haven't seen a frame, black. r=jib https://hg.mozilla.org/integration/autoland/rev/36c881e4d0a7 Be ready to mute cameras while mobile is in the background r=agi,pehrsons https://hg.mozilla.org/integration/autoland/rev/17e11043a3c8 Temporarily disable test_peerConnection_trackDisabling.html over bug 1660144 r=karlt
Comment 24•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/3479d6d4720e
https://hg.mozilla.org/mozilla-central/rev/149ca1a09c5a
https://hg.mozilla.org/mozilla-central/rev/714a543f5a2b
https://hg.mozilla.org/mozilla-central/rev/a7bce4685014
https://hg.mozilla.org/mozilla-central/rev/1c059a524a70
https://hg.mozilla.org/mozilla-central/rev/048e722589de
https://hg.mozilla.org/mozilla-central/rev/b16a8e267157
https://hg.mozilla.org/mozilla-central/rev/cca31f035f18
https://hg.mozilla.org/mozilla-central/rev/46132c70fae0
https://hg.mozilla.org/mozilla-central/rev/bebda52cc325
https://hg.mozilla.org/mozilla-central/rev/2a0f6a9af680
https://hg.mozilla.org/mozilla-central/rev/eab2a5693e01
https://hg.mozilla.org/mozilla-central/rev/76ec485606bd
https://hg.mozilla.org/mozilla-central/rev/36c881e4d0a7
https://hg.mozilla.org/mozilla-central/rev/17e11043a3c8
Assignee | ||
Updated•3 years ago
|
Description
•