Commit Graph

4031 Commits

Author SHA1 Message Date
9e69abf85e Added logging using the raw variant of the new aec logging macros
Replaced the wav file dumping functionality in aec_core.c with the newly added corresponding macros

Added macros for logging of AEC internal data

BUG=

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

Cr-Commit-Position: refs/heads/master@{#9808}
2015-08-28 11:41:30 +00:00
98f3cc54da NetEq: Removing two asserts
These asserts cover error cases that are also handled by the code
after the assert. Should not have both assert and error handling.

BUG=webrtc:4840

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

Cr-Commit-Position: refs/heads/master@{#9804}
2015-08-28 08:12:26 +00:00
1e346b20c4 NetEq: Minor follow-up fix in StatisticsCalculator
This change follows the recommendation of a post-commit comment in
r9778:
https://codereview.webrtc.org/1296633002/diff/100001/webrtc/modules/audio_coding/neteq/statistics_calculator.cc#newcode198

TBR=pkasting@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#9803}
2015-08-27 20:41:10 +00:00
116c84e1b0 NetEq: Fixing a bug that caused rtc::checked_cast to trigger
This is a bug that was introduced in
https://codereview.webrtc.org/1230503003, where the variable "int
temp_bufsize" was changed to a size_t. If the packet buffer was
flushed while inserting a packet, temp_bufsize became negative, which
was tested later in an if-statement. Now, with size_t instead, it
would just become very large, and the if-statement would never see a
negative value. The effect was that the packet size in samples could
be updated with a very large positive number, causing an overflow
which triggered rtc::checked_cast in
StatisticsCalculator::GetNetworkStatistics, line 220.

Also adding a test to reproduce the crash. Without the fix, the test
results in the above mentioned checked_cast to trigger. With the fix,
everything works fine.

BUG=chromium:525260

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

Cr-Commit-Position: refs/heads/master@{#9802}
2015-08-27 20:14:54 +00:00
9c3efd0052 Reland: Implement NetEq's CurrentDelay function
This was not implemented before. It returns the current total delay
(packet buffer and sync buffer) of NetEq. This is the same information
that was already available in
NetEqNetworkStatistics::current_buffer_size_ms, that can be obtained
through NetEq::NetworkStatistics(). But, since the current delay is a
key metric of NetEq, it is convenient to have it available in a
simpler way.

This is a re-landing of r9359,
https://webrtc-codereview.appspot.com/51149004, which was reverted in
r9360. The refactoring made in r9669 facilitated the relanding.

TBR=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9801}
2015-08-27 20:12:27 +00:00
a567bf3292 Rename local variable to avoid shadowing
See comment here: https://codereview.webrtc.org/1208993010/diff/180001/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h#newcode189

TBR=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9800}
2015-08-27 18:17:40 +00:00
4376648df0 AudioDecoder: Replace Init() with Reset()
The Init() method was previously used to initialize and reset
decoders, and returned an error code. The new Reset() method is used
for reset only; the constructor is now responsible for fully
initializing the AudioDecoder.

Reset() doesn't return an error code; it turned out that none of the
functions it ended up calling could actually fail, so this CL removes
their error return codes as well.

R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9798}
2015-08-27 13:22:21 +00:00
d83df50e95 Use RtcpPacket to send TMMBN in RtcpSender
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9793}
2015-08-27 08:05:12 +00:00
2f20fbec1d Fix MIPS compile.
BUG=chromium:524885
TEST=none
TBR=turaj

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

Cr-Commit-Position: refs/heads/master@{#9790}
2015-08-26 21:38:55 +00:00
0163fb2ad7 AudioCodingModuleImpl::Encode: Use a Buffer instead of a stack-allocated array
The Buffer is saved between calls, so after the initial allocation
it'll already be allocated and of the right size. The stack-allocated
array had the advantage of requiring no heap allocation at all, but
for most popular encoders it ended up allocating about 15 kB too much,
and now that we allow user-defined encoders there was also the
(remote) possibility that the buffer would actually be too small.

R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9789}
2015-08-26 18:24:31 +00:00
3318f984cd VideoFrameBuffer: Make non-const data access explicit
VideoFrameBuffer currently has two overloaded data() functions for pixel access, one for const and one for non-const. Unfortunately, it will default to the non-const version, even when 'const scoped_refptr<VideoFrameBuffer>&' is used. This is a problem, because many subclasses use RTC_NOTREACHED() in the non-const version.

This CL makes the non-const version of data() explicit with a different, longer function name MutableData().

R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9787}
2015-08-26 14:06:30 +00:00
c464f504dc AndroidVideoCapturerJni: Fix threading issues
The primary fix in this CL is to remove the dangling |thread_| pointer in AndroidVideoCapturerJni. That thread is not safe to use after Stop() has been called. Even after Stop() has been called, we must still be able to return late frames to Java in order to not leak them, so that path has been made thread safe instead. To make sure that we always return frames, the Java frame should be wrapped in a scoped_refptr as quickly as possible, so this CL moves the wrapping from AndroidVideoCapturer to AndroidVideoCapturerJni. This also removes the need for the interface function AndroidVideoCapturerDelegate::ReturnBuffer().

Some other minor changes are:
 * Remove |valid_global_refs_| and all logic related to that. Now that rtc::Bind() captures method objects as scoped_refptr, the destructor of AndroidVideoCapturerJni will not be called before all frames are returned.
 * Remove global ref |j_frame_observer_|. No need for this, we don’t call it and it is kept alive with standard Java memory management.
 * Add helper function ShallowCenterCrop() for VideoFrameBuffers. This functionality already exists in the constructor of WrappedI420Buffer, but it’s more convenient to have it as a separate function.

BUG=webrtc:4742,webrtc:4909
R=glaznev@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9784}
2015-08-25 21:22:24 +00:00
9b351151f9 Move mock_nonlinear_beamformer to only be a header
R=andrew@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9781}
2015-08-25 17:24:51 +00:00
f4772ee436 Get rid of unused types and constants in acm_common_defs.h
R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9779}
2015-08-25 15:31:57 +00:00
1bb8cf846d NetEq/ACM: Refactor how packet waiting times are calculated
With this change, the aggregates for packet waiting times are
calculated in NetEq's StatisticsCalculator insead of in
AcmReceiver. This simplifies things somewhat, and avoids having to
copy the raw data on polling.

R=ivoc@webrtc.org, minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9778}
2015-08-25 11:08:17 +00:00
b6cac8f5ef Get rid of the manual destructor in AudioCodingModuleImpl
By converting three raw pointers to scoped_ptrs, we can eliminate the
need for a manually-defined destructor, and generally sleep better at
night.

R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9776}
2015-08-25 09:48:33 +00:00
87a8fbbf37 Fixing Pylint errors for plot_dynamics.py
R=pbos@webrtc.org
TBR=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9775}
2015-08-25 09:01:43 +00:00
dd00f113a9 Remove no-op and unused methods from AudioCodingModule
This CL removes the following no-op and/or unused methods from
AudioCodingModule and AudioCodingModuleImpl:

ConfigISACBandwidthEstimator
DecoderEstimatedBandwidth
IsInternalDTXReplacedWithWebRtc
REDPayloadISAC
ReplaceInternalDTXWithWebRtc
ResetDecoder
ResetEncoder
SendBitrate
SetReceivedEstimatedBandwidth

R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9773}
2015-08-25 07:37:18 +00:00
bc2296de9e Add a base class to Wav{Reader,Writer} to access shared parameters.
Use it to clean up some code in audioproc_float.cc.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9771}
2015-08-25 00:29:34 +00:00
41eeff49fa More iOS compile fixes.
BUG=chromium:81439
TEST=none
TBR=niklas.enbom

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

Cr-Commit-Position: refs/heads/master@{#9770}
2015-08-24 23:24:22 +00:00
deb4875b74 Fix typos in https://codereview.webrtc.org/1230503003/ not caught by trybots.
BUG=chromium:81439
TEST=none
TBR=niklas.enbom

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

Cr-Commit-Position: refs/heads/master@{#9769}
2015-08-24 22:32:03 +00:00
dce40cf804 Update a ton of audio code to use size_t more correctly and in general reduce
use of int16_t/uint16_t.

This is the upshot of a recommendation by henrik.lundin and kwiberg on an original small change ( https://webrtc-codereview.appspot.com/42569004/#ps1 ) to stop using int16_t just because values could fit in it, and is similar in nature to a previous "mass change to use size_t more" ( https://webrtc-codereview.appspot.com/23129004/ ) which also needed to be split up for review but to land all at once, since, like adding "const", such changes tend to cause a lot of transitive effects.

This was be reviewed and approved in pieces:
https://codereview.webrtc.org/1224093003
https://codereview.webrtc.org/1224123002
https://codereview.webrtc.org/1224163002
https://codereview.webrtc.org/1225133003
https://codereview.webrtc.org/1225173002
https://codereview.webrtc.org/1227163003
https://codereview.webrtc.org/1227203003
https://codereview.webrtc.org/1227213002
https://codereview.webrtc.org/1227893002
https://codereview.webrtc.org/1228793004
https://codereview.webrtc.org/1228803003
https://codereview.webrtc.org/1228823002
https://codereview.webrtc.org/1228823003
https://codereview.webrtc.org/1228843002
https://codereview.webrtc.org/1230693002
https://codereview.webrtc.org/1231713002

The change is being landed as TBR to all the folks who reviewed the above.

BUG=chromium:81439
TEST=none
R=andrew@webrtc.org, pbos@webrtc.org
TBR=aluebs, andrew, asapersson, henrika, hlundin, jan.skoglund, kwiberg, minyue, pbos, pthatcher

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

Cr-Commit-Position: refs/heads/master@{#9768}
2015-08-24 21:52:45 +00:00
39b8eb3ab0 Fix Chromium GN build problem introduced in 608c3cfe
R=henrikg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9766}
2015-08-24 17:50:48 +00:00
4e14f0961b Add support for external decoders in ACM
Test added too.

COAUTHOR=henrik.lundin@webrtc.org
BUG=4474
TBR=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9765}
2015-08-24 12:27:28 +00:00
d8ee4f9915 Use RtcpPacket to send BYE in RtcpSender
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9763}
2015-08-24 10:25:27 +00:00
608c3cfe77 iSAC: Make separate AudioEncoder and AudioDecoder objects
The only shared state is now the bandwidth estimation info.
This reduces the amount and complexity of the locking
substantially.

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

Cr-Commit-Position: refs/heads/master@{#9762}
2015-08-24 09:03:28 +00:00
9deaa86136 Fix initialization/termination of AudioDeviceTemplate
AudioDeviceTemplate doesn't initialize `output_` and `input_` if the
initialization of `audio_manager_` succeeds. Similarly, it doesn't
terminate `input_` and `audio_manager_` if the termination of `output_`
succeeds. This CL fixes this.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#9760}
2015-08-22 01:38:55 +00:00
7612f1711c Fix accidental redeclaration.
Introduced here:
https://codereview.webrtc.org/1306863003/

and caught by the Android bots.

TBR=turaj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9759}
2015-08-21 17:31:49 +00:00
c0775c0291 Fix accessing uninitialized variables when not processing a reverse stream.
TBR=turaj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9758}
2015-08-21 16:32:53 +00:00
81a3e60c63 Use RtcpPacket to send TMMBR in RtcpSender
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9755}
2015-08-21 12:30:17 +00:00
dd4edc5813 Reland of Use RtcpPacket to send REMB in RtcpSender (patchset #1 id:1 of https://codereview.webrtc.org/1300863002/ )
Reason for revert:
This wasn't the cause of the breakage. Re-reverting.
https://code.google.com/p/webrtc/issues/detail?id=4923

Original issue's description:
> Revert of Use RtcpPacket to send REMB in RtcpSender (patchset #1 id:1 of https://codereview.webrtc.org/1290573004/ )
>
> Reason for revert:
> A few bots started failing rtc_unittests after this was commited. Ex https://build.chromium.org/p/client.webrtc/builders/Linux64%20Debug/builds/5048
>
> Original issue's description:
> > Use RtcpPacket to send REMB in RtcpSender
> >
> > BUG=webrtc:2450
> > R=asapersson@webrtc.org
> >
> > Committed: 35ab4baa20
>
> TBR=asapersson@webrtc.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:2450
>
> Committed: https://crrev.com/141c5951f4beda868797c2746002a4b1b267ab2a
> Cr-Commit-Position: refs/heads/master@{#9723}

TBR=asapersson@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9754}
2015-08-21 11:21:56 +00:00
9d15c66830 Include webrtc/base/json.h rather than from jsoncpp directly.
This makes us use the clever code that adapts the path depending on where we build, so it works in google3 too.

BUG=None

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

Cr-Commit-Position: refs/heads/master@{#9752}
2015-08-21 08:00:43 +00:00
22ff75a163 Add unit tests for more packet types in rtcp_sender_unittest.
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9751}
2015-08-21 07:02:53 +00:00
9e260f184b Prevent TimeUntilNextProcess log spam.
Negative values from TimeUntilNextProcess indicate that the module
wanted to run sooner than possible, not that an invalid error code was
returned. As such it's not a contract error.

BUG=webrtc:4879
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#9740}
2015-08-20 08:23:56 +00:00
1f4ffe02fb NetEq: Implement two UMA stats for delay adaptation.
This CL adds calculation and logging of average excess buffer delay
and number of delayed packet outage events per minute.

The first is the average of time spent in the packet buffer for all
packets. The average is calculated for intervals of one minute, and
the result is logged to the UMA stat
WebRTC.Audio.AverageExcessBufferDelayMs.

The second is a counter of delayed packet outage events that is
restarted every minute, and the result is logged to the UMA stat
WebRTC.Audio.DelayedPacketOutageEventsPerMinute. For a description of
delayed packet outages, see previous CL implementing a duration log
for these events.

BUG=webrtc:4915, chromium:488124
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9731}
2015-08-19 08:47:00 +00:00
bef77e234f NetEq: Implement logging of Delayed Packet Outage Events
Measures the duration of each packet loss concealment (a.k.a. expand)
event that is not followed by a merge operation.

Having decoded and played packet m−1, the next expected packet is
m. If packet m arrives after some time of packet loss concealment, we
have a delayed packet outage event. However, if instead packet n>m
arrives, we have a lost packet outage event. In NetEq, the two outage
types results in different operations. Both types start with expand
operations to generate audio to play while the buffer is empty. When a
lost packet outage happens, the expand operation(s) are followed by
one merge operation. For delayed packet outages, merge is not done,
and the expand operations are immediately followed by normal
operations.

This change also includes unit tests for the new statistics.

BUG=webrtc:4915, chromium:488124
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9725}
2015-08-18 12:58:20 +00:00
141c5951f4 Revert of Use RtcpPacket to send REMB in RtcpSender (patchset #1 id:1 of https://codereview.webrtc.org/1290573004/ )
Reason for revert:
A few bots started failing rtc_unittests after this was commited. Ex https://build.chromium.org/p/client.webrtc/builders/Linux64%20Debug/builds/5048

Original issue's description:
> Use RtcpPacket to send REMB in RtcpSender
>
> BUG=webrtc:2450
> R=asapersson@webrtc.org
>
> Committed: 35ab4baa20

TBR=asapersson@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9723}
2015-08-18 11:37:39 +00:00
35ab4baa20 Use RtcpPacket to send REMB in RtcpSender
BUG=webrtc:2450
R=asapersson@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9722}
2015-08-18 09:54:18 +00:00
805d8fb6eb Remove WebRtcIsac_Highpass_float().
This function is unreferenced and not even declared in a header file.

Split from https://codereview.webrtc.org/1228793004/ .

BUG=none
TEST=none

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

Cr-Commit-Position: refs/heads/master@{#9716}
2015-08-14 19:38:09 +00:00
60d9b332a5 Integrate Intelligibility with APM
- Integrates intelligibility into audio_processing.
    - Allows modification of reverse stream if intelligibility enabled.
- Makes intelligibility available in audioproc_float test.
    - Adds reverse stream processing to audioproc_float.
- (removed) Makes intelligibility toggleable in real time in voe_cmd_test.
- Cleans up intelligibility construction, parameters, constants and dead code.

TBR=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9713}
2015-08-14 17:35:58 +00:00
cf7f54d6f4 Use RtcpPacket to send RPSI in RtcpSender
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9704}
2015-08-13 11:37:48 +00:00
0365a27f56 Use RtcpPacket to send SLI in RtcpSender
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9695}
2015-08-11 08:02:44 +00:00
4bc66fc387 Fix data race in AMP.
R=aluebs@webrtc.org, aluebs-webrtc
BUG=516637

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

Cr-Commit-Position: refs/heads/master@{#9694}
2015-08-10 22:26:43 +00:00
4de6622bcc Fix a bug in computing audio delay on ios device. Converts seconds to
milliseconds by multiplying 1000 instead of dividing 1000.

BUG=
R=tkchin@webrtc.org

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

Patch from Jiawei Ou <jiawei.ou@gmail.com>.

Cr-Commit-Position: refs/heads/master@{#9693}
2015-08-10 20:24:56 +00:00
4cee419e07 Separating voice activity flag from audio level in RtpHeaderExtension.
VAD flag was embedded in RtpHeaderExtension.audioLevel, which is not easy to interpret. This CL tries to separate the flag with the actual audio level.

BUG=
R=andrew@webrtc.org, henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9691}
2015-08-10 13:08:46 +00:00
2328a94ec7 Add average rtt to CallStatsObserver and an average rtt histogram.
TBR=mflodman@webrtc.org

BUG=webrtc:4711,webrtc:4548

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

Cr-Commit-Position: refs/heads/master@{#9687}
2015-08-07 11:27:56 +00:00
8381b37488 Removed bjornv from OWNERS and added two new owners
BUG=

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

Cr-Commit-Position: refs/heads/master@{#9685}
2015-08-06 13:25:37 +00:00
62dae19098 Use RtcpPacket to send FIR in RtcpSender
BUG=webrtc:2450

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

Cr-Commit-Position: refs/heads/master@{#9677}
2015-08-05 09:37:21 +00:00
ef7228cfa0 Selectable number of TL screenshare loopback test. Also contains some tweaks to make a single TL perform better.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#9676}
2015-08-05 09:02:09 +00:00
907dcfd0e1 Increase packet limit in jitter buffer.
Especially the VP9 codec currently may overshoot bitrate target at sudden picture changes, resulting in frames over 800 packets.
This limit should be reduced again once the codec behaves.

BUG=webrtc:4889

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

Cr-Commit-Position: refs/heads/master@{#9675}
2015-08-05 08:09:15 +00:00