Commit Graph

8357 Commits

Author SHA1 Message Date
86b92e05f9 Drop VP8 frames older than the last sync frame in the RtpFrameReferenceFinder.
BUG=webrtc:5514

Review-Url: https://codereview.webrtc.org/2392313002
Cr-Commit-Position: refs/heads/master@{#14745}
2016-10-24 14:11:57 +00:00
1655e45d85 Elimiteted race condition in the AudioMixer.
The mixer allocates an audio frame for each added data source. This
audio frame was deallocated when a source was removed from the
mixer. Source removal could happen during the mixing, and the existing
locking scheme (and the Clang thread checker) was not sufficient to
prevent a data race.

After this change, the mixer doesn't release its lock until it is
finished with the sources' Audio frames. Since multi-threaded access to
the mixer only happens when a source is added or removed, we believe
that this change wouldn't have any noticeable performance impact.

NOTRY=True

BUG=webrtc:6346

Review-Url: https://codereview.webrtc.org/2439283002
Cr-Commit-Position: refs/heads/master@{#14744}
2016-10-24 13:57:03 +00:00
2206c959f1 Revert of Fix some chromium style warnings in remote_bitrate_estimator.h (patchset #1 id:1 of https://codereview.webrtc.org/2387113008/ )
Reason for revert:
Broke internal project.

Original issue's description:
> Fix some chromium style warnings in remote_bitrate_estimator.h
>
> BUG=webrtc:163
>
> Committed: https://crrev.com/c22bcf4f4bed1f05b5e59127f93b58129cd2627f
> Cr-Commit-Position: refs/heads/master@{#14737}

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

Review-Url: https://codereview.webrtc.org/2444923002
Cr-Commit-Position: refs/heads/master@{#14743}
2016-10-24 13:43:32 +00:00
01404084aa Add tests and fix thread annotations
BUG=None
NOTRY=true

Review-Url: https://codereview.webrtc.org/2435293002
Cr-Commit-Position: refs/heads/master@{#14742}
2016-10-24 13:07:33 +00:00
b60d1962d8 Eliminate left shift of negative value by using multiplication instead
BUG=chromium:655917

Review-Url: https://codereview.webrtc.org/2430393003
Cr-Commit-Position: refs/heads/master@{#14741}
2016-10-24 11:18:50 +00:00
2fa7c67675 RTCTransportStats[1] added, supporting all members.
Address TODO in rtcstatscollector_unittest.cc before closing 653873.

[1] https://w3c.github.io/webrtc-stats/#transportstats-dict*

BUG=chromium:653873, chromium:633550, chromium:627816

Review-Url: https://codereview.webrtc.org/2408363002
Cr-Commit-Position: refs/heads/master@{#14740}
2016-10-24 11:00:12 +00:00
5de3a7e556 Remove unused variable from delay based BWE.
BUG=None

Review-Url: https://codereview.webrtc.org/2432923003
Cr-Commit-Position: refs/heads/master@{#14739}
2016-10-24 10:43:27 +00:00
509eadd554 Fix chromium-style warnings.
Separate the null implementation from rtp_rtcp_defines.h, and follow chromium style guide for virtual functions.

BUG=webrtc:163

Review-Url: https://codereview.webrtc.org/2400993002
Cr-Commit-Position: refs/heads/master@{#14738}
2016-10-24 10:24:22 +00:00
c22bcf4f4b Fix some chromium style warnings in remote_bitrate_estimator.h
BUG=webrtc:163

Review-Url: https://codereview.webrtc.org/2387113008
Cr-Commit-Position: refs/heads/master@{#14737}
2016-10-24 09:57:11 +00:00
a3cac0514a GN: move webrtc/video/ targets from webrtc/BUILD.gn into webrtc/video/BUILD.gn
Move the following targets into webrtc/video/BUILD.gn:
* screenshare_loopback
* video_quality_test
* video_loopback

Add new target 'run_tests' in webrtc/test/BUILD.gn, being used by two
of the above and make then depend on that instead.

BUG=webrtc:6440
NOTRY=True

Review-Url: https://codereview.webrtc.org/2438973002
Cr-Commit-Position: refs/heads/master@{#14735}
2016-10-24 09:09:40 +00:00
43536c3d6a Implement framesEncoded stat in video send ssrc stats.
Implemented as defined by this pull request: https://github.com/w3c/webrtc-stats/pull/70

BUG=webrtc:6541

Review-Url: https://codereview.webrtc.org/2421193003
Cr-Commit-Position: refs/heads/master@{#14734}
2016-10-24 09:09:39 +00:00
267527459b Remove cricket::VideoCodec with, height and framerate properties
Since WebRtcVideoSendStream have reconfigures the send codec to match the incoming captured frames widht and height they have not been used.
Framerate has just been set when parsing sdp to 60fps and not changed elsewhere.

This cl require some upstream projects to change first.

BUG=webrtc:5332

Review-Url: https://codereview.webrtc.org/2408153002
Cr-Commit-Position: refs/heads/master@{#14733}
2016-10-24 08:21:24 +00:00
d3c40089fa Delete always-zero ByteBufferWriter::start_.
Likely a left-over since cl https://codereview.webrtc.org/1821083002

BUG=None

Review-Url: https://codereview.webrtc.org/2440083002
Cr-Commit-Position: refs/heads/master@{#14732}
2016-10-24 08:06:23 +00:00
61c053e329 Reland of Delete webrtc::VideoFrame::CopyFrame. (patchset #1 id:1 of https://codereview.webrtc.org/2397943003/ )
Reason for revert:
Dependencies updated.

Original issue's description:
> Revert of Delete webrtc::VideoFrame::CopyFrame. (patchset #2 id:20001 of https://codereview.webrtc.org/2371363003/ )
>
> Reason for revert:
> This CL breaks internal dependencies.
>
> Original issue's description:
> > Delete webrtc::VideoFrame::CopyFrame.
> >
> > BUG=webrtc:5682
> >
> > Committed: https://crrev.com/0e7c7ce35d9449c5bb13328d1bfb04ad32e48ccc
> > Cr-Commit-Position: refs/heads/master@{#14550}
>
> TBR=magjed@webrtc.org,tommi@webrtc.org,nisse@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:5682
>
> Committed: https://crrev.com/21a18ee267146c86e188d95edf6432f71dd53aeb
> Cr-Commit-Position: refs/heads/master@{#14553}

TBR=magjed@webrtc.org,tommi@webrtc.org,ivoc@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:5682

Review-Url: https://codereview.webrtc.org/2435963002
Cr-Commit-Position: refs/heads/master@{#14731}
2016-10-24 07:44:17 +00:00
ebf524007f Allow using Java classes that don't require JNI in Chromium.
BUG=webrtc:6584
NOTRY=True

Review-Url: https://codereview.webrtc.org/2439073002
Cr-Commit-Position: refs/heads/master@{#14730}
2016-10-24 07:28:05 +00:00
66712b024f Revert of Add method cricket::VideoCapturer::NeedsDenoising, use in VideoCapturerTrackSource. (patchset #5 id:80001 of https://codereview.webrtc.org/2334683002/ )
Reason for revert:
This was a workaround to help Chrome wire up the googNoiseReduction constraint. However, it was fixed in a different way in Chrome, and this hack is not actually needed.

Original issue's description:
> Add method cricket::VideoCapturer::NeedsDenoising, use in VideoCapturerTrackSource.
>
> BUG=chromium:645907
>
> Committed: https://crrev.com/0d14c6abba19295725519ce38105688ae0a62513
> Cr-Commit-Position: refs/heads/master@{#14219}

TBR=pbos@webrtc.org,hta@webrtc.org,perkj@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=chromium:645907

Review-Url: https://codereview.webrtc.org/2433293003
Cr-Commit-Position: refs/heads/master@{#14729}
2016-10-24 07:22:39 +00:00
151572ba05 Delete unused class AudioSourceWithMixStatus.
BUG=webrtc:6346

Review-Url: https://codereview.webrtc.org/2437863003
Cr-Commit-Position: refs/heads/master@{#14728}
2016-10-24 07:11:59 +00:00
25445d3d4b Integrate FlexfecReceiveStream with Call.
Call demultiplexes received RTP packets and delivers these to the
appropriate {Video,Flexfec}ReceiveStreams. A single video stream
could conceivably be protected by multiple FlexFEC streams.

BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2388303009
Cr-Commit-Position: refs/heads/master@{#14727}
2016-10-24 06:37:24 +00:00
764e364933 Several subcomponents inside APM copy render audio from
the render side to the capture side using the same
pattern. Currently this is done independently for the
submodules.

This CL moves the the AEC functionality for this into
APM.

BUG=webrtc:5298, webrtc:6540

Review-Url: https://codereview.webrtc.org/2427553003
Cr-Commit-Position: refs/heads/master@{#14726}
2016-10-22 12:04:35 +00:00
897497361e Added the missing ReadQueuedRenderData() call to the AECM bitexactness test
BUG=webrtc:6573

Review-Url: https://codereview.webrtc.org/2437033002
Cr-Commit-Position: refs/heads/master@{#14725}
2016-10-22 11:00:44 +00:00
12986c4534 Added the missing ReadQueuedRenderData() call to the gain controller bitexactness test
BUG=webrtc:6571

Review-Url: https://codereview.webrtc.org/2441603003
Cr-Commit-Position: refs/heads/master@{#14724}
2016-10-22 09:38:37 +00:00
da38293e51 Added the missing ReadQueuedRenderData() call to the AEC bitexactness test
BUG=webrtc:6572

Review-Url: https://codereview.webrtc.org/2438733002
Cr-Commit-Position: refs/heads/master@{#14723}
2016-10-22 08:08:45 +00:00
894c400c61 Android VideoFileRenderer: Wait for posted frames in release()
We need to wait for posted frames to be rendered first in release()
instead of abruptly quitting, in order to simplify testing.

BUG=webrtc:6545
R=sakal@webrtc.org

Review URL: https://codereview.webrtc.org/2440703002 .

Cr-Commit-Position: refs/heads/master@{#14722}
2016-10-21 13:05:09 +00:00
8c63a82bf5 Add a placeholder stat for logging the estimated residual echo likelihood.
The stat is currently always set to zero until the residual echo detector has landed.

BUG=webrtc:6525

Review-Url: https://codereview.webrtc.org/2431443003
Cr-Commit-Position: refs/heads/master@{#14721}
2016-10-21 11:10:08 +00:00
3355f6d6f5 Avoids invalid copy of audio buffer to task queue.
Now does level estimate on the audio threads to avoid complex
copying of audio data to task queue. The old implementation could
also crash due to unclear ownership of the audio buffer.

BUG=webrtc:6569
R=kwiberg@webrtc.org

Review URL: https://codereview.webrtc.org/2433393002 .

Cr-Commit-Position: refs/heads/master@{#14720}
2016-10-21 10:45:31 +00:00
c4d2dc4e02 Delete DataLog abstraction, which was almost unused.
Configuration with rtc_enable_data_logging = true was broken in cl
https://codereview.webrtc.org/2054373002/ (which deleted the
FileWrapper::WriteText method), and apparently noone noticed.

BUG=None

Review-Url: https://codereview.webrtc.org/2439473002
Cr-Commit-Position: refs/heads/master@{#14719}
2016-10-21 08:53:01 +00:00
dda1e60153 Reland of Delete unused file mediacommon.h. (patchset #1 id:1 of https://codereview.webrtc.org/2441493003/ )
Reason for revert:
#include of mediacommon.h now deleted in the offending downstream app.

Original issue's description:
> Revert of Delete unused file mediacommon.h. (patchset #1 id:1 of https://codereview.webrtc.org/2437703002/ )
>
> Reason for revert:
> Turned out this broke a downstream app. Reverting while investigating.
>
> Original issue's description:
> > Delete unused file mediacommon.h.
> >
> > BUG=None
> >
> > Committed: https://crrev.com/a34e796a1b59a1068c77a3e36d2a24fd37c08afc
> > Cr-Commit-Position: refs/heads/master@{#14689}
>
> TBR=magjed@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=None
>
> Committed: https://crrev.com/ca20e7cfed301982986a4da23c819b4e50b5a6e9
> Cr-Commit-Position: refs/heads/master@{#14697}

TBR=magjed@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=None

Review-Url: https://codereview.webrtc.org/2426393006
Cr-Commit-Position: refs/heads/master@{#14718}
2016-10-21 06:57:18 +00:00
84fbf9ee38 SUCCEEDED macro is misused
SUCCEEDED macro is designed for HRESULT instead of BOOL.
This change exposes my lack of knowledge of native Windows APIs. :(

BUG=https://bugs.chromium.org/p/chromium/issues/detail?id=647067

Review-Url: https://codereview.webrtc.org/2440563003
Cr-Commit-Position: refs/heads/master@{#14716}
2016-10-21 00:00:40 +00:00
bdb8df895a BringSelectedWindowToFront should bring the window to front instead of only focusing it
The API is misused, please refer to the bug for detail explanation.

BUG=https://bugs.chromium.org/p/webrtc/issues/detail?id=6565

Review-Url: https://codereview.webrtc.org/2426423005
Cr-Commit-Position: refs/heads/master@{#14715}
2016-10-20 23:44:22 +00:00
97abf244ca Use variadic templates instead of pump for RefCountedObject
BUG=None

Review-Url: https://codereview.webrtc.org/2438013003
Cr-Commit-Position: refs/heads/master@{#14714}
2016-10-20 22:19:36 +00:00
6c278491ad Move audio frame memory handling inside AudioMixer.
Simplify the AudioMixer::Source interface and update the mixer
implementation to the new interface.

Instead of asking a mixer source to provide a pointer to an AudioFrame
during each mixing iteration, a mixer should supply a pointer to its
own AudioFrame.

This simplifies lifetime issues as sources do not give away an
internal pointer.

Implementation: when an audio source is added, the mixer allocates a
new AudioFrame. The audio frame is kept together in the internal class
SourceStatus together with the audio source pointer until the source
is removed.

NOTRY=True
BUG=webrtc:6346

Review-Url: https://codereview.webrtc.org/2420913002
Cr-Commit-Position: refs/heads/master@{#14713}
2016-10-20 21:24:46 +00:00
920d30bc74 Replaced thread checker with race checker in AudioMixer.
This change is due to an incorrect understanding of the threading
model in Chrome. The new AudioMixer has a thread checker to ensure
that mixing is always done from a single thread. Mixing is done on the
Audio Output Thread. When run in Chrome, it can change. Even if the thread
changes, there is never more than one audio thread, and mixing is done
sequentially.

The threading checks and variable access checks are replaced with
rtc::RaceChecker counterparts.

NOTRY=True
BUG=webrtc:6346

Review-Url: https://codereview.webrtc.org/2437913003
Cr-Commit-Position: refs/heads/master@{#14712}
2016-10-20 21:23:30 +00:00
161a586b45 Fix some flaky tests by using longer timeout and/or fake clock.
Also use const variables for timeout values.

BUG=webrtc:6500
R=deadbeef@webrtc.org

Review URL: https://codereview.webrtc.org/2431473004 .

Cr-Commit-Position: refs/heads/master@{#14711}
2016-10-20 18:47:19 +00:00
b9eaeba71f Return nullptr from RTCCertificate::FromPEM on failure.
BUG=webrtc:6488

Review-Url: https://codereview.webrtc.org/2424093002
Cr-Commit-Position: refs/heads/master@{#14710}
2016-10-20 17:27:27 +00:00
58000a0c3d Move shared_desktop_frame.cc to webrtc/modules/desktop_capture:primitives
Previously shared_desktop_frame.cc wasn't in primitives target, but it
is used in remoting client on android and the client should depend only
on primitives, but not desktop_capture overall.

BUG=653612
R=nicholss@chromium.org

Review URL: https://codereview.webrtc.org/2436913002 .

Cr-Commit-Position: refs/heads/master@{#14709}
2016-10-20 16:34:04 +00:00
142f019d87 Append second nack list in same compound rtcp packet
instead of replace

BUG=webrtc:6483

Review-Url: https://codereview.webrtc.org/2426543002
Cr-Commit-Position: refs/heads/master@{#14708}
2016-10-20 15:22:45 +00:00
aed581a4f3 Made AudioReceiveStream a mixer participant.
Methods to facilitate this are added to ChannelProxy and voe::Channel.

BUG=webrtc:6346

Review-Url: https://codereview.webrtc.org/2378143004
Cr-Commit-Position: refs/heads/master@{#14707}
2016-10-20 13:32:47 +00:00
5f70d3b559 Fix org.mockito.Matchers deprecation warnings in DirectRTCClientTest.
ArgumentMatchers is the new name of the class. Also, we don't need to
pass a class to the isNotNull matcher.

BUG=webrtc:6558
R=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2440433002
Cr-Commit-Position: refs/heads/master@{#14706}
2016-10-20 12:49:12 +00:00
201dfe90a7 Split audio mixer into interface and implementation.
The AudioMixer is now split in a mixer and audio source interface part, which has moved to webrtc/api, and a default implementation part, which lies in webrtc/modules.

This change makes it possible to create other mixer implementations and is a first step to facilitate passing down a mixer from outside of WebRTC.

It will also create less build dependencies when the new mixer has replaced the old one.

NOTRY=True
TBR=henrik.lundin@webrtc.org
BUG=webrtc:6346

Review-Url: https://codereview.webrtc.org/2411313003
Cr-Commit-Position: refs/heads/master@{#14705}
2016-10-20 12:06:44 +00:00
76648da8dc Add FlexfecReceiveStream.
This class is logically parallel with the {Audio,Video}ReceiveStream
classes. Its purpose is to describe a receive stream of FlexFEC packets,
through the corresponding config.

Functionally, this class simply forwards the received RTP packets
to its FlexfecReceiver, which returns recovered packets to the
Call level, for appropriate demultiplexing based on SSRC.

BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2397843005
Cr-Commit-Position: refs/heads/master@{#14704}
2016-10-20 11:54:51 +00:00
057b8d91a6 Remove all traces of Dr Memory.
The Dr Memory toolchain is no longer supported by Chromium and
their bots have been removed. WebRTC will now rely on the LLVM
santizers for catching such errors.

BUG=webrtc:6553
NOTRY=True
R=ehmaldonado@webrtc.org

Review URL: https://codereview.webrtc.org/2434563003 .

Cr-Commit-Position: refs/heads/master@{#14703}
2016-10-20 11:17:25 +00:00
69034df0b0 Make GN build screenshare_loopback
BUG=None

Review-Url: https://codereview.webrtc.org/2338233004
Cr-Commit-Position: refs/heads/master@{#14702}
2016-10-20 11:03:32 +00:00
5a8724564c iOS: Optimize video scaling and cropping
This CL makes scaling and cropping lazy in AVFoundationVideoCapturer and
provides optimized paths for SW and HW encoding. For SW encoding, an
efficient NV12 -> I420 cropping and scaling is implemented in
CoreVideoFrameBuffer::NativeToI420. For HW encoding, an efficient NV12 ->
NV12 cropping and scaling is implemented in
CoreVideoFrameBuffer::CropAndScaleTo. The performance improvement over
the existing cropping and scaling is that it is now done in one step
instead of making an intermediary copy of the Y plane.

There might still be room for improvement in the HW path using some HW
support. That will be explored in a future CL.

BUG=b/30939444

Review-Url: https://codereview.webrtc.org/2394483005
Cr-Commit-Position: refs/heads/master@{#14701}
2016-10-20 10:34:32 +00:00
7a973447eb Moving WebRtcVoiceMediaChannel::SendSetCodec to AudioSendStream.
BUG=webrtc:5806, webrtc:4690

Review-Url: https://codereview.webrtc.org/2405183002
Cr-Commit-Position: refs/heads/master@{#14700}
2016-10-20 10:27:21 +00:00
1cb48232ac Android YuvConverter: Use OpenGL Framebuffer instead of EGL pixel buffer
This CL changes YuvConverter to use an OpenGL Framebuffer as rendering
target instead of an EGL pixel buffer surface. The purpose is to reduce
the number of EGL contexts and to be able to use YuvConverter from
EglRenderer without having to detach the EGL surface.

BUG=webrtc:6470

Review-Url: https://codereview.webrtc.org/2436653003
Cr-Commit-Position: refs/heads/master@{#14699}
2016-10-20 10:19:20 +00:00
9ab8a1884d Android: Extend functionality of EglRenderer
The purpose is to prepare for a TextureViewRenderer that will need the
new functionality.

The new functionality is:
 * Be able to create an EglRenderer using a SurfaceTexture.
 * Fps reduction logic.
 * Log statistics every 4 seconds regardless of framerate.
 * Include swap buffer time in statistics.
 * Use EglBase10 if texture frames are disabled.
 * Function for printing stack trace of render thread.
 * Public clearImage() function for clearing the EGLSurface.

BUG=webrtc:6470

Review-Url: https://codereview.webrtc.org/2428933002
Cr-Commit-Position: refs/heads/master@{#14698}
2016-10-20 10:18:15 +00:00
ca20e7cfed Revert of Delete unused file mediacommon.h. (patchset #1 id:1 of https://codereview.webrtc.org/2437703002/ )
Reason for revert:
Turned out this broke a downstream app. Reverting while investigating.

Original issue's description:
> Delete unused file mediacommon.h.
>
> BUG=None
>
> Committed: https://crrev.com/a34e796a1b59a1068c77a3e36d2a24fd37c08afc
> Cr-Commit-Position: refs/heads/master@{#14689}

TBR=magjed@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=None

Review-Url: https://codereview.webrtc.org/2441493003
Cr-Commit-Position: refs/heads/master@{#14697}
2016-10-20 09:53:06 +00:00
c1f8ecb661 Remove check for numberOfCameras from AppRTC Mobile PeerConnectionClient.
Since the class no longer creates its own videoCapturer and it may not
even be a camera, the check doesn't make sense anymore. This also
removes some of the build warnings.

BUG=webrtc:6558

Review-Url: https://codereview.webrtc.org/2434533003
Cr-Commit-Position: refs/heads/master@{#14696}
2016-10-20 09:34:49 +00:00
be4aff76a6 Suppress deprecation warning in CallFragment.
The old signature of this method has been deprecated. However, the new
signature is only support API level 23+, so we can't really use it yet.

BUG=webrtc:6558

Review-Url: https://codereview.webrtc.org/2437593004
Cr-Commit-Position: refs/heads/master@{#14695}
2016-10-20 09:32:53 +00:00
e33c5d918a Added a level controller initialization value to MediaConstraints.
An audio track with a level controller with the correct initialization
value can be created by a combination of
PeerConnectionFactory::CreateAudioTrack(..., audio_source) and
either
audio_source = PeerConnectionFactory::CreateAudioSource(constraints) or
audio_source = PeerConnectionFactory::CreateAudioSource(audio_options).

NOTRY=True
BUG=webrtc:6386

Review-Url: https://codereview.webrtc.org/2408143003
Cr-Commit-Position: refs/heads/master@{#14693}
2016-10-20 08:53:30 +00:00