Fix simulcast stats bug with missing outbound-rtps.

If simulcast is negotiated, we should see all SSRCs' outbound-rtps.

The bug is that if "substreams" have not been populated yet because we
have not started sending yet (e.g. ICE not connected), we return a
single dummy "info" object. This CL updates this early return path by
correctly setting the metrics that should always be present: ssrc, rid,
encodingIndex and active. Packet counters and other stuff will be zero
which makes sense prior to sending. Full stack test in
peer_connection_encodings_integrationtest.cc.

The code path that is changed no longer copies frames_encoded,
total_encode_time_ms, total_encoded_bytes_target, frames_sent and
huge_frames_sent which require us to update some expectations in
webrtc_video_engine_unittest.cc. We should not copy these because
outside of testing these would all be zero before sending and after
sending, substreams exist making this code path N/A.

Bug: chromium:406585888
Change-Id: I2f7ad8c147254c69510c396b8736d8bb9293db4e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/406280
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45447}
3 files changed
tree: a5e6043eed2fbbca47327b7b59a83446a4163314
  1. api/
  2. audio/
  3. build_overrides/
  4. call/
  5. common_audio/
  6. common_video/
  7. data/
  8. docs/
  9. examples/
  10. experiments/
  11. g3doc/
  12. infra/
  13. logging/
  14. media/
  15. modules/
  16. net/
  17. p2p/
  18. pc/
  19. resources/
  20. rtc_base/
  21. rtc_tools/
  22. sdk/
  23. stats/
  24. system_wrappers/
  25. test/
  26. tools_webrtc/
  27. video/
  28. .clang-format
  29. .clang-tidy
  30. .git-blame-ignore-revs
  31. .gitignore
  32. .gn
  33. .mailmap
  34. .rustfmt.toml
  35. .style.yapf
  36. .vpython3
  37. AUTHORS
  38. BUILD.gn
  39. CODE_OF_CONDUCT.md
  40. codereview.settings
  41. DEPS
  42. DIR_METADATA
  43. ENG_REVIEW_OWNERS
  44. LICENSE
  45. license_template.txt
  46. native-api.md
  47. OWNERS
  48. OWNERS_INFRA
  49. PATENTS
  50. PRESUBMIT.py
  51. presubmit_test.py
  52. presubmit_test_mocks.py
  53. pylintrc
  54. pylintrc_old_style
  55. README.chromium
  56. README.md
  57. WATCHLISTS
  58. webrtc.gni
  59. webrtc_lib_link_test.cc
  60. 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 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