Refactor DTLS transport ownership to RtpTransport.

Transfers ownership of the RTP and RTCP DTLS transports from
JsepTransport to the underlying RtpTransport (via DtlsSrtpTransport).
This aligns the ownership model, simplifies JsepTransport, and allows
JsepTransport to treat the API wrapper (scoped_refptr<DtlsTransport>) as
a pure dependency injected by the controller.

Key changes:
- RtpTransport/DtlsSrtpTransport now own the DtlsTransportInternal.
- Construction of the DtlsTransport object has been moved to
  JsepTransportController but JsepTransport continues to call the
  Clear() method when it goes out of scope to ensure alignment across
  objects that may (still) have raw pointers to the transports.
- JsepTransportController handles creation and injection of both the
  internal transport and the API wrapper. This makes construction steps
  a bit clearer and will help with getting closer to RAII.
- Avoid a potential case where enabling RTCP mux could cause
  SRTP resets.

Bug: webrtc:360058654
Change-Id: I18f9b4eb7109a53e9674ae5275ecf707ca7e41eb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/428621
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#46336}
13 files changed
tree: 58c2779e5dbc599090c1c096b65f85968c46d1a8
  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