This CL adds an RTP module to FlexfecReceiveStreamImpl, and wires it up
to send RTCP RRs. It further makes some methods take const refs instead
of values, to make it more clear where packet copies are made. This
change reduces the number of copies by one, for the case when media
packets are added to the FlexFEC receiver.
The end-to-end test is modified to check for RTCP RRs being sent.
Part of this modification involves some indentation changes, and the
diff thus looks bigger than it logically is.
BUG=webrtc:5654
Review-Url: https://codereview.webrtc.org/2625633003
Cr-Commit-Position: refs/heads/master@{#16106}
Calling event handlers when the camera is closing is safe because
CameraCapturer checks if the errors are coming from the current session.
Calling onFailure after camera has already started might lead to strange
behavior.
BUG=b/34112992
Review-Url: https://codereview.webrtc.org/2634973002
Cr-Commit-Position: refs/heads/master@{#16101}
The existence of FlexfecConfig is due to a naive design. Now when it
is not used on the receiving side (see https://codereview.webrtc.org/2542413002),
it is time to remove it from the sending side as well.
BUG=webrtc:5654
Review-Url: https://codereview.webrtc.org/2621573002
Cr-Commit-Position: refs/heads/master@{#16097}
Currently, parameters are periodically updated, but the TargetBitrate
message is only sent if a new bitrate is set. It should be sent
periodically to indicate the signaled bitrate is valid and to prevent
stale values due to loss of RTCP packets.
BUG=webrtc:6897
Review-Url: https://codereview.webrtc.org/2616393003
Cr-Commit-Position: refs/heads/master@{#16096}
Based on the mapping between [Audio/Video]TrackInterface and
[Voice/Video][Sender/Receiver]Info.
The IDs of RTCMediaStreamTrackStats are updated to distinguish between
local and remote cases. Previously, if local and remote cases had the
same label only one of them would be included in the report (bug).
BUG=webrtc:6758, chromium:657854, chromium:657855, chromium:657856, chromium:627816
Review-Url: https://codereview.webrtc.org/2610843003
Cr-Commit-Position: refs/heads/master@{#16095}
This information is already available in another member, and
storing it in more places only creates more opportunities
for bugs.
BUG=None
Review-Url: https://codereview.webrtc.org/2613713002
Cr-Commit-Position: refs/heads/master@{#16094}
The MultithreadedFakeH264Encoder is a derived class from FakeEncoder
and FakeH264Encoder, and these should thus also be thread safe.
TESTED=Ran "out/Tsan/video_engine_tests --gtest_filter="*Multithreaded*" --gtest_repeat=100" with is_debug=false, dcheck_always_on=true, is_tsan=true.
BUG=webrtc:6943
Review-Url: https://codereview.webrtc.org/2604403003
Cr-Commit-Position: refs/heads/master@{#16093}
Removed const_cast while creating rtcp packet.
This way manually created packet is as good as parsed packet and can be used in tests directly.
To archive this, changed the way class stores deltas and their sizes:
encoded chunks are stored directly for all but last chunk simplifying rtcp packet creation.
deltas stored together with sequence_number that would allow to simplify reading them from the parsed packet.
Fixed test for maximum received packets.
BUG=None
Review-Url: https://codereview.webrtc.org/2616343003
Cr-Commit-Position: refs/heads/master@{#16091}
This maps, in both directions, [Audio/Video]TrackInterface with
[Voice/Video][Sender/Receiver]Info.
This mapping is necessary for RTCStatsCollector to know the relationship
between RTCMediaStreamTrackStats and RTC[In/Out]boundRTPStreamStats, and
to be able to collect several RTCMediaStreamTrackStats stats.
BUG=webrtc:6757, chromium:659137, chromium:657854, chromium:627816
Review-Url: https://codereview.webrtc.org/2611983002
Cr-Commit-Position: refs/heads/master@{#16090}
The test case is put inside a new test target. That test target will be started from a test script to asses video quality.
BUG=webrtc:6545
Review-Url: https://codereview.webrtc.org/2585813002
Cr-Commit-Position: refs/heads/master@{#16088}
Reason for revert:
Broke Chromium FYI bots. See for example https://build.chromium.org/p/chromium.webrtc.fyi/builders/Win%20Builder/builds/8631
FAILED: obj/remoting/protocol/protocol/ice_transport_channel.obj
ninja -t msvc -e environment.x86 -- E:\b\c\cipd\goma/gomacc.exe "E:\b\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\bin\amd64_x86/cl.exe" /nologo /showIncludes /FC @obj/remoting/protocol/protocol/ice_transport_channel.obj.rsp /c ../../remoting/protocol/ice_transport_channel.cc /Foobj/remoting/protocol/protocol/ice_transport_channel.obj /Fd"obj/remoting/protocol/protocol_cc.pdb"
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(186): error C2039: 'IceTransportInternal2': is not a member of 'cricket'
e:\b\c\b\win_builder\src\third_party\webrtc\p2p\base\p2ptransportchannel.h(38): note: see declaration of 'cricket'
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(186): error C2065: 'IceTransportInternal2': undeclared identifier
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(186): error C2065: 'ice_transport': undeclared identifier
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(187): error C2059: syntax error: 'const'
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(187): error C2143: syntax error: missing ';' before '{'
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(187): error C2447: '{': missing function header (old-style formal list?)
Original issue's description:
> Remove the IceTransportInternal2.
>
> Introduing IceTransportInternal2 is a temporary fix to switch the base
> class of P2PTransportChannel to IceTransportInternal without breaking
> Chromium. It is removed in this CL.
>
> BUG=webrtc:6951
>
> Review-Url: https://codereview.webrtc.org/2632563002
> Cr-Commit-Position: refs/heads/master@{#16083}
> Committed: 8aaa51190eTBR=deadbeef@webrtc.org,zhihuang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6951
Review-Url: https://codereview.webrtc.org/2630243002
Cr-Commit-Position: refs/heads/master@{#16086}
Introduing IceTransportInternal2 is a temporary fix to switch the base
class of P2PTransportChannel to IceTransportInternal without breaking
Chromium. It is removed in this CL.
BUG=webrtc:6951
Review-Url: https://codereview.webrtc.org/2632563002
Cr-Commit-Position: refs/heads/master@{#16083}
Also did some slight refactoring of the code that turns constraints
into rtc::Optionals. Used a template method to avoid code duplication,
and used the same pattern for "CopyConstraintsIntoAudioOptions" as was
being used for "CopyConstraintsIntoRtcConfiguration".
BUG=webrtc:6752
Review-Url: https://codereview.webrtc.org/2628523003
Cr-Commit-Position: refs/heads/master@{#16063}
Previously: Failed to setup RTCP mux filter.
Now: rtcpMuxPolicy is 'require', but media description does not
contain 'a=rtcp-mux'.
BUG=webrtc:6966
Review-Url: https://codereview.webrtc.org/2622553003
Cr-Commit-Position: refs/heads/master@{#16062}
That object will be used when we enable RTCP reporting from FlexfecReceiveStream.
Other related changes:
- Stop using FlexfecConfig (from config.h) at receive side in WebRtcVideoEngine2.
- Add a IsCompleteAndEnabled() method to FlexfecReceiveStream::Config, to be
used in WebRtcVideoEngine2.
- Centralize the construction of the FlexfecReceiveStream::Config in unit tests.
This will make future additions to the unit tests cleaner.
- Simplify setup for receiving FlexFEC in VideoQualityTest.
BUG=webrtc:5654
Review-Url: https://codereview.webrtc.org/2589713003
Cr-Commit-Position: refs/heads/master@{#16059}
Earlier, the FlexFEC codec would receive the same default RTCP feedback
params as the media codecs. Since most of these are not used, there is
no point negotiating them.
BUG=webrtc:5654
Review-Url: https://codereview.webrtc.org/2623513002
Cr-Commit-Position: refs/heads/master@{#16057}