Reland "Revert "Reland "Allow sending to separate payload types for each simulcast index."""

This is a reland of commit Ife7d43471c85fdea9bd26cc982bce410c0d75527

In the previous implementation, there was an issue where switching codecs
with VideoEncoderSelector would cause a crash, so I have fixed it.
Specifically, if there are no changes to params.send_codecs, I now remove
all parameters related to mixed-codec simulcast.
This should ensure that when an unintended codec switch occurs,
the behavior remains the same as before.

Additionally, I have added a test to reproduce this crash issue.
I confirmed that the issue occurred in the previous implementation and
that it does not occur in the current implementation.

Original change's description:
> Revert "Reland "Allow sending to separate payload types for each simulcast index.""
>
> This reverts commit 49ac6b758cc3c28be2fc13028a829f016b453d39.
>
> Reason for revert: Break codec switch in singlecast.
>
> Original change's description:
> > Reland "Allow sending to separate payload types for each simulcast index."
> >
> > This is a reland of commit bcb19c00ba8ab1788ba3c08f28ee1b23e0cc77b9
> >
> > Original change's description:
> > > Allow sending to separate payload types for each simulcast index.
> > >
> > > This change is for mixed-codec simulcast.
> > >
> > > By obtaining the payload type via RtpConfig::GetStreamConfig(),
> > > the correct payload type can be retrieved regardless of whether
> > > RtpConfig::stream_configs is initialized or not.
> > >
> > > Bug: webrtc:362277533
> > > Change-Id: I6b2a1ae66356b20a832565ce6729c3ce9e73a161
> > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364760
> > > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > > Commit-Queue: Florent Castelli <orphis@webrtc.org>
> > > Reviewed-by: Florent Castelli <orphis@webrtc.org>
> > > Cr-Commit-Position: refs/heads/main@{#43197}
> >
> > Bug: webrtc:362277533
> > Change-Id: Ia82c3390cceb9f68315c2fd9ba5114693669af32
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/374780
> > Commit-Queue: Henrik Boström <hbos@webrtc.org>
> > Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Cr-Commit-Position: refs/heads/main@{#43787}
>
> Bug: webrtc:362277533
> Change-Id: Ife7d43471c85fdea9bd26cc982bce410c0d75527
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/376040
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
> Reviewed-by: Per Kjellander <perkj@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#43830}

Bug: webrtc:362277533
Change-Id: I1772fa478a4fd4d5096d9bf727ed4de045861c4e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/378100
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44007}
7 files changed
tree: 2b3952b37d3c0ed77fd1b388c99ff9f4556e3772
  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. .git-blame-ignore-revs
  30. .gitignore
  31. .gn
  32. .mailmap
  33. .style.yapf
  34. .vpython3
  35. AUTHORS
  36. BUILD.gn
  37. CODE_OF_CONDUCT.md
  38. codereview.settings
  39. DEPS
  40. DIR_METADATA
  41. ENG_REVIEW_OWNERS
  42. LICENSE
  43. license_template.txt
  44. native-api.md
  45. OWNERS
  46. OWNERS_INFRA
  47. PATENTS
  48. PRESUBMIT.py
  49. presubmit_test.py
  50. presubmit_test_mocks.py
  51. pylintrc
  52. pylintrc_old_style
  53. README.chromium
  54. README.md
  55. WATCHLISTS
  56. webrtc.gni
  57. webrtc_lib_link_test.cc
  58. 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