Closed Bug 1654112 Opened 4 years ago Closed 3 years ago

[meta] Update libwebrtc to new stable branch 2H2020

Categories

(Core :: WebRTC, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
96 Branch
Tracking Status
relnote-firefox --- 96+
firefox96 --- fixed

People

(Reporter: ng, Assigned: pehrsons)

References

(Depends on 12 open bugs, Blocks 17 open bugs, Regressed 5 open bugs)

Details

(Keywords: meta)

Crash Data

Attachments

(297 files, 46 obsolete files)

48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review

This bug tracks the work necessary for the next libwebrtc update (2H 2020).

Information needed to perform this update is documented at https://wiki.mozilla.org/Media/WebRTC/libwebrtc_Update_2H2020 .

The process is documented at https://wiki.mozilla.org/Media/WebRTC/libwebrtc_Update_Process .

Priority: P1 → P2
Depends on: 1646904
Depends on: 1654119
Depends on: 1654137
Summary: [meta] Update libwebrtc → [meta] Update libwebrtc to new stable branch (tbd)
Summary: [meta] Update libwebrtc to new stable branch (tbd) → [meta] Update libwebrtc to new stable branch 2H2020
Blocks: 1654407
Blocks: 1671169
Depends on: 1677715
Blocks: 1412333
Blocks: 1654642
Blocks: 1576576

This code comes from the rollup of previous local patches to upstream, see
https://hg.mozilla.org/mozilla-central/rev/c8e80efab6fb

Assignee: nobody → apehrson
Status: NEW → ASSIGNED

This is needed to not regress stats. The milliseconds unit is more prevalent in
upstream stats code for timestamps.

This is similar to how it's already included for video send.

This switches those integrations to the new Call API, with AudioSendStream and
AudioReceiveStream as main API surface.

This will be used in PeerConnectionImpl for packetsReceived on the send side (from
rtcp).

For AudioConduit this patch:

  • Uses correct threads per upstream, pending changes due to the threading model
    update that's coming
  • Uses new upstream APIs for getting data for the stats

For VideoConduit this patch:

  • Removes the stats polling 1-second timer on main thread
  • Removes the internal stats classes for bridging stats between main and sts
    threads
  • Uses correct threads for direct access per upstream's thread checkers, pending
    changes due to the threading model

For PeerConnectionImpl and RTCRtpReceiver this patch:

  • Manages thread access into conduits for thread safety
  • Translates from the upstream Stats data models into our DOM data model

These fixes are made to reflect the current state of upstream.

This sets up our code for creating Call instances so that it works. A number of
things are left to do. Most notable fixing the threading model.

Until that is fixed we use main thread as a "worker" but this is not ideal.
It both leads to excessive work loads on main, and us having to set main as
"current" (using upstream's API for this) whenever we call into main from what
is meant to be the worker thread.

Doing this outside of the dtor, especially, removes the requirement of the
conduit having to be destroyed on the worker thread (main).

Not having threading requirements on the conduits' dtor means we can constify
conduit members everywhere, so this patch tries to do that, for added compiler
guarantees.

This assert was intended for when an input stream is started with processing on.
However, when an input stream is started with processing off, then later when
processing is turned on it triggers this assert because mSegment contains data
from InsertInGraph().

Depends on D102289

The new AudioProcessingImpl, and in particular AEC3 it seems, is more picky on
the ordering here. After an ApplyConfig() it needs ProcessStream() to properly
set up its internals. ProcessReverseStream sets off various asserts, for
instance because the processing sample rate is not divisible by 16k if
ProcessReverseStream() was fed 44.1k.

The input stream is not processed in passthrough, so we should skip feeding the
reverse stream too, to stay in sync.

This should also work with libwebrtc 64 currently in-tree.

This removes some prefs for things that are now unconfigurable, and adds some
others. This also re-works the plumbing for updating the config on the fly
through applyConstraints(). It is now simpler, with a single infallible call
to apply the new config.

Before this patch, if the data callback contained less data than was left over
from the last iteration, we'd skip iterating the graph again. The graph is
however is capable of 0-iterations.

This patch removes that optimization so that every data callback results in an
iteration.

This makes it easier to defer processing input data to the track processing
step, as is needed by the next patch in this stack, to keep input and output as
handed to AudioProcessing in sync as config changes are applied with
ControlMessages (in between input and output data notifications). With input
data processing deferred, ControlMessages are run first, then processing of
input data and last processing of output data.

These previously allowed a discontinuity at the beginning of the output stream.
This will no longer occur.

This is similar to the behavior prior to bug 1532898, which introduced telemetry
reporting every second. There's a bit of a difference in that we only report
data if we had collected some though the 1 second interval telemetry timer in
PeerConnectionCtx.

See Also: → 1646134
Assignee: apehrson → nobody
Status: ASSIGNED → NEW
Assignee: nobody → apehrson
Status: NEW → ASSIGNED

This patch uses mMutex to guarantee that the audio thread does not get things
pulled away from under its feet. When on the AudioProxyThread we allow blocking
the thread during negotiation. On the real audio thread we avoid blocking on
the mutex and return an error instead. This leads to us inserting silence --
which is fine since we're going through negotiation (call setup, teardown or
re-negotiation).

This also fixes the channel count when GetAudioFrame fails and we insert
silence, to use the same channel count as when we last appended real data. Since
changing the channel count can in the worst case cause a GraphDriver switch.

Prior to this patch, WebRtcCallWrapper would never clear the call instance,
meaning that it went away as the classes having references to WebRtcCallWrapper
also went away. These are mainly TransceiverImpl and PeerConnectionMedia. There
are other classes too, but these are the ones that have a strong-ref to
WebRtcCallWrapper and are cycle collected.

With the worker threads in libwebrtc now using our own TaskQueues on top of
our SharedThreadPool instances, the ownership model of the Call instances
becomes problematic.

On shutdown, xpcom-shutdown-threads happens before the cycle collector is shut
down.

xpcom-shutdown-threads will however, block shutdown until all SharedThreadPools
have been shut down.

If a TransceiverImpl sits around until shutdown it will only be destroyed
during cycle collector shutdown. And, alas, we reach a deadlock as we're stuck
in xpcom-shutdown-threads until that TransceiverImpl gets destroyed.

This patch decouples the Call instance lifetime from the cycle collector, and
avoids the shutdown hang.

This is especially prompted by a recurring task from libwebrtc that when run
will schedule itself again, which on a shut down TaskQueue will fail an assert.
The behavior with this patch better mirrors blink's behavior, and is what
libwebrtc expects.

No longer blocks: 1689340
Blocks: 1688342
Depends on: 1691457

This prepares VideoConduit for the decoder/encoder factory and its handling of
PluginID.

This hooks up VideoReceiveStream::Config with a decoder factory and
VideoSendStream::Config with both a bitrate allocator factory and an encoder
factory.

The factories are new and wraps all the types of decoders and encoders that we
could create prior to this patch. This patch lets libwebrtc create our codecs
on demand, allowing for reconfiguring the streams and changing codec on the fly.

Some extra care had to be taken to ensure that GMP PluginIDs can be properly
plumbed. This has been implemented with MediaEvent and MozPromise.

Some other changes are made too, as warranted by runtime or threading changes.

With the libwebrtc update codecs will be created off-main.
WebrtcGmpPCHandleSetter not only adds a lot of indirection, it is also
main-thread-only. With this patch we can create gmp codecs on any thread.

Attachment #9202383 - Attachment description: Bug 1654112 - Adapt the webrtc H264 codecs to the updated libwebrtc version. r?bwc! → Bug 1654112 - Adapt the webrtc codecs to the updated libwebrtc version. r?bwc!

The RTPFragmentationHeader is gone. Instead the packetizer scans for NALU start
sequences. OpenH264 encodes them natively, but converts them to NALU sizes
as expected by GMP.

This patch puts the start sequences back in, in-place, and mitigates bug 1533001
by allowing the start sequences that leak through from OpenH264 straight through
to libwebrtc, as an audit of OpenH264 code shows this can happen when internally
OpenH264 reports a NAL count of 0.

Depends on D105012

  • Pull in sdk/objc/base and sdk/objc/helpers
  • Ensure that -fobjc-arc is set (have to use cflags, because our gn -> json scripting ignores things like cflags_objc)
  • Add gclient_args.gni to keep build happy.
  • Add a missing include path for libyuv
  • Support .m files in build.

Depends on D105014

Depends on D105016

Attached file Bug 1654112: Get vp9 build working again. (obsolete) —

Depends on D105018

Peer connections are cleaned up on shutdown through an xpcom-shutdown observer.
It doesn't block shutdown throughout async operations.

webrtc::Call instances are currently used on the main thread and so destroying
them could be a sync operation. However with upcoming threading model changes
they are moving to a worker thread, making destruction of them inevitably async.

Currently they are even destroyed async, even though still on the main thread,
to better simulate the behavior we'd see with the threading model updated.

Destroying Call instances async can lead to a race between destroying all
TaskQueues tied to the Call instance, and reaching xpcom-shutdown-threads.
xpcom-shutdown-threads will shut down the thread pools backing the TaskQueues,
making future dispatches fail. We have asserts checking that dispatches always
succeed.

This patch adds a ShutdownBlocker to the Call wrapper, so progressing to
xpcom-shutdown-threads is blocked until Call instances are cleaned up and no
more dispatches are expected.

Attachment #9198393 - Attachment description: Bug 1654112 - Reset AudioProcessing when turning it off to clear old state. r?padenot → Bug 1654112 - Reset AudioProcessing when turning it off to clear old state.
Attachment #9198394 - Attachment description: Bug 1654112 - Minor tidying around lambdas and ControlMessages in MediaEngineWebRTCAudio. r?padenot → Bug 1654112 - Minor tidying around lambdas and ControlMessages in MediaEngineWebRTCAudio.
Attachment #9198395 - Attachment description: Bug 1654112 - Update microphone DeviceChanged handler to new AudioProcessing API. r?padenot → Bug 1654112 - Update microphone DeviceChanged handler to new AudioProcessing API.
Attachment #9198396 - Attachment description: Bug 1654112 - Adapt to new AudioProcessing config. r?padenot → Bug 1654112 - Adapt to new AudioProcessing config.

This helps with ASAN link errors. Cherry-picked commit's commit message:

310c82cd97b3f1f0d1ee93a0ee2b0aee828b2a93 by Abseil Team <absl-team@google.com>:

Simplify unaligned memory access functions.

The #ifdef to produce calls to __sanitizer_unaligned_load16 etc were needed in past versions of this code, when we were lying to the compiler about the alignment of the loads/stores, by using a reinterpret_cast.

However, a year ago, absl switched to simply use memcpy. Sanitizers support this correctly by default, nothing extra is required.

PiperOrigin-RevId: 343159883

This patch fixes a linker error where __sanitizer_annotate_contiguous_container
is an undefined hidden symbol referenced by
third_party/libwebrtc/third_party/abseil-cpp/absl/container/fixed_array.h.

Attachment #9204241 - Attachment is obsolete: true
Attachment #9204242 - Attachment is obsolete: true
Attachment #9204244 - Attachment is obsolete: true
Depends on: 1695580
Attachment #9200073 - Attachment description: Bug 1654112 - Fix up AudioConduit audio thread access model, and the channel count for silence. r?padenot → Bug 1654112 - Fix up AudioConduit audio thread access model, and the channel count for silence.
Attachment #9198390 - Attachment description: Bug 1654112 - Remove overzealous assert. r?padenot → Bug 1654112 - Remove overzealous assert.
Attachment #9198523 - Attachment description: Bug 1654112 - Always iterate the graph on a data callback. r?padenot → Bug 1654112 - Always iterate the graph on a data callback.
Attachment #9198391 - Attachment description: Bug 1654112 - Always start feeding input to audio processing, and always end on output. r?padenot → Bug 1654112 - Always start feeding input to audio processing, and always end on output.
Attachment #9198392 - Attachment description: Bug 1654112 - Don't feed the reverse stream in passthrough. r?padenot → Bug 1654112 - Don't feed the reverse stream in passthrough.
Attachment #9198524 - Attachment description: Bug 1654112 - Tighten AudioTrackGraph gtest discontinuity checks, and fix related comment/log. r?padenot → Bug 1654112 - Tighten AudioTrackGraph gtest discontinuity checks, and fix related comment/log.
Attachment #9200077 - Attachment is obsolete: true
Attachment #9204919 - Attachment description: Bug 1654112 - Add a compile-time error if WEBRTC_USE_X11 is not defined when compiling X11 desktop capture. r?ng! → Bug 1654112 - Add compile-time errors if WEBRTC_USE_X11 or MOZ_X11 are not defined when compiling X11 desktop capture. r?ng!
Attachment #9205532 - Attachment is obsolete: true
Attachment #9205533 - Attachment is obsolete: true
Attachment #9205534 - Attachment is obsolete: true
Attachment #9205535 - Attachment is obsolete: true
Attachment #9204918 - Attachment description: Bug 1654112 - Add sanitizer/common_interface_defs.h as system-header. r?bwc! → Bug 1654112 - Add sanitizer/common_interface_defs.h as system-header. r?glandium!

WIP Note: originally I commented this block out instead of checking build_with_mozilla. This needs to be checked.

Depends on D107900

Depends on D107901

This removes media/signaling/src from ThirdPartyPaths.txt as that directory no
longer exists.

It also adds media/signaling/gtest/MockCall.h as the new SetAndGetRecordingState
from upstream libwebrtc causes a static-analysis error because RecordingState is
a non-param type.

The cache can be a lot simpler than the old one, since libwebrtc handles
pruning old entries for us, and since we're now telling libwebrtc when we
render frames (so we don't have to make our own stats with guesses of when
frames will be rendered). We also now have a single implementation of the
cache in the base class.

This patch also removes the old CSRC stat insertion stuff we hacked into
libwebrtc for testing, and handles that stuff in our cache directly.

Involves teaching MediaPipelineFilter to learn ssrc->rid mappings more
aggressively since libwebrtc does not emit RTP RID more than once.

Also involves modifying a couple of mochitests to look for RTP RID in
the first packet, instead of whichever one comes in next once we care.

  • Make sure this is 0 if we have not received a RTCP RR yet.
  • Subtract the packet lost count from the result.

The divisor here was already in ticks/sec, which results in a conversion to seconds.

libwebrtc has stopped surfacing these, and Chromium does not support
these stats at all.

We've never supported the spec spelling (packetsDiscarded), and libwebrtc
no longer supports discarded packet count anyway.

Alsol, make sure errors note what kind of stats (audio/video) are being checked.

Attachment #9204243 - Attachment description: Bug 1654112: Fix comparison so capture timestamps aren't allowed to be 0. → Bug 1654112: libwebrtc modification: Fix comparison so capture timestamps aren't allowed to be 0.
Attachment #9198524 - Attachment is obsolete: true

This makes the latest changes to base_capturer_pipewire in our tree compile
with the libwebrtc 86 update.

Depends on D107902

Depends on D110895

Attachment #9208510 - Attachment is obsolete: true
Attachment #9208887 - Attachment description: Bug 1654112 - Add protobuff for AEC dumping;r?pehrsons → Abandoned - Bug 1654112 - Add protobuff for AEC dumping;r?pehrsons
Attachment #9208214 - Attachment is obsolete: true
Attachment #9208887 - Attachment is obsolete: true
Attachment #9214461 - Attachment is obsolete: true

It turns out these were in a specific order. This restores the order from a previous patch.

Attachment #9213645 - Attachment is obsolete: true

Additionally:

  • Trys to detect non-generated build file changes to the tree and exits to prevent a clean checkout and clobber
  • Adds the DEBUG_GEN variable that prints what is happening in the script
  • tee(s) the output of mach into the logs so one doesn't have to check them to see what went wrong
  • Removes the symlinked directories if they were left over by a failed run
  • Exits as soon as anything exits unexpectedly
  • Adds an optional variable so that the git checkout and the gclient sync checkout can live in different locations

Depends on D112131

Attachment #9215958 - Attachment description: Bug 1654112 - Switching to a precomputed list of valuse for win setup_tools.py;r?dminor → Bug 1654112 - Switching to a precomputed list of values for win setup_tools.py;r?dminor

This patch also renames it WebrtcCallWrapper, to better match neighboring
classes starting on "Webrtc".

Ideally TaskQueueWrapper would implement both webrtc::TaskQueueBase and
AbstractThread, but webrtc::TaskQueueBase is not refcounted so implementing both
in the same class is not possible.

This patch implements AbstractThread in a refcounted class CallWorkerThread on
top of TaskQueueWrapper. Because of SharedModuleThread not having a thread-safe
refcount, the same CallWorkerThread must be used for all Call instances.
PeerConnectionCtx's SharedWebrtcState becomes the canonical owner of the
CallWorkerThread, but WebrtcCallWrappers will all hold a strong reference to it.

The new AbstractThread allows us to use webrtc TaskQueues with Mozilla
specific higher order threading functions, like MozPromise, MediaEventSource,
and whatever else could come in handy, without having to use an explicit
CurrentTaskQueueSetter (which is not public) everywhere.

This patch makes mediapipeline_unittest pass an event target to the Call wrapper
but keeps using main thread for that event target, so that it can keep the test
cases simpler by allowing sybnc calls into the conduits.

TaskQueueWrapper::MainAsCurrent is no longer needed as mediapipeline_unittest
was the last user of it. A simpler version remains dedicated in
mediapipeline_unittest instead.

On its own this patch should mainly be seen as a refactor of the way we handle
races in MediaPipelineTransmit::SetTrack. Namely that Stop() immediately
followed by SetTrack is still exposed to racing.

This patch makes MediaPipelines use a WatchManager to manage their tracks.
For receive pipelines, mActive triggers whether we enable the receive listener.
For transmit pipelines, mActive and mDomTrack triggers whether mDomTrack's
underlying track is hooked up to feed data to the conduit. A hole is also
punched through this allowing for unittests to set an overriden send track
to avoid mocking a MediaStreamTrack (DOM object) and MediaTrackGraph (several
non-virtual methods we'd need to override).

This patch also moves the responsibility of starting and stopping conduits to
the transceiver/receiver objects, where most of the interaction with the
conduits is already happening.

This patch mainly sets the stage for using codec configs with StateMirroring.
It also makes the code a bit simpler, and removes the need to handle the nullptr
case.

SharedWebrtcState when managed by PeerConnectionCtx is destroyed on main thread.
With interactions with call instances being async, there is no guarantee that
the objects owned by SharedWebrtcState (and referenced through raw pointers by
Call instances) are alive until all Call instances have been destroyed.

Making the WebrtcCallWrapper keep a strong-ref to the SharedWebrtcState will
ensure it can manage the lifetime of the SharedWebrtcState for as long as
necessary.

The logic used for choosing codec in this patch mimics the logic of Chromium.

The case added by this patch will be used to destroy the worker thread on
shutdown, and have it release its resources. In particular the reference to its
underlying thread pool, which could be blocking shutdown.

Unittests might still use the case where responsibility of destroying the worker
thread is left external, to allow using SharedWebrtcState with main thread as
the worker thread.

This patch makes the Call worker thread support tail dispatch, since it is
required for state mirroring. Since tail dispatch is only used when both the
source and target threads support it, this will only be used for dispatch to or
from other Mozilla threads.

TaskQueueWrappers created by libwebrtc are made to not support tail dispatch,
since upstream code assumes that dispatches are direct. In some places this is
seen by one webrtc::TaskQueue dispatching a task to another webrtc::TaskQueue
and blocks the source thread until the task has run on the target.

This patch makes AudioConduit mimic VideoConduit. We no longer do any
thread-specific actions in the dtor, so this assert is unnecessary.

With VideoConduit setters being called on a worker thread rather than main, we
no longer have a guarantee that the first SendVideoFrame comes in after ssrcs
or the send codec config are set.

Setters have so far been called on main, and the listener that triggers
SendVideoFrame is also managed by main. Using a call worker thread would change
the thread the setters run on, but not the SendVideoFrame triggering listener.
This breaks the guarantee.

Assignee: apehrson → nobody
Status: ASSIGNED → NEW
Assignee: nobody → apehrson
Status: NEW → ASSIGNED
  • Our build didn't like the non-explictness of these conversion
    operators.
  • Changing to explicit required casts in various places.
Depends on: 1707769

Depends on D113433

  • pipefail doesn't work in sh on linux, so we're running under bash now.
  • removing a link for third_party/libwebrtc/.git didn't work due to a typo.
  • needed export on MOZCONFIG line.
  • only grab the specific .json file based on the build config.

Depends on D113439

Depends on D113604

Depends on D113605

Blocks: 1702781

Only works on Chrome because they zero out alloced memory?

Involves calling CFRunLoopRunInMode on the capture thread (so the RunLoop gets
cycles), and also calling Start() on the capture thread (so the callbacks are
connected to the same RunLoop we're giving cycles to).

Fixing error: format specifies type 'long' but the argument has type 'webrtc::ScreenId' (aka 'int')

Attachment #9218517 - Attachment is obsolete: true

Andrew, I do not believe any of the work in this bug has landed. There is still much work to be done. We are doing a number of try builds as we try to green this up.

Flags: needinfo?(continuation)

Oops, I meant to post that in another bug. Sorry.

Flags: needinfo?(kwright)
Flags: needinfo?(continuation)
Blocks: 1710676
Attachment #9221840 - Attachment description: Bug 1654112 - Revert NTDDI to version known buy win-2012 build machines;r?mjf → Bug 1654112 - Revert NTDDI to version known by win-2012 build machines;r?mjf
Attachment #9221840 - Attachment description: Bug 1654112 - Revert NTDDI to version known by win-2012 build machines;r?mjf → Bug 1654112 - Revert NTDDI to version known buy win-2012 build machines;r?mjf
Attachment #9222695 - Attachment is obsolete: true
  • Fix a couple typos.
  • Add a CONFIG_DIR variable to short path references.
  • Only run fixup_json.py on the current configs.
  • Adds requirement to define an environment variable on linux
    to indicate whether to generate only x86 files or x64/android
    file.
  • Generating x86 files will require installing i386 versions of
    some libraries in a bootstrapping type operation.
  • Generating x64/android files will run './mach bootstrap' to
    restore the 64-bit library version installed for x86
    generation.
  • Adds enviroment variable for skipping bootstrap operations
    on linux.

Depends on D115642

Attachment #9221838 - Attachment is obsolete: true
Attachment #9218818 - Attachment is obsolete: true
Attachment #9221840 - Attachment description: Bug 1654112 - Revert NTDDI to version known buy win-2012 build machines;r?mjf → Bug 1654112 - Revert NTDDI to version known by win-2012 build machines;r?mjf

Depends on D115665

Depends on D115666

Depends on D115667

Depends on D115668

  • new x86 linux json files
  • updated linux/android json files
  • updated macOS json files

Depends on D115741

These should all be permanent deletions unless we find
I've carved off too much of the abseil-cpp build.

Depends on D115742

Depends on D116258

Depends on: 1714115
Attachment #9218820 - Attachment is obsolete: true
Attachment #9222903 - Attachment is obsolete: true
Attachment #9222905 - Attachment is obsolete: true
Attachment #9222906 - Attachment is obsolete: true
Attachment #9218817 - Attachment is obsolete: true
Attachment #9204876 - Attachment description: Bug 1654112: Get RTCP BYE and RTP timeout handling working again (from Bug 1595479) → Bug 1654112: Get RTCP BYE and RTP timeout handling working again (from Bug 1595479) r?mjf
Attachment #9205019 - Attachment description: Bug 1654112: Get contributing/synchronization sources working again. → Bug 1654112: Get contributing/synchronization sources working again. r?ng
Attachment #9205532 - Attachment description: Bug 1654112: Clean up shared webrtc state in PeerConnectionCtx::Cleanup. → Bug 1654112: Clean up shared webrtc state in PeerConnectionCtx::Cleanup. r?mjf
Attachment #9205532 - Attachment is obsolete: false
Attachment #9205533 - Attachment is obsolete: false
Attachment #9205737 - Attachment description: Bug 1654112: Add a mutex lock that was somehow lost here. → Bug 1654112: Add a mutex lock that was somehow lost here. r?ng
Attachment #9209517 - Attachment description: Bug 1654112: Reimplement ssrc/csrc stats cache. → Bug 1654112: Reimplement ssrc/csrc stats cache. r?ng
Attachment #9209518 - Attachment description: Bug 1654112: Get simulcast test code working again. → Bug 1654112: Get simulcast test code working again. r?mjf
Attachment #9209519 - Attachment description: Bug 1654112: Bring our packetsReceived estimate up-to-spec. → Bug 1654112: Bring our packetsReceived estimate up-to-spec. r?ng
Attachment #9209520 - Attachment description: Bug 1654112: Fix this conversion. → Bug 1654112: Fix this conversion. r?ng
Attachment #9209521 - Attachment description: Bug 1654112: libwebrtc modification: Init some stats that were being passed to us uninitialized. → Bug 1654112: libwebrtc modification: Init some stats that were being passed to us uninitialized. r?ng
Attachment #9209522 - Attachment description: Bug 1654112: libwebrtc modification: Surface video RTCP SR stats again. → Bug 1654112: libwebrtc modification: Surface video RTCP SR stats again. r?ng
Attachment #9209523 - Attachment description: Bug 1654112: Remove tests for packetsDiscarded/discardedPackets. → Bug 1654112: Remove tests for packetsDiscarded/discardedPackets. r?ng
Attachment #9209524 - Attachment description: Bug 1654112: Disallow insane values in stats. → Bug 1654112: Disallow insane values in stats. r?ng
Attachment #9209525 - Attachment description: Bug 1654112: Make sure this waits for RTCP SR. → Bug 1654112: Make sure this waits for RTCP SR. r?jib
Blocks: 1210175
Blocks: 1692873
Blocks: 1718798

This patch changes the meaning of the target architecture to mean what it nominally should according to the gn documentation. I question as to if this could be upstreamed, but it may be worth a shot. If we do choose to pursue that. There are several other smaller patches that tackle individual instances, that this could be combined with.

Depends on D119706

Depends on D119707

Depends on D119708

Blocks: 1722217
Depends on: 1724065
Depends on: 1724068
Attachment #9217262 - Attachment is obsolete: true
Attachment #9231243 - Attachment is obsolete: true
Attachment #9208213 - Attachment is obsolete: true
Depends on: 1724867

Comment on attachment 9217237 [details]
Bug 1654112 - Allow using IsOnCurrentThread on AbstractThread. r?#xpcom-reviewers

Revision D112842 was moved to bug 1724867. Setting attachment 9217237 [details] to obsolete.

Attachment #9217237 - Attachment is obsolete: true

This patch also renames it WebrtcCallWrapper, to better match neighboring
classes starting on "Webrtc".

Ideally TaskQueueWrapper would implement both webrtc::TaskQueueBase and
AbstractThread, but webrtc::TaskQueueBase is not refcounted so implementing both
in the same class is not possible.

This patch implements AbstractThread in a refcounted class CallWorkerThread on
top of TaskQueueWrapper. Because of SharedModuleThread not having a thread-safe
refcount, the same CallWorkerThread must be used for all Call instances.
PeerConnectionCtx's SharedWebrtcState becomes the canonical owner of the
CallWorkerThread, but WebrtcCallWrappers will all hold a strong reference to it.

The new AbstractThread allows us to use webrtc TaskQueues with Mozilla
specific higher order threading functions, like MozPromise, MediaEventSource,
and whatever else could come in handy, without having to use an explicit
CurrentTaskQueueSetter (which is not public) everywhere.

Attachment #9235602 - Attachment is obsolete: true
Attachment #9235603 - Attachment is obsolete: true
Attachment #9235604 - Attachment is obsolete: true
Attachment #9235605 - Attachment is obsolete: true
Attachment #9235606 - Attachment is obsolete: true
Attachment #9215958 - Attachment is obsolete: true

Prior to this patch we'd update the description when setting the dom track, but
that could end up attributing logs with a new track prematurely. This patch
fixes the timing of updating the description. It also accomodates override
tracks in the description.

Depends on: 1725488

Comment on attachment 9236046 [details]
Bug 1654112 - deliver each RTP or RTCP packet only once to the Call Receiver;r?bwc

Revision D122514 was moved to bug 1725739. Setting attachment 9236046 [details] to obsolete.

Attachment #9236046 - Attachment is obsolete: true
Attachment #9204243 - Attachment description: Bug 1654112: libwebrtc modification: Fix comparison so capture timestamps aren't allowed to be 0. → Bug 1654112: (libwebrtc modification) Fix comparison so capture timestamps aren't allowed to be 0.
Attachment #9209518 - Attachment is obsolete: true
Depends on: 1725145

The main point of this patch is to harden how conduits handle configuration
changes. With conduit controller classes acting in a layer on top of conduits
(and their old sync style APIs), for instance
mTransmitting = true; mTransmitting = false; on the control thread gets
elided and cannot be used as a mean of applying configuration changes in the way
StartTransmitting(); ChangeConfig(); StopTransmitting(); could.

This patch removes the conduit controller classes, instead moving their mirrors
directly into the conduits. This allows for one larger "ConfigChanged" method
which can apply all the config changes while being aware of the state of the
conduit.

This patch effectively moves from setters to mirrors.

Unittests are updated to work with the new async structure. They're only on main
thread, but updates still happen async. Some helpers ensure that state changes
and direct (tail dispatched) tasks run in a for the tests sync fashion.

Prior to this patch TransceiverImpl held a ref to the call wrapper until
destruction. The call wrapper has a const ref to the call thread, which sits on
top of a SharedThreadPool.

In a case where TransceiverImpl lived until CC shutdown we'd hang because
prior to CC shutdown we'd block until all thread pools were shut down, and
shutting down the call wrapper thread pool was in effect dependent on CC
shutdown.

Unclear why this path was missed in the original patch.
Hopefully I didn't outsmart myself.

source_tracker_ is thread safe with its own internal mutex, so this call is safe
as long as the caller has a guarantee for the lifetime of the
AudioReceiveStream. This is similar to webrtc::VideoReceiveStream.

Upliftable.

If js doesn't intend to look at get*Sources, then pushing RtpSource info to main
thread constantly is cycles spent in vain. Considering that upstream already
updates this info off-main on every received frame it is also to a large extent
duplicate work. Especially the dispatching from the real-time audio thread can
hurt audio performance, in the worst case causing discontinuities in the output
stream to a user's speakers.

With this patch we instead let the main thread js APIs call through to
upstream's record of the RtpSource info, as this happens to be thread safe
already. The result is cached on the main thread for the duration of the current
main thread task, to make us spec compliant, even though we don't follow the
spec to the letter ("When ... frame ... is delivered ... the UA MUST queue a
task to update the relevant information for the RTCRtpContributingSource and
RTCRtpSynchronizationSource dictionaries ...").

Attachment #9217257 - Attachment is obsolete: true
Depends on: 1727262
Depends on: 1727558
Depends on: 1727563
Depends on: 1728321

AudioConduit will try to grab the lock on the audio thread, and if it fails
there is a risk of glitching. That is fine as long as the only other usage of
the lock is related to renegotiation where the audio stream is being recreated
anyway.

Then GetRtpSources was added, which, in order to not have to continuously push
(every 10ms) data from the call thread to main, grabs the lock on main thread.
With a Mutex there is now a risk of glitching audio even when we are not in
renegotiation.

A Read-Write-Lock solves this, because only renegotiation would lock the write
lock.

This patch is the result of a latent race where in VideoConduit the SSRC first
gets set by STS upon receiving a packet (new order with the threading model
update). Through (partial) signaling the Call thread then sets it to 0, which
triggers generation of a new temporary SSRC. The STS thread sees this and skips
dequeing the packet queue, causing the packet queue to grab all incoming packets
and the call stalls.

This patch fixes a race where transports (through pipelines) would be detached
on the STS thread before conduits had finished shutting down on the call thread.

Conduits would send various packets during shutdown, for instance RTCP Bye.
Dropping these caused some test failures.

A deadlock may happen when main thread calls into a conduit's
GetUpstreamRtpSources() as it grabs the conduit lock, while at the same time a
platform codec may be blocked on a sync runnable to main in a stream start()
method.

We only lock to protect the m{Recv|Send}Stream members, so while needed around
deleting and creating streams, the lock is unnecessary when stopping and
starting them.

This patch refactors the conduits so that the lock is not held when stopping or
starting streams. It also cleans up some log messages and return codes - some
old failure modes no longer exist upstream.

  • adds missing includes in several places
  • makes dom/media/webrtc/jsapi unified-only
Blocks: 1463838
Depends on: 1729364
Depends on: 1729365
Depends on: 1729366
Depends on: 1724014
Depends on: 1729367
Depends on: 1729372
Blocks: 1729455
Blocks: 1729466
Depends on: 1729964
Depends on: 1730013
Depends on: 1729988
Attachment #9239201 - Attachment description: Bug 1654112 - Try to straighten SSRC switching in conduits. r?bwc!, r?ng! → Bug 1654112 - Route packets with MediaEvents, and clean up conduits' cross-thread syncing. r?bwc!

This is a cherry-pick of the patches in
https://bugs.chromium.org/p/webrtc/issues/detail?id=12529

It also removes the old custom code we had for these stats, and our integration
with them.

There are two problems with this stat:

  • The BaseSeq tracking logic in MediaPipeline doesn't account for multiple ssrcs
    (rtx)
  • The stats code in PCImpl queries the BaseSeq on the wrong thread (Call vs Sts)

This patch fixes both of these, by tracking BaseSeq per ssrc, and by introducing
an extra thread hop.

If it weren't for mediapipeline_unittest we could remove all the packet counting
in MediaPipeline. Doing that proper (with gmock?) is a patch for another day,
but this patch goes in this direction by also lifting out the BaseSeq logic to
the conduits.

Attachment #9209525 - Attachment is obsolete: true
Depends on: 1731712
Attachment #9239204 - Attachment is obsolete: true
Depends on: 1731302
Depends on: 1732390
Depends on: 1732844

The call thread TaskQueue is process global so more easily gets saturated than
the worker TaskQueues that are per-call. This shows for instance under rr and
tsan.

Depends on: 1733930
Depends on: 1733935
Depends on: 1733937
Blocks: 1529581
Attachment #9205737 - Attachment is obsolete: true
Blocks: 1730748
Attachment #9205737 - Attachment is obsolete: false
Depends on: 1736900
Attachment #9246980 - Attachment description: Bug 1654112 - cherry pick win screen capture deadlock fixes;r?mjf → Bug 1654112 - altered cherry pick win screen capture deadlock fixes;r?mjf
Attachment #9247129 - Attachment is obsolete: true

The PID was being recorded so we could avoid SCARY windows. This restores that code. We should
reevaluate the situation there. Perhaps the filtering is already available. I see at least a
hint of that.

Depends on D129097

This is a altered version of upstream's 78c73477c75f3262cad837ce7b46adf284166b14.

Attachment #9247182 - Attachment is obsolete: true
Depends on: 1738628
Attachment #9205721 - Attachment is obsolete: true

At one point these were part of upstream libwebrtc but have since been removed.
Since these are now effectively our code, we should keep them in
dom/media/systemservices/video_engine rather than adding them back into
libwebrtc with every update.

A later patch in this series will add them to the moz.build file and update the
desktop capture code to work with these in their new location.

The old options to set echo control level and routing mode have been removed.
There are now two gain controller implementations; this uses the original one,
investigating switching to the newer one is best left until we land the update.

This also disables the tests while we figure out the new API.

This also disables the gtests until we figure out the new API.

Upstream's implementation for rid and mid assumes they are always present but
the current code in MediaPipelineFilter had them optional. We need to double
check which way it should be.

Generating moz.build files from a mix of old and new gn generated json files
leads does not work, so we'll temporarily remove all of the old files.

Work around a chicken-and-egg problem while generating json files from gn.

These are basically header files, we can treat them as such.

Required because of merge errors when rebasing pipewire changes from our
current version of webrtc against similar pipewire changes upstream.

This needs some investigation to see why we get this warning when it is not
present upstream.

The Linux desktop capture code now relies on these. The build will fail at the
link stage if these are not in system header wrappers.

This enables more of the VideoConduit code and updates the APIs used.

Note that this removes REMB support (upstream has removed the corresponding
configuration and it appears that even in our current version of libwebrtc,
enabling REMB only affects logging.

This also removes configuring the keyframe request method, as this no longer
seems to be supported upstream.

We should probably double check both REMB and keyframe requests before
landing this code.

Blocks: 1736481

Comment on attachment 9198391 [details]
Bug 1654112 - Always start feeding input to audio processing, and always end on output.

Revision D102578 was moved to bug 1736481. Setting attachment 9198391 [details] to obsolete.

Attachment #9198391 - Attachment is obsolete: true
Pushed by archaeopteryx@coole-files.de: https://hg.mozilla.org/mozilla-central/rev/18a58105941b Move desktop_device_info to dom/media/systemservices/video_engine. r=ng https://hg.mozilla.org/mozilla-central/rev/4595917071a8 Update vendor-libwebrtc script for rel86 import. r=ng https://hg.mozilla.org/mozilla-central/rev/a93c2d1df066 Vendor libwebrtc for rel86. r=ng https://hg.mozilla.org/mozilla-central/rev/d1df4970f4f0 Vendor libwebrtc/third_party for rel86. r=ng https://hg.mozilla.org/mozilla-central/rev/587c40771588 Vendor libwebrtc/build for rel86. r=ng https://hg.mozilla.org/mozilla-central/rev/d838dc7d2bb8 Update include paths for moved upstream code. r=ng https://hg.mozilla.org/mozilla-central/rev/e67770bb6a49 Add include dirs for abseil-cpp. r=ng https://hg.mozilla.org/mozilla-central/rev/9d7ab32fdc20 Update extension uris in JsepSessionImpl. r=ng https://hg.mozilla.org/mozilla-central/rev/4c8284f52c8b Update AudioProcessing config in MediaManager and MediaEngineWebRTCAudio. r=ng https://hg.mozilla.org/mozilla-central/rev/26f3fec64ff0 Replace uses of WrappedI420Buffer with WrapI420Buffer. r=ng https://hg.mozilla.org/mozilla-central/rev/ae0715e32c27 Update AudioConduit to use new APIs. r=ng https://hg.mozilla.org/mozilla-central/rev/3b777b313b76 Update VideoConduit to use new APIs. r=ng https://hg.mozilla.org/mozilla-central/rev/3d1bbf5dddb0 Update WebrtcGmpVideoCodec to use new APIs. r=ng https://hg.mozilla.org/mozilla-central/rev/1a244e507326 Update desktop capture code. r=ng https://hg.mozilla.org/mozilla-central/rev/afe92bb8ee8e Small fixes to RTCRtpReceiver and TransceiverImpl. r=ng https://hg.mozilla.org/mozilla-central/rev/03708238dc51 Update MockCall to reflect API changes. r=ng https://hg.mozilla.org/mozilla-central/rev/0dc6c152d8c6 Update WebRTC MediaDataCodec. r=ng https://hg.mozilla.org/mozilla-central/rev/e67874b7bab8 Update VideoStreamFactory. r=ng https://hg.mozilla.org/mozilla-central/rev/0aa9398df7c0 Fixes to MediaPipeline. r=ng https://hg.mozilla.org/mozilla-central/rev/5288094fbef3 Fixes to MediaPipelineFilter. r=ng https://hg.mozilla.org/mozilla-central/rev/993f55a7c840 Updates to dom/media/webrtc/third_party_build/moz.build. r=ng https://hg.mozilla.org/mozilla-central/rev/127ace4d8887 Tweak upstream gn files for Firefox build. r=ng https://hg.mozilla.org/mozilla-central/rev/97e4dae7a466 Remove all generated gn config files. r=ng https://hg.mozilla.org/mozilla-central/rev/069bf6604246 Add gn generated json files for Linux. r=ng https://hg.mozilla.org/mozilla-central/rev/96f6051798d1 Add empty third_party/libwebrtc/moz.build file to keep validation happy. r=ng https://hg.mozilla.org/mozilla-central/rev/c055fdffd1d0 Add script to help automate running gn code generation commands. r=ng https://hg.mozilla.org/mozilla-central/rev/78ba9dd01553 Filter .inc files when processing gn files. r=ng https://hg.mozilla.org/mozilla-central/rev/9b6fd52d3ba8 Changes to support building with external libyuv. r=ng https://hg.mozilla.org/mozilla-central/rev/7163801a480d Fully quality AudioLevel::kUri in channel_send.cc. r=ng https://hg.mozilla.org/mozilla-central/rev/214c3af8fb37 Fixup single_rw_fifo. r=ng https://hg.mozilla.org/mozilla-central/rev/92f0d3374bc9 Fixup vendoring for pipewire. r=ng https://hg.mozilla.org/mozilla-central/rev/6d34a9024dc2 Remove shared_x_util. r=ng https://hg.mozilla.org/mozilla-central/rev/8d832e832ffe Suppress -Wclass-varargs warning in logging.h. r=ng https://hg.mozilla.org/mozilla-central/rev/9452e226943f Fully qualify kIvfHeaderSize. r=ng https://hg.mozilla.org/mozilla-central/rev/57363f87bcb5 Update gn generated moz.build files. r=ng https://hg.mozilla.org/mozilla-central/rev/ef548d7758c7 Disable creating av1 encoder and decoder. r=ng https://hg.mozilla.org/mozilla-central/rev/99e7f86e5cad Add Xrandr.h and XTest.h to system headers. r=ng https://hg.mozilla.org/mozilla-central/rev/c5502287708e Enable more VideoConduit code. r=ng https://hg.mozilla.org/mozilla-central/rev/831bac499edc Remove dead rtp_rtcp code that was previously just rolling along. r=ng https://hg.mozilla.org/mozilla-central/rev/35b22aad7def Plumb RemoteRTCPSenderInfo through also for audio and change unit to ms. r=ng https://hg.mozilla.org/mozilla-central/rev/d380a43d59f4 Include RtcpPacketTypeCounter in audio send stats, to not regress nackCount. r=ng https://hg.mozilla.org/mozilla-central/rev/2b3390930a60 Plumb InsertAudioLevelForContributingSource into upstream, for mochitests. r=ng https://hg.mozilla.org/mozilla-central/rev/90a15d97399e Change order of kCsrcAudioLevelUri to better align with upstream. r=ng https://hg.mozilla.org/mozilla-central/rev/f16cf2573a4d Move AudioConduit to use upstream for audioLevel and remove unused code. r=ng https://hg.mozilla.org/mozilla-central/rev/8d60ee1f7cd7 Remove CODEC_PLNAME_SIZE as CodecInst no longer exists upstream. r=ng https://hg.mozilla.org/mozilla-central/rev/9b2bc72201da Remove obsolete ChannelProxy and VoiceEngine API integrations. r=ng https://hg.mozilla.org/mozilla-central/rev/93367fdd03ec Update threading invariant of AudioConduit::GetLocalSSRCs to match mRecvStreamConfig comment. r=ng https://hg.mozilla.org/mozilla-central/rev/01b9c509cecf Fix AudioConduit::SendAudioFrame to use the new AudioSendStream API. r=ng https://hg.mozilla.org/mozilla-central/rev/f7e8157d3554 Fix AudioCondut::GetAudioFrame to use the new AudioReceiveStream API. r=ng https://hg.mozilla.org/mozilla-central/rev/3eae9f9279f6 Track base_seq in MediaPipeline for stats purposes. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/88a9fe04aaa5 Update Audio- and VideoConduit stats API and integration. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/06ae2b9a2703 Don't access GetStats() in AudioConduit::GetRemoteSSRC(). r=ng https://hg.mozilla.org/mozilla-central/rev/069c5baf6d32 Implement AudioConduit::DeleteStreams. r=ng https://hg.mozilla.org/mozilla-central/rev/a55a718715f6 Report video frame-/bitrate telemetry once per call instead of every second. r=ng https://hg.mozilla.org/mozilla-central/rev/056b43129502 Fix AudioConduit comments, member naming and other minor things. r=ng https://hg.mozilla.org/mozilla-central/rev/b5228352d20d Fix up AudioConduit audio thread access model, and the channel count for silence. r=padenot https://hg.mozilla.org/mozilla-central/rev/23b8f56eec4b Tidy up around PeerConnectionCtx and use accessors for mPeerConnections. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/1af1af4020a2 Create Call instances using the new Call config. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/4f5ac04b4f82 Add a MediaEventForwarder for aggregating multiple MediaEventSources into one. r=alwu https://hg.mozilla.org/mozilla-central/rev/7e00d78d6389 Modify media::ShutdownTicket to make it more convenient to fire and forget. r=jib https://hg.mozilla.org/mozilla-central/rev/c7dbdd82e8e8 Set main thread as current TaskQueue when calling into libwebrtc so that audio calling works. r=bwc https://hg.mozilla.org/mozilla-central/rev/a1c16b86d3a7 Remove RtcpEventObserver. r=ng https://hg.mozilla.org/mozilla-central/rev/ceed49af0fad Don't register/unregister conduit with the call wrapper in ctor/dtor. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/da26bac32c32 Clean up and sort Audio/Video/MediaConduit includes. r=ng https://hg.mozilla.org/mozilla-central/rev/675b46e5aba7 Destroy Call instances as their associated PeerConnections close. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/c8015b9110fd Remove overzealous assert. r=padenot https://hg.mozilla.org/mozilla-central/rev/6f33a2fcd373 Always iterate the graph on a data callback. r=padenot https://hg.mozilla.org/mozilla-central/rev/d03b0978daf3 Don't feed the reverse stream in passthrough. r=padenot https://hg.mozilla.org/mozilla-central/rev/8eb021a434b0 Reset AudioProcessing when turning it off to clear old state. r=padenot https://hg.mozilla.org/mozilla-central/rev/b2f523bed588 Minor tidying around lambdas and ControlMessages in MediaEngineWebRTCAudio. r=padenot https://hg.mozilla.org/mozilla-central/rev/59cad1af8e89 Update microphone DeviceChanged handler to new AudioProcessing API. r=padenot https://hg.mozilla.org/mozilla-central/rev/1b0455842788 Adapt to new AudioProcessing config. r=padenot https://hg.mozilla.org/mozilla-central/rev/777632b3319a Move static functions in VideoConduit.cpp to anonymous namespace. r=ng https://hg.mozilla.org/mozilla-central/rev/2f1e8f5b2fc2 Rework GMP PluginID plumbing in VideoCondit. r=bwc https://hg.mozilla.org/mozilla-central/rev/7d270e96dfbf Adapt VideoConduit to the new libwebrtc version. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/1913c332695e Set main thread as current TaskQueue when calling into libwebrtc so that video calling works. r=bwc https://hg.mozilla.org/mozilla-central/rev/3ca24e761cc3 Remove WebrtcGmpPCHandleSetter and plumb pc handles explicitly. r=bwc https://hg.mozilla.org/mozilla-central/rev/709078257c62 Re-wire GMP PluginID between codecs and VideoConduit. r=bwc https://hg.mozilla.org/mozilla-central/rev/1b4a55820ddc Adapt the webrtc codecs to the updated libwebrtc version. r=bwc https://hg.mozilla.org/mozilla-central/rev/fae23bafbec1 Adapt GMP-OpenH264 encoder to new libwebrtc RtpPacketizerH264 expectations. r=dminor,bwc https://hg.mozilla.org/mozilla-central/rev/260d6434bcc1 Fix MediaPipelineFilter stream id parsing. r=ng https://hg.mozilla.org/mozilla-central/rev/98e445343ef6 Un-nest VideoConduit SetRemoteSSRC runnables. r=bwc https://hg.mozilla.org/mozilla-central/rev/f7083b863a49 Use regular threadsafe refcounting for WebRtcCallWrapper. r=bwc https://hg.mozilla.org/mozilla-central/rev/31963b9b2342 Remove mozilla:: prefixes from mediapipeline_unittest.cpp. r=bwc https://hg.mozilla.org/mozilla-central/rev/49323e9c1054 Use a ShutdownBlockingTicket in WebRtcCallWrapper. r=jib,bwc https://hg.mozilla.org/mozilla-central/rev/59fe7c6fccbb Fix AudioConduit unittests. r=ng https://hg.mozilla.org/mozilla-central/rev/1603092f907f libwebrtc: Fix re-starting VideoReceiveStreams. r=ng https://hg.mozilla.org/mozilla-central/rev/9ac44b431e3f libwebrtc: Add a way to set keyframe request method on VideoReceiveStream. r=ng https://hg.mozilla.org/mozilla-central/rev/7330681cf4de libwebrtc: Add a REMB on/off switch to VideoReceiveStream. r=ng https://hg.mozilla.org/mozilla-central/rev/e44f2257d1ad Set keyframe request method in VideoConduit, based on negotiation. r=ng https://hg.mozilla.org/mozilla-central/rev/65c1552a1b96 Set REMB switch in VideoConduit, based on negotiation. r=ng https://hg.mozilla.org/mozilla-central/rev/8f0534e7ae1f Fix VideoConduit unittests. r=ng https://hg.mozilla.org/mozilla-central/rev/63c40227b2b7 Add compile-time errors if WEBRTC_USE_X11 or MOZ_X11 are not defined when compiling X11 desktop capture. r=ng https://hg.mozilla.org/mozilla-central/rev/9f0c707aea9d Update USE_X11 to WEBRTC_USE_X11 like rest of libwebrtc, in desktop_capturer.cc. r=ng https://hg.mozilla.org/mozilla-central/rev/c656c00c2557 Remove obsolete desktop capture comments. r=ng https://hg.mozilla.org/mozilla-central/rev/0fee2352d648 Update webrtc.mozbuild with more defines. r=ng https://hg.mozilla.org/mozilla-central/rev/6f602b70f67d Cherry-pick abseil-cpp commit 310c82cd97b3f1f0d1ee93a0ee2b0aee828b2a93. r=bwc https://hg.mozilla.org/mozilla-central/rev/fc09f6fdeac6 Reformat some moz.build files to satisfy linters on try. r=pehrsons https://hg.mozilla.org/mozilla-central/rev/51b83e2e559b Use SprintfLiteral instead of snprintf to satisfy linter. r=pehrsons https://hg.mozilla.org/mozilla-central/rev/9901af844427 Unset execute permissions on this script to keep linters happy. r=ng https://hg.mozilla.org/mozilla-central/rev/516172318999 Disable internal_audio_device build. r=pehrsons https://hg.mozilla.org/mozilla-central/rev/d2f053ce1647 Generated files from previous commit (Disable internal_audio_device build). r=ng https://hg.mozilla.org/mozilla-central/rev/9314046d89eb Get OS X build working. r=ng,firefox-build-system-reviewers,glandium https://hg.mozilla.org/mozilla-central/rev/92c1a2fbc5dc Generated files (linux x64, OS X x64) for previous commit (Get OS X build working) r=ng https://hg.mozilla.org/mozilla-central/rev/7a8b400a04f6 Specify template param to fix build. r=ng https://hg.mozilla.org/mozilla-central/rev/74d20d462889 OS X include fixes, and add a necessary source file for OS X. r=ng https://hg.mozilla.org/mozilla-central/rev/0e22eb5eaa5c add script to generate gn json and moz.build files. r=ng https://hg.mozilla.org/mozilla-central/rev/83122b946cad Make MediaSessionConduit::DeliverPacket async. r=bwc https://hg.mozilla.org/mozilla-central/rev/d5d11f9ac765 Fix static-analysis errors. r=bwc https://hg.mozilla.org/mozilla-central/rev/846009afb24c Implement dummy PluginEvent getters in non-gmp encoder. r=bwc https://hg.mozilla.org/mozilla-central/rev/449198942a70 Update libwebrtc third party paths. r=ng https://hg.mozilla.org/mozilla-central/rev/32285ce7afc5 Don't create two WebRtcCallWrappers in VideoConduitTest. r=ng https://hg.mozilla.org/mozilla-central/rev/8800b67919eb Unbust base_capturer_pipewire. r=stransky https://hg.mozilla.org/mozilla-central/rev/9a49327b1807 update json and moz.build files for Apple Silicon builds. r=ng https://hg.mozilla.org/mozilla-central/rev/39f107c278d9 add script to remove dev-machine specific info from generated json gn files. r=ng https://hg.mozilla.org/mozilla-central/rev/1a29be9439c1 Add the last committime file from WebRTC for GN; r=dminor https://hg.mozilla.org/mozilla-central/rev/bb6417a4cfac Use newer thread run callback, and adapt PlatformUIThread; r=pehrsons https://hg.mozilla.org/mozilla-central/rev/351c0df7eb07 Removing old mozilla specific carry overs from video_capture GN file; r=pehrsons,dminor https://hg.mozilla.org/mozilla-central/rev/8ce505516255 Update include paths for desktop_device_info_win; r=pehrsons https://hg.mozilla.org/mozilla-central/rev/539b69f0e211 Add pid_t to desktop_capture_types.h; r=pehrsons https://hg.mozilla.org/mozilla-central/rev/0d38e43185fd Fix typo in window_capture_utils; r=dminor https://hg.mozilla.org/mozilla-central/rev/24809d566449 fix device_info_ds pid and Windows constants includes; r=pehrsons https://hg.mozilla.org/mozilla-central/rev/85b5cef7ef21 Add check for mozilla build that was in the previous import, restore changes; r=dminor https://hg.mozilla.org/mozilla-central/rev/2c978604ead4 Add missing -mavx; r=dminor https://hg.mozilla.org/mozilla-central/rev/b0108b2cbf7d Workaround type deduction in windows build; r=pehrsons https://hg.mozilla.org/mozilla-central/rev/335fb2fb164e Include AEC dump interface on Windows; r=pehrsons https://hg.mozilla.org/mozilla-central/rev/65ccb95df6d8 Adapt AVX2 build in libwebrtc; r=dminor https://hg.mozilla.org/mozilla-central/rev/a62f6186e9d6 don't look for windows tools whose values will be ignored anyway; r=dminor https://hg.mozilla.org/mozilla-central/rev/abd292499ec6 Reorder include to fulfill interdepencies; r=dminor https://hg.mozilla.org/mozilla-central/rev/7798b0e4ad7c Clarifying prev. rev that moved pid_t into the global namespace; r=dminor https://hg.mozilla.org/mozilla-central/rev/0c303ca236a5 Update generate-gn-build-files.sh for Windows dev; r=mjf https://hg.mozilla.org/mozilla-central/rev/ad2c774d4e29 Adding windows mozconfigs; r=mjf https://hg.mozilla.org/mozilla-central/rev/699496c38ca1 fix try builds for macos. r=ng https://hg.mozilla.org/mozilla-central/rev/46a4e8215e95 Fix a couple issues in generate-gn-build-files.sh. r=ng https://hg.mozilla.org/mozilla-central/rev/b19cff76e239 Reformat fixup_json.py with black. r=ng https://hg.mozilla.org/mozilla-central/rev/ad0eef8ab89e fix type mismatch in desktop_device_info.cc. r=ng https://hg.mozilla.org/mozilla-central/rev/c91f12b557a1 Work around the old (<1.5) libxrandr headers on our build machines. r=mjf,ng https://hg.mozilla.org/mozilla-central/rev/54b2ab188fab Remove a step that waits for media flow in a test where an m-section is marked inactive. r=mjf https://hg.mozilla.org/mozilla-central/rev/0c6ce519bbde Make sure the RunLoop that feeds screen capture frames gets cycles. r=ng https://hg.mozilla.org/mozilla-central/rev/5454ff027576 libwebrtc modification: Init this to avoid crashes. r=mjf https://hg.mozilla.org/mozilla-central/rev/2392ed5dd474 Don't stomp the config object created earlier. r=mjf https://hg.mozilla.org/mozilla-central/rev/9f55c4ae34ed Remove a bogus assertion. r=mjf https://hg.mozilla.org/mozilla-central/rev/ea458613d1d3 Add some pipewire stubs. r=mjf https://hg.mozilla.org/mozilla-central/rev/3cce5e6938f0 Add grit dep for building webrtc on android; r=mjf https://hg.mozilla.org/mozilla-central/rev/8ee615eeb0b1 Fix added pipewire stubs to match others. r=ng https://hg.mozilla.org/mozilla-central/rev/12914026383c Remove unnecessary files. r=ng https://hg.mozilla.org/mozilla-central/rev/169882535ace Fix paths in mobile/android/geckoview/build.gradle. r=ng,geckoview-reviewers,agi https://hg.mozilla.org/mozilla-central/rev/9830ad4e1c46 BUILD.gn and webrtc.gni changes. r=ng https://hg.mozilla.org/mozilla-central/rev/7bd5e1f6940f Bulk change 'android.support.annotation' to 'androidx.annotation'. r=ng https://hg.mozilla.org/mozilla-central/rev/99b99cca6b7b General build fixes for paths and naming changes. r=ng https://hg.mozilla.org/mozilla-central/rev/962120296b02 Hack WebrtcMediaCodecVP8VideoCodec.* to build, but not work yet. r=ng https://hg.mozilla.org/mozilla-central/rev/f96ea29c9818 Updated json files with changes from fixup_json.py included. r=ng https://hg.mozilla.org/mozilla-central/rev/5dbbbcfc51bf moz.build files generated after json fixup. r=ng https://hg.mozilla.org/mozilla-central/rev/557a4c793552 Add android to linux configs in generate-gn-build-files.sh. r=ng https://hg.mozilla.org/mozilla-central/rev/73900406dad6 Generated json and mozconfig for android build. r=ng https://hg.mozilla.org/mozilla-central/rev/dd3d80e100ce moz.build file changes for android. r=ng https://hg.mozilla.org/mozilla-central/rev/3adad7191b94 only run fixup script on the current configs. r=ng https://hg.mozilla.org/mozilla-central/rev/807c62d3ae23 adds x86 linux generation. r=ng https://hg.mozilla.org/mozilla-central/rev/29adc25c262a move check for modified files before any real work can happen. r=ng https://hg.mozilla.org/mozilla-central/rev/77156042480c add x86 linux mozconfigs. r=ng https://hg.mozilla.org/mozilla-central/rev/4e04c02f496f linux build fix for anonymous namespace in header. r=ng https://hg.mozilla.org/mozilla-central/rev/4d528b84385b linux build fix for mismatched format and type. r=ng https://hg.mozilla.org/mozilla-central/rev/40d0b3654462 linux build fix (pragmas) for base-toolchains* . r=ng https://hg.mozilla.org/mozilla-central/rev/02769edbf519 making third_party/libwebrtc/moz.build empty before ./mach configure steps. r=ng https://hg.mozilla.org/mozilla-central/rev/65562b1a98a3 minimize abseil-cpp build and usage in libwebrtc. r=ng https://hg.mozilla.org/mozilla-central/rev/e8c020c01186 updated json build files for abseil-cpp build changes. r=ng https://hg.mozilla.org/mozilla-central/rev/5b666822bf0e remove obsolete moz.build files. r=ng https://hg.mozilla.org/mozilla-central/rev/9b16bc2e5b33 updated moz.build files for abseil-cpp build changes. r=ng https://hg.mozilla.org/mozilla-central/rev/1d686b81ccc5 add 'ac_add_options --enable-bootstrap' to all linux/android mozconfig files. r=ng https://hg.mozilla.org/mozilla-central/rev/e3db366464f6 remove the bootstrap code from generate-gn-build-files.sh. r=ng https://hg.mozilla.org/mozilla-central/rev/78c304bf5e04 mozconfigs for arm64 linux and updated generate-gn-build-files.sh. r=ng https://hg.mozilla.org/mozilla-central/rev/1cc47c2f746a add json files for arm64 linux. r=ng https://hg.mozilla.org/mozilla-central/rev/0131e96abfa0 macOS build fix for missing reference to ifaddrs_converter.cc. r=ng https://hg.mozilla.org/mozilla-central/rev/5b625adf278a updated json files with changes from ifaddrs_converter.cc build fix. r=ng https://hg.mozilla.org/mozilla-central/rev/3e18b3606a67 updated moz.build files. r=ng https://hg.mozilla.org/mozilla-central/rev/dc3478ddac7c Do not set _DEBUG explicitly on Windows; r=mjf https://hg.mozilla.org/mozilla-central/rev/8b33eb369e9e Revert NTDDI to version known by win-2012 build machines; r=mjf https://hg.mozilla.org/mozilla-central/rev/3ff262a1589b use UNIX line endings for json files; r=mjf https://hg.mozilla.org/mozilla-central/rev/15af040f73c4 Adding debug info to error trap in generation script; r=mjf https://hg.mozilla.org/mozilla-central/rev/8f74d06e3acc Fix dos2unix invocation; r=mjf https://hg.mozilla.org/mozilla-central/rev/6a477f69699e adding windows x86 webrtc mozconfigs; r=mjf https://hg.mozilla.org/mozilla-central/rev/31f19a260f00 Adding win x86 to webrtc mozbuild gen; r=mjf https://hg.mozilla.org/mozilla-central/rev/2ca2be277ad7 Adding x86 win json webrtc build files; r=mjf https://hg.mozilla.org/mozilla-central/rev/7cb5b479d43f Adding x64 win json webrtc build files; r=mjf https://hg.mozilla.org/mozilla-central/rev/dee11fb27e85 Adding moz.build files with win x64 and x86; r=mjf https://hg.mozilla.org/mozilla-central/rev/5ec008b3817d add info to README.md on how to add new configs. r=ng https://hg.mozilla.org/mozilla-central/rev/fd6e040e5dfc modified fixup script to deal with windows paths in json files. r=ng https://hg.mozilla.org/mozilla-central/rev/0c450f719f7f fixed-up paths in win json files. r=ng https://hg.mozilla.org/mozilla-central/rev/9c0ddc852331 windows generated moz.build files should have unix line endings. r=ng https://hg.mozilla.org/mozilla-central/rev/1ed708b01f44 fix line endings in libwebrtc moz.build files. r=ng https://hg.mozilla.org/mozilla-central/rev/ae53dadea1fb add DEPOT_TOOLS_WIN_TOOLCHAIN=0 to generate script for Windows. r=ng https://hg.mozilla.org/mozilla-central/rev/2f6a58a81e26 updated README.md for Windows generation steps. r=ng https://hg.mozilla.org/mozilla-central/rev/e60e2f295fb7 suppress android lint warnings for WrongConstant in 2 libwebrtc java files. r=ng https://hg.mozilla.org/mozilla-central/rev/a26d44969a83 don't use libatomic on linux builds. r=ng https://hg.mozilla.org/mozilla-central/rev/9d3cd95e25db linux json updates to remove libatomic. r=ng https://hg.mozilla.org/mozilla-central/rev/a11786c39f82 moz.build changes removing libatomic from linux builds. r=ng https://hg.mozilla.org/mozilla-central/rev/d881b16dd8a6 Mirror Bug 1714577 - Part 3 - Register WebRTC threads with the Gecko Profiler. r=ng https://hg.mozilla.org/mozilla-central/rev/9752aed37a4b Mirror Bug 1714577 - Part 4 - Regenerate 'moz.build' files to add the new include directory. r=ng https://hg.mozilla.org/mozilla-central/rev/25a608864123 Mirror libwebrtc updates made to trace_event.h to Paul's GeckoTraceEvent.h in Bug 1714577. r=ng https://hg.mozilla.org/mozilla-central/rev/10bf2e8788d8 Mirror Bug 1719115 - Add riscv64 defines to build/build_config.h. r=ng https://hg.mozilla.org/mozilla-central/rev/3d5503acf9a4 mutex changes to fix tsan errors. r=ng https://hg.mozilla.org/mozilla-central/rev/eda8a8c2fe63 Adding aarch64 win targets to gn generation script; r=mjf https://hg.mozilla.org/mozilla-central/rev/7db62992db79 Adding aarch64 win mozconfigs for gn generation; r=mjf https://hg.mozilla.org/mozilla-central/rev/0391681090bb do not copy VS dlls durring webrtc gn generate; r=mjf https://hg.mozilla.org/mozilla-central/rev/818d30878859 deconflate target and current build arch for oora; r=mjf https://hg.mozilla.org/mozilla-central/rev/1c42d3204891 alter current cpu for win arm; r=mjf https://hg.mozilla.org/mozilla-central/rev/58f47eacaf10 deconflate the target and host architectures in libwebrtc build files; r=mjf https://hg.mozilla.org/mozilla-central/rev/0627374afdb8 do not build single_rw_fifo; r=mjf https://hg.mozilla.org/mozilla-central/rev/25b7005979d6 aarch64 libwebrtc json files; r=mjf https://hg.mozilla.org/mozilla-central/rev/4803ed8a9de7 aarch64 related libwebrtc moz.build file changes; r=mjf https://hg.mozilla.org/mozilla-central/rev/0b363fdb4b93 linux and android json updates from win aarch64 changes; r=mjf https://hg.mozilla.org/mozilla-central/rev/3e0f3414a635 linux and android moz.build changes from aarch64 win changes; r=mjf https://hg.mozilla.org/mozilla-central/rev/0626e6c544e4 adding missing aarch64 dep to the libwebrtc build gen README.md; r=mjf https://hg.mozilla.org/mozilla-central/rev/f81749164ac4 Added rustup command to README.me for arm macOS; r=mjf https://hg.mozilla.org/mozilla-central/rev/f531e8a780d5 strip out CR_XCODE_VERSION for any version; r=mjf https://hg.mozilla.org/mozilla-central/rev/d3e3d9a86baf macOS json updates from win aarch64 updates; r=mjf https://hg.mozilla.org/mozilla-central/rev/f547e3673690 macOS moz.build changes from aarch64 win changes; r=mjf https://hg.mozilla.org/mozilla-central/rev/c34ea4d71235 fix tsan error, using a destroyed mutex. r=ng https://hg.mozilla.org/mozilla-central/rev/110b3ea88241 Exempt code in webrtc namespace from implicit conversion operator checks. r=andi https://hg.mozilla.org/mozilla-central/rev/daa9eac709dc (libwebrtc modification) Fix comparison so capture timestamps aren't allowed to be 0. r=ng https://hg.mozilla.org/mozilla-central/rev/d0b311007c03 Get RTCP BYE and RTP timeout handling working again (from Bug 1595479) r=mjf,dminor https://hg.mozilla.org/mozilla-central/rev/c366748bd0bf Get contributing/synchronization sources working again. r=ng https://hg.mozilla.org/mozilla-central/rev/18d3bc91b71e Clean up shared webrtc state in PeerConnectionCtx::Cleanup. r=mjf,pehrsons https://hg.mozilla.org/mozilla-central/rev/26913ec8db0b Reimplement ssrc/csrc stats cache. r=ng https://hg.mozilla.org/mozilla-central/rev/a82ab80d7f91 Bring our packetsReceived estimate up-to-spec. r=ng https://hg.mozilla.org/mozilla-central/rev/936674a94c96 Fix this conversion. r=ng https://hg.mozilla.org/mozilla-central/rev/c385bb870413 libwebrtc modification: Init some stats that were being passed to us uninitialized. r=ng https://hg.mozilla.org/mozilla-central/rev/edac9d01a9ac libwebrtc modification: Surface video RTCP SR stats again. r=ng https://hg.mozilla.org/mozilla-central/rev/bd14332f1185 Remove tests for packetsDiscarded/discardedPackets. r=ng https://hg.mozilla.org/mozilla-central/rev/9aa5aac4c287 Disallow insane values in stats. r=ng https://hg.mozilla.org/mozilla-central/rev/f561883a24aa modify build config to allow vp9 codec usage. r=ng https://hg.mozilla.org/mozilla-central/rev/5d9cfdf1deef json updates for vp9 build config change. r=ng https://hg.mozilla.org/mozilla-central/rev/a4b7e102ef18 moz.build changes for vp9 build config change. r=ng https://hg.mozilla.org/mozilla-central/rev/de8c14e4972f fix timestamp issues with RTP sources; r=mjf https://hg.mozilla.org/mozilla-central/rev/1965757ee924 fixes for hybrid build. r=ng https://hg.mozilla.org/mozilla-central/rev/e0a2e54e4de8 Move WebRtcCallWrapper to dedicated files. r=ng https://hg.mozilla.org/mozilla-central/rev/8d80a4ba914c Create CallWorkerThread which implements AbstractThread for a TaskQueueWrapper. r=ng https://hg.mozilla.org/mozilla-central/rev/400d8a0f1a7d Update conduit unittests to work with the Call worker thread. r=ng https://hg.mozilla.org/mozilla-central/rev/cca078b54e99 Avoid `using namespace` in headers. r=ng https://hg.mozilla.org/mozilla-central/rev/01569f2b1141 Constify RTCStatsTimestampMaker to make it obviously threadsafe. r=bwc https://hg.mozilla.org/mozilla-central/rev/7057437ddf19 Constify VideoConduit members that are based on prefs. r=ng https://hg.mozilla.org/mozilla-central/rev/8c904d1fcdf3 Reinstate usage of mLockScaling in VideoConduit. r=ng https://hg.mozilla.org/mozilla-central/rev/844625c1d96d Make the GmpPluginNotifier owner thread injectable. r=bwc https://hg.mozilla.org/mozilla-central/rev/1c3926cd7004 Move VideoConduit to call worker thread for mCall and related access. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/d621668762f4 Move AudioConduit to call worker thread for mCall and related access. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/af4c24767e48 Make mediapipeline_unittest pass and remove TaskQueueWrapper::MainAsCurrent. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/c137938d4226 Make MediaPipeline natively async with WatchManager. r=bwc https://hg.mozilla.org/mozilla-central/rev/d1552c620c11 In MediaPipelineTransmit update description when attaching to the underlying track. r=bwc https://hg.mozilla.org/mozilla-central/rev/09db50c8f370 Pass codec configs by value/reference instead of pointers. r=ng https://hg.mozilla.org/mozilla-central/rev/2a373d864092 Rename MediaSessionConduit::DeleteStreams to Shutdown, as VideoConduit does more than just delete streams. r=ng https://hg.mozilla.org/mozilla-central/rev/786ea95e928b Move NoTrialsConfig into SharedWebrtcState and make WebrtcCallWrapper keep a ref to it. r=ng https://hg.mozilla.org/mozilla-central/rev/bd3db9010131 Deliberately choose DTMF codec. r=ng https://hg.mozilla.org/mozilla-central/rev/0991ebfeb365 Make RTCDTMFSender signal DTMF tones through a MediaEvent. r=ng https://hg.mozilla.org/mozilla-central/rev/3bc5b0fab56a Rework AudioConduit DTMF API to be closer to the upstream API. r=ng https://hg.mozilla.org/mozilla-central/rev/d901db0726fe Allow TaskQueueWrapper creators to decide whether the underlying TaskQueue should support tail dispatch. r=ng https://hg.mozilla.org/mozilla-central/rev/310fdf39b051 Alias Ssrc types. r=ng https://hg.mozilla.org/mozilla-central/rev/ef817155231f Constify conduit getters. r=ng https://hg.mozilla.org/mozilla-central/rev/83f55605a59a Implement operator== for RtpRtcpConfig. r=ng https://hg.mozilla.org/mozilla-central/rev/df9a58057245 Remove unused WebrtcCallWrapper ctor. r=ng https://hg.mozilla.org/mozilla-central/rev/ed2e505b5873 In VideoConduit::SendVideoFrame protect against racy setters. r=bwc https://hg.mozilla.org/mozilla-central/rev/970ed33359b5 Implement MediaConduitControl for controlling conduits async through state mirroring. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/877a0fcc6da9 Merge conduit controllers into conduits, refactor away setters, and make unittests async. r=bwc,ng https://hg.mozilla.org/mozilla-central/rev/0552c0b4a079 Refactor away RtcpEventObserver in favor of MediaEvents. r=bwc https://hg.mozilla.org/mozilla-central/rev/370586931995 Fix a shutdown hang. r=ng https://hg.mozilla.org/mozilla-central/rev/d3eb7bddf958 All GetAudioFrame paths must unlock the locked mutex. r=padenot https://hg.mozilla.org/mozilla-central/rev/c186df8a088e Don't check the calling thread in webrtc::AudioReceiveStream::GetSources. r=ng https://hg.mozilla.org/mozilla-central/rev/b2332c1d550e Don't push RtpSource info to main thread on every received frame. r=ng,bwc https://hg.mozilla.org/mozilla-central/rev/0920243940ad Ensure TaskQueueWrapper can be deleted on the call thread. r=ng https://hg.mozilla.org/mozilla-central/rev/a802c8f458cb Switch AudioConduit audio thread locking to MutexAutoTryLock. r=padenot https://hg.mozilla.org/mozilla-central/rev/336f58a54bd8 Move AudioConduit from a Mutex to an RWLock. r=padenot https://hg.mozilla.org/mozilla-central/rev/3fb02a012faa Route packets with MediaEvents, and clean up conduits' cross-thread syncing. r=bwc,ng https://hg.mozilla.org/mozilla-central/rev/a3925686efd4 Delay MediaPipeline shutdown on Transceiver stop. r=bwc https://hg.mozilla.org/mozilla-central/rev/c01614dfe8f6 Streamline and sequence PCMedia shutdown to shut down transports after destroying the call. r=bwc https://hg.mozilla.org/mozilla-central/rev/542e982e7537 Avoid locking the conduit lock when starting/stopping/reconfiguring streams, and clean up. r=bwc https://hg.mozilla.org/mozilla-central/rev/cc2d56c5c678 Re-enable a now viable threading assert in webrtc::AudioReceiveStream. r=ng https://hg.mozilla.org/mozilla-central/rev/a64e03b3e760 Handle call shutdown in MediaSessionConduit::GetCallStats() and callers. r=ng https://hg.mozilla.org/mozilla-central/rev/519d7eb97e17 Avoid exposing default values for some more stats. r=ng https://hg.mozilla.org/mozilla-central/rev/6b3195b0e545 Replace custom upstream code for remote received audio stats with cherry-pick. r=ng https://hg.mozilla.org/mozilla-central/rev/7888e4be3d7e Fix remote-inbound-rtp.packetsReceived. r=bwc https://hg.mozilla.org/mozilla-central/rev/718b57029512 Consider higher bytesSent stats as sane. r=ng https://hg.mozilla.org/mozilla-central/rev/0d2051d3d0eb Revert D106532 - Clean up shared webrtc state in PeerConnectionCtx::Cleanup. r=bwc https://hg.mozilla.org/mozilla-central/rev/d948ec79fceb Use a dedicated thread pool for the call thread. r=bwc https://hg.mozilla.org/mozilla-central/rev/7675ead797c8 Don't use JNIEnv outside its scope. r=mjf https://hg.mozilla.org/mozilla-central/rev/9d8f6e354d8c remove MediaCodecVP8Codec. r=mjf https://hg.mozilla.org/mozilla-central/rev/bde976e055f2 pass H.264 profile/level parameters to platform encoder. r=mjf https://hg.mozilla.org/mozilla-central/rev/fa792634c1de update VP8 specific info members. r=pehrsons https://hg.mozilla.org/mozilla-central/rev/b53fd89c3789 Use kCodecParamCbr as intended. r=bwc https://hg.mozilla.org/mozilla-central/rev/d12c692c5671 Restore use of recursive lock in DesktopCaptureImpl;r=mjf

https://hg.mozilla.org/mozilla-central/rev/18a58105941b
https://hg.mozilla.org/mozilla-central/rev/4595917071a8
https://hg.mozilla.org/mozilla-central/rev/a93c2d1df066
https://hg.mozilla.org/mozilla-central/rev/d1df4970f4f0
https://hg.mozilla.org/mozilla-central/rev/587c40771588
https://hg.mozilla.org/mozilla-central/rev/d838dc7d2bb8
https://hg.mozilla.org/mozilla-central/rev/e67770bb6a49
https://hg.mozilla.org/mozilla-central/rev/9d7ab32fdc20
https://hg.mozilla.org/mozilla-central/rev/4c8284f52c8b
https://hg.mozilla.org/mozilla-central/rev/26f3fec64ff0
https://hg.mozilla.org/mozilla-central/rev/ae0715e32c27
https://hg.mozilla.org/mozilla-central/rev/3b777b313b76
https://hg.mozilla.org/mozilla-central/rev/3d1bbf5dddb0
https://hg.mozilla.org/mozilla-central/rev/1a244e507326
https://hg.mozilla.org/mozilla-central/rev/afe92bb8ee8e
https://hg.mozilla.org/mozilla-central/rev/03708238dc51
https://hg.mozilla.org/mozilla-central/rev/0dc6c152d8c6
https://hg.mozilla.org/mozilla-central/rev/e67874b7bab8
https://hg.mozilla.org/mozilla-central/rev/0aa9398df7c0
https://hg.mozilla.org/mozilla-central/rev/5288094fbef3
https://hg.mozilla.org/mozilla-central/rev/993f55a7c840
https://hg.mozilla.org/mozilla-central/rev/127ace4d8887
https://hg.mozilla.org/mozilla-central/rev/97e4dae7a466
https://hg.mozilla.org/mozilla-central/rev/069bf6604246
https://hg.mozilla.org/mozilla-central/rev/96f6051798d1
https://hg.mozilla.org/mozilla-central/rev/c055fdffd1d0
https://hg.mozilla.org/mozilla-central/rev/78ba9dd01553
https://hg.mozilla.org/mozilla-central/rev/9b6fd52d3ba8
https://hg.mozilla.org/mozilla-central/rev/7163801a480d
https://hg.mozilla.org/mozilla-central/rev/214c3af8fb37
https://hg.mozilla.org/mozilla-central/rev/92f0d3374bc9
https://hg.mozilla.org/mozilla-central/rev/6d34a9024dc2
https://hg.mozilla.org/mozilla-central/rev/8d832e832ffe
https://hg.mozilla.org/mozilla-central/rev/9452e226943f
https://hg.mozilla.org/mozilla-central/rev/57363f87bcb5
https://hg.mozilla.org/mozilla-central/rev/ef548d7758c7
https://hg.mozilla.org/mozilla-central/rev/99e7f86e5cad
https://hg.mozilla.org/mozilla-central/rev/c5502287708e
https://hg.mozilla.org/mozilla-central/rev/831bac499edc
https://hg.mozilla.org/mozilla-central/rev/35b22aad7def
https://hg.mozilla.org/mozilla-central/rev/d380a43d59f4
https://hg.mozilla.org/mozilla-central/rev/2b3390930a60
https://hg.mozilla.org/mozilla-central/rev/90a15d97399e
https://hg.mozilla.org/mozilla-central/rev/f16cf2573a4d
https://hg.mozilla.org/mozilla-central/rev/8d60ee1f7cd7
https://hg.mozilla.org/mozilla-central/rev/9b2bc72201da
https://hg.mozilla.org/mozilla-central/rev/93367fdd03ec
https://hg.mozilla.org/mozilla-central/rev/01b9c509cecf
https://hg.mozilla.org/mozilla-central/rev/f7e8157d3554
https://hg.mozilla.org/mozilla-central/rev/3eae9f9279f6
https://hg.mozilla.org/mozilla-central/rev/88a9fe04aaa5
https://hg.mozilla.org/mozilla-central/rev/06ae2b9a2703
https://hg.mozilla.org/mozilla-central/rev/069c5baf6d32
https://hg.mozilla.org/mozilla-central/rev/a55a718715f6
https://hg.mozilla.org/mozilla-central/rev/056b43129502
https://hg.mozilla.org/mozilla-central/rev/b5228352d20d
https://hg.mozilla.org/mozilla-central/rev/23b8f56eec4b
https://hg.mozilla.org/mozilla-central/rev/1af1af4020a2
https://hg.mozilla.org/mozilla-central/rev/4f5ac04b4f82
https://hg.mozilla.org/mozilla-central/rev/7e00d78d6389
https://hg.mozilla.org/mozilla-central/rev/c7dbdd82e8e8
https://hg.mozilla.org/mozilla-central/rev/a1c16b86d3a7
https://hg.mozilla.org/mozilla-central/rev/ceed49af0fad
https://hg.mozilla.org/mozilla-central/rev/da26bac32c32
https://hg.mozilla.org/mozilla-central/rev/675b46e5aba7
https://hg.mozilla.org/mozilla-central/rev/c8015b9110fd
https://hg.mozilla.org/mozilla-central/rev/6f33a2fcd373
https://hg.mozilla.org/mozilla-central/rev/d03b0978daf3
https://hg.mozilla.org/mozilla-central/rev/8eb021a434b0
https://hg.mozilla.org/mozilla-central/rev/b2f523bed588
https://hg.mozilla.org/mozilla-central/rev/59cad1af8e89
https://hg.mozilla.org/mozilla-central/rev/1b0455842788
https://hg.mozilla.org/mozilla-central/rev/777632b3319a
https://hg.mozilla.org/mozilla-central/rev/2f1e8f5b2fc2
https://hg.mozilla.org/mozilla-central/rev/7d270e96dfbf
https://hg.mozilla.org/mozilla-central/rev/1913c332695e
https://hg.mozilla.org/mozilla-central/rev/3ca24e761cc3
https://hg.mozilla.org/mozilla-central/rev/709078257c62
https://hg.mozilla.org/mozilla-central/rev/1b4a55820ddc
https://hg.mozilla.org/mozilla-central/rev/fae23bafbec1
https://hg.mozilla.org/mozilla-central/rev/260d6434bcc1
https://hg.mozilla.org/mozilla-central/rev/98e445343ef6
https://hg.mozilla.org/mozilla-central/rev/f7083b863a49
https://hg.mozilla.org/mozilla-central/rev/31963b9b2342
https://hg.mozilla.org/mozilla-central/rev/49323e9c1054
https://hg.mozilla.org/mozilla-central/rev/59fe7c6fccbb
https://hg.mozilla.org/mozilla-central/rev/1603092f907f
https://hg.mozilla.org/mozilla-central/rev/9ac44b431e3f
https://hg.mozilla.org/mozilla-central/rev/7330681cf4de
https://hg.mozilla.org/mozilla-central/rev/e44f2257d1ad
https://hg.mozilla.org/mozilla-central/rev/65c1552a1b96
https://hg.mozilla.org/mozilla-central/rev/8f0534e7ae1f
https://hg.mozilla.org/mozilla-central/rev/63c40227b2b7
https://hg.mozilla.org/mozilla-central/rev/9f0c707aea9d
https://hg.mozilla.org/mozilla-central/rev/c656c00c2557
https://hg.mozilla.org/mozilla-central/rev/0fee2352d648
https://hg.mozilla.org/mozilla-central/rev/6f602b70f67d
https://hg.mozilla.org/mozilla-central/rev/fc09f6fdeac6
https://hg.mozilla.org/mozilla-central/rev/51b83e2e559b
https://hg.mozilla.org/mozilla-central/rev/9901af844427
https://hg.mozilla.org/mozilla-central/rev/516172318999
https://hg.mozilla.org/mozilla-central/rev/d2f053ce1647
https://hg.mozilla.org/mozilla-central/rev/9314046d89eb
https://hg.mozilla.org/mozilla-central/rev/92c1a2fbc5dc
https://hg.mozilla.org/mozilla-central/rev/7a8b400a04f6
https://hg.mozilla.org/mozilla-central/rev/74d20d462889
https://hg.mozilla.org/mozilla-central/rev/0e22eb5eaa5c
https://hg.mozilla.org/mozilla-central/rev/83122b946cad
https://hg.mozilla.org/mozilla-central/rev/d5d11f9ac765
https://hg.mozilla.org/mozilla-central/rev/846009afb24c
https://hg.mozilla.org/mozilla-central/rev/449198942a70
https://hg.mozilla.org/mozilla-central/rev/32285ce7afc5
https://hg.mozilla.org/mozilla-central/rev/8800b67919eb
https://hg.mozilla.org/mozilla-central/rev/9a49327b1807
https://hg.mozilla.org/mozilla-central/rev/39f107c278d9
https://hg.mozilla.org/mozilla-central/rev/1a29be9439c1
https://hg.mozilla.org/mozilla-central/rev/bb6417a4cfac
https://hg.mozilla.org/mozilla-central/rev/351c0df7eb07
https://hg.mozilla.org/mozilla-central/rev/8ce505516255
https://hg.mozilla.org/mozilla-central/rev/539b69f0e211
https://hg.mozilla.org/mozilla-central/rev/0d38e43185fd
https://hg.mozilla.org/mozilla-central/rev/24809d566449
https://hg.mozilla.org/mozilla-central/rev/85b5cef7ef21
https://hg.mozilla.org/mozilla-central/rev/2c978604ead4
https://hg.mozilla.org/mozilla-central/rev/b0108b2cbf7d
https://hg.mozilla.org/mozilla-central/rev/335fb2fb164e
https://hg.mozilla.org/mozilla-central/rev/65ccb95df6d8
https://hg.mozilla.org/mozilla-central/rev/a62f6186e9d6
https://hg.mozilla.org/mozilla-central/rev/abd292499ec6
https://hg.mozilla.org/mozilla-central/rev/7798b0e4ad7c
https://hg.mozilla.org/mozilla-central/rev/0c303ca236a5
https://hg.mozilla.org/mozilla-central/rev/ad2c774d4e29
https://hg.mozilla.org/mozilla-central/rev/699496c38ca1
https://hg.mozilla.org/mozilla-central/rev/46a4e8215e95
https://hg.mozilla.org/mozilla-central/rev/b19cff76e239
https://hg.mozilla.org/mozilla-central/rev/ad0eef8ab89e
https://hg.mozilla.org/mozilla-central/rev/c91f12b557a1
https://hg.mozilla.org/mozilla-central/rev/54b2ab188fab
https://hg.mozilla.org/mozilla-central/rev/0c6ce519bbde
https://hg.mozilla.org/mozilla-central/rev/5454ff027576
https://hg.mozilla.org/mozilla-central/rev/2392ed5dd474
https://hg.mozilla.org/mozilla-central/rev/9f55c4ae34ed
https://hg.mozilla.org/mozilla-central/rev/ea458613d1d3
https://hg.mozilla.org/mozilla-central/rev/3cce5e6938f0
https://hg.mozilla.org/mozilla-central/rev/8ee615eeb0b1
https://hg.mozilla.org/mozilla-central/rev/12914026383c
https://hg.mozilla.org/mozilla-central/rev/169882535ace
https://hg.mozilla.org/mozilla-central/rev/9830ad4e1c46
https://hg.mozilla.org/mozilla-central/rev/7bd5e1f6940f
https://hg.mozilla.org/mozilla-central/rev/99b99cca6b7b
https://hg.mozilla.org/mozilla-central/rev/962120296b02
https://hg.mozilla.org/mozilla-central/rev/f96ea29c9818
https://hg.mozilla.org/mozilla-central/rev/5dbbbcfc51bf
https://hg.mozilla.org/mozilla-central/rev/557a4c793552
https://hg.mozilla.org/mozilla-central/rev/73900406dad6
https://hg.mozilla.org/mozilla-central/rev/dd3d80e100ce
https://hg.mozilla.org/mozilla-central/rev/3adad7191b94
https://hg.mozilla.org/mozilla-central/rev/807c62d3ae23
https://hg.mozilla.org/mozilla-central/rev/29adc25c262a
https://hg.mozilla.org/mozilla-central/rev/77156042480c
https://hg.mozilla.org/mozilla-central/rev/4e04c02f496f
https://hg.mozilla.org/mozilla-central/rev/4d528b84385b
https://hg.mozilla.org/mozilla-central/rev/40d0b3654462
https://hg.mozilla.org/mozilla-central/rev/02769edbf519
https://hg.mozilla.org/mozilla-central/rev/65562b1a98a3
https://hg.mozilla.org/mozilla-central/rev/e8c020c01186
https://hg.mozilla.org/mozilla-central/rev/5b666822bf0e
https://hg.mozilla.org/mozilla-central/rev/9b16bc2e5b33
https://hg.mozilla.org/mozilla-central/rev/1d686b81ccc5
https://hg.mozilla.org/mozilla-central/rev/e3db366464f6
https://hg.mozilla.org/mozilla-central/rev/78c304bf5e04
https://hg.mozilla.org/mozilla-central/rev/1cc47c2f746a
https://hg.mozilla.org/mozilla-central/rev/0131e96abfa0
https://hg.mozilla.org/mozilla-central/rev/5b625adf278a
https://hg.mozilla.org/mozilla-central/rev/3e18b3606a67
https://hg.mozilla.org/mozilla-central/rev/dc3478ddac7c
https://hg.mozilla.org/mozilla-central/rev/8b33eb369e9e
https://hg.mozilla.org/mozilla-central/rev/3ff262a1589b
https://hg.mozilla.org/mozilla-central/rev/15af040f73c4
https://hg.mozilla.org/mozilla-central/rev/8f74d06e3acc
https://hg.mozilla.org/mozilla-central/rev/6a477f69699e
https://hg.mozilla.org/mozilla-central/rev/31f19a260f00
https://hg.mozilla.org/mozilla-central/rev/2ca2be277ad7
https://hg.mozilla.org/mozilla-central/rev/7cb5b479d43f
https://hg.mozilla.org/mozilla-central/rev/dee11fb27e85
https://hg.mozilla.org/mozilla-central/rev/5ec008b3817d
https://hg.mozilla.org/mozilla-central/rev/fd6e040e5dfc
https://hg.mozilla.org/mozilla-central/rev/0c450f719f7f
https://hg.mozilla.org/mozilla-central/rev/9c0ddc852331
https://hg.mozilla.org/mozilla-central/rev/1ed708b01f44
https://hg.mozilla.org/mozilla-central/rev/ae53dadea1fb
https://hg.mozilla.org/mozilla-central/rev/2f6a58a81e26
https://hg.mozilla.org/mozilla-central/rev/e60e2f295fb7
https://hg.mozilla.org/mozilla-central/rev/a26d44969a83
https://hg.mozilla.org/mozilla-central/rev/9d3cd95e25db
https://hg.mozilla.org/mozilla-central/rev/a11786c39f82
https://hg.mozilla.org/mozilla-central/rev/d881b16dd8a6
https://hg.mozilla.org/mozilla-central/rev/9752aed37a4b
https://hg.mozilla.org/mozilla-central/rev/25a608864123
https://hg.mozilla.org/mozilla-central/rev/10bf2e8788d8
https://hg.mozilla.org/mozilla-central/rev/3d5503acf9a4
https://hg.mozilla.org/mozilla-central/rev/eda8a8c2fe63
https://hg.mozilla.org/mozilla-central/rev/7db62992db79
https://hg.mozilla.org/mozilla-central/rev/0391681090bb
https://hg.mozilla.org/mozilla-central/rev/818d30878859
https://hg.mozilla.org/mozilla-central/rev/1c42d3204891
https://hg.mozilla.org/mozilla-central/rev/58f47eacaf10
https://hg.mozilla.org/mozilla-central/rev/0627374afdb8
https://hg.mozilla.org/mozilla-central/rev/25b7005979d6
https://hg.mozilla.org/mozilla-central/rev/4803ed8a9de7
https://hg.mozilla.org/mozilla-central/rev/0b363fdb4b93
https://hg.mozilla.org/mozilla-central/rev/3e0f3414a635
https://hg.mozilla.org/mozilla-central/rev/0626e6c544e4
https://hg.mozilla.org/mozilla-central/rev/f81749164ac4
https://hg.mozilla.org/mozilla-central/rev/f531e8a780d5
https://hg.mozilla.org/mozilla-central/rev/d3e3d9a86baf
https://hg.mozilla.org/mozilla-central/rev/f547e3673690
https://hg.mozilla.org/mozilla-central/rev/c34ea4d71235
https://hg.mozilla.org/mozilla-central/rev/110b3ea88241
https://hg.mozilla.org/mozilla-central/rev/daa9eac709dc
https://hg.mozilla.org/mozilla-central/rev/d0b311007c03
https://hg.mozilla.org/mozilla-central/rev/c366748bd0bf
https://hg.mozilla.org/mozilla-central/rev/18d3bc91b71e
https://hg.mozilla.org/mozilla-central/rev/26913ec8db0b
https://hg.mozilla.org/mozilla-central/rev/a82ab80d7f91
https://hg.mozilla.org/mozilla-central/rev/936674a94c96
https://hg.mozilla.org/mozilla-central/rev/c385bb870413
https://hg.mozilla.org/mozilla-central/rev/edac9d01a9ac
https://hg.mozilla.org/mozilla-central/rev/bd14332f1185
https://hg.mozilla.org/mozilla-central/rev/9aa5aac4c287
https://hg.mozilla.org/mozilla-central/rev/f561883a24aa
https://hg.mozilla.org/mozilla-central/rev/5d9cfdf1deef
https://hg.mozilla.org/mozilla-central/rev/a4b7e102ef18
https://hg.mozilla.org/mozilla-central/rev/de8c14e4972f
https://hg.mozilla.org/mozilla-central/rev/1965757ee924
https://hg.mozilla.org/mozilla-central/rev/e0a2e54e4de8
https://hg.mozilla.org/mozilla-central/rev/8d80a4ba914c
https://hg.mozilla.org/mozilla-central/rev/400d8a0f1a7d
https://hg.mozilla.org/mozilla-central/rev/cca078b54e99
https://hg.mozilla.org/mozilla-central/rev/01569f2b1141
https://hg.mozilla.org/mozilla-central/rev/7057437ddf19
https://hg.mozilla.org/mozilla-central/rev/8c904d1fcdf3
https://hg.mozilla.org/mozilla-central/rev/844625c1d96d
https://hg.mozilla.org/mozilla-central/rev/1c3926cd7004
https://hg.mozilla.org/mozilla-central/rev/d621668762f4
https://hg.mozilla.org/mozilla-central/rev/af4c24767e48
https://hg.mozilla.org/mozilla-central/rev/c137938d4226
https://hg.mozilla.org/mozilla-central/rev/d1552c620c11
https://hg.mozilla.org/mozilla-central/rev/09db50c8f370
https://hg.mozilla.org/mozilla-central/rev/2a373d864092
https://hg.mozilla.org/mozilla-central/rev/786ea95e928b
https://hg.mozilla.org/mozilla-central/rev/bd3db9010131
https://hg.mozilla.org/mozilla-central/rev/0991ebfeb365
https://hg.mozilla.org/mozilla-central/rev/3bc5b0fab56a
https://hg.mozilla.org/mozilla-central/rev/d901db0726fe
https://hg.mozilla.org/mozilla-central/rev/310fdf39b051
https://hg.mozilla.org/mozilla-central/rev/ef817155231f
https://hg.mozilla.org/mozilla-central/rev/83f55605a59a
https://hg.mozilla.org/mozilla-central/rev/df9a58057245
https://hg.mozilla.org/mozilla-central/rev/ed2e505b5873
https://hg.mozilla.org/mozilla-central/rev/970ed33359b5
https://hg.mozilla.org/mozilla-central/rev/877a0fcc6da9
https://hg.mozilla.org/mozilla-central/rev/0552c0b4a079
https://hg.mozilla.org/mozilla-central/rev/370586931995
https://hg.mozilla.org/mozilla-central/rev/d3eb7bddf958
https://hg.mozilla.org/mozilla-central/rev/c186df8a088e
https://hg.mozilla.org/mozilla-central/rev/b2332c1d550e
https://hg.mozilla.org/mozilla-central/rev/0920243940ad
https://hg.mozilla.org/mozilla-central/rev/a802c8f458cb
https://hg.mozilla.org/mozilla-central/rev/336f58a54bd8
https://hg.mozilla.org/mozilla-central/rev/3fb02a012faa
https://hg.mozilla.org/mozilla-central/rev/a3925686efd4
https://hg.mozilla.org/mozilla-central/rev/c01614dfe8f6
https://hg.mozilla.org/mozilla-central/rev/542e982e7537
https://hg.mozilla.org/mozilla-central/rev/cc2d56c5c678
https://hg.mozilla.org/mozilla-central/rev/a64e03b3e760
https://hg.mozilla.org/mozilla-central/rev/519d7eb97e17
https://hg.mozilla.org/mozilla-central/rev/6b3195b0e545
https://hg.mozilla.org/mozilla-central/rev/7888e4be3d7e
https://hg.mozilla.org/mozilla-central/rev/718b57029512
https://hg.mozilla.org/mozilla-central/rev/0d2051d3d0eb
https://hg.mozilla.org/mozilla-central/rev/d948ec79fceb
https://hg.mozilla.org/mozilla-central/rev/7675ead797c8
https://hg.mozilla.org/mozilla-central/rev/9d8f6e354d8c
https://hg.mozilla.org/mozilla-central/rev/bde976e055f2
https://hg.mozilla.org/mozilla-central/rev/fa792634c1de
https://hg.mozilla.org/mozilla-central/rev/b53fd89c3789
https://hg.mozilla.org/mozilla-central/rev/d12c692c5671

Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 96 Branch
Regressions: 1738787
Regressions: 1738850
Regressions: 1738793
Regressions: 1738872
Regressions: 1738845
Regressions: 1738913
Regressions: 1738946
Regressions: 1739003
Regressions: 1739141

Andreas, is there a blog post planned for this major update? I am guessing that we also need a mention in our Nightly release notes at least, correct? Thanks

Flags: needinfo?(apehrson)
Regressions: 1739142

I'll defer this to Nico, I happen to be assignee because I submitted the first patch :-)

Generally I agree though, those would both be great.

Flags: needinfo?(apehrson) → needinfo?(na-g)
Regressions: 1739176
Regressions: 1739334
Regressions: 1739324
No longer depends on: 1738628
Depends on: 1225720

Bugs fixed and general improvements that have landed with the libwebrtc 2H2020 merge:

•	Bug 1232234 - RTCP BYE is sent for every media stream on renegotiation, replaceTrack, or setParameters

•	Bug 1730748 - WebRTC downgrades screen sharing resolution

•	Bug 1690832 - Terrible video quality after negotiating video tracks 3 times

•	Bug 1729110 - getSynchronizationSources() intermittently drops SSRC for video

•	Significantly reduced main thread load
•	Significant improvements in noise-suppression and auto-gain-control, slight improvements in echo-cancellation
Flags: needinfo?(na-g)
No longer blocks: 1702781

Hi! Do I understand well, that this fixes Bug 1412333 (screen sharing -> 1 screen only in dual screen mode) or is it a pre requisite only?

Nice job!

I think it should be regarded as a prerequisite to future work on the linux screen capture backend.

Regressed by: 1745278
Blocks: 1746347
No longer regressed by: 1745278
Regressions: 1745278
Regressions: 1744081
Blocks: 1738923

Nico, could you clarify which of these release notes apply to this update?

https://github.com/webrtc/webrtc-org/blob/gh-pages/release-notes/index.md

Flags: needinfo?(na-g)
Regressions: 1749749

Jonathan, we made our cut at dd9db8c23ac22a4d5ef6b4dc076c26af4258449c. This is within rel86, it does look like a number of things were back ported onto the rel86 since we made our cut, so I am not sure that all of the notes apply.

Flags: needinfo?(na-g)
Regressions: 1754027
See Also: → 1759696
Regressions: 1768729
Regressions: 1771101

Copying crash signatures from duplicate bugs.

Crash Signature: [@ abort | webrtc::RtpPacketizerH264::PacketizeSingleNalu] [@ mozalloc_abort | abort | webrtc::RtpPacketizerH264::PacketizeSingleNalu]
Regressions: 1805270
Duplicate of this bug: 1722217
Attachment #9202881 - Attachment is obsolete: true
Attachment #9202882 - Attachment is obsolete: true
Attachment #9208212 - Attachment is obsolete: true
Attachment #9231242 - Attachment is obsolete: true
Attachment #9246980 - Attachment is obsolete: true
Attachment #9247135 - Attachment is obsolete: true
Regressions: 1847818
Duplicate of this bug: 1665853
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: