39564 Commits

Author SHA1 Message Date
Tommi
eec1810760 Avoid touching channel after OnSctpDataChannelClosed
Bug: chromium:1454086
Change-Id: I39573b706c4031d091c45a182b13cb3b2dba6233
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309920
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40332}
2023-06-22 09:13:29 +00:00
webrtc-version-updater
afa0f22070 Update WebRTC code version (2023-06-22T04:01:55).
Bug: None
Change-Id: Icf46ddbe29eede8bf68282fd9a966b782b31b762
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309882
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40331}
2023-06-22 05:45:49 +00:00
henrika
c3a74024bf Splits AllowWgcDesktopCapturer into AllowWgc[Window/Screen]Capturer flags
This CL allows the users to now enable/disable WGC capturing support
for Window and Screen sharing independently.

Bug: chromium:1314868
Change-Id: Ieeb15539434dac2caf29c515aa7c5dbb7abcc5df
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309560
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40330}
2023-06-21 19:25:23 +00:00
Artem Titov
5246ae20a2 Fix TestVideoCapturer and subclasses to support pause/resume video
Bug: b/272350185
Change-Id: I8e2e1a833430f78627ec6301ea23f2f8337a01ca
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309622
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40329}
2023-06-21 17:46:33 +00:00
Harald Alvestrand
84fdf990e8 Convert Media*Channel to contain a webrtc::Transport
Media*Channel objects used to subclass webrtc::Transport.
This was not an optimal design. This CL makes the transport
a member variable of MediaChannelUtil.

Bug: None
Change-Id: I85d33cc1b32b931e563b7bb2d277f1c512600831
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309800
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40328}
2023-06-21 16:13:55 +00:00
Rasmus Brandt
0510463439 Enable RttMult by default.
This feature has had positive impact in downstream experiments, so we should enable it by default. It will be kept around as a kill switch for a while though.

Bug: webrtc:15260
Change-Id: Ibfd25f5be124f65cd4360ae76f7022bb46f65301
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309781
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40327}
2023-06-21 14:17:11 +00:00
Florent Castelli
d20bbc4a15 Remove CreateMediaChannel calls from webrtc_video_engine_unittest
Bug: webrtc:13931
Change-Id: I3d54741dffb337de9db80efa81b24396b96245f1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309621
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40326}
2023-06-21 13:21:16 +00:00
Philipp Hancke
17e8a5cc7d stats: implement flexfec fecBytesReceived stats for FlexFEC
specified in https://github.com/w3c/webrtc-stats/pull/762
and take FlexFEC into account for receive statistics.

BUG=webrtc:15250

Change-Id: Id85775ab1f29487d5b8bf478da6e22071005901a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/294881
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#40325}
2023-06-21 13:04:31 +00:00
Sergey Silkin
d7c7b07c5d Account for codec type when accessing codec specific settings
Bug: none
Change-Id: Ic60414d7a8cd2e40f8c3855fd4ceed09ea4d7c07
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/305784
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40324}
2023-06-21 11:26:04 +00:00
Florent Castelli
4e434c313e Remove MediaChannel usage from webrtc_video_engine_unittest
Bug: webrtc:13931
Change-Id: Ie45a25c6b204b38b749381ef5e9403cf036b8126
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309660
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40323}
2023-06-21 10:10:56 +00:00
Florent Castelli
ee97e6ad88 Move GetSendCodec() to MediaSendChannelInterface
This allows the voice send channels to share the method definition.

Bug: webrtc:15214
Change-Id: Ie0cc23f3694eeb8322a9ea7328a8d56fa7571c95
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309600
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40322}
2023-06-21 10:00:56 +00:00
Hans Wennborg
d1780836f4 Fix incorrect use of scoped enumerations in format strings
Scoped enums do not get automatically promoted to their underlying type,
so these uses have undefined behavior and Clang recently started warning
about it.

Bug: chromium:1456289
Change-Id: I9cf4e5a68378930a3bf7d8ac7b0a21eaf0d12670
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309520
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Auto-Submit: Hans Wennborg <hans@chromium.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40321}
2023-06-21 09:16:11 +00:00
Jeremy Leconte
c4e0254909 Fix capture_clock_offset_updater_ data race.
Change-Id: I1b84810ea19c8bf24ec49d7fb69e954d18759e37
Bug: b/288066973
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309680
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#40320}
2023-06-21 07:08:26 +00:00
Jesús de Vicente Peña
f80cf81435 Changing the pre echo configuration default.
Bug: webrtc:14205
Change-Id: I17add3bf19c599f170ffe98d0da0a561794591c1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309481
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40319}
2023-06-20 14:46:44 +00:00
Björn Terelius
ff58aed678 Process events with the same timestamp in a defined order.
As before, events are processed primarily in timestamp order.
This CL adds a heuristic to break ties for events with the same timestamp.

- Roughly speaking, configs and connectivity events are processed first, followed by incoming packets, then BWE updates, then other (general) events and finally outgoing packets and ALR events.

- Among RTP packets, transport sequence number is used to break ties.

- The insertion order (into the EventProcessor) is used as a last resort.

Bug: b/282153758
Change-Id: I914e4500ca63e1a8754766d1833a7b32f6a38176
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308140
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40318}
2023-06-20 14:21:17 +00:00
Philipp Hancke
64d384ff29 Fix logging of unsupported video type
BUG=webrtc:15257

Change-Id: I9b51ed39d6010f49f307a40b20eec801eaf088bd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308881
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#40317}
2023-06-20 13:12:27 +00:00
philipel
4e0bf2e5a1 Support conversion of VP9 non-flexible mode to generic descriptor for non-layered streams only.
When VP9 HW encoders don't provide any metadata a minimal non-flexible mode structure is generated for the stream: (https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc;l=1275-1298;drc=f80633b34538615fcb73515ad8c4bc56a748abfe).

Bug: chromium:1455428, b/286993839, b/287458300
Change-Id: I72628f20927d685e9c8ba1744126d763896bd804
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309380
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40316}
2023-06-20 10:52:59 +00:00
Björn Terelius
9e247b6262 Add RtcEventProcessor::AddEvents overload that accepts PacketDirection.
Bug: b/282153758
Change-Id: I53d379752f2e8eca91eb190e966ca1853330a210
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309480
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40315}
2023-06-20 10:42:58 +00:00
Yury Yarashevich
e5ee43787a Fix candidate leak with initWithNativeCandidate.
[RTCIceCandidate initWithNativeCandidate:] does not take ownership on
candidate, so it must be released by caller.

Bug: None
Change-Id: I516e740e81a7aec04556f5fa71cbbecf3be6deb7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308500
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40314}
2023-06-20 10:31:44 +00:00
Samuel Attard
6efbd1fdbc fix: do not use dispatch_queue_global_t directly
Referencing this type directly is not allowed when building
with the macOS 14.0 SDK.

Other usages in webrtc follow this inline pattern too so
going with this instead of "auto" which also works.

Change-Id: I84a0ba9c78e83843bc73c71c642caca75750f127
Bug: chromium:1454356
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308560
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40313}
2023-06-20 10:23:18 +00:00
Harald Alvestrand
328e7b2af2 Sort media/engine/webrtc_video_engine.cc
This groups functions for WebRtcVideoSendChannel and
WebRtcVideoReceiveChannel together, rather than interspersing them.

Bug: webrtc:13931
Change-Id: Iecb5bac18e1d370331e9eb546c6b2fde4d92963f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309460
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40312}
2023-06-20 09:50:19 +00:00
Philipp Hancke
17ec0569c6 ICE: adjust priority of non-relay candidates
Introduces a field trial
  WebRTC-IncreaseIceCandidatePriorityHostSrflx
that adjusts the priority of non-relay candidates such that the STUN priority attribute calculated as
  (prflx-type-preference << 24) | (priority & 0x00FFFFFF)
as described in
  https://www.rfc-editor.org/rfc/rfc5245#section-7.1.2.1
will satisfy the condition that the STUN priority of server-reflexive candidates will always be higher than the STUN priority of relay candidates.

Previously this was not the case because the TURN relay preference was added to the local_preference for relay candidates, making it higher than the local_preference of srflx candidates gathered from the same interface.
This led to cases where the resulting candidate pair priority of a srflx-relay pair was higher than the candidate pair priority of a srflx-srflx pair, i.e. using a TURN server in cases that work using a direct P2P connection.

Whether the field trial is active can be observed by checking that
  priority-of-srflx-candidate&0x00FFFFFF
is greater than
  priority-of-relay-candidate&0x00FFFFFF

BUG=webrtc:13195,webrtc:5813,webrtc:15020

Change-Id: Ib91708fbe7310b6454f93158a45c9d77da009091
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/292700
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#40311}
2023-06-20 08:02:27 +00:00
webrtc-version-updater
52f902abc6 Update WebRTC code version (2023-06-20T04:03:02).
Bug: None
Change-Id: I6bc533128e5303bfc7a54c3f879b899e0550e2b2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309425
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40310}
2023-06-20 05:42:51 +00:00
Tony Herre
097a4decc2 Make all encodedaudioframes inherit from TransformableAudioFrameI'face
Make outgoing encoded audio frames inherit from the same Audio interface
that incoming frames inherit from, to align them and make it possible to
eg clone frames regardless of their direction.

Also begin removing GetHeader() from the Audio interface, replacing it
with getters for the specific values we actually need to propagate in
the API: sequence number and CSRCs. This makes it much easier to treat
incoming and outgoing frames the same, even if they don't have full
RtpHeaders prepared at the point of the transform.

Bug: chromium:1453226
Change-Id: Ib5b39b30dea8a378b3b26efb1589dfd64741d201
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308141
Commit-Queue: Tony Herre <herre@google.com>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Palak Agarwal <agpalak@google.com>
Cr-Commit-Position: refs/heads/main@{#40309}
2023-06-19 18:54:47 +00:00
henrika
bb917acb10 Fixes crash in WgcCaptureSession::ProcessFrame
This change fixes a minor issue where we previosuly assumed that the
following was true:

RTC_DCHECK_EQ(map_info.RowPitch, current_frame->stride())

It turns out that this is not always the case when sharing a window
where the stride can sometimes be a few bytes smaller than the
rowpitch.

The code is behind a command-line flag and no tests are affected.
Given limited review resources I therefore plan to bypass the CQ.
I know that it is not recommended but the change has been tested
locally on two different Windows platforms and it does avoid an
existing crash.

Code-Review: alcooper@chromium.org
No-Try: true
Bug: chromium:1421242
Change-Id: I01e7105a6f9fca7ce1349a57635dd373c28d160b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309342
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40308}
2023-06-19 14:39:39 +00:00
Danil Chapovalov
b4969d0036 Remove unused dependencies in rtp_rtcp
Bug: None
Change-Id: If0a14f54e55550f38b178bb6412198559677d217
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/309320
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Emil Lundmark <lndmrk@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40307}
2023-06-19 11:51:27 +00:00
Sameer Vijaykar
9919841e4a Remove preprocessor definition for StatsReport::Value::id_val()
This is no longer needed after downstream redefinitions are deleted.

Bug: webrtc:15241
Change-Id: Iea6839bff781fe7d0c56b4739f3d43398c70f2b3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308681
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#40306}
2023-06-19 08:26:42 +00:00
Henrik Boström
c929ab49b9 Reland "[Stats] Remove enum-like structs in favor of strings."
This is a reland of commit ccc87ea3c625e43ab138e00ba2ef1a2d99756199

Downstream project has been updated.

Original change's description:
> [Stats] Remove enum-like structs in favor of strings.
>
> Due to a limitation of RTCStatsMember<T> not supporting enums, as well
> as the fact that in JavaScript enums are represented as basic strings,
> the stats enums have always been represented by T=std::string.
>
> Now that we have WebIDL-ified[1] all RTCStats dictionaries and enum
> values are simply string-copied (example: [2]) it seems safe to assume
> that "stats enums are just strings" is here to stay.
>
> Therefore there is little value in having C++ structs that look like
> enums so I'm deleting those in favor of std::string operator==()
> comparisons, e.g. `if (rtp_stream.kind == "audio")`. This removes some
> lines of code from our code base.
>
> I mostly want to get rid of these because they were taking up about 20%
> of the rtcstats_objects.h real estate...
>
> [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl
> [2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/peerconnection/rtc_stats_report.cc;l=667;drc=cf34e84c9df94256abfb1716ba075ed203975755
>
> Bug: webrtc:15245
> Change-Id: Iaf0827d7aecebc1cc02976a61663d5298d684f07
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308680
> Commit-Queue: Henrik Boström <hbos@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#40295}

Bug: webrtc:15245
Change-Id: Ibc7aeb518ed0bd7f1d725f140132c99e5a89bcf3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308880
Auto-Submit: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40305}
2023-06-17 15:41:44 +00:00
webrtc-version-updater
d05967cf4a Update WebRTC code version (2023-06-17T04:02:25).
Bug: None
Change-Id: I02aa92e152b93f3d7a345e8258ab395ef8addab9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308967
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40304}
2023-06-17 05:27:56 +00:00
Yury Yarashevich
11affddbbc Fix PeerConnectionDependencies leak on PC init.
Release + dereference operator does not magically move buffer from
heap to stack, so there was a leak.

Bug: None
Change-Id: I9f760b6719ca1fc03aa3efcfda0c0ff9d87efda8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308581
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Yury Yarashevich <yura.yaroshevich@gmail.com>
Cr-Commit-Position: refs/heads/main@{#40303}
2023-06-16 19:36:31 +00:00
Danil Chapovalov
4d2a219436 Change RTCPReceiver::GetAndResetXrRrRtt to return TimeDelta
Bug: webrtc:13757
Change-Id: Iaf3a540fbab51990fb6b983912e3b8c1bb1aaa81
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308940
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40302}
2023-06-16 17:09:00 +00:00
Per K
18aba66271 Add test to ensure task deleted on TQ
Bug: webrtc:14449
Change-Id: I85757af9c1ad6ad630d9ffe7b2528ca7c7161883
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308900
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40301}
2023-06-16 14:33:13 +00:00
Florent Castelli
213090bf4b Add AbsoluteCaptureTime RTP extension to supported list in engines.
Added as stopped by default as it should be requested by the application,
but it should be listed as available.

Bug: webrtc:14631
Change-Id: I301cfd29c79083c97b4a43b8fdafee2dbe4887a5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308824
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40300}
2023-06-16 11:08:48 +00:00
henrika
6c453b7d59 Light-weight detection of static content when using WGC
This CL adds a light-weight detection of "frame content has changed
since last frame" to an existing pass where bytes are copied from a
texture to a DesktopFrame. The resulting boolean can then later be
used to bypass a full detection of if the content is static or not.
As a result, we only check for static content for a small fraction of
all captured WGC frames and this reduces the total load when 0Hz
is enabled for WGC.

Both WGC and 0Hz support for WGC is still behind a flag.

Bug: chromium:1421242
Change-Id: If9e3721c60a244a3919758fe861d56d4b54cb039
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308821
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40299}
2023-06-16 11:00:34 +00:00
Christoffer Jansson
45666d4b01 Revert "[Stats] Remove enum-like structs in favor of strings."
This reverts commit ccc87ea3c625e43ab138e00ba2ef1a2d99756199.

Reason for revert: Breaks downstream project

Original change's description:
> [Stats] Remove enum-like structs in favor of strings.
>
> Due to a limitation of RTCStatsMember<T> not supporting enums, as well
> as the fact that in JavaScript enums are represented as basic strings,
> the stats enums have always been represented by T=std::string.
>
> Now that we have WebIDL-ified[1] all RTCStats dictionaries and enum
> values are simply string-copied (example: [2]) it seems safe to assume
> that "stats enums are just strings" is here to stay.
>
> Therefore there is little value in having C++ structs that look like
> enums so I'm deleting those in favor of std::string operator==()
> comparisons, e.g. `if (rtp_stream.kind == "audio")`. This removes some
> lines of code from our code base.
>
> I mostly want to get rid of these because they were taking up about 20%
> of the rtcstats_objects.h real estate...
>
> [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl
> [2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/peerconnection/rtc_stats_report.cc;l=667;drc=cf34e84c9df94256abfb1716ba075ed203975755
>
> Bug: webrtc:15245
> Change-Id: Iaf0827d7aecebc1cc02976a61663d5298d684f07
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308680
> Commit-Queue: Henrik Boström <hbos@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#40295}

Bug: webrtc:15245
Change-Id: I05db80ba9f29460239de82cea9d95136e4c708e4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308860
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Christoffer Jansson <jansson@webrtc.org>
Owners-Override: Christoffer Jansson <jansson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40298}
2023-06-16 06:29:26 +00:00
webrtc-version-updater
0b86253c15 Update WebRTC code version (2023-06-16T04:04:20).
Bug: None
Change-Id: Ib3248282f771e7789fe319fed61b00dc2b1334ab
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308795
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40297}
2023-06-16 05:45:45 +00:00
chromium-webrtc-autoroll
816dc3b608 Roll chromium_revision 570bae752f..8603a0cee2 (1158090:1158377)
Change log: 570bae752f..8603a0cee2
Full diff: 570bae752f..8603a0cee2

Changed dependencies
* fuchsia_version: version:13.20230614.3.1..version:13.20230615.1.1
* src/base: e7e07e35d0..ca44743737
* src/build: 4a76832b23..6c0e0e0c84
* src/buildtools/third_party/libc++abi/trunk: 899caea381..c2a35d1b2c
* src/ios: edeb2b6985..0df9bead29
* src/testing: 9f6c4e8d41..f3b8f1d8c1
* src/third_party: 6af411bf6f..770155421d
* src/third_party/depot_tools: dedeb88991..3ffad8166e
* src/third_party/icu: 1766524877..e8c3bc9ea9
* src/third_party/perfetto: 5d6f9249d1..0ba4c2cd12
* src/tools: 9f5577308f..eb2e55cf81
DEPS diff: 570bae752f..8603a0cee2/DEPS

No update to Clang.

BUG=None

Change-Id: Ia3fc129d020afd536691bdf14ce84684a7f7da79
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308790
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40296}
2023-06-15 20:58:22 +00:00
Henrik Boström
ccc87ea3c6 [Stats] Remove enum-like structs in favor of strings.
Due to a limitation of RTCStatsMember<T> not supporting enums, as well
as the fact that in JavaScript enums are represented as basic strings,
the stats enums have always been represented by T=std::string.

Now that we have WebIDL-ified[1] all RTCStats dictionaries and enum
values are simply string-copied (example: [2]) it seems safe to assume
that "stats enums are just strings" is here to stay.

Therefore there is little value in having C++ structs that look like
enums so I'm deleting those in favor of std::string operator==()
comparisons, e.g. `if (rtp_stream.kind == "audio")`. This removes some
lines of code from our code base.

I mostly want to get rid of these because they were taking up about 20%
of the rtcstats_objects.h real estate...

[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/peerconnection/rtc_stats_report.idl
[2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/peerconnection/rtc_stats_report.cc;l=667;drc=cf34e84c9df94256abfb1716ba075ed203975755

Bug: webrtc:15245
Change-Id: Iaf0827d7aecebc1cc02976a61663d5298d684f07
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308680
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40295}
2023-06-15 16:11:27 +00:00
Florent Castelli
d0b8e8e4ee Reland "Merge the codec types"
This is a reland of commit 49ace8b6548cda6d4ba74abfca9b616f56dbf9bc

Original change's description:
> Merge the codec types
>
> This allows simplifying code in the codebase to be able to remove a lot
> of templated code and special casing for either AudioCodec and VideoCodec.
> Code simplifications will come in later changes.
>
> Bug: webrtc:15214
> Change-Id: I6e75e6ea725163feb6cc4eb49f37b4722d6c6689
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308501
> Reviewed-by: Henrik Boström <hbos@webrtc.org>
> Commit-Queue: Florent Castelli <orphis@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#40276}

Bug: webrtc:15214
Change-Id: I123d1134a212f65cfbc90ecec9013d0aafebd9ae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308721
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40294}
2023-06-15 15:53:29 +00:00
Sameer Vijaykar
45afbc1e81 Allow setting a custom randomness source.
This is useful in environments where OpenSSL may not be available.

Bug: webrtc:15240
Change-Id: I7ba29e44bd1d25231df13ee79dacc74f260ded67
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308600
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#40293}
2023-06-15 15:26:48 +00:00
Philipp Hancke
6a38a3eb38 sdp: reject duplicate ssrcs in ssrc-groups
while not really covered by
  https://www.rfc-editor.org/rfc/rfc5576.html#section-4.2
and using the same SSRC for RTX and primary payload may work
since payload type demuxing *could* be used is not a good idea.
This also applies to flexfec's FEC-FR.

For the nonstandard SIM ssrc-group duplicates make no sense.
This rejects duplicates for unknown ssrc-groups as well.

BUG=chromium:1454860

Change-Id: I3e86101dbd5d6c4099f2fdb7b4a52d5cd0809c5f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308820
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#40292}
2023-06-15 14:24:54 +00:00
Alfred E. Heggestad
b37f864e22 Flexfec: add logging of received length.
Co-authored-by: Sun Shin <sushin@nvidia.com>
Bug: None
Change-Id: I676c6e6ed52c7ddcd42bfe3d6cfb1a377b2e7dbc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/307820
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40291}
2023-06-15 14:22:27 +00:00
Andreas Pehrson
823c70209e In VideoCaptureV4L2 use requested/configured capability
VideoCaptureV4L2 has some members that are set in StartCapture during
configuration of the device, but later accessed both on the capture
thread and on the api thread (same as StartCapture) in
CaptureSettings(), which can be called at any time. This is safe because
they are written only on the api thread when the capture thread is not
running. However, there is no helper class that separates the read and
write modes to allow annotations and static analysis of the thread
access of these members.

This commit allows annotations to be added by making VideoCaptureV4L2
use:
- VideoCaptureImpl::_requestedCapability for storing those members
  requested through StartCapture(), to allow access on the api thread
  through CaptureSettings().
- A new member configured_capability_ to replace those members mentioned
  in the first paragraph above. Writes to it happen only in
  StartCapture() and StopCapture(), while reads happen exclusively on
  the capture thread in between.

Bug: webrtc:15181
Change-Id: I27e0f578e6ac2a2e6b0e34fbabfe4f743b296321
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306122
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40290}
2023-06-15 14:16:59 +00:00
Sameer Vijaykar
51b82067ca Add missing method definition for StatsReport::Value::id_val()
Also add a preprocessor definition to avoid redefinition in downstream projects.

Bug: webrtc:15241
Change-Id: Ic55d98c3d3a69b9b19195ee78f03af6e38fdd0e2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308601
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#40289}
2023-06-15 13:53:37 +00:00
chromium-webrtc-autoroll
36e37c7de9 Roll chromium_revision 47e7a37749..570bae752f (1157983:1158090)
Change log: 47e7a37749..570bae752f
Full diff: 47e7a37749..570bae752f

Changed dependencies
* src/base: 10164c5212..e7e07e35d0
* src/build: 5ecf6e5689..4a76832b23
* src/ios: 0a1afd5f2e..edeb2b6985
* src/testing: 01e5949c03..9f6c4e8d41
* src/third_party: a9ea98a208..6af411bf6f
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/8b35870248..89fad9023d
* src/third_party/perfetto: c03807155e..5d6f9249d1
* src/tools: 508ce4eb68..9f5577308f
DEPS diff: 47e7a37749..570bae752f/DEPS

No update to Clang.

BUG=None

Change-Id: I3cf203a0832f7a5ac69dd1240d835fb42f8fe909
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308787
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40288}
2023-06-15 13:06:35 +00:00
Henrik Boström
2fec64484f Fix L1Tx target bitrate bug when the standard API is used.
There are now multiple ways to configure VP9 L1Tx:
- Legacy API: configure legacy SVC and disable encodings, this gets
  interpreted as disabling spatial layers (non-standard API hack).
- Standard API: configure scalability_mode. This can be done either
  with a single encoding or multiple encodings. As long as only one
  encoding is active we get a single L1Tx ssrc, same as legacy API.

Due to a bug, the ApplySpatialLayerBitrateLimits() logic which tweaks
bitrates was only applied in the legacy API code path, not the standard
API code path, despite both code paths configuring L1Tx.

The issue is that IsSimulcastOrMultipleSpatialLayers() was checking if
`number_of_streams == 1`. This is true in legacy code path but not
standard code path. The fix is to look at
`numberOfSimulcastStreams == 1` instead, which is set to the correct
value regardless of code path used.

This CL adds comments documenting the difference between
`number_of_streams` and `numberOfSimulcastStreams` to reduce the risk
of more mistakes like this in the future.

Bug: chromium:1455039, b:279161263
Change-Id: I69789b68cc5d45ef1b3becd310687c8dec8e7c87
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308722
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40287}
2023-06-15 12:48:48 +00:00
Andreas Pehrson
bd14a73f81 In VideoCaptureModulePipeWire lock around started_
CaptureSettings() can read started_ on the api thread at any time. But
it is written and read in pipewire callbacks, on other threads. A lock
seems suitable.

Bug: webrtc:15181
Change-Id: I3d26f02408a4e56921b955f059e504ffa9b8cae9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306121
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40286}
2023-06-15 09:58:29 +00:00
Andreas Pehrson
6bb12e5732 In VideoCaptureModulePipeWire split frameInfo_ usage
frameInfo_ is used on multiple threads. This commit splits it into:
- VideoCaptureImpl::_requestedCapability for writing what was requested
  in StartCapture() and for reading in CaptureSettings(), on the api
  thread only.
- A new member configured_capability_ (renamed from frameInfo_) for
  accesses in callbacks, or on the api thread when no callbacks can
  happen.

Bug: webrtc:15181
Change-Id: I105d8adfde52320e43ffe95fe23e11d028c80684
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306120
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40285}
2023-06-15 09:01:25 +00:00
chromium-webrtc-autoroll
e109fb5b5d Roll chromium_revision 8af8fba80c..47e7a37749 (1157822:1157983)
Change log: 8af8fba80c..47e7a37749
Full diff: 8af8fba80c..47e7a37749

Changed dependencies
* fuchsia_version: version:13.20230614.1.1..version:13.20230614.3.1
* src/ios: e57f7d87de..0a1afd5f2e
* src/testing: 02f45ac69f..01e5949c03
* src/third_party: 341b49b34b..a9ea98a208
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/c87640687e..8b35870248
* src/third_party/depot_tools: defdda0c62..dedeb88991
* src/third_party/perfetto: 54280e702d..c03807155e
* src/tools: 34cd10bfbc..508ce4eb68
DEPS diff: 8af8fba80c..47e7a37749/DEPS

No update to Clang.

BUG=None

Change-Id: Icd52ebaa188bd87d26897ddeb9675868de453579
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308785
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40284}
2023-06-15 07:11:21 +00:00
webrtc-version-updater
a3cd0b9a16 Update WebRTC code version (2023-06-15T04:11:59).
Bug: None
Change-Id: Ibd8e983e36b2149581ee08169c23e512ceee3652
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/308784
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#40283}
2023-06-15 05:18:27 +00:00