No description
Find a file
Henrik Boström 28b793b4dd [Merge-130] Fix LibvpxVp9Encoder simulcast bug.
As of [1], a single VP9 encoder instance can produce simulcast 4:2:1.
When it does, the EncodedImage has its simulcast index set (0, 1, 2).

The bug is that if you then go back to a single encoder instance,
either because you're doing singlecast or because you're doing
simulcast with scaling factors that are not power of two (not 4:2:1),
then the simulcast index which was previously set to 2 is not reset due
to the old code path never calling SetSimulcastIndex.

Example repro:
1. Send VP9 simulcast {180p, 360p, 720p}, i.e. 4:2.1.
2. Reconfigure to {180p, 360p, 540p}, i.e. no longer 4:2:1.

What should happen: all three layers are sent.
What actually happened: 180p is not sent and the 540p layer flips flops
between 180p and 540p because the EncodedImage says simulcast index is
2 for both encodings[0] and encodings[2].

The fix is a one-line change: `SetSimulcastIndex(std::nullopt)` in the
case that we don't have a `simulcast_to_svc_converter_` that sets it
(0, 1, 2) for us.

[1] https://webrtc-review.googlesource.com/c/src/+/360280

(cherry picked from commit a6fbb35ac1)

Bug: chromium:370299916
Change-Id: I94ce1a0bde43ef56cba930cb69b744877bbd4bf9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/363941
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Original-Commit-Position: refs/heads/main@{#43109}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364302
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/branch-heads/6723@{#2}
Cr-Branched-From: 13e377b804f68aa9c20ea5e449666ea5248e3286-refs/heads/main@{#43019}
2024-10-01 10:25:48 +00:00
api Ensure <netinet/in.h> is included by using rtc_base/ip_address.h. 2024-09-11 08:11:44 +00:00
audio Ensure the AudioCodingModule is reset when sending is stopped. 2024-09-12 22:47:11 +00:00
build_overrides build: add options to configure libsrtp for boringssl or other libraries 2024-08-27 07:17:52 +00:00
call Update WebRTC code version (2024-09-13T04:07:27). 2024-09-13 06:00:55 +00:00
common_audio Migrate absl::optional to std::optional 2024-09-02 12:16:47 +00:00
common_video Add converters for corruption detection structs 2024-09-11 13:44:04 +00:00
data Remove old data files. 2018-10-05 14:40:21 +00:00
docs Specify in which RTP packet corruption score will be sent on. 2024-09-12 13:31:04 +00:00
examples Ensure <netinet/in.h> is included by using rtc_base/ip_address.h. 2024-09-11 08:11:44 +00:00
experiments Add field trial for late PT allocation 2024-09-12 14:42:27 +00:00
g3doc Update ownership of PCLF documentation. 2024-09-11 13:03:08 +00:00
infra Revert "Enable 'iwyu_verifier' bot." 2024-09-02 10:14:35 +00:00
logging Fix lint issues in logging/ 2024-09-04 07:58:47 +00:00
media Change cricket::Codec default id from 0 to -1 2024-09-12 21:26:48 +00:00
modules [Merge-130] Fix LibvpxVp9Encoder simulcast bug. 2024-10-01 10:25:48 +00:00
net/dcsctp Prepend webrtc ns to StrJoin calls in dcsctp ns 2024-09-09 11:16:56 +00:00
p2p Migrate absl::optional to std::optional 2024-09-02 12:16:47 +00:00
pc [Merge-130] Fix LibvpxVp9Encoder simulcast bug. 2024-10-01 10:25:48 +00:00
resources Delete unused YUV files 2024-07-11 20:26:16 +00:00
rtc_base Ensure <netinet/in.h> is included by using rtc_base/ip_address.h. 2024-09-11 08:11:44 +00:00
rtc_tools Delete deprecated AudioDecoderFactory::MakeAudioDecoder 2024-09-04 07:17:59 +00:00
sdk Allow sdk/objc owners to approve sdk/BUILD.gn 2024-09-11 10:57:31 +00:00
stats Migrate absl::optional to std::optional 2024-09-02 12:16:47 +00:00
system_wrappers Migrate absl::optional to std::optional 2024-09-02 12:16:47 +00:00
test Update ownership of PCLF documentation. 2024-09-11 13:03:08 +00:00
tools_webrtc Mock call to os.path.isdir in roll_deps_test. 2024-09-09 15:10:07 +00:00
video [M130] Increase AV1 QP threshold for quality convergence from 40 to 60 2024-09-19 21:16:29 +00:00
.clang-format Add IncludeBlocks to clang-format. 2021-02-03 16:29:07 +00:00
.git-blame-ignore-revs Add formatting CLs to .git-blame-ignore-revs 2023-05-07 09:27:47 +00:00
.gitignore Add .cache to .gitignore. 2021-01-20 15:01:07 +00:00
.gn Roll chromium_revision ba1ae79f58..6f9b3224db (1319128:1338914) 2024-08-08 09:20:02 +00:00
.mailmap Add .mailmap for git. 2022-02-20 14:22:13 +00:00
.style.yapf Configure YAPF to follow PEP-8 altogether 2023-09-22 10:32:11 +00:00
.vpython3 Update to vpython 3.11 and remove .vpython (v2.x) 2024-01-25 11:12:20 +00:00
AUTHORS Adding ChannelStatistics Logs 2024-09-02 20:50:58 +00:00
BUILD.gn build: add options to configure libsrtp for boringssl or other libraries 2024-08-27 07:17:52 +00:00
CODE_OF_CONDUCT.md Reland "Migrate WebRTC documentation to new renderer" 2023-01-31 09:30:04 +00:00
codereview.settings Don't add webrtc-reviews@ to CC, it can be added globally on Gerrit 2018-10-25 08:19:53 +00:00
DEPS Roll chromium_revision 3b552b31ee..3b70d6f26c (1354345:1354985) 2024-09-13 05:34:54 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files. 2021-02-08 19:09:33 +00:00
ENG_REVIEW_OWNERS Remove phoglund from ENG_REVIEW_OWNERS 2021-10-08 08:29:42 +00:00
LICENSE
license_template.txt
native-api.md AudioProcessingImpl: Remove the use of transient suppressor 2024-08-05 12:38:37 +00:00
OWNERS Add infra owners file 2022-12-02 09:21:47 +00:00
OWNERS_INFRA Allow to keep old python style for existing files. 2023-10-17 13:52:56 +00:00
PATENTS
PRESUBMIT.py Ensure <netinet/in.h> is included by using rtc_base/ip_address.h. 2024-09-11 08:11:44 +00:00
presubmit_test.py tools_webrtc dir converted to py3 + top level PRESUBMIT script 2022-02-08 14:42:26 +00:00
presubmit_test_mocks.py tools_webrtc dir converted to py3 + top level PRESUBMIT script 2022-02-08 14:42:26 +00:00
pylintrc Configure Pylint to follow PEP-8 2023-09-25 15:56:09 +00:00
pylintrc_old_style Allow to keep old python style for existing files. 2023-10-17 13:52:56 +00:00
README.chromium Add Security Critical field to README.chromium. 2024-08-27 07:38:26 +00:00
README.md doc: Follow up link rename in I2dbe1ef0c74a0de8c5619b522fab39527e797d9c 2023-05-26 09:20:16 +00:00
WATCHLISTS Remove xooglers from WATCHLISTS and OWNERS 2022-11-30 15:33:25 +00:00
webrtc.gni AudioProcessingImpl: Remove the use of transient suppressor 2024-08-05 12:38:37 +00:00
webrtc_lib_link_test.cc Move webrtc::AudioDeviceModule include to api/ folder 2024-04-22 08:56:31 +00:00
whitespace.txt Test CQ 2024-05-27 12:46:57 +00:00

WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.

Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.

Development

See here for instructions on how to get started developing with the native code.

Authoritative list of directories that contain the native API header files.

More info