SetRemoteDescriptionObserverInterface added.

The new observer replaced SetSessionDescriptionObserver for
SetRemoteDescription. Unlike SetSessionDescriptionObserver,
SetRemoteDescriptionObserverInterface is invoked synchronously so
that the you can rely on the state of the PeerConnection to represent
the result of the SetRemoteDescription call in the callback.

The new observer succeeds or fails with an RTCError.

This deprecates the need for PeerConnectionObserver::OnAdd/RemoveTrack
and SetSessionDescriptionObserver, with the benefit that all media
object changes can be processed in a single callback by the application
in a synchronous callback. This will help Chromium keep objects in-sync
across layers and threads in a non-racy and straight-forward way, see
design doc (Proposal 2):
https://docs.google.com/a/google.com/document/d/1-cDDC82mgU5zrHacfFz720p3xwRtuBkOPSRchh07Ho0/edit?usp=sharing

An adapter for SetSessionDescriptionObserver is added to allow calling
the old SetRemoteDescription signature and get the old behavior
(OnSuccess/OnFailure callback in a Post) until third parties switch.

Bug: webrtc:8473
Change-Id: I3d4eb60da6dd34615f2c9f384aeaf4634e648c99
Reviewed-on: https://webrtc-review.googlesource.com/17523
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20841}
13 files changed
tree: cd036c3c08c7bbae9cb7e596f6f9334e940e17a4
  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. system_wrappers/
  22. test/
  23. tools_webrtc/
  24. video/
  25. voice_engine/
  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