|
|
Created:
4 years, 5 months ago by peah-webrtc Modified:
4 years, 5 months ago CC:
webrtc-reviews_webrtc.org, peah-webrtc, Andrew MacDonald, tterriberry_mozilla.com, audio-team_agora.io, hlundin-webrtc, kwiberg-webrtc, minyue-webrtc, the sun, aluebs-webrtc, bjornv1 Base URL:
https://chromium.googlesource.com/external/webrtc.git@ALC_RC9_CL Target Ref:
refs/pending/heads/master Project:
webrtc Visibility:
Public. |
DescriptionThis CL provides improved parameter tuning for the level controller as well as some further minor changes.
It does:
-Handle saturations in a better manner by adding different gain change
step sizes for upwards and downwards changes, as well as when there
is saturation.
-Handle conditions with initial noise-only regions in a better way by
setting a high initial peak level estimate which is gradually reduced until
certainty about the peak level is achieved.
-Limit the maximum gain to limit noise amplification, and to reflect that it
initially is intended to be used in cascade with the fixed digital AGC mode.
-Lower the maximum allowed stationary noise floor to reduce the risk of
excessive noise amplification.
-Lower the target gain to reduce the risk of causing the AEC on the other
end to fail due to high playout levels triggering nonlinearities.
This also reduces the risk for saturation.
-Handle the noise-only regions in a better manner.
NOTRY=true
TBR=aleloi
BUG=webrtc:5920
Committed: https://crrev.com/b59ff8952f961a6de1f22d539a1e08f31215d4e7
Cr-Commit-Position: refs/heads/master@{#13350}
Patch Set 1 #
Total comments: 4
Patch Set 2 : Added tuning that affects the gain behavior during noise-only periods #Patch Set 3 : Temporarily disabling the bitexactness tests (will be activated in a follow-up CL) #Patch Set 4 : Added DHECK on the minimum value for the peak level #Patch Set 5 : Disabling bitexactness tests that were by mistake not disabled in the previous patch #Depends on Patchset: Messages
Total messages: 41 (25 generated)
Description was changed from ========== Improved tuning of the adaptive level controller. BUG= ========== to ========== This CL provides improved parameter tuning for the level controller. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. BUG=webrtc:5920 ==========
peah@webrtc.org changed reviewers: + henrik.lundin@webrtc.org
peah@webrtc.org changed reviewers: + aleloi@webrtc.org
Description was changed from ========== This CL provides improved parameter tuning for the level controller. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Change the metric for the noise power to refer to the noise power in the level controller output. BUG=webrtc:5920 ==========
Description was changed from ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Change the metric for the noise power to refer to the noise power in the level controller output. BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Change the metric for the noise power to refer to the noise power in the level controller output. BUG=webrtc:5920 ==========
Patchset #1 (id:1) has been deleted
Patchset #1 (id:20001) has been deleted
Patchset #1 (id:40001) has been deleted
Description was changed from ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Change the metric for the noise power to refer to the noise power in the level controller output. BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. BUG=webrtc:5920 ==========
Description was changed from ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. BUG=webrtc:5920 ==========
LGTM with two comments. https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... File webrtc/modules/audio_processing/level_controller/gain_applier.cc (right): https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... webrtc/modules/audio_processing/level_controller/gain_applier.cc:76: gain = std::max(new_gain, gain + step_size); Now that you are passing the step size with a sign, you can fold the two ApplyGain functions into one, if you combine the gain modifying step as: gain = (step_size > 0) ? std::min(new_gain, gain + step_size) : std::max(new_gain, gain + step_size); However, this creates a branch within the for loop, which may be detrimental to performance. You chose. https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... File webrtc/modules/audio_processing/level_controller/peak_level_estimator.cc (right): https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... webrtc/modules/audio_processing/level_controller/peak_level_estimator.cc:36: return peak_level_; I'm all in favor of early returns, but you are no longer running std::max(peak_level_, 30.f) for this case. I guess it is not needed, but consider documenting this with RTC_DCHECK_LE(peak_level_, 30.f).
https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... File webrtc/modules/audio_processing/level_controller/gain_applier.cc (right): https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... webrtc/modules/audio_processing/level_controller/gain_applier.cc:76: gain = std::max(new_gain, gain + step_size); On 2016/06/30 07:36:23, hlundin-webrtc wrote: > Now that you are passing the step size with a sign, you can fold the two > ApplyGain functions into one, if you combine the gain modifying step as: > > gain = (step_size > 0) ? std::min(new_gain, gain + step_size) : > std::max(new_gain, gain + step_size); > > However, this creates a branch within the for loop, which may be detrimental to > performance. You chose. I'll keep it as it is for now to avoid the branching inside the loop. Most likely it should be fine regardless of that though. https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... File webrtc/modules/audio_processing/level_controller/peak_level_estimator.cc (right): https://codereview.webrtc.org/2111553002/diff/60001/webrtc/modules/audio_proc... webrtc/modules/audio_processing/level_controller/peak_level_estimator.cc:36: return peak_level_; On 2016/06/30 07:36:23, hlundin-webrtc wrote: > I'm all in favor of early returns, but you are no longer running > std::max(peak_level_, 30.f) for this case. I guess it is not needed, but > consider documenting this with RTC_DCHECK_LE(peak_level_, 30.f). Good point! Added a DCHECK. Done.
Description was changed from ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. TBR=aleloi BUG=webrtc:5920 ==========
The CQ bit was checked by peah@webrtc.org
The patchset sent to the CQ was uploaded after l-g-t-m from henrik.lundin@webrtc.org Link to the patchset: https://codereview.webrtc.org/2111553002/#ps120001 (title: "Added DHECK on the minimum value for the peak level")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_ubsan on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/linux_ubsan/builds/3186) linux_ubsan_vptr on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/linux_ubsan_vptr/builds...) mac_rel on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/mac_rel/builds/16280)
The CQ bit was checked by peah@webrtc.org
The patchset sent to the CQ was uploaded after l-g-t-m from henrik.lundin@webrtc.org Link to the patchset: https://codereview.webrtc.org/2111553002/#ps140001 (title: "Disabling bitexactness tests that were by mistake not disabled in the previous patch")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: android_dbg on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/android_dbg/builds/14687)
The CQ bit was checked by peah@webrtc.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: android_dbg on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/android_dbg/builds/14695)
The CQ bit was checked by peah@webrtc.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: android_dbg on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/android_dbg/builds/14696)
Description was changed from ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. TBR=aleloi BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does: -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Handle the noise-only regions in a better manner. NOTRY=true TBR=aleloi BUG=webrtc:5920 ==========
The CQ bit was checked by peah@webrtc.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/...
Message was sent while issue was closed.
Description was changed from ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does: -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Handle the noise-only regions in a better manner. NOTRY=true TBR=aleloi BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does: -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Handle the noise-only regions in a better manner. NOTRY=true TBR=aleloi BUG=webrtc:5920 ==========
Message was sent while issue was closed.
Committed patchset #5 (id:140001)
Message was sent while issue was closed.
CQ bit was unchecked.
Message was sent while issue was closed.
Description was changed from ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does: -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Handle the noise-only regions in a better manner. NOTRY=true TBR=aleloi BUG=webrtc:5920 ========== to ========== This CL provides improved parameter tuning for the level controller as well as some further minor changes. It does: -Handle saturations in a better manner by adding different gain change step sizes for upwards and downwards changes, as well as when there is saturation. -Handle conditions with initial noise-only regions in a better way by setting a high initial peak level estimate which is gradually reduced until certainty about the peak level is achieved. -Limit the maximum gain to limit noise amplification, and to reflect that it initially is intended to be used in cascade with the fixed digital AGC mode. -Lower the maximum allowed stationary noise floor to reduce the risk of excessive noise amplification. -Lower the target gain to reduce the risk of causing the AEC on the other end to fail due to high playout levels triggering nonlinearities. This also reduces the risk for saturation. -Handle the noise-only regions in a better manner. NOTRY=true TBR=aleloi BUG=webrtc:5920 Committed: https://crrev.com/b59ff8952f961a6de1f22d539a1e08f31215d4e7 Cr-Commit-Position: refs/heads/master@{#13350} ==========
Message was sent while issue was closed.
Patchset 5 (id:??) landed as https://crrev.com/b59ff8952f961a6de1f22d539a1e08f31215d4e7 Cr-Commit-Position: refs/heads/master@{#13350} |