Commit Graph

8673 Commits

Author SHA1 Message Date
4aee2a928f Add android specific audio mute function.
R=henrika@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11849}
2016-03-02 21:02:11 +00:00
0e73934694 Remove webrtc/test/webrtc_test_common.gyp
Move the "webrtc_test_common" target to test.gyp and rename
it to "test_common".

Move all tests in "webrtc_test_common_unittests" (which
wasn't run on the bots) into "test_support_unittests".

NOTRY=True
NOPRESUBMIT=True

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

Cr-Commit-Position: refs/heads/master@{#11848}
2016-03-02 18:46:25 +00:00
905f8e7e9d Make ReconfigureVideoEncoder void.
Also moves and simplifies SetSendCodec from VideoSendStream to mostly
inside ViEEncoder. This is necessary for making
ReconfigureVideoEncoder asynchronous as we don't post any result back.

BUG=webrtc:5494
R=stefan@webrtc.org
TBR=mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11847}
2016-03-02 16:00:07 +00:00
25359e0cc2 DtlsIdentityStoreInterface::RequestIdentity gets optional expires param.
This is a preparation CL. The expires param will be used in
a follow-up CL. Initially it will only be used by the
chromium implementation. Then we will either update the
webrtc implementation (DtlsIdentityStoreImpl) to use it or
we will remove that store completely as part of clean-up
work.

There are currently two versions of RequestIdentity, one
that takes KeyType and one that takes KeyParams.

The KeyType version is removed in favor of the new
KeyParams + expires version. The KeyParams version without
expires is kept as to not break chromium which currently
implements that. This is the version that can be removed in
a follow-up CL.

BUG=webrtc:5092, chromium:544902

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

Cr-Commit-Position: refs/heads/master@{#11846}
2016-03-02 15:55:56 +00:00
0a9fc05583 Move RTP module send status outside of ViEChannel.
Removes StartSend, StopSend and SetSendCodec from ViEChannel and into
VideoSendStream which uses the payload router to configure them
directly.

BUG=webrtc:5494
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11845}
2016-03-02 15:24:21 +00:00
7b19b08c18 Reland "Calculating ERLE in AEC more properly."
The original CL (https://codereview.webrtc.org/1644133002/) had an error in the unittest and did not get landed. This CL is to reland it,

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11844}
2016-03-02 14:56:56 +00:00
4fa7ecad12 Remove add/removal of ViEReceiver RTP modules.
Since all possible modules are known on Init we don't need to add/remove
them in runtime.

BUG=webrtc:5494
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11843}
2016-03-02 14:06:04 +00:00
f475277547 Rename constants files in webrtc/{media,p2p}
Multiple sources with the same names forces ugly GYP hacks in
Chromium's libjingle.gyp. Rename the sources in WebRTC to
enable cleaning this up in Chromium.

To summarize:
webrtc/media/base/constants.{cc,h} -> mediaconstants.{cc,h}
webrtc/p2p/base/constants.{cc,h} -> p2pconstants.{cc,h}

This CL will require coordinating landing a roll in Chromium.

BUG=webrtc:4256
NOTRY=True

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

Cr-Commit-Position: refs/heads/master@{#11842}
2016-03-02 13:42:35 +00:00
91e1c15f8e Make sure rotation is not applied by the capturer if the CVO exenstion is set before the send stream is created.
BUG=webrtc:5621

TBR=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11841}
2016-03-02 13:34:08 +00:00
7ecc163d42 Report all packets to bitrate probing.
Allows probing with audio packets to finish, preventing a busy loop for
high-bitrate audio-only calls.

BUG=chromium:589931, webrtc:5506
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11840}
2016-03-02 13:22:33 +00:00
b65f3e39d7 [cleanup] Remove unused fields/functions from rtcp module.
Removed fields are initialized but unused.
Removed functions are not called, sometimes are not defined.

BUG=webrtc:5565
R=asapersson@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11839}
2016-03-02 12:26:19 +00:00
c891eb479b Replace scoped_ptr with unique_ptr in webrtc/common_video/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11838}
2016-03-02 11:41:40 +00:00
60653ba3cc New flag is_screencast in VideoOptions.
This cl copies the value of cricket::VideoCapturer::IsScreencast into
a flag in VideoOptions. It is passed on via the chain

VideortpSender::SetVideoSend
WebRtcVideoChannel2::SetVideoSend
WebRtcVideoChannel2::SetOptions
WebRtcVideoChannel2::WebRtcVideoSendStream::SetOptions

Where it's used, in
WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame, we can look it up
in parameters_, instead of calling capturer_->IsScreencast().

Doesn't touch screencast logic related to cpu adaptation, since that
code is in flux in a different cl.

Also drop the is_screencast flag from the Dimensions struct, and drop separate options argument from ConfigureVideoEncoderSettings and SetCodecAndOptions, instead always using the options recorded in VideoSendStreamParameters::options.

In the tests, changed FakeVideoCapturer::is_screencast to be a construction time flag. Generally, unittests of screencast have to both use a capturer configured for screencast, and set the screencast flag using SetSendParameters. Since the automatic connection via VideoSource and VideoRtpSender isn't involved in the unit tests.

Note that using SetSendParameters to set the screencast flag doesn't make sense, since it's not per-stream. SetVideoSend would be more appropriate. That should be fixed if/when we drop VideoOptions from SetSendParameters.

BUG=webrtc:5426
R=pbos@webrtc.org, perkj@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11837}
2016-03-02 10:41:49 +00:00
e065fcf9a9 Replace scoped_ptr with unique_ptr in webrtc/modules/video_*/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11836}
2016-03-02 09:01:16 +00:00
4eb1ddd817 Fixing a possible crash in CopyCandidatesFromSessionDescription.
BUG=590972
R=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11835}
2016-03-02 00:21:15 +00:00
03d6d57f41 Late initialize MediaController, for less resource i.e. ProcessThread, usage by PeerConnection.
BUG=chromium:582441

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

Cr-Commit-Position: refs/heads/master@{#11834}
2016-03-01 20:42:08 +00:00
27f982bbcb Replace scoped_ptr with unique_ptr in webrtc/video/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11833}
2016-03-01 19:52:39 +00:00
d802b5b7c3 Fix some signed overflow errors causing undefined behavior (in theory).
BUG=webrtc:5491

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

Cr-Commit-Position: refs/heads/master@{#11832}
2016-03-01 19:07:40 +00:00
5711c8d1f8 Change transport sequence number extension strings to specify what revision is implemented.
BUG=webrtc:5610
R=mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11831}
2016-03-01 15:27:27 +00:00
b0fdfea9e8 Add stats (histograms) for vp8 screenshare layers
BUG=

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

Cr-Commit-Position: refs/heads/master@{#11830}
2016-03-01 13:51:20 +00:00
92931b15d8 Replace scoped_ptr with unique_ptr in webrtc/modules/remote_bitrate_estimator/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11829}
2016-03-01 13:32:39 +00:00
0db023a70b Move suspend_below_min_bitrate from VideoOptions to MediaConfig.
Rename SetCodecAndOptions to SetCodec, it no longer sets or uses the
VideoOptions. In MediaConfig, collect the video-related flags into a
struct.

As a followup, it should be possible to delete VideoOptions from
VideoSendParameters and VideoSendStreamParameters.

TBR=pthatcher@webrtc.org
BUG=webrtc:5426

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

Cr-Commit-Position: refs/heads/master@{#11828}
2016-03-01 12:30:07 +00:00
e3d99221c4 rtc::Buffer: Use RTC_DCHECK instead of assert
Review URL: https://codereview.webrtc.org/1749693002

Cr-Commit-Position: refs/heads/master@{#11826}
2016-03-01 09:57:41 +00:00
ffdd41ecf2 jni_helpers: Optimize IsNull()
The current implementation is unnecessary expensive - we create a local reference frame for creating new Java objects and then create a new local reference. It's cheaper to just do jni->IsSameObject(obj, nullptr).

R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11825}
2016-03-01 09:10:11 +00:00
dc29780722 Re-enable DCHECKs for increasing timestamps in paced_sender
This reverts https://codereview.webrtc.org/1618333002

BUG=webrtc:5452

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

Cr-Commit-Position: refs/heads/master@{#11824}
2016-03-01 08:47:03 +00:00
10a029e952 Changed AudioEncoder::Encode to take an rtc::Buffer* instead of uint8_t* and a maximum size.
For backwards compatibility, I've added kept the old interface to
Encode() and EncodeInternal and created default implementations of both
variants of EncodeInternal(), each calling the other. At least one of
the variants must be implemented in a subclass or we'll run out of stack
and explode. Would be nice if we could catch that before runtime. :/

The new interface to EncodeInternal() is protected, since it should
never be called from the outside.

Was unable to mark the old EncodeInternal() as RTC_DEPRECATED, since the
default implementaion of the new variant needs to call it to work around
old implementations. The old Encode() variant is deprecated, at least.

Added a test for backwards compatibility in audio_encoder_unittest.cc.
For the added test I broke out MockEncodeHelper from
audio_encoder_copy_red_unittest.cc and renamed it MockAudioEncoderHelper.

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

Cr-Commit-Position: refs/heads/master@{#11823}
2016-03-01 08:41:39 +00:00
22c2b4814a Move RTP stats histograms from VieChannel to SendStatisticsProxy.
Also slice for screensharing.

BUG=
R=mflodman@webrtc.org, pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11822}
2016-03-01 08:40:54 +00:00
ac287ee8b5 VideoCaptureInput enforce VideoFrame::render_time to be generated by webrtc clock.
render_time time field (means capture time for sender side) is used by rtcp SenderReport to calculate offset since last frame and to estimate rtp timestamp for the time SenderReport should be send at.
mapping between rtp timestamp and ntp time in SenderReport is used for stream synchronization.

calculation of rtp_timestamp (using ntp_time of incoming video frame) for rtp packets is unchanged.

BUG=webrtc:5433, webrtc:5504, webrtc:5505

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

Cr-Commit-Position: refs/heads/master@{#11820}
2016-02-29 20:17:10 +00:00
b9338ac62b Added an operator[] to Buffer, to make reading data easier.
Review URL: https://codereview.webrtc.org/1745033002

Cr-Commit-Position: refs/heads/master@{#11819}
2016-02-29 17:36:44 +00:00
012f8c0e73 Remove unused encoder_config_ variable.
BUG=
R=danilchap@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11818}
2016-02-29 14:42:30 +00:00
c9bbbe454f Revert "Calculating ERLE in AEC more properly."
This reverts commit 944744b25c76810e576516d2f676b1d9105e302f.

NOTRY=True
TBR=peah@webrtc.org,kjellander@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11817}
2016-02-29 14:20:54 +00:00
7d9112cbc4 Make it possible to exclude device management code from rtc_media target.
Chromium doesn't use the device managment code in webrtc/media
so we need a way to turn it off in order to eliminate Chromium's
src/third_party/libjingle/libjingle.gyp

BUG=webrtc:4256
NOTRY=True
TESTED=Trybots + successfully compiled with
GYP_DEFINES=include_internal_device_management=0 webrtc/build/gyp_webrtc
ninja -C out/Debug rtc_media

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

Cr-Commit-Position: refs/heads/master@{#11816}
2016-02-29 14:14:51 +00:00
dda8a837ce Trace tracing Start/Stop events.
Permits measuring times from start of recording (usually start of a
call), and not time from first event that occurs after tracing starts.

BUG=
R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11815}
2016-02-29 13:54:14 +00:00
3f55dea259 Replace scoped_ptr with unique_ptr in webrtc/modules/video_coding/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11814}
2016-02-29 13:52:06 +00:00
a4f31bd03a TMMBRSet become vector<rtcp::TmmbItem>
this is a slice of https://codereview.webrtc.org/1474693002/
All TMMBRSet functions intentionally left unchanged. Goal to make them obsolete, not to clear.

BUG=webrtc:5565

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

Cr-Commit-Position: refs/heads/master@{#11813}
2016-02-29 13:26:05 +00:00
739fcb989d Cleanup of webrtc::VideoFrame.
Delete EqualsFrame method, used only by tests. Delete one of the
CreateFrame methods. Drop return value for CreateEmptyFrame, CreateFrame
and CopyFrame.

BUG=webrtc:5426

Committed: https://crrev.com/208019637bfed975f8f13b16d40b90e200763cd6
Cr-Commit-Position: refs/heads/master@{#11783}

R=mflodman@webrtc.org, pbos@webrtc.org, perkj@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11811}
2016-02-29 12:11:57 +00:00
944744b25c Calculating ERLE in AEC more properly.
The audio level of the AEC's output level was calculated before overlapping add, and therefore, a compensation was needed. The compensation is multiplying the level by 2 since, before overlapping add, the level is roughly halved due to windowing.

This had to be that way because the level was calculated in frequency domain and the signal after overlapping add has only its time domain representation.

The level calculation has been updated to work on time domain signal and therefore the problem is not there any longer.

This CL is to put the calculation of the AEC output level after overlapping add and remove the compensation.

BUG=
R=peah@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11810}
2016-02-29 12:09:07 +00:00
Per
fb45d170c0 Reland Remove unused cricket::VideoCapturer methods. Originally reviewed and landed as patchset #2 id:30001 of https://codereview.webrtc.org/1733673002/)
I readded virtual bool Pause(bool paused) for now with a dummy implementation since Chrome remoting override this method.

Original cl description:

Removed unused cricket::VideoCapturer methods:

void UpdateAspectRatio(int ratio_w, int ratio_h);
void ClearAspectRatio();
bool Pause(bool paused);
Restart(const VideoFormat& capture_format);
MuteToBlackThenPause(bool muted);
IsMuted() const
set_square_pixel_aspect_ratio
bool square_pixel_aspect_ratio()

This cl also remove the use of messages and posting of state change.
Further more - a thread checker is added to make sure methods are called on only one thread. Construction can happen on a separate thred.
It does not add restrictions on what thread frames are delivered on though.

There is more features in VideoCapturer::Onframe related to screen share in ARGB that probably can be cleaned up in a follow up cl.

BUG=webrtc:5426
TBR=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11809}
2016-02-29 11:07:45 +00:00
f3ed9d75dd Remove thread checker from CongestionController.
R=terelius@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11808}
2016-02-29 09:42:21 +00:00
7e937e951c Remove workaround for Opus DTX noise pumping issue.
A workaround for Opus DTX noise pumping issue was made according upon this
https://codereview.webrtc.org/1422213003

Recently, Opus has fixed this problem internally, and hence the workaround is not needed any longer.

This CL removes this workaround.

BUG=586175
R=flim@webrtc.org, tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11805}
2016-02-29 09:24:25 +00:00
2d5f0913f2 Move direct use of VideoCapturer::VideoAdapter to VideoSinkWants.
The purose of this cl is to remove dependency on cricket::VideoCapturer from WebRtcVideoChannel2.
This cl change CPU adaptation to use a new VideoSinkWants.Resolution

Cl is WIP and uploaded to start the discussion.

Tested on a N5 with hw acceleration turned off.

BUG=webrtc:5426

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

Cr-Commit-Position: refs/heads/master@{#11804}
2016-02-29 08:04:50 +00:00
50772f1e16 GN: Update audio_sink.h location
This should have been a part of
https://codereview.webrtc.org/1740873003/
but wasn't discovered since we cannot have --check turned
on for GN yet.

BUG=webrtc:5589
TBR=solenberg@webrtc.org, henrika@webrtc.org,

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

Cr-Commit-Position: refs/heads/master@{#11803}
2016-02-29 05:49:54 +00:00
250fc658c5 Lazily allocate output buffer for AsyncTCPSocket.
As a follow-up to https://codereview.webrtc.org/1737053006/ this CL further
improves memory usage by lazily allocating output buffers up to the passed
maximum size. This also changes the output buffer to a Buffer object.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11801}
2016-02-28 23:06:47 +00:00
0a00759780 Fix the stereo support in IntelligibilityEnhancer
Review URL: https://codereview.webrtc.org/1729753003

Cr-Commit-Position: refs/heads/master@{#11795}
2016-02-27 01:17:44 +00:00
7ffeab525c Reland "Move webrtc/audio/audio_sink.h to webrtc/ and fix some dependencies."
This is a reland of https://codereview.webrtc.org/1737593002/ minus
the added missing headers in webrtc/{BUILD.gn,webrtc.gyp} and
webrtc/common.gyp that breaks GN in Chromium since it's using
the --check flag (which we should support).

BUG=webrtc:4243, webrtc:5589
TESTED=Tried generating GN files with --check in a Chromium checkout with this patch applied, successfully.
TBR=pbos@webrtc.org, perkj@webrtc.org, solenberg@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11794}
2016-02-26 21:46:22 +00:00
cedddbdf7b Android MediaCodecVideoDecoder: Limit measured decode time to 200ms
This change is done to remove abnormally high decode time measurements for H264 decoding. H264 decoding sometimes keeps a few frames as reference before outputting a new decoded frame. This pipeline causes some frames to get stuck when the source stops sending new frames. When the source starts sending frames again, the decode time measurements for the frames that were stuck will include the pause time, which can be arbitrary high. This CL is a simple fix for this problem by constraining the decode time values to a "reasonable" range.

BUG=b/27306053

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

Cr-Commit-Position: refs/heads/master@{#11792}
2016-02-26 17:36:09 +00:00
3c1657658d Don't allocate buffers for listening sockets.
Listening sockets will not read/write directly, so they don't need buffers.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11791}
2016-02-26 17:31:41 +00:00
9e69dfdfd5 Java SurfaceTextureHelper: Remove support for external thread
Currently, VideoCapturerAndroid owns a dedicated tread, and
SurfaceTextureHelper get this thread passed in the ctor. In
VideoCapturerAndroid.dispose(), ownership of the thread is passed to
SurfaceTextureHelper so that we can return directly instead of waiting
for the last frame to return.

This CL makes the SurfaceTextureHelper own the thread the whole time
instead, and VideoCapturerAndroid calls getHandler() to get it instead.

BUG=webrtc:5519

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

Cr-Commit-Position: refs/heads/master@{#11790}
2016-02-26 15:45:50 +00:00
54ebfca934 Revert of Cleanup of webrtc::VideoFrame. (patchset #6 id:100001 of https://codereview.webrtc.org/1679323002/ )
Reason for revert:
Breaks downstream compilation. Please make non-breaking API changes for the reland or coordinate fixing downstream code quickly with the sheriff.

Original issue's description:
> Cleanup of webrtc::VideoFrame.
>
> Delete EqualsFrame method, used only by tests. Delete one of the
> CreateFrame methods. Drop return value for CreateEmptyFrame, CreateFrame
> and CopyFrame.
>
> BUG=webrtc:5426
>
> Committed: https://crrev.com/208019637bfed975f8f13b16d40b90e200763cd6
> Cr-Commit-Position: refs/heads/master@{#11783}

TBR=pbos@webrtc.org,perkj@webrtc.org,pthatcher@webrtc.org,mflodman@webrtc.org,marpan@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:5426

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

Cr-Commit-Position: refs/heads/master@{#11789}
2016-02-26 15:38:57 +00:00
f8136bac63 Remove add/removal of RTP modules in PacketRouter.
PacketRouter still relies on SendingMedia() which is set to false for
the disabled modules.

BUG=webrtc:5494
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11788}
2016-02-26 15:37:22 +00:00