Since SSRCs can no longer change on the fly, SSRC code can be made a lot
simpler (and faster). Resulting code has less and shorter locking.
BUG=webrtc:5494
R=danilchap@webrtc.org
Review URL: https://codereview.webrtc.org/1713683003 .
Cr-Commit-Position: refs/heads/master@{#11691}
Also move some stats reporting from vie_channel to send stats proxy
BUG=
Review URL: https://codereview.webrtc.org/1669623004
Cr-Commit-Position: refs/heads/master@{#11688}
EncoderStateFeedback is now only connected to one encoder, so remove map
and other complexity to deliver feedback more directly.
BUG=webrtc:5494
R=danilchap@webrtc.org
Review URL: https://codereview.webrtc.org/1706803002 .
Cr-Commit-Position: refs/heads/master@{#11687}
Reason for revert:
Broke chromium.webrtc.fyi bots:
https://build.chromium.org/p/chromium.webrtc.fyi/builders/Mac%20Builder/builds/9891https://build.chromium.org/p/chromium.webrtc.fyi/builders/Mac%20GN/builds/11416
Fails with
-----
Undefined symbols for architecture x86_64:
"rtc::SharedExclusiveLock::LockShared()", referenced from:
rtc::MessageQueue::DoDestroy() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::socketserver() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::WakeUpSocketServer() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::Quit() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::Get(rtc::Message*, int, bool) in librtc_base.a(messagequeue.o)
rtc::MessageQueue::Post(rtc::MessageHandler*, unsigned int, rtc::MessageData*, bool) in librtc_base.a(messagequeue.o)
rtc::MessageQueue::DoDelayPost(int, unsigned int, rtc::MessageHandler*, unsigned int, rtc::MessageData*) in librtc_base.a(messagequeue.o)
...
"rtc::SharedExclusiveLock::UnlockShared()", referenced from:
rtc::MessageQueue::DoDestroy() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::socketserver() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::WakeUpSocketServer() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::Quit() in librtc_base.a(messagequeue.o)
rtc::MessageQueue::Get(rtc::Message*, int, bool) in librtc_base.a(messagequeue.o)
rtc::MessageQueue::Post(rtc::MessageHandler*, unsigned int, rtc::MessageData*, bool) in librtc_base.a(messagequeue.o)
rtc::MessageQueue::DoDelayPost(int, unsigned int, rtc::MessageHandler*, unsigned int, rtc::MessageData*) in librtc_base.a(messagequeue.o)
...
"rtc::SharedExclusiveLock::SharedExclusiveLock()", referenced from:
rtc::MessageQueue::MessageQueue(rtc::SocketServer*, bool) in librtc_base.a(messagequeue.o)
ld: symbol(s) not found for architecture x86_64
-----
Looks like these are compiling without "webrtc/base/sharedexclusivelock.cc".
Original issue's description:
> Prevent data race in MessageQueue.
>
> The CL prevents a data race in MessageQueue where the variable "ss_" is
> modified without a lock while sometimes read inside a lock.
>
> Also thread annotations have been added to the MessageQueue class.
>
> BUG=webrtc:5496
>
> Committed: https://crrev.com/df88460372e7ce78c871a87774d7e6d82aac6ee3
> Cr-Commit-Position: refs/heads/master@{#11683}
TBR=ivoc@webrtc.org,pthatcher@webrtc.org,deadbeef@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5496
Review URL: https://codereview.webrtc.org/1714463003
Cr-Commit-Position: refs/heads/master@{#11686}
Prevents allocating sequence numbers for packets that go out on the
network even though sending media is disabled.
This race caused a replay of sequence numbers when GetRtpState() on a
stopped stream would not return the last sequence number sent, since the
pacer thread could request and send padding on a later sequence number
before the modules are disconnected from the pacer.
BUG=webrtc:5543
R=stefan@webrtc.org
TEST=Repeating EndToEndTest.RestartingSendStreamPreservesRtpState 1000 times under TSan.
Review URL: https://codereview.webrtc.org/1715703002 .
Cr-Commit-Position: refs/heads/master@{#11685}
The CL prevents a data race in MessageQueue where the variable "ss_" is
modified without a lock while sometimes read inside a lock.
Also thread annotations have been added to the MessageQueue class.
BUG=webrtc:5496
Review URL: https://codereview.webrtc.org/1675923002
Cr-Commit-Position: refs/heads/master@{#11683}
There were two different structures named RtpPacket in webrtc namespace:
RtpPacket defined in fec_test_helper renamed to test::RawRtpPacket
RtpPacket defined in rtp_sender_video and producer_fec removed as unused
BUG=webrtc:5261
R=sprang@google.com, stefan@webrtc.org
Review URL: https://codereview.webrtc.org/1710103004 .
Cr-Commit-Position: refs/heads/master@{#11682}
Also added a test for Clear to ensure this invariant holds.
With this change, it is easy to empty a Buffer and reuse its storage. Further down the line, code filling data into a Buffer could be written to just append to it, with the caller determining if the Buffer should first be cleared or not.
There is currently only one use of Buffer::Clear (in AudioEncoderCopyRed::Reset()) and it should benefit from the change, by not requiring a reallocation after Reset.
Review URL: https://codereview.webrtc.org/1707693002
Cr-Commit-Position: refs/heads/master@{#11680}
This CL removes "build/c++11" from the cpplint filters. The same was
changed in "depot_tools" in https://codereview.chromium.org/1573663003/
From the other CL:
-----
The checks are not reliable for Rvalue references, and only are
allowing default/deleted constructors. They are based on the google3
internal rules which do not exactly match our own c++11 rules, and
may diverge more over time.
-----
NOTRY=True
Review URL: https://codereview.webrtc.org/1710293002
Cr-Commit-Position: refs/heads/master@{#11678}
It was hardly used, making the code more complex than needed and caused problems on iOS because it uses system.
BUG=webrtc:5549
R=kjellander@webrtc.org
Review URL: https://codereview.webrtc.org/1708353002 .
Cr-Commit-Position: refs/heads/master@{#11677}
Instead of excluding the whole test binaries, only exclude the parts that cause the
compilation to fail for modules_unittests and common_audio_unittests.
BUG=webrtc:4752, webrtc:4755, webrtc:5544
TESTED=Successful build with:
GYP_DEFINES='OS=ios target_arch=x64' webrtc/build/gyp_webrtc
ninja -C out/Debug-iphonesimulator modules_unittests common_audio_unittests
NOTRY=True
Review URL: https://codereview.webrtc.org/1698033002
Cr-Commit-Position: refs/heads/master@{#11675}
The roll in https://codereview.webrtc.org/1713493002/
made us start using the Chromium sysroot images for libraries instead
of system libraries. This caused Linux 32-bit builds to break with
an error like this:
../../webrtc/examples/peerconnection/client/linux/main_wnd.cc:82:46: error: missing sentinel in function call [-Werror,-Wsentinel]
"List Items", renderer, "text", 0, NULL);
^
, nullptr
/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h:128:25: note: function has been explicitly marked sentinel here
GtkTreeViewColumn *gtk_tree_view_column_new_with_attributes (const gchar *title,
^
1 error generated.
This CL suppresses this warning to green up the bots.
TBR=niklase@webrtc.org
Review URL: https://codereview.webrtc.org/1710083003 .
Cr-Commit-Position: refs/heads/master@{#11674}
When composing a RTCP packet, if there is a BYE
to be appended, preserve it and append it at the
end after all other packet types are added.
BUG=webrtc:5498
NOTRY=true
Review URL: https://codereview.webrtc.org/1674963004
Cr-Commit-Position: refs/heads/master@{#11672}
This CL simplifies the VideoCapturer interface from 'String getSupportedFormatsAsJson() throws JSONException' to 'List<CaptureFormat> getSupportedFormats()'. The intermediate conversion to/from a JSON string is removed, and AndroidVideoCapturerJni converts the Java list to a C++ vector directly instead.
BUG=webrtc:5519
R=perkj@webrtc.org
Review URL: https://codereview.webrtc.org/1702603002 .
Cr-Commit-Position: refs/heads/master@{#11669}
This CL adds a check to see if the return value of GLES20.glCreateShader() is zero. Also, shaders are flagged for deletion immediately after glLinkProgram() instead of doing it in release().
BUG=b/27197590
Review URL: https://codereview.webrtc.org/1702953002
Cr-Commit-Position: refs/heads/master@{#11668}
This appears to be dead code because GetTransport() is not used by WebRTC. It also adds dead code to DtlsTransportChannelWrapper and P2PTransportChannel.
BUG=
Review URL: https://codereview.webrtc.org/1691673002
Cr-Commit-Position: refs/heads/master@{#11662}
Also introduce a pair of scoped_ptr <-> unique_ptr conversion
functions. By using them judiciously, we can keep these CL:s small and
avoid having to convert enormous amounts of code at once.
BUG=webrtc:5520
Review URL: https://codereview.webrtc.org/1702983002
Cr-Commit-Position: refs/heads/master@{#11658}
The legacy objc API is not included in the GYP generation if include_tests=0.
This causes problems downstream in some cases, so it's changed in this CL.
The libyuv dependency needs to be possible to disable using the build_libyuv
GYP variable.
NOTRY=True
Review URL: https://codereview.webrtc.org/1705733002
Cr-Commit-Position: refs/heads/master@{#11652}
For audio, the flag is apparently unused. For video, the flag is moved to
VideoSendParameters, with the intention to keep only per-stream flags in
VideoOptions. The flag is used for the webrtcvideoengine2 logic commented like
// Conference mode screencast uses 2 temporal layers split at 100kbit.
// For screenshare in conference mode, tl0 and tl1 bitrates are piggybacked
// on the VideoCodec struct as target and max bitrates, respectively.
// See eg. webrtc::VP8EncoderImpl::SetRates().
BUG=webrtc:5426
Review URL: https://codereview.webrtc.org/1697163002
Cr-Commit-Position: refs/heads/master@{#11651}
In https://codereview.webrtc.org/1691463002 the legacy objc tests
were moved into a new GYP file, which was conditioned so it's not
included for platforms that cannot build it. This condition contained
an error which makes the GYP file being processed even if include_tests=0,
which causes errors in downstream code.
BUG=webrtc:5419
NOTRY=True
Review URL: https://codereview.webrtc.org/1701053005
Cr-Commit-Position: refs/heads/master@{#11650}
rtcp::RawPacket is rtc::Buffer, it had no extra functionality.
rtc::Buffer is a movable class - no point to wrap it into rtc::scoped_ptr
change is large, but straightforward:
rtc::scoped_ptr<rtcp::RawPacket> replaced with rtc::Buffer
->Buffer() replaced with .data()
->Length() replaced with .size()
BUG=webrtc:5260
Review URL: https://codereview.webrtc.org/1696203002
Cr-Commit-Position: refs/heads/master@{#11649}
Makes DecodesRetransmittedFrame not flake/fail due to sent padding when
probing, which is correct behavior. Also removes hack that accepted this
only during the first n packets.
BUG=
R=stefan@webrtc.org
Review URL: https://codereview.webrtc.org/1698343003 .
Cr-Commit-Position: refs/heads/master@{#11648}
With this change the following tests have been successfully
passing in the iOS Simulator for iPhone 5 and iOS 9:
* audio_decoder_unittests
* common_video_unittests
* modules_tests
* rtc_api_objc_tests
* rtc_pc_unittests
* system_wrappers_unittests
* voice_engine_unittests
The modules_unittests and common_audio_unittests are
handled in https://codereview.webrtc.org/1698033002/
BUG=webrtc:4755
NOTRY=True
Review URL: https://codereview.webrtc.org/1694353003
Cr-Commit-Position: refs/heads/master@{#11646}