Currently we prefer the last added rtp module that supports rtx, and
assume this is the HD stream.
If we suffer a network degradation and stop sending HD, the current
behavior will trigger RTX padding on an inactive stream, which is not
very useful.
With this change, we will prefer the rtp module that last sent media,
which will spread the load a bit across active media streams, but will
be biased toward the one with highest packet rate.
Bug: webrtc:8975
Change-Id: Id52865ccd5263722c66d327b8c80457f63b90385
Reviewed-on: https://webrtc-review.googlesource.com/77360
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23281}
This reverts commit 89653d5db46419d2a80898635cb27fed64898db2.
Reason for revert:
Tentatively revert since I believe this break remoting unittests on Asan/Tsan
https://chromium-review.googlesource.com/c/chromium/src/+/1063330https://chromium-swarm.appspot.com/task?id=3d8692bedcc85c10&refresh=10&show_raw=1
Original change's description:
> [desktopCapture] Unify the position info in DIP coordinates on Mac.
>
> On OSX, the logical(DIP) and physical coordinates are used mixingly.
> For example, the captured image has its size in physical pixels(2x) and
> location in logical(DIP) pixels. Same to the cursor position. This
> causes trouble when we check the relative position of image and cursor
> when there are multiple monitors with different DIP setting connected.
>
> This cl proposed a solution to use DIP pixel for any location info,
> i.e. top-left of a frame and cursor position. Also propose a method to
> get the current scale factor of a window across multiple monitors. And
> save the current scale factor in DPI of the capture frame.
> Then we can check relative position of cursor and frame correctly
> in DIP pixel and compose them in physical pixel.
>
> Bug: webrtc:9178
> Change-Id: I3c076aeac2d6f2c1f63d000d7fff03500aa375ac
> Reviewed-on: https://webrtc-review.googlesource.com/71621
> Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
> Reviewed-by: Zijie He <zijiehe@chromium.org>
> Commit-Queue: Brave Yao <braveyao@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23263}
TBR=zijiehe@chromium.org,jamiewalch@chromium.org,perkj@webrtc.org,braveyao@webrtc.org
Change-Id: Ica02365925623e21b256d20a21b5625e7ed6f49b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9178
Reviewed-on: https://webrtc-review.googlesource.com/77461
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23280}
This CL turns on the previously implemented AEC3 audibility
improvements, which before has been off by default.
Bug: webrtc:9193,chromium:836790
Change-Id: Ibcd057ba5dd002718d62fd83db33d01d9563b8ea
Reviewed-on: https://webrtc-review.googlesource.com/77123
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23265}
On OSX, the logical(DIP) and physical coordinates are used mixingly.
For example, the captured image has its size in physical pixels(2x) and
location in logical(DIP) pixels. Same to the cursor position. This
causes trouble when we check the relative position of image and cursor
when there are multiple monitors with different DIP setting connected.
This cl proposed a solution to use DIP pixel for any location info,
i.e. top-left of a frame and cursor position. Also propose a method to
get the current scale factor of a window across multiple monitors. And
save the current scale factor in DPI of the capture frame.
Then we can check relative position of cursor and frame correctly
in DIP pixel and compose them in physical pixel.
Bug: webrtc:9178
Change-Id: I3c076aeac2d6f2c1f63d000d7fff03500aa375ac
Reviewed-on: https://webrtc-review.googlesource.com/71621
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Reviewed-by: Zijie He <zijiehe@chromium.org>
Commit-Queue: Brave Yao <braveyao@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23263}
This prepares for making the BBR implementation more identical to the
implementation in Quic, this is to ensure that results are comparable.
Bug: webrtc:8415
Change-Id: Ic2dc4394dc9923e5109ffa5f146c23b527f0c395
Reviewed-on: https://webrtc-review.googlesource.com/76582
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23262}
After https://webrtc-review.googlesource.com/c/src/+/70740, we are
creating/destroying the codecs on a task queue in the VideoStreamEncoder. This
CL updates the VideoCodecTest to do the same.
Also, this CL switches from manually Wait()'ing on the task queue to using
TaskQueueForTest::SendTask.
Bug: None
Change-Id: Ia0398b24e32e9cc5361ba5ee4c08441116def18e
Reviewed-on: https://webrtc-review.googlesource.com/76800
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23257}
After landing https://webrtc-review.googlesource.com/76720 and
https://webrtc-review.googlesource.com/76722 it is possible to remove
clang-cl only warning suppression flags.
These were needed because winsdk_samples was included using include_dirs
(-I) instead of -imsvc (which is similar to -isystem in GCC and clang).
Bug: webrtc:9251
Change-Id: I2bc19f0ba552342c49a29c07e4fb84d439003dfb
Reviewed-on: https://webrtc-review.googlesource.com/76781
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23252}
Merges the two targets in modules/audio_processing
and removes some redundant code. This enables not writing
a bunch of redundant code in
https://webrtc-review.googlesource.com/c/src/+/70502
':audio_processing' did depend on ':aec_dump_interface'.
'modules/audio_processing/aec_dump' did depend on
'aec_dump_interface' but not ':audio_processing'.
Having the AecDump implementation not depending on
'audio_processing' allows to have faster compilation time and
reduces the dependencies. However, maintaining such a decoupling
makes APM and AecDump client code more complex.
NOTRY=true # want this in and 'ios_api_framework' seems stuck.
Bug: webrtc:7404
Change-Id: I75a5f234591014ac42d52bc1a36526072f5be89c
Reviewed-on: https://webrtc-review.googlesource.com/76603
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23244}
The current implementation carefully shifts down the energy so as not to overflow.
The fuzzer audio_decoder_ilbc_fuzzer found an integer overflow anyway.
The energy is only used for a threshold check.
This fix stops the energy computation when the threshold is reached, before it can overflow.
Bug: chromium:837922
Change-Id: I45e84d2d271a37e6476b08433a2cbd5a8f6e6f26
Reviewed-on: https://webrtc-review.googlesource.com/76122
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23242}
This CL simply renames the test cases that were not renamed in
prior CLs.
Bug: None
Change-Id: If616eb823e1453bc92ba037722b77a219d54409c
Reviewed-on: https://webrtc-review.googlesource.com/76780
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23240}
This change forks the existing iOS audio device module and audio device
from modules/audio_device/ into sdk/objc/Framework. It also updates
RTCPeerConnectionFactory to use the forked implementation.
The unit tests are re-implemented as XCTests.
(was: https://webrtc-review.googlesource.com/c/src/+/67300)
Bug: webrtc:9120
Change-Id: I46c09900246f75ca5285aeb38f7b8b295784ffac
Reviewed-on: https://webrtc-review.googlesource.com/76741
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Peter Hanspers <peterhanspers@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23238}
CustomProcessing is the interface to injectable audio processing
submodules to AudioProcessing. This CL makes it possible to set
runtime settings on the injected render processing component.
Note that the current runtime setting handling happens on the capture
thread. Therefore, we add another SwapQueue to communicate with the
render thread.
Bug: webrtc:9138, webrtc:9262
Change-Id: I665ce2d83a2b35ca8b25cca813d2cef7bd0ba911
Reviewed-on: https://webrtc-review.googlesource.com/76123
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23236}
This CL finalizes the feature extraction part for the RNN VAD adding
a class that combines a high-pass filter, LP residual computation,
pitch estimation and spectral features extraction.
This CL also includes a minor refactoring of the pitch estimation
library.
Bug: webrtc:9076
Change-Id: I918b9e143bc6dd2bf508a891446067258a68a777
Reviewed-on: https://webrtc-review.googlesource.com/75504
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23235}
This prepares for making the BBR implementation more identical to the
implementation in Quic, to ensure that results are comparable.
Bug: webrtc:8415
Change-Id: Icc66b748e52efb80b5c3ade85f83de6b224a4bd2
Reviewed-on: https://webrtc-review.googlesource.com/76581
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23227}
- Two quality layers (same resolution, different bitrate).
- Max bitrate of low layer is limited to 200kbps. The choice of the
limit is driven by VP8 screen sharing which limits max bitrate of low
temporal layer to 200kbps. Using the same value for VP9 guarantees
that there will be no regressions for participants with limited
bandwidth.
- Max bitrate of high layer is limited to 500kbps. According to test
results this value is enough to get up to +5dB higher PSNR than VP8
SS provides on 1.2Mbps (max total bitrate for VP8 SS) link.
- Max total sent bitrate is limited to 700kbps. It is 500kbps lower
than that in VP8 SS (1200kbps).
Bug: webrtc:9261
Change-Id: I7919cc3933064664567c39e380a44cad0c65f1e8
Reviewed-on: https://webrtc-review.googlesource.com/76380
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23226}
Now using attribute to ensure that we avoid error like these when bulding with -Wthread-safety-analysis:
error: mutex '_critSect' is still held at the end of function [-Werror,-Wthread-safety-analysis]
RTC_NO_THREAD_SAFETY_ANALYSIS is an attribute on functions or methods, which turns off thread safety
checking for that method. It provides an escape hatch for functions which are either
(1) deliberately thread-unsafe, or
(2) are thread-safe, but too complicated for the analysis to understand.
Bug: webrtc:9202
Change-Id: Ie332bca7eb7eb535ed965de5ddc42872c4f30602
Reviewed-on: https://webrtc-review.googlesource.com/76562
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23221}
Changed minimum bit rate threshold formula to raise the minimum bit rate
at which 720p video is presented in VP9 SVC to ensure that the video
quality for VP9 SVC is the same or better than VP8 SIM. The minimum bit
rate threshold values for lower resolutions remain largely unchanged.
Also changed maximum bit rate threshold formula to lower the maximum
bit rate for low resolutions (e.g., 180p) in order to ensure higher
frame rates when downlink bit rates are very low (e.g., < 100 kbps).
Bug: webrtc:9242
Change-Id: I8f9c76c9188b98f3fd40a608551b576b0c3b8f34
Reviewed-on: https://webrtc-review.googlesource.com/75244
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23218}
The previous effort of building WebRTC without SW codecs stopped when
libjingle_peerconnection was possible to build. In order to make the
group("default") target build, this basically updates a bunch of
tests to explicitly depend on the built-in software video codecs.
Bug: webrtc:7925
Change-Id: I2715414770c197fca01cb8dbde173a21f4434500
Reviewed-on: https://webrtc-review.googlesource.com/70503
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23216}
Mini-change: add 'webrtc' namespace. The template class AudioFrameView
got declared in the global namespace by mistake. (My fault). Now
fixing.
Bug: webrtc:9262.
Change-Id: I6f2b4ab1ccdb223505e7181b8e6f12f5f23b3684
Reviewed-on: https://webrtc-review.googlesource.com/76140
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23215}
This change forks the existing iOS audio device module and audio device
from modules/audio_device/ into sdk/objc/Framework. It also updates
RTCPeerConnectionFactory to use the forked implementation.
The unit tests are re-implemented as XCTests.
(was: https://webrtc-review.googlesource.com/c/src/+/67300)
Bug: webrtc:9120
Change-Id: I07340505137b16c2dd487569ad0112f984557bba
Reviewed-on: https://webrtc-review.googlesource.com/75125
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Peter Hanspers <peterhanspers@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23208}
Build targets involving files under api/video/ are moved into this
file, from api/BUILD.gn. In addition, drop "_api" part of target
names, and move the header file api/videosinkinterface.h to
api/video/video_sink_interface.h.
Bug: webrtc:9253
Change-Id: I2896d3f063db8dff902bc29738578395b2fcc155
Reviewed-on: https://webrtc-review.googlesource.com/75500
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23207}
This CL defines SpectralFeaturesExtractor which is responsible for
computing the spectral features used as input for the RNN.
Bug: webrtc:9076
Change-Id: I5e1396b89eca9c13bb268e8419a16436a9c3450f
Reviewed-on: https://webrtc-review.googlesource.com/73760
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23206}
This removes second reference for frame 3 in GOF predefined for 3
temporal layers since encoder never use that reference.
Bug: webrtc:9245
Change-Id: I6fbdbe7d3c753dda7fbcfcbd05f3530f70f80728
Reviewed-on: https://webrtc-review.googlesource.com/74705
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Marco Paniconi <marpan@google.com>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23193}
This CL adds robustness to avoid the AEC3 transparent mode to be
incorrectly activated when
-there is strong near-end noise
-there is only low-level nearend activity.
Bug: webrtc:9256,chromium:841193
Change-Id: I26c2759d163914eb85dc3d863da8acbf28cbb88d
Reviewed-on: https://webrtc-review.googlesource.com/75511
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23191}
This CL corrects the usage of the estimated echo path gain to not be
hardcoded to 1. In order to retain the tuned behavior, the CL for now
maintains the former behavior in the code.
Bug: webrtc:9255,chromium:851187
Change-Id: I7f91c72e476680a8a854c22b74b1771fae446110
Reviewed-on: https://webrtc-review.googlesource.com/75510
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23190}
This CL ensures that the external audio buffer delay is correctly used
by removing the applied headroom and avoiding that the delay estimation
feedback fromt the echo remover overrules the external delay
information.
Bug: webrtc:9241,chromium:839860
Change-Id: I53cc78ace34a71994ab24a3b552f29979e2aae78
Reviewed-on: https://webrtc-review.googlesource.com/75513
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23189}
This prepares for allowing injection of a network controller.
Bug: webrtc:9155
Change-Id: I5624f47738db9c5cd4750eac76cb6289e06a7aa3
Reviewed-on: https://webrtc-review.googlesource.com/73100
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23188}
This CL is part of the effort to remove warning suppression flags from
the WebRTC build.
Bug: webrtc:9251
Change-Id: I45ece25e897a14a6d4ce8a90ba59688f8fc6fe32
Reviewed-on: https://webrtc-review.googlesource.com/75503
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23187}
Before this CL, there would be an out-of-bounds write in the ByteBuffer
copying when a decoded frame had height != sliceHeight.
Bug: webrtc:9194
Change-Id: Ibb80e5555e8f00d9e1fd4cb8a73f5e4ccd5a0b81
Tested: 640x360 loopback with eglContext == null in AppRTCMobile on Pixel.
Reviewed-on: https://webrtc-review.googlesource.com/74120
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23184}
A bug was introduced to NetEq RTP player in a recent CL:
https://webrtc-review.googlesource.com/c/src/+/69806
This is to fix it.
Bug: webrtc:9147
Change-Id: I949fd6b220d7c7f08c6e2940468232d1d955a3dc
Reviewed-on: https://webrtc-review.googlesource.com/75321
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23181}
This change adds flags and default values for two more RTP header
extensions: VideoContentType and VideoTiming.
This will silence a number of annoying warnings when running with
application logs.
Bug: none
Change-Id: I9bb01ea2519813d3c47553ecff384141fbede23e
Reviewed-on: https://webrtc-review.googlesource.com/75300
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23178}
This removes the redundant type and replaces all usages. A slight change
in behavior is that we no longer get nanosecond resolution. This should
not matter since no current code requires nanosecond resolution.
Bug: webrtc:9155
Change-Id: I04334e08c686d95731621a6c8a7e40400d0ae3b2
Reviewed-on: https://webrtc-review.googlesource.com/71163
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23174}
During pitch search in the RNN VAD, we calculate auto
correlation. Before this CL, we computed kNumInvertedLags12kHz=147 dot
products of vectors with kBufSize12kHz-kMaxPitch12kHz=240
elements. This was the most time consuming step of the new VAD.
This CL makes the computation happen in frequency domain. Profiling
shows a 3x speed increase. In future, we can try using a more efficient
FFT and to reduce the FFT length to some of e.g. 400, 405, 432.
# For minimal Clang plugin check change.
TBR: kwiberg@webrtc.org
Bug: webrtc:9076
Change-Id: I688251a415869d53175a37f390f441d4e035d954
Reviewed-on: https://webrtc-review.googlesource.com/73366
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23171}
This CL adds helper functions to be used for the spectral features
computation. Namely, it includes the following:
- band boundaries (frequency to FFT coeffcient index)
- band energy coefficients
- log band energy coefficients
- fixed size DCT table and computation
Bug: webrtc:9076
Change-Id: I03a8799b226d986bc1e37cefd0c3039f94b5592a
Reviewed-on: https://webrtc-review.googlesource.com/73687
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23170}
This prepares for being able to inject network congestion controllers.
And makes it easier to use the units in other parts of the code.
Bug: webrtc:9155
Change-Id: Ib8f9c1c97b06d791a01c3376046933d576ae46f9
Reviewed-on: https://webrtc-review.googlesource.com/70201
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23168}
Only half of the array was initialized. Now all of it is.
Bug: chromium:839960
Change-Id: If8bbe12c4c4c0dc0d529c93b22e49a94ecb09919
Reviewed-on: https://webrtc-review.googlesource.com/74820
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23167}