Commit Graph

11312 Commits

Author SHA1 Message Date
15dcb38e5f Make error resilience configurable through VideoCodecVP9 resilience setting (removes hard coded value in vp9_impl.cc).
Make resilience configurable in video processor integration tests.

BUG=webrtc:6783

Review-Url: https://codereview.webrtc.org/2919803002
Cr-Commit-Position: refs/heads/master@{#18493}
2017-06-08 09:55:08 +00:00
04ca637be3 Make 'aleloi@' OWNER of webrtc/modules/audio_processing
This reflects currently active developers of the module.

NOTRY=True

Bug: None
Change-Id: Ibc0810b08db753404fcb94038a4bd857d5585ef9
Reviewed-on: https://chromium-review.googlesource.com/528075
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18492}
2017-06-08 09:36:10 +00:00
75b68b924c Delete webrtc/call.h (replaced with webrtc/call/call.h).
BUG=webrtc:6716

Review-Url: https://codereview.webrtc.org/2916513002
Cr-Commit-Position: refs/heads/master@{#18491}
2017-06-08 09:21:17 +00:00
02ed201182 AcmReceiver: Make a member variable const
This is a minor clean-up made possible by simplifications done in the
past.

Bug: none
Change-Id: Id0ea167572f8da36db5de949441f67a2a18555be
Reviewed-on: https://chromium-review.googlesource.com/528073
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18490}
2017-06-08 09:18:14 +00:00
88f94fa36a Revert "Update video_coding/codecs to new VideoFrameBuffer interface"
This reverts commit 20ebf4ede803cd4f628ef9378700f60b72f2eab0.

Reason for revert:

Suspect of breaking FYI bots.
See https://build.chromium.org/p/chromium.webrtc.fyi/builders/Win7%20Tester/builds/9036 and others.

Sample logs:
Backtrace:
[5024:1036:0607/173649.857:FATAL:webrtc_video_frame_adapter.cc(98)] Check failed: false. 
Backtrace:
	base::debug::StackTrace::StackTrace [0x02D04A37+55]
	base::debug::StackTrace::StackTrace [0x02CCBB8A+10]
	content::WebRtcVideoFrameAdapter::NativeToI420Buffer [0x0508AD71+305]
	webrtc::VideoFrameBuffer::ToI420 [0x0230BF67+39]
	webrtc::H264EncoderImpl::Encode [0x057E8D0B+267]
	webrtc::VCMGenericEncoder::Encode [0x057E0E34+333]
	webrtc::vcm::VideoSender::AddVideoFrame [0x057DED9B+796]
	webrtc::ViEEncoder::EncodeVideoFrame [0x057C00F6+884]
	webrtc::ViEEncoder::EncodeTask::Run [0x057C12D7+215]
	rtc::TaskQueue::PostTask [0x03EE5CFB+194]
	base::internal::Invoker<base::internal::BindState<enum extensions::`anonymous namespace'::VerificationResult (__cdecl*)(std::unique_ptr<extensions::NetworkingCastPrivateDelegate::Credentials,std::default_delete<extensions::NetworkingCastPrivateDelegate::C [0x02DDCAA5+31]
	base::internal::Invoker<base::internal::BindState<enum extensions::`anonymous namespace'::VerificationResult (__cdecl*)(std::unique_ptr<extensions::NetworkingCastPrivateDelegate::Credentials,std::default_delete<extensions::NetworkingCastPrivateDelegate::C [0x02DDEE86+22]
	base::debug::TaskAnnotator::RunTask [0x02D08289+409]
	base::MessageLoop::RunTask [0x02C8CEC1+1233]
	base::MessageLoop::DoWork [0x02C8C1AD+765]
	base::MessagePumpDefault::Run [0x02D0A20B+219]
	base::MessageLoop::Run [0x02C8C9DB+107]
	base::RunLoop::Run [0x02C89583+147]
	base::Thread::Run [0x02CBEFCD+173]
	base::Thread::ThreadMain [0x02CBFADE+622]
	base::PlatformThread::Sleep [0x02C9E1A2+290]
	BaseThreadInitThunk [0x75C3338A+18]
	RtlInitializeExceptionChain [0x773A9902+99]
	RtlInitializeExceptionChain [0x773A98D5+54]

Original change's description:
> Update video_coding/codecs to new VideoFrameBuffer interface
> 
> This is a follow-up cleanup for CL
> https://codereview.webrtc.org/2847383002/.
> 
> Bug: webrtc:7632
> Change-Id: I47861d779968f2fee94db9c017102a8e87e67fb7
> Reviewed-on: https://chromium-review.googlesource.com/524163
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#18477}

TBR=magjed@webrtc.org,nisse@webrtc.org,brandtr@webrtc.org
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:7632

Change-Id: I3b73fc7d16ff19ceba196e964dcb36a36510912c
Reviewed-on: https://chromium-review.googlesource.com/527793
Reviewed-by: Guido Urdaneta <guidou@chromium.org>
Commit-Queue: Guido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/master@{#18489}
2017-06-08 08:33:52 +00:00
e566e175d1 Add new screenshare full stack test with limited queue.
Track perf for a test using 200kbps link, 5% packet loss and queue
length of 30 packets. This currently performs poorly.

BUG=webrtc:7694

Review-Url: https://codereview.webrtc.org/2930703002
Cr-Commit-Position: refs/heads/master@{#18488}
2017-06-08 08:29:15 +00:00
807736ef02 Revert of Refactored incoming bitrate estimator. (patchset #8 id:140001 of https://codereview.webrtc.org/2917873002/ )
Reason for revert:
Breaks Vice tests

Original issue's description:
> Refactored incoming bitrate estimator.
>
> BUG=webrtc:7746
>
> Review-Url: https://codereview.webrtc.org/2917873002
> Cr-Commit-Position: refs/heads/master@{#18478}
> Committed: 5fc8bf8b87

TBR=philipel@webrtc.org,terelius@webrtc.org,stefan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7746

Review-Url: https://codereview.webrtc.org/2924243002
Cr-Commit-Position: refs/heads/master@{#18486}
2017-06-08 07:10:31 +00:00
4c72cf43df Revert of Conversational speech tool, simualtor + unit tests (patchset #12 id:220001 of https://codereview.webrtc.org/2790933002/ )
Reason for revert:
Compile Error.

Original issue's description:
> The simulator puts into action the schedule of speech turns encoded in a MultiEndCall instance. The output is a set of audio track pairs. There is one set for each speaker and each set contains one near-end and one far-end audio track. The tracks are directly written into wav files instead of creating them in memory. To speed up the creation of the output wav files, *all* the source audio tracks (i.e., the atomic speech turns) are pre-loaded.
>
> The ConversationalSpeechTest.MultiEndCallSimulator unit test defines a conversational speech sequence and creates two wav files (with pure tones at 440 and 880 Hz) that are used as atomic speech turn tracks.
>
> This CL also patches MultiEndCall in order to allow input audio tracks with same sample rate and single channel only.
>
> BUG=webrtc:7218
>
> Review-Url: https://codereview.webrtc.org/2790933002
> Cr-Commit-Position: refs/heads/master@{#18480}
> Committed: 6b648c4697

TBR=minyue@webrtc.org,alessiob@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7218

Review-Url: https://codereview.webrtc.org/2925123003
Cr-Commit-Position: refs/heads/master@{#18481}
2017-06-07 18:59:09 +00:00
6b648c4697 The simulator puts into action the schedule of speech turns encoded in a MultiEndCall instance. The output is a set of audio track pairs. There is one set for each speaker and each set contains one near-end and one far-end audio track. The tracks are directly written into wav files instead of creating them in memory. To speed up the creation of the output wav files, *all* the source audio tracks (i.e., the atomic speech turns) are pre-loaded.
The ConversationalSpeechTest.MultiEndCallSimulator unit test defines a conversational speech sequence and creates two wav files (with pure tones at 440 and 880 Hz) that are used as atomic speech turn tracks.

This CL also patches MultiEndCall in order to allow input audio tracks with same sample rate and single channel only.

BUG=webrtc:7218

Review-Url: https://codereview.webrtc.org/2790933002
Cr-Commit-Position: refs/heads/master@{#18480}
2017-06-07 18:04:35 +00:00
5fc8bf8b87 Refactored incoming bitrate estimator.
BUG=webrtc:7746

Review-Url: https://codereview.webrtc.org/2917873002
Cr-Commit-Position: refs/heads/master@{#18478}
2017-06-07 16:48:20 +00:00
20ebf4ede8 Update video_coding/codecs to new VideoFrameBuffer interface
This is a follow-up cleanup for CL
https://codereview.webrtc.org/2847383002/.

Bug: webrtc:7632
Change-Id: I47861d779968f2fee94db9c017102a8e87e67fb7
Reviewed-on: https://chromium-review.googlesource.com/524163
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18477}
2017-06-07 15:58:13 +00:00
9932e255ea ObjC: Marshal all VideoTrackSource methods to the signaling thread
This CL makes sure the real VideoTrackSourceInterface implementation is
destroyed on the signaling thread and marshals all method calls to the
signaling thread. This is done using VideoTrackSourceProxy.

Bug: webrtc:7767
Change-Id: Iba3b67bb32a684ba289bc8b9981585ea58084359
Reviewed-on: https://chromium-review.googlesource.com/526634
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18476}
2017-06-07 14:53:41 +00:00
5390c4814d Revert of Periodically update codec bit/frame rate settings. (patchset #8 id:140001 of https://codereview.webrtc.org/2883963002/ )
Reason for revert:
Breaks some Call perf tests that are not run by the try bots....

Original issue's description:
> Fix bug in vie_encoder.cc which caused channel parameters not to be updated at regular intervals, as it was intended.
>
> That however exposes a bunch of failed test, so this CL also fixed a few other things:
> * FakeEncoder should trust the configured FPS value rather than guesstimating itself based on the realtime clock, so as not to completely undershoot targets in offline mode. Also, compensate for key-frame overshoots when outputting delta frames.
> * FrameDropper should not assuming incoming frame rate is 0 if no frames have been seen.
> * Fix a bunch of test cases that started failing because they were relying on the fake encoder undershooting.
> * Fix test
>
> BUG=7664
>
> Review-Url: https://codereview.webrtc.org/2883963002
> Cr-Commit-Position: refs/heads/master@{#18473}
> Committed: 6431e21da6

TBR=stefan@webrtc.org,holmer@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=7664

Review-Url: https://codereview.webrtc.org/2923993002
Cr-Commit-Position: refs/heads/master@{#18475}
2017-06-07 13:17:49 +00:00
6431e21da6 Fix bug in vie_encoder.cc which caused channel parameters not to be updated at regular intervals, as it was intended.
That however exposes a bunch of failed test, so this CL also fixed a few other things:
* FakeEncoder should trust the configured FPS value rather than guesstimating itself based on the realtime clock, so as not to completely undershoot targets in offline mode. Also, compensate for key-frame overshoots when outputting delta frames.
* FrameDropper should not assuming incoming frame rate is 0 if no frames have been seen.
* Fix a bunch of test cases that started failing because they were relying on the fake encoder undershooting.
* Fix test

BUG=7664

Review-Url: https://codereview.webrtc.org/2883963002
Cr-Commit-Position: refs/heads/master@{#18473}
2017-06-07 11:59:38 +00:00
2038df452c Deleting unused build target.
This build target was used by webrtc/base:webrtc_base which is not a
build target anymore. Instead we have webrtc/base:rtc_base which depends
directly on third_party/boringssl.

BUG=None
NOTRY=True

Review-Url: https://codereview.webrtc.org/2926703003
Cr-Commit-Position: refs/heads/master@{#18472}
2017-06-07 11:50:13 +00:00
8b337b6736 Remove outdated warning suppressions.
Bug: webrtc:5478
Change-Id: Ieff41903ec8b4d4b19413d09f9ac1d1afcf1cdc6
Reviewed-on: https://chromium-review.googlesource.com/522645
Reviewed-by: Henrik Andreasson <henrika@webrtc.org>
Commit-Queue: Kári Tristan Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18471}
2017-06-07 11:20:02 +00:00
946923a21f Remove webrtc deps from AppRTCMobile.
We want the example app to only link agains the framework. This ensures
that we are actually testing the framework, and that AppRTCMobile
doesn't require any other parts of WebRTC not included in the framework.

Bug: webrtc:7759
Change-Id: Ib04aae0bc3ab2a1a508eaf4a4f15c2d37f521598
Reviewed-on: https://chromium-review.googlesource.com/522722
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Kári Tristan Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18470}
2017-06-07 11:13:48 +00:00
1e15a994ac MediaCodecVideoEncoder: Add QP stats to Encoded callback for VP9 and turn on quality scaling.
Add default QP scaling thresholds for VP9.

BUG=webrtc:7662

Review-Url: https://codereview.webrtc.org/2914363002
Cr-Commit-Position: refs/heads/master@{#18469}
2017-06-07 11:09:45 +00:00
6b9653e63b ObjC: Pass in frame resolution to GL shaders
Frame resolution might be interesting for a shader implementation.

Bug: webrtc:7473
Change-Id: If19278b3babe2e5bab1a1f7562fa8b06ab840517
Reviewed-on: https://chromium-review.googlesource.com/524452
Reviewed-by: Daniela Jovanoska Petrenko <denicija@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18466}
2017-06-07 10:05:16 +00:00
f53c4cd867 Delete rtc_event_log/ringbuffer.h
This code is unused since https://codereview.webrtc.org/2875823003/ and the current implementation is too specific to the event log to be useful elsewhere. I think we should get add a reusable cyclic buffer though and I made a rough draft of what it might look like: https://codereview.webrtc.org/2691073002/

BUG=webrtc:7732

Review-Url: https://codereview.webrtc.org/2923163006
Cr-Commit-Position: refs/heads/master@{#18465}
2017-06-07 08:53:30 +00:00
1387476dc6 Compare adapt up/down request with sink_wants_ in VideoSourceProxy methods to make sure it is higher/lower than last request.
Add methods RestrictFramerate, IncreaseFramerate.

To be used by kBalanced mode.

This CL is split from: https://codereview.webrtc.org/2887303003/

BUG=webrtc:7607

Review-Url: https://codereview.webrtc.org/2903563002
Cr-Commit-Position: refs/heads/master@{#18463}
2017-06-07 07:01:02 +00:00
23ec19dbb9 Add fuzzer for vp9 qp parser.
Return false if ReadBits fails.
Prevents GetQp from returning true with a qp of zero.

BUG=webrtc:7662

Review-Url: https://codereview.webrtc.org/2911013002
Cr-Commit-Position: refs/heads/master@{#18462}
2017-06-07 06:41:44 +00:00
6bf57e3467 vp9: Enable vp9 denoiser by default in standalone webrtc.
BUG=None

Review-Url: https://codereview.webrtc.org/2789283002
Cr-Commit-Position: refs/heads/master@{#18450}
2017-06-05 20:43:49 +00:00
1c187dcd80 Replace RingBuffer by std::deque in RtcEventLog.
BUG=webrtc:7732

Review-Url: https://codereview.webrtc.org/2875823003
Cr-Commit-Position: refs/heads/master@{#18447}
2017-06-05 15:55:40 +00:00
92732ecc5c Revert of Only compare sequence numbers from the same SSRC in ForwardErrorCorrection. (patchset #5 id:120001 of https://codereview.webrtc.org/2893293003/ )
Reason for revert:
Breaks fuzzer.

Original issue's description:
> Only compare sequence numbers from the same SSRC in ForwardErrorCorrection.
>
> Prior to this CL, the ForwardErrorCorrection state would be reset whenever
> the difference in sequence numbers of the last recovered media packet
> and the new packet (media or FEC) was too large. This comparison did not
> take into account that FlexFEC uses a different SSRC for the FEC packets,
> meaning that the the state would be reset very frequently when FlexFEC
> is used. This should not have led to any major problems, except for a
> decreased decoding efficiency.
>
> This CL verifies that whenever we compare sequence numbers in
> ForwardErrorCorrection, they do indeed belong to the same SSRC.
>
> BUG=webrtc:5654
>
> Review-Url: https://codereview.webrtc.org/2893293003
> Cr-Commit-Position: refs/heads/master@{#18399}
> Committed: 1476a9d789

TBR=stefan@webrtc.org,holmer@google.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2919313005
Cr-Commit-Position: refs/heads/master@{#18446}
2017-06-05 14:25:01 +00:00
6dcdf10c76 This is an initial cl, which contains small amount of implemented functions, and large amount of unimplemented ones.
Code should implement BBR which is the congestion controlling algorithm. BBR tries to estimate two values bottle-neck bandwidth(bw) and round trip time(rtt),then use these two values to set two control parameters pacing rate(pacing_rate),the rate at which data should be sent and congestion window size (cwnd), cwnd is the upper bound for data in flight,data_in_flight <= cwnd at all time.
BBR has four modes:
1)Startup-ramping up throughput discovering estimated bw.
2)Drain-after Startup decrease throughput to drain queues.
3)Probe Bandwidth-most of the time BBR should be in this mode,
sending data at the rate of estimated bw, while sometimes trying to discover new bandwidth.
4)Probe Rtt-in this mode BBR tries to discover new rtt for the connection.

The key moment in BBR is when we receive feedback from the receiver,as this is the only moment which should effect our two estimators. At this moment all the switches between modes should happen, except switch to ProbeRtt mode (switching to ProbeRtt mode should happen when current min_rtt value expires).

This cl serves to emphasize the structure of Bbr, when switches happen and what key classes/functions should be implemented for proper functionality.

BUG=webrtc:7713
NOTRY=True

Review-Url: https://codereview.webrtc.org/2904183002
Cr-Commit-Position: refs/heads/master@{#18444}
2017-06-05 13:01:26 +00:00
59ee91b68a Move RTCAudioSession* files modules/audio_device/ -> sdk/Framework.
BUG=NONE

Review-Url: https://codereview.webrtc.org/2855023003
Cr-Commit-Position: refs/heads/master@{#18443}
2017-06-05 12:48:47 +00:00
e2410e9ab4 Interfaces for injectable video codecs.
These interfaces will be used by the future refactoring that will
allow clients to provide custom codec implementations.

Change-Id: If199bc2807e1c27094c05983c62fa43d2eec5700
Bug: webrtc:7760
Reviewed-on: https://chromium-review.googlesource.com/522065
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18441}
2017-06-05 07:49:47 +00:00
68b91d766f Small updates to test::Stats.
BUG=webrtc:6634

Review-Url: https://codereview.webrtc.org/2916883002
Cr-Commit-Position: refs/heads/master@{#18439}
2017-06-05 06:43:41 +00:00
6fac429d81 Use correct bitrate adjustment for Exynos VP9 HW encoder.
BUG=b/62302810

Review-Url: https://codereview.webrtc.org/2922693003
Cr-Commit-Position: refs/heads/master@{#18425}
2017-06-03 03:18:54 +00:00
84ee5c64d3 Force keyframe for Qualcomm HW VP8 Encoder on Android L as well, reduce forced keyframe interval on Android M.
Color distortion also happens on Android L. Tested on the Mi 4.

BUG=webrtc:7681

Review-Url: https://codereview.webrtc.org/2894643003
Cr-Commit-Position: refs/heads/master@{#18423}
2017-06-03 00:36:32 +00:00
4b9798024f Relanding: Adds PeerConnectionInterface::UpdateCallBitrate to give clients more control of the bandwidth estimator. PeerConnection implements this method by passing a BitrateConfigMask to its associated Call, which is combined with the existing BitrateConfig and passed on to the SendSideCongestionController as necessary. The existing BitrateConfig generally comes from the x-google-{min,start,max}-bitrate params in the SDP.
BUG=webrtc:7395

Review-Url: https://codereview.webrtc.org/2888303005
Cr-Original-Commit-Position: refs/heads/master@{#18417}
Committed: 9641c13327
Review-Url: https://codereview.webrtc.org/2888303005
Cr-Commit-Position: refs/heads/master@{#18421}
2017-06-02 21:37:37 +00:00
441718ef69 Revert of Add PeerConnectionInterface::UpdateCallBitrate. (patchset #7 id:120001 of https://codereview.webrtc.org/2888303005/ )
Reason for revert:
Broken downstream project.

Original issue's description:
> Adds PeerConnectionInterface::UpdateCallBitrate to give clients more control of the bandwidth estimator. PeerConnection implements this method by passing a BitrateConfigMask to its associated Call, which is combined with the existing BitrateConfig and passed on to the SendSideCongestionController as necessary. The existing BitrateConfig generally comes from the x-google-{min,start,max}-bitrate params in the SDP.
>
> BUG=webrtc:7395
>
> Review-Url: https://codereview.webrtc.org/2888303005
> Cr-Commit-Position: refs/heads/master@{#18417}
> Committed: 9641c13327

TBR=deadbeef@webrtc.org,stefan@webrtc.org,kwiberg@webrtc.org,solenberg@webrtc.org,holmer@google.com,zstein@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7395

Review-Url: https://codereview.webrtc.org/2914413002
Cr-Commit-Position: refs/heads/master@{#18420}
2017-06-02 19:31:24 +00:00
e5dce2b6b9 Replacing unnecessary conditional with DCHECK in OpenSSLAdapter
Follow-up from https://codereview.webrtc.org/2915243002/

BUG=None
TBR=pthatcher@webrtc.org

Review-Url: https://codereview.webrtc.org/2917933003
Cr-Commit-Position: refs/heads/master@{#18418}
2017-06-02 18:52:06 +00:00
9641c13327 Adds PeerConnectionInterface::UpdateCallBitrate to give clients more control of the bandwidth estimator. PeerConnection implements this method by passing a BitrateConfigMask to its associated Call, which is combined with the existing BitrateConfig and passed on to the SendSideCongestionController as necessary. The existing BitrateConfig generally comes from the x-google-{min,start,max}-bitrate params in the SDP.
BUG=webrtc:7395

Review-Url: https://codereview.webrtc.org/2888303005
Cr-Commit-Position: refs/heads/master@{#18417}
2017-06-02 18:18:06 +00:00
ed3b986d63 Fixing SSL error that occurs when underlying socket is blocked.
BoringSSL (or OpenSSL) require that when SSL_write fails due to the
underlying socket being blocked, it's retried with the same parameters
until it succeeds. But we weren't doing this, and our socket
abstraction doesn't have an equivalent requirement. So when this was
occurring, we would just end up trying to send the next RTP or STUN
packet (instead of the packet that couldn't be sent), and BoringSSL
doesn't like that.

So, when this condition occurs now, we'll simply enter a "pending write"
mode and buffer the data that couldn't be completely sent. When the
underlying socket becomes writable again, or if Send is called again
before that happens, we retry sending the buffered data. Making both
BoringSSL and the upper layer of code that expects normal TCP socket
behavior happy.

Also adding some more logging, and fixing an issue with VirtualSocketServer
that made it behave slightly differently than PhysicalSocketServer when a
TCP packet is only partially read.

BUG=webrtc:7753

Review-Url: https://codereview.webrtc.org/2915243002
Cr-Commit-Position: refs/heads/master@{#18416}
2017-06-02 17:33:16 +00:00
ed9b9ff597 Revert of Protect new header extension by field trial experiment to allow hardcoding it in SDP (patchset #3 id:40001 of https://codereview.webrtc.org/2922683002/ )
Reason for revert:
Breaks tests in downstream projects.

Original issue's description:
> Protect new header extension by field trial experiment to allow hardcoding it in SDP
>
> BUG=chrome:718738
>
> Review-Url: https://codereview.webrtc.org/2922683002
> Cr-Commit-Position: refs/heads/master@{#18409}
> Committed: cafa1d6bbe

TBR=sprang@webrtc.org,asapersson@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chrome:718738

Review-Url: https://codereview.webrtc.org/2922723002
Cr-Commit-Position: refs/heads/master@{#18414}
2017-06-02 14:30:20 +00:00
dc2018b87f Disable PeerConnectionTest.testTrackRemovalAndAddition due to flakiness
BUG=webrtc:7761

Review-Url: https://codereview.webrtc.org/2922703002
Cr-Commit-Position: refs/heads/master@{#18413}
2017-06-02 14:29:10 +00:00
0d4d57f26d Add RTCFileVideoCapturer class.
- Reads and dispatches buffers from a video file, along the lines of
camera capturer.
 - Initial purpose of this class will be for testing.

BUG=webrtc:7581

Review-Url: https://codereview.webrtc.org/2887673002
Cr-Commit-Position: refs/heads/master@{#18412}
2017-06-02 14:15:14 +00:00
f79ade1320 Revert "Revert of Wire up BWE stats through WebrtcSession so that they are filled in both for audio and video calls. (patchset #8 id:140001 of https://codereview.webrtc.org/2863123002/ )"
This reverts commit d72098a41971833e210bfdcffaab7a18ced4775f.

BUG=webrtc:5079

Review-Url: https://codereview.webrtc.org/2915263002
Cr-Commit-Position: refs/heads/master@{#18411}
2017-06-02 13:44:03 +00:00
cafa1d6bbe Protect new header extension by field trial experiment to allow hardcoding it in SDP
BUG=chrome:718738

Review-Url: https://codereview.webrtc.org/2922683002
Cr-Commit-Position: refs/heads/master@{#18409}
2017-06-02 12:49:39 +00:00
58c742ce7d Call VideoCapturer.initialize directly from Java.
Passing the call through JNI is unnecessary.

Bug: webrtc:7730
Change-Id: Icf1ecd7e2ea54033342120311c70d47b4a4f7c9a
Reviewed-on: https://chromium-review.googlesource.com/521050
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18408}
2017-06-02 11:27:36 +00:00
dbb497af84 SafeMin/SafeMax: Fix wrong return type when given two enum arguments
And add tests that catch it.

BUG=webrtc:7459

Review-Url: https://codereview.webrtc.org/2916083003
Cr-Commit-Position: refs/heads/master@{#18407}
2017-06-02 11:24:11 +00:00
4a3c9f60a3 Prevent memory corruption by StreamId::Set
Use RTC_CHECK to crash if attempting to set an RSID whose name's length exceeds the maximum.

BUG=None

Review-Url: https://codereview.webrtc.org/2915913003
Cr-Commit-Position: refs/heads/master@{#18405}
2017-06-02 10:37:48 +00:00
5522021b45 Android: Add VideoFrame class
This new VideoFrame class closesly matches the C++ webrtc::VideoFrame
and webrtc::VideoFrameBuffer classes. It's supposed to replace the
existing VideoRenderer.I420Frame. The purpose is to clean up the code
and support more frame formats.

BUG=webrtc:7749

Review-Url: https://codereview.webrtc.org/2915083002
Cr-Commit-Position: refs/heads/master@{#18404}
2017-06-02 09:45:56 +00:00
9b93203c8f Change all numerical string inputs to int and remove unused stderr
BUG=webrtc:7757
NOTRY=True

Review-Url: https://codereview.webrtc.org/2921463005
Cr-Commit-Position: refs/heads/master@{#18403}
2017-06-02 09:16:27 +00:00
07633bdc6c Rename rtp_header_extension.h to rtp_header_extension_map.h
Move it to include path of the rtp_rtcp module to indicate it is ok to include it outside of the module.

Renamed to match the class it introduce and to reduce confusion with rtp_header_extensions.h

Bug: webrtc:5565
Change-Id: Ic4b4e9f6b75cb9275e23539cd6e88632c1e7c8d2
Reviewed-on: https://chromium-review.googlesource.com/520947
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18402}
2017-06-02 09:11:27 +00:00
2c8e8a306a Overlay REMB in total bitrate graphs in visualization tool.
This doesn't affect the production code.

BUG=webrtc:7726

Review-Url: https://codereview.webrtc.org/2912813002
Cr-Commit-Position: refs/heads/master@{#18400}
2017-06-02 08:29:48 +00:00
1476a9d789 Only compare sequence numbers from the same SSRC in ForwardErrorCorrection.
Prior to this CL, the ForwardErrorCorrection state would be reset whenever
the difference in sequence numbers of the last recovered media packet
and the new packet (media or FEC) was too large. This comparison did not
take into account that FlexFEC uses a different SSRC for the FEC packets,
meaning that the the state would be reset very frequently when FlexFEC
is used. This should not have led to any major problems, except for a
decreased decoding efficiency.

This CL verifies that whenever we compare sequence numbers in
ForwardErrorCorrection, they do indeed belong to the same SSRC.

BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2893293003
Cr-Commit-Position: refs/heads/master@{#18399}
2017-06-02 07:58:11 +00:00
0d1e27f00f desktopCapture: scale the cursor image according to screen scale factor on OSX
Before 10.12, OSX may report 1X cursor on Retina screen. (See crbug.com/632995.)
After 10.12, OSX may report 2X cursor on non-Retina screen. (See
crbug.com/671436.) So scaling the cursor if the image size doesn't meet the
expected size on either Retina or non-Retina screen.
Also corrects the cursor caching and change detection, so we can only do scalingat cursor changing for better performance.

As to screen capture on OSX, the captured frame already contains the current
cursor. So the MouseCursorMonitorMac is not needed for ScreenCapture for
performance purpose.

BUG=671436

Review-Url: https://codereview.webrtc.org/2908853002
Cr-Commit-Position: refs/heads/master@{#18393}
2017-06-01 21:27:41 +00:00