Commit graph

20 commits

Author SHA1 Message Date
Florent Castelli
8037fc6ffa Migrate absl::optional to std::optional
Bug: webrtc:342905193
No-Try: True
Change-Id: Icc968be43b8830038ea9a1f5f604307220457807
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361021
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42911}
2024-09-02 12:16:47 +00:00
Tommi
ff2bf4b195 Update FrameCombiner to use audio view methods for interleaved buffers
Along the way slightly simplify the class interface since views
carry audio properties. Also, now allocating FrameCombiner allocates
the mixing buffer in the same allocation.

Bug: chromium:335805780
Change-Id: Id7a76b040c11064e1e4daf01a371328769162554
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/352502
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42465}
2024-06-12 09:44:40 +00:00
Tommi
1f3679884c Start using ArrayView in AudioFrame, update PushResampler
Start introducing ArrayView to AudioFrame and code that flows down
from there.  In this first step:
* Add `data_view()` that returns a read-only ArrayView for the
  audio buffer. When AudioFrame is not initialized however, data_view()
  will return a nullptr whereas the current data() method never returns
  nullptr.
* Add `mutable_data()` that requires two arguments for properly setting
  the samples per channel and number of channels that's required for
  accurately reserving the returned mutable ArrayView.
  A notable behavior change is that if the requested number of channels
  is larger than supported or the calculated buffer size is too large,
  the function will trigger a check.
* Add TODOs for following work.

Bug: chromium:335805780
Change-Id: I2937de800422589ebe6a3840b3caadf3d9ff8b00
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347982
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42202}
2024-04-30 15:33:08 +00:00
Alessio Bazzica
10f1bf3923 Remove unused enum FrameCombiner::LimiterType
Bug: webrtc:7494
Change-Id: Ied1c9c37ccf1c57802df9d1d62f8de7790d2ee94
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291326
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39190}
2023-01-25 10:15:15 +00:00
Alessio Bazzica
a1d035655e RtpPacketInfo: new ctor + deprecated ctors clean-up
New ctor added without optional and media specific fields.

Bug: webrtc:10739, b/246753278
Change-Id: I7e15849aced6ed0a7ada725ea171a15ea1e9bc5a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275941
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38124}
2022-09-20 08:58:38 +00:00
Doudou Kisabaka
fe6595f006 Include all RTP packet infos from the mix list when updating the audio frame for mixing.
Users of the mixer can use this information to determine which sources were included in the frame.

Bug: webrtc:12745
Change-Id: I11a8e3b1f4e8f95eb870336cad8dd082330bdf02
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217768
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Chen Xing <chxg@google.com>
Commit-Queue: Doudou Kisabaka <doudouk@google.com>
Cr-Commit-Position: refs/heads/master@{#34035}
2021-05-18 11:05:37 +00:00
Tommi
a5e07cc3db Rename more death test to *DeathTest
Bug: webrtc:11577
Change-Id: If45e322fed3f2935e64c9e4d7e8c096eccc53ac4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176140
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31362}
2020-05-26 20:27:34 +00:00
Alex Loiko
b4977de306 Receive-side ready for multiple channels.
Made path from NetEq to AudioTransport ready for many-channel audio.
If there is one stream, we can handle anything that fits in an
AudioFrame. For many streams, the current limit is 6.

Some multi-channel combinations are not supported: e.g. if we get
stereo audio and attempt to play out 6 channels.

Changes:
* AudioFrameOperations - replaced the MonoTo* and *ToMono methods by
  UpmixChannels & DownmixChannels.
* AudioMixer: removed DCHECKs for <= 2 channels and tweaked the mixing
  algorithm to handle many channels.

Bug: webrtc:8649
Change-Id: Ib83e16d463694e35658caa09c27849e853d508fb
Reviewed-on: https://webrtc-review.googlesource.com/c/106040
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26446}
2019-01-29 12:43:23 +00:00
Yves Gerey
3e70781361 [Cleanup] Add missing #include. Remove useless ones. IWYU part 2.
This is a follow-up to
https://webrtc-review.googlesource.com/c/src/+/106280.
This time the whole code base is covered.
Some files may have not been fixed though, whenever the IWYU tool
was breaking the build.

Bug: webrtc:8311
Change-Id: I2c31f552a87e887d33931d46e87b6208b1e483ef
Reviewed-on: https://webrtc-review.googlesource.com/c/111965
Commit-Queue: Yves Gerey <yvesg@google.com>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25830}
2018-11-28 18:25:07 +00:00
Jonas Olsson
84df1c724e Make fewer copies when using StringBuilder.
Replace calls to .str() which copies with .Release which moves in cases where that's safe.

This CL was generated by this command:
git grep -l 'StringBuilder' |
xargs perl -i -0 -pe "s/(rtc::StringBuilder (\S+);.*?return )\\g2.str\(\)/\$1\$2.Release\(\)/sg"

Bug: webrtc:8982
Change-Id: If4dadbeb039df010aaaa9e58da81c1971a84fe8f
Reviewed-on: https://webrtc-review.googlesource.com/100307
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24790}
2018-09-24 09:39:19 +00:00
Jonas Olsson
366a50c4ef Remove simple stringstream usages.
This CL replaces std::o?stringstream with rtc::StringBuilder where that's possible to do without changing any of the surrounding code. It also updates includes and build files as appropriate.

The CL was generated by running 'git grep -l -P std::o?stringstream | xargs perl -pi -e "s/std::o?stringstream/rtc::StringBuilder/g"'. Then I've manually updated the #includes and BUILD files, run 'git cl format' and unstaged any file that would need more complex fixes.

Bug: webrtc:8982
Change-Id: Ibc32153f4a3fd177e260b6ad05ce393972549357
Reviewed-on: https://webrtc-review.googlesource.com/98460
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24605}
2018-09-06 12:53:19 +00:00
Alex Loiko
8396e3498f Remove APM limiter in Audio Mixer.
The FrameCombiner sub-module of the AudioMixer uses one of two
limiters. One is an AudioProcessingModule with AGC1 enabled and
configured as a limiter. The other is the limiter part of AGC2. This
change removes the APM-AGC1 limiter. This requires small changes to
FrameCombiner, AudioMixerImpl and tests.

We also stop using the finch experiment flag.

Bug: webrtc:8925
Change-Id: Id7b8349ec4720b6417b15eaf70ed1a850b6ddbed
Reviewed-on: https://webrtc-review.googlesource.com/84620
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23727}
2018-06-25 14:06:11 +00:00
Alex Loiko
507e8d1f71 Reland of "Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller."
The webrtc::AudioMixer uses a limiter component. This CL allows
changes the APM-AGC limiter to the APM-AGC2 limiter though a Chrome
field trial.

The AGC2 limiter has a float interface. We plan to eventually switch
to the AGC2 limiter. Therefore, we will now mix in de-interleaved
floats. Float mixing will happen both when using the old limiter and
when using the new one.

After this CL the mixer will support two limiters. The limiters have
different interfaces and need different processing steps. Because of
that, we make (rather big) changes to the control flow in
FrameCombiner. For a short while, we will mix in deinterleaved floats
when using any limiter.

Originally landed in https://webrtc-review.googlesource.com/c/src/+/56141/

Reverted in https://webrtc-review.googlesource.com/c/src/+/57940
because of both breaking compilation and having a severe error. The
error is fixed and a test is added. The compilation issue is fixed.

Bug: webrtc:8925
Change-Id: Ieba138dee9652c826459fe637ae2dccbbc06bcf0
Reviewed-on: https://webrtc-review.googlesource.com/58085
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22207}
2018-02-27 15:47:39 +00:00
Zhi Huang
72eeaa3fe4 Revert "Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller."
This reverts commit bd7b461f16.

Reason for revert: Broke the internal project. The issue maybe related to the apm_debug_dump configuration.

Original change's description:
> Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller.
> 
> The webrtc::AudioMixer uses a limiter component. This CL changes the
> APM-AGC limiter to the APM-AGC2 limiter though a Chrome field trial.
> 
> The new limiter has a float interface. Since we're moving to it, we
> now mix in floats as well. After this CL the mixer will support two
> limiters. The limiters have different interfaces and need different
> processing steps. Because of that, we make (rather big) changes to the
> control flow in FrameCombiner. For a short while, we will mix in
> deinterleaved floats when using any limiter.
> 
> NOTRY=true
> 
> Bug: webrtc:8925
> Change-Id: Ie296c2b0d94f3f0078811a2a58f6fbf0f3e6e4a8
> Reviewed-on: https://webrtc-review.googlesource.com/56141
> Commit-Queue: Alex Loiko <aleloi@webrtc.org>
> Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22185}

TBR=gustaf@webrtc.org,aleloi@webrtc.org

Change-Id: I3dd1a2b1fca32c4dd046e6fc325744079e3ac5ca
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8925
Reviewed-on: https://webrtc-review.googlesource.com/57940
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22189}
2018-02-26 21:03:44 +00:00
Alex Loiko
bd7b461f16 Choose between APM-AGC-Limiter and Apm-AGC2-fixed-gain_controller.
The webrtc::AudioMixer uses a limiter component. This CL changes the
APM-AGC limiter to the APM-AGC2 limiter though a Chrome field trial.

The new limiter has a float interface. Since we're moving to it, we
now mix in floats as well. After this CL the mixer will support two
limiters. The limiters have different interfaces and need different
processing steps. Because of that, we make (rather big) changes to the
control flow in FrameCombiner. For a short while, we will mix in
deinterleaved floats when using any limiter.

NOTRY=true

Bug: webrtc:8925
Change-Id: Ie296c2b0d94f3f0078811a2a58f6fbf0f3e6e4a8
Reviewed-on: https://webrtc-review.googlesource.com/56141
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22185}
2018-02-26 12:40:00 +00:00
solenberg
c7b4a45594 Remove various IDs:
- AudioFrame
- AudioCodingModule

BUG=webrtc:4690
TBR=kwiberg@webrtc.org

Review-Url: https://codereview.webrtc.org/3019543002
Cr-Original-Commit-Position: refs/heads/master@{#20005}
Committed: https://webrtc.googlesource.com/src/+/2d0f77585d556d8b11d6269d35149ae9ca14c472
Review-Url: https://codereview.webrtc.org/3019543002
Cr-Commit-Position: refs/heads/master@{#20019}
2017-09-28 14:37:11 +00:00
solenberg
e423a9de93 Revert of Remove various IDs (patchset #7 id:120001 of https://codereview.webrtc.org/3019543002/ )
Reason for revert:
Breaks downstream

Original issue's description:
> Remove various IDs:
>
> - AudioFrame
> - AudioCodingModule
>
> BUG=webrtc:4690
> TBR=kwiberg@webrtc.org
>
> Review-Url: https://codereview.webrtc.org/3019543002
> Cr-Commit-Position: refs/heads/master@{#20005}
> Committed: https://webrtc.googlesource.com/src/+/2d0f77585d556d8b11d6269d35149ae9ca14c472

TBR=henrik.lundin@webrtc.org,kwiberg@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4690

Review-Url: https://codereview.webrtc.org/3014683002
Cr-Commit-Position: refs/heads/master@{#20008}
2017-09-27 18:28:14 +00:00
solenberg
2d0f77585d Remove various IDs:
- AudioFrame
- AudioCodingModule

BUG=webrtc:4690
TBR=kwiberg@webrtc.org

Review-Url: https://codereview.webrtc.org/3019543002
Cr-Commit-Position: refs/heads/master@{#20005}
2017-09-27 17:33:57 +00:00
Mirko Bonadei
92ea95e34a Fixing WebRTC after moving from src/webrtc to src/
In https://webrtc-review.googlesource.com/c/src/+/1560 we moved WebRTC
from src/webrtc to src/ (in order to preserve an healthy git history).
This CL takes care of fixing header guards, #include paths, etc...

NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
TBR=tommi@webrtc.org


Bug: chromium:611808
Change-Id: Iea91618212bee0af16aa3f05071eab8f93706578
Reviewed-on: https://webrtc-review.googlesource.com/1561
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Kjellander <kjellander@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19846}
2017-09-15 05:02:56 +00:00
Mirko Bonadei
bb547203bf Moving src/webrtc into src/.
In order to eliminate the WebRTC Subtree mirror in Chromium, 
WebRTC is moving the content of the src/webrtc directory up
to the src/ directory.

NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
TBR=tommi@webrtc.org

Bug: chromium:611808
Change-Id: Iac59c5b51b950f174119565bac87955a7994bc38
Reviewed-on: https://webrtc-review.googlesource.com/1560
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Kjellander <kjellander@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19845}
2017-09-15 04:25:06 +00:00
Renamed from webrtc/modules/audio_mixer/frame_combiner_unittest.cc (Browse further)