Kill NotifyPull for video tracks
Categories
(Core :: Audio/Video: MediaStreamGraph, enhancement, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox68 | --- | fixed |
People
(Reporter: pehrsons, Assigned: pehrsons)
References
(Blocks 2 open bugs)
Details
Attachments
(35 files, 1 obsolete file)
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 | |
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 | |
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 |
Without durations for video chunks there's no need to know the duration of a frame before appending it to a track in the graph - we can just append when a new frame is available. With durations and NotifyPull on track listeners in place we can switch all video producers relying on NotifyPull (canvas capture, peer connection, MediaEngineRemoteVideoSource) to be purely push-based, and remove NotifyPull() calls for video altogether.
Assignee | ||
Updated•7 years ago
|
Updated•6 years ago
|
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 1•5 years ago
|
||
The webrtc-pc spec says:
If track is ended, or if the track's output is disabled, i.e. the track is
disabled and/or muted, the RTCRtpSender MUST send silence (audio),
black frames (video) or a zero-information-content equivalent.
In the case of video, the RTCRtpSender SHOULD send one black frame per second.
This patch covers this case, and the case when no frames reach the
MediaPipeline, for both direct and non-direct video listeners.
Assignee | ||
Comment 2•5 years ago
|
||
Assignee | ||
Comment 3•5 years ago
|
||
Assignee | ||
Comment 4•5 years ago
|
||
Assignee | ||
Comment 5•5 years ago
|
||
Assignee | ||
Comment 6•5 years ago
|
||
Assignee | ||
Comment 7•5 years ago
|
||
Assignee | ||
Comment 8•5 years ago
|
||
Assignee | ||
Comment 9•5 years ago
|
||
Assignee | ||
Comment 10•5 years ago
|
||
Assignee | ||
Comment 11•5 years ago
|
||
Assignee | ||
Comment 12•5 years ago
|
||
Assignee | ||
Comment 13•5 years ago
|
||
Assignee | ||
Comment 14•5 years ago
|
||
VideoSegments still have durations, and they are still needed by the
MediaStreamGraph as it shuffles MediaSegments around.
They do not have a say in the wall-clock duration of video frames however.
Removing this should prevent any producers starting to add video chunks with
durations in the future.
Assignee | ||
Comment 15•5 years ago
|
||
Assignee | ||
Comment 16•5 years ago
|
||
Assignee | ||
Comment 17•5 years ago
|
||
Assignee | ||
Comment 18•5 years ago
|
||
Assignee | ||
Comment 19•5 years ago
|
||
Assignee | ||
Comment 20•5 years ago
|
||
WebRTC.org doesn't handle receiving multiple future frames.
This will buffer future frames from a direct listener in MediaPipeline
and pass them on when the frame's wall clock timestamp has been reached.
Assignee | ||
Comment 21•5 years ago
|
||
Assignee | ||
Comment 22•5 years ago
|
||
It is unnecessary.
Assignee | ||
Comment 23•5 years ago
|
||
It is only used in one place. Can just as well be inlined there.
Assignee | ||
Comment 24•5 years ago
|
||
Assignee | ||
Comment 25•5 years ago
|
||
Assignee | ||
Comment 26•5 years ago
|
||
Assignee | ||
Comment 27•5 years ago
|
||
Assignee | ||
Comment 28•5 years ago
|
||
Assignee | ||
Comment 29•5 years ago
|
||
Assignee | ||
Comment 30•5 years ago
|
||
Updated•5 years ago
|
Assignee | ||
Comment 31•5 years ago
|
||
Updated•5 years ago
|
Assignee | ||
Comment 32•5 years ago
|
||
To avoid building up a queue of frames when the machine cannot keep up.
Assignee | ||
Comment 34•5 years ago
|
||
This lets us unit test it in a future patch.
Assignee | ||
Comment 35•5 years ago
|
||
Comment 36•5 years ago
|
||
Pushed by pehrsons@gmail.com: https://hg.mozilla.org/integration/autoland/rev/35977d5dcf5c Remove mMutex from VideoFrameConverter. r=dminor https://hg.mozilla.org/integration/autoland/rev/d69f006bc09e Use a timer to make sure we keep sending video over a peer connection when there's no input. r=dminor https://hg.mozilla.org/integration/autoland/rev/9e13d07d7617 Change CanvasCaptureMediaStream's driver to push instead of pull. r=padenot https://hg.mozilla.org/integration/autoland/rev/54b4c9399b81 Change MediaEngineRemoteVideoSource to push instead of pull. r=padenot https://hg.mozilla.org/integration/autoland/rev/60d215858649 Add a drift compensator to reclock video timestamps. r=padenot https://hg.mozilla.org/integration/autoland/rev/9478255cfe12 Add drift compensation to MediaEncoder. r=padenot https://hg.mozilla.org/integration/autoland/rev/3de6381be3d9 Automatically progress a pushed video track to avoid blocking its stream. r=padenot https://hg.mozilla.org/integration/autoland/rev/61a4762b830d Remove support for direct audio listeners from AudioTrackEncoder. r=padenot https://hg.mozilla.org/integration/autoland/rev/9e6eddfb4ef8 Route MediaEncoder::Suspend/Resume through the graph thread for less drift. r=padenot https://hg.mozilla.org/integration/autoland/rev/2f7f881b7ede Disregard VideoChunk durations in VideoTrackEncoder. r=padenot https://hg.mozilla.org/integration/autoland/rev/e2a57da64b18 Remove pulling from MediaEngineTabVideoSource and fix thread safety. r=padenot https://hg.mozilla.org/integration/autoland/rev/75a1569247b8 Remove pulling (and mutex) from the default video source. r=padenot https://hg.mozilla.org/integration/autoland/rev/d8af2cceb3c8 Remove pulling (and mutex) from MediaPipelineReceiveVideo. r=padenot https://hg.mozilla.org/integration/autoland/rev/387b32b7e55d Remove durations from VideoSegment::AppendFrame. r=padenot https://hg.mozilla.org/integration/autoland/rev/ba0778323644 Make a VideoTrackEncoder gtest more explicit. r=padenot https://hg.mozilla.org/integration/autoland/rev/a838c502c66a Disallow pulling of video. r=padenot https://hg.mozilla.org/integration/autoland/rev/f8cf618572c6 Remove unused SourceMediaStream::GetEndOfAppendedData. r=padenot https://hg.mozilla.org/integration/autoland/rev/d802933bc25e Disallow direct track listeners for audio tracks. r=padenot https://hg.mozilla.org/integration/autoland/rev/ffa939521c30 Remove superfluous character from test_mr_pause_resume_video.html. r=jib https://hg.mozilla.org/integration/autoland/rev/2a52a7ee6bfc Move VideoFrameConverter to its own file. r=dminor https://hg.mozilla.org/integration/autoland/rev/5fdd6c8a0d2f Move YUVBufferGenerator into its own files so it can be used by other media gtests. r=dminor https://hg.mozilla.org/integration/autoland/rev/b5e813887d3f Pace future video frames in MediaPipeline. r=dminor,padenot https://hg.mozilla.org/integration/autoland/rev/1437c364fe99 Drop old frames before they get processed in VideoFrameConverter. r=padenot https://hg.mozilla.org/integration/autoland/rev/c608a0db0063 Notify MediaStreamTrackListeners about tracks' enabled state. r=padenot https://hg.mozilla.org/integration/autoland/rev/30552dd7fbfc Remove DirectMediaStreamTrackListener::mMedia. r=padenot https://hg.mozilla.org/integration/autoland/rev/81d85b902990 Move VideoSegment-specific logic out of VideoFrameContainer. r=padenot https://hg.mozilla.org/integration/autoland/rev/f37f5f1fc1e7 Make future frames in a VideoFrameContainer black when a track is disabled. r=padenot https://hg.mozilla.org/integration/autoland/rev/9019e6f0a6c3 Make future frames in MediaPipeline black when a track is disabled. r=padenot https://hg.mozilla.org/integration/autoland/rev/9f3a6410605a Improve MediaPipeline logging and fix formatting. r=dminor https://hg.mozilla.org/integration/autoland/rev/7153764aded8 Make future frames in VideoTrackEncoder black when a track is disabled. r=padenot https://hg.mozilla.org/integration/autoland/rev/e4a2813727b5 Fix test_mr_record_addtracked_stream.html recording a video that is too short. r=padenot https://hg.mozilla.org/integration/autoland/rev/56569d42dd80 Put DecodedStreamData::mEOSVideoCompensation on the stack. r=padenot https://hg.mozilla.org/integration/autoland/rev/ab393db34aa5 Handle MediaDecoder pauses when future frames are already buffered. r=padenot
Comment 37•5 years ago
|
||
Comment 38•5 years ago
|
||
Pushed by padenot@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/c0cf1a5594aa Unbreak MINGW by defining WEBRTC_WIN manually.
Comment 39•5 years ago
|
||
Comment 40•5 years ago
|
||
Pushed by padenot@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/b6940071e197 Really unbreak MINGW builds for video TestVideoFrameConverter, by not building it when WebRTC is disabled.
Comment 41•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/35977d5dcf5c
https://hg.mozilla.org/mozilla-central/rev/d69f006bc09e
https://hg.mozilla.org/mozilla-central/rev/9e13d07d7617
https://hg.mozilla.org/mozilla-central/rev/54b4c9399b81
https://hg.mozilla.org/mozilla-central/rev/60d215858649
https://hg.mozilla.org/mozilla-central/rev/9478255cfe12
https://hg.mozilla.org/mozilla-central/rev/3de6381be3d9
https://hg.mozilla.org/mozilla-central/rev/61a4762b830d
https://hg.mozilla.org/mozilla-central/rev/9e6eddfb4ef8
https://hg.mozilla.org/mozilla-central/rev/2f7f881b7ede
https://hg.mozilla.org/mozilla-central/rev/e2a57da64b18
https://hg.mozilla.org/mozilla-central/rev/75a1569247b8
https://hg.mozilla.org/mozilla-central/rev/d8af2cceb3c8
https://hg.mozilla.org/mozilla-central/rev/387b32b7e55d
https://hg.mozilla.org/mozilla-central/rev/ba0778323644
https://hg.mozilla.org/mozilla-central/rev/a838c502c66a
https://hg.mozilla.org/mozilla-central/rev/f8cf618572c6
https://hg.mozilla.org/mozilla-central/rev/d802933bc25e
https://hg.mozilla.org/mozilla-central/rev/ffa939521c30
https://hg.mozilla.org/mozilla-central/rev/2a52a7ee6bfc
https://hg.mozilla.org/mozilla-central/rev/5fdd6c8a0d2f
https://hg.mozilla.org/mozilla-central/rev/b5e813887d3f
https://hg.mozilla.org/mozilla-central/rev/1437c364fe99
https://hg.mozilla.org/mozilla-central/rev/c608a0db0063
https://hg.mozilla.org/mozilla-central/rev/30552dd7fbfc
https://hg.mozilla.org/mozilla-central/rev/81d85b902990
https://hg.mozilla.org/mozilla-central/rev/f37f5f1fc1e7
https://hg.mozilla.org/mozilla-central/rev/9019e6f0a6c3
https://hg.mozilla.org/mozilla-central/rev/9f3a6410605a
https://hg.mozilla.org/mozilla-central/rev/7153764aded8
https://hg.mozilla.org/mozilla-central/rev/e4a2813727b5
https://hg.mozilla.org/mozilla-central/rev/56569d42dd80
https://hg.mozilla.org/mozilla-central/rev/ab393db34aa5
https://hg.mozilla.org/mozilla-central/rev/c0cf1a5594aa
https://hg.mozilla.org/mozilla-central/rev/b6940071e197
Description
•