Fix histogram logging in InterpolatedGainCurve.

We had the following pattern:

if (case_A) metric = METRIC_A;
if (case_B) metric = METRIC_B;
RTC_HISTOGRAM_COUNTS_10000(metric, value);

That's wrong, because once the logging macro runs once, it will use
the same histogram no matter what the first argument is. The macro
expands into roughly

static Histogram* histogram_ptr = nullptr;
if (histogram_ptr == nullptr) {
  // Look up the histogram and put in histogram_ptr
}
// Add data through the histogram pointer.

We change the logging to use macros with string literals. We add a
macro for every of the 4 possible invocations. The macros will expand
to one static pointer each.

Bug: webrtc:8925
Change-Id: Ic7e4a6299eff31dd5988047edfcedce7d369e5ce
Reviewed-on: https://webrtc-review.googlesource.com/64724
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22606}
1 file changed
tree: d8d0e6a01d6a52d1feb26ee259e511f9e9db9c70
  1. api/
  2. audio/
  3. build_overrides/
  4. call/
  5. common_audio/
  6. common_video/
  7. data/
  8. examples/
  9. infra/
  10. logging/
  11. media/
  12. modules/
  13. ortc/
  14. p2p/
  15. pc/
  16. resources/
  17. rtc_base/
  18. rtc_tools/
  19. sdk/
  20. stats/
  21. style-guide/
  22. system_wrappers/
  23. test/
  24. tools_webrtc/
  25. video/
  26. .clang-format
  27. .git-blame-ignore-revs
  28. .gitignore
  29. .gn
  30. .vpython
  31. AUTHORS
  32. BUILD.gn
  33. CODE_OF_CONDUCT.md
  34. codereview.settings
  35. common_types.cc
  36. common_types.h
  37. DEPS
  38. LICENSE
  39. license_template.txt
  40. LICENSE_THIRD_PARTY
  41. native-api.md
  42. OWNERS
  43. PATENTS
  44. PRESUBMIT.py
  45. presubmit_test.py
  46. presubmit_test_mocks.py
  47. pylintrc
  48. README.chromium
  49. README.md
  50. style-guide.md
  51. typedefs.h
  52. WATCHLISTS
  53. webrtc.gni
  54. whitespace.txt
README.md

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 http://www.webrtc.org/native-code/development 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