webrtc/api/test
Bjorn A Mellem 8e1343aeda Add an alt-protocol to SDP to indicate which m= sections use a plugin transport.
The plugin transport parameters (a=x-opaque: lines) relate to how to create and
set up a plugin transport.  When SDP bundle is used, the x-opaque line needs to
be copied into the bundled m= section.  This means x-opaque can appear on a
section even if the offerer does not intend to use the transport for the media
described by that section.  Consequently, the answerer cannot currently tell
whether the caller is offering an alternate transport for media, data, or both.

This change adds an a=x-alt-protocol: line to SDP.  The value following this
line matches the <protocol> part of the x-opaque:<protocol>:<params> line.
However, alt-protocol is not bundled--it only ever applies to the m= section
that contains the line.  This allows the offerer to express which m= sections
should actually use an alternate transport, even in the case of bundle.

Note that this is still limited by the available configuration options:
datagram transport can be used for media (audio + video) and/or data.  It is
still not possible to use it for audio but not video, or vice versa.

PeerConnection places an alt-protocol line in each media (audio/video) m=
section if it is configured to use a datagram transport for media.  It places
an alt-protocol line in each data m= section if it is configured to use a
datagram transport for data channels.  PeerConnection leaves alt-protocol in
media (audio/video) m= sections of the answer if it is configured to use a
datagram transport for media, and in data m= sections of the answer if it is
configured to use a datagram transport for data channels.

JsepTransport now negotiates use of the datagram transport independently for
media and data channels.  It only uses it for media if the m= sections for
bundled audio/video have an alt-protocol line matching the x-opaque protocol,
and only uses it for data channels if a bundled m= section for data has an
alt-protocol line matching the x-opaque protocol.

Bug: webrtc:9719
Change-Id: I773e4fc10c57d815afcd76a2a74da38dd0c52b3b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154763
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Commit-Queue: Bjorn Mellem <mellem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29351}
2019-09-30 23:10:34 +00:00
..
video Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
audio_quality_analyzer_interface.h Implement DefaultAudioQualityAnalyzer. 2019-04-07 14:32:33 +00:00
audioproc_float.cc audioproc_f: input AEC dump as string, output audio to vector 2019-08-12 09:17:36 +00:00
audioproc_float.h audioproc_f: input AEC dump as string, output audio to vector 2019-08-12 09:17:36 +00:00
compile_all_headers.cc Add a test that all //api/test headers are compilable. 2019-03-14 05:27:53 +00:00
create_network_emulation_manager.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
create_network_emulation_manager.h Add public API for NetworkEmulationManager 2019-03-15 14:50:59 +00:00
create_peerconnection_quality_test_fixture.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
create_peerconnection_quality_test_fixture.h Move API for PC e2e test framework to the public API folder 2019-03-22 16:52:16 +00:00
create_simulcast_test_fixture.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
create_simulcast_test_fixture.h Generalize SimulcastEncoderAdapter, use for H264 & VP8. 2018-06-21 15:57:43 +00:00
create_video_quality_test_fixture.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
create_video_quality_test_fixture.h Format almost everything. 2019-07-08 13:45:15 +00:00
create_videocodec_test_fixture.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
create_videocodec_test_fixture.h Move VideoCodecTest configuration classes to api/test. 2018-05-22 12:14:38 +00:00
DEPS New class DummyPeerConnection 2019-09-13 13:23:34 +00:00
dummy_peer_connection.h New class DummyPeerConnection 2019-09-13 13:23:34 +00:00
fake_datagram_transport.h Change DataChannelTransportInterface/Sink methods to pure virtual. 2019-09-20 20:06:14 +00:00
fake_frame_decryptor.cc Format almost everything. 2019-07-08 13:45:15 +00:00
fake_frame_decryptor.h Format almost everything. 2019-07-08 13:45:15 +00:00
fake_frame_encryptor.cc Format almost everything. 2019-07-08 13:45:15 +00:00
fake_frame_encryptor.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
fake_media_transport.h Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
loopback_media_transport_unittest.cc Changes to enable use of DatagramTransport as a data channel transport. 2019-08-21 18:47:58 +00:00
loopback_media_transport.cc Add an alt-protocol to SDP to indicate which m= sections use a plugin transport. 2019-09-30 23:10:34 +00:00
loopback_media_transport.h Add an alt-protocol to SDP to indicate which m= sections use a plugin transport. 2019-09-30 23:10:34 +00:00
mock_audio_mixer.h Format almost everything. 2019-07-08 13:45:15 +00:00
mock_fec_controller_override.h Pass FecControllerOverride to Vp8FrameBufferControllerFactory::Create 2019-07-02 10:55:55 +00:00
mock_frame_decryptor.cc Fixes use after free error when setting a new FrameEncryptor on ChannelSend. 2018-10-25 17:36:57 +00:00
mock_frame_decryptor.h Reland "Refactor FrameDecryptorInterface::Decrypt to use new API." 2019-04-09 20:08:56 +00:00
mock_frame_encryptor.cc Format almost everything. 2019-07-08 13:45:15 +00:00
mock_frame_encryptor.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
mock_peerconnectioninterface.h Delete almost all default methods on PeerConnectionInterface 2019-09-18 16:27:44 +00:00
mock_rtpreceiver.h Add SetJitterBufferMinimumDelay method to RtpReceiverInterface. 2019-04-04 09:00:16 +00:00
mock_rtpsender.h Rejected simulcast layers will no longer appear in GetParameters(). 2019-02-19 22:01:53 +00:00
mock_video_bitrate_allocator_factory.h Reland "Use the factory instead of using the builtin code path in VideoCodecInitializer" 2018-11-08 19:10:47 +00:00
mock_video_bitrate_allocator.h Update VideoBitrateAllocator allocate to take a struct with more fields 2019-08-02 13:52:54 +00:00
mock_video_decoder_factory.h Add StereoCodecAdapter classes 2017-10-31 06:39:52 +00:00
mock_video_decoder.cc Move MockVideoDecoder to api/test. 2018-10-15 13:45:27 +00:00
mock_video_decoder.h Delete DecodedImageCallback::ReceivedDecodedFrame 2019-04-25 08:09:29 +00:00
mock_video_encoder_factory.h Revert "Replace VideoEncoderFactory::QueryVideoEncoder with VideoEncoder::GetEncoderInfo" 2018-12-10 10:36:00 +00:00
mock_video_encoder.cc Add mock_video_encoder.h to api/test 2018-10-12 13:23:36 +00:00
mock_video_encoder.h Define FecControllerOverride and plumb it down to VideoEncoder 2019-06-28 15:57:22 +00:00
neteq_simulator_factory.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
neteq_simulator_factory.h Allow passing an event log as string to NetEqSimulator. 2019-03-20 10:27:14 +00:00
neteq_simulator.cc Remove the move constructor from NetEqState. 2018-09-11 09:19:09 +00:00
neteq_simulator.h Format almost everything. 2019-07-08 13:45:15 +00:00
network_emulation_manager.h Add ability to create EmulatedNetworkNode from BuiltInNetworkBehaviorConfig 2019-07-05 12:43:17 +00:00
peerconnection_quality_test_fixture.h Revert "Enable capturing from camera in PC framework" 2019-09-26 12:00:01 +00:00
simulated_network.h Format almost everything. 2019-07-08 13:45:15 +00:00
simulcast_test_fixture.h Changed FakeVp8Encoder to write dimensions in payload. 2018-10-08 08:37:38 +00:00
stats_observer_interface.h Do not use absl::flat_hash_map in DefaultVideoQualityAnalyzer. 2019-05-08 10:23:59 +00:00
test_dependency_factory.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
test_dependency_factory.h [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
track_id_stream_label_map.h Enable custom metrics gathering from stats API in PC framework. 2019-08-20 11:33:18 +00:00
video_quality_analyzer_interface.h Add frame receive to frame rendered metric to video_quality_analyzer 2019-09-19 14:43:04 +00:00
video_quality_test_fixture.h Remove api/bitrate_constraints.h. 2019-09-18 06:37:58 +00:00
videocodec_test_fixture.h Handle non-integer frame rates in video codec tests. 2019-07-12 07:37:43 +00:00
videocodec_test_stats.cc Handle non-integer frame rates in video codec tests. 2019-07-12 07:37:43 +00:00
videocodec_test_stats.h Handle non-integer frame rates in video codec tests. 2019-07-12 07:37:43 +00:00