[M148] Allow signaled SSRCs to override learned bindings in RtpDemuxer

Update RtpDemuxer to permit signaled SSRCs to override existing learned
SSRC bindings. This prevents registration failures during session
renegotiation when an SSRC, previously identified through payload type
demuxing, is subsequently explicitly signaled.

The demuxer now maintains a set of signaled SSRCs to differentiate
explicit configurations from learned state. Conflict detection is
modified to allow these overrides while maintaining strict checks
between multiple signaled SSRCs. This ensures that explicit signaling
always takes precedence over internally learned bindings, resolving
routing issues during media stream updates.

(cherry picked from commit 186d42a3010981882a8679a145ce36aa84581c78)

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