390 Commits

Author SHA1 Message Date
aleloi
17dfa7425f Gyp->GN migration of RTPjitter.
BUG=6162

NOTRY=True

Review-Url: https://codereview.webrtc.org/2196283002
Cr-Commit-Position: refs/heads/master@{#13620}
2016-08-03 08:17:29 +00:00
aleloi
5556dcb24c Migrated GN target rtpcat.
BUG=6162

Review-Url: https://codereview.webrtc.org/2202193002
Cr-Commit-Position: refs/heads/master@{#13605}
2016-08-02 11:27:32 +00:00
aleloi
8266773f18 Migrated target RTPencode to GN
TBR=henrik.lundin@webrtc.org

BUG=6162

Review-Url: https://codereview.webrtc.org/2195353002
Cr-Commit-Position: refs/heads/master@{#13599}
2016-08-02 08:45:58 +00:00
flim
1cd46643d7 Disable some Opus tests pending an update
These tests will be reenabled and fixed after Opus 1.1.3 has landed in
Chromium and is rolled into WebRTC.

BUG=

Review-Url: https://codereview.webrtc.org/2185673002
Cr-Commit-Position: refs/heads/master@{#13534}
2016-07-26 16:01:45 +00:00
ossu
108ecec51c Removed LEGACY_BITEXACT from neteq_impl.cc and updated the ACM unit tests.
I'll be rewriting AcmReceiver soon and am trying to reduce the amount of
old stuff that needs to be supported.

I've manually checked the outputs of the AcmReceiver bitexactness
tests with this change. A large part of the tests are still bitexact,
with one section only differing slightly in timings. Nothing audible
unless playing the old and new versions back simultaneously.

The output of NetEqDecoderTest were also changed due to this CL, although only on android. I built and ran the test locally and compared the audio output manually - the changes were the same as for the other tests; i.e. very slight timing changes for a part of the output.

I updated the network stats checksum for android without analyzing it further. I expect it goes hand-in-hand with the changes to the output; i.e. the changes in it are fine because the audio output is fine. Likely, the stats will show changes in the usage of CNG, since that is what the code changes.

BUG=webrtc:1361

Review-Url: https://codereview.webrtc.org/2117763002
Cr-Commit-Position: refs/heads/master@{#13415}
2016-07-08 15:45:26 +00:00
henrik.lundin
d5f50a1b53 NetEq: Fix a bug in DelayPeakDetector causing asserts to trigger
In some situation, typically when incoming packets were reordered, the
DelayPeakDetector::Update method may be called twice (or more) with
non-zero inter_arrival_time argument, but without the TickTimer object
being updated in between (i.e., packets coming in more or less at the
same time). In these situations, a delay peak may be registered with
zero peak period. This could eventually trigger the DCHECK in
DelayPeakDetector::MaxPeakPeriod().

With this fix, the problem is solved by not registering peaks for which
the TickTimer object has not moved since the last peak.

The problem was originally introduced with
https://codereview.webrtc.org/1921163003.

BUG=webrtc:6021

Review-Url: https://codereview.webrtc.org/2085233002
Cr-Commit-Position: refs/heads/master@{#13257}
2016-06-22 16:07:07 +00:00
henrik.lundin
e8a77e3309 Refactor neteq_rtpplay
This change is a major refactoring of the neteq_rtpplay tool. It
consists of the following parts:

- NetEqTest class: Breaks out the main simulation loop from
  neteq_rtpplay into a separate class with well defined inputs and
  outputs.
- NetEqInput: Interface class for the input to NetEqTest.
- NetEqPacketSourceInput: Implementation of NetEqInput that provides a
  PacketSource objects with a NetEqInput interface. This has two
  subclasses; one for RtpFileSource and one for RtcEventLogSource.
- NetEqReplacementInput: An object that modifies the packets provided by
  another NetEqInput object, and replaces the packet payloads with meta
  data readable by a FakeDecodeFromFile decoder.
- FakeDecodeFromFile: An AudioDecoder implementation that produces
  "decoded" data by reading from an audio file.

BUG=webrtc:2692, webrtc:5447

Review-Url: https://codereview.webrtc.org/2020363003
Cr-Commit-Position: refs/heads/master@{#13252}
2016-06-22 13:34:08 +00:00
kwiberg
342f74005f NetEq: Ask AudioDecoder for sample rate instead of passing it as an argument
BUG=webrtc:5801
NOTRY=true

Review-Url: https://codereview.webrtc.org/2027993002
Cr-Commit-Position: refs/heads/master@{#13162}
2016-06-16 10:18:09 +00:00
kwiberg
347d35129e AudioDecoder: Remove the default implementation of SampleRateHz
And implement SampleRateHz in a bunch of mocks.

BUG=webrtc:5801
NOTRY=true

Review-Url: https://codereview.webrtc.org/2029543002
Cr-Commit-Position: refs/heads/master@{#13161}
2016-06-16 08:59:13 +00:00
henrik.lundin
919518613f NetEq: Rename Nack to NackTracker to avoid name collisions in GN
BUG=webrtc:5949
NOTRY=True
R=kjellander@webrtc.org

Review-Url: https://codereview.webrtc.org/2045243002
Cr-Commit-Position: refs/heads/master@{#13069}
2016-06-08 13:43:49 +00:00
kwiberg
c0f2dcf9ed NetEq decoder database: Don't keep track of sample rate for builtin decoders
This allows us to get rid of the function that computes it, which gets
us one step closer to getting rid of the NetEqDecoder type.

BUG=webrtc:5801

Review-Url: https://codereview.webrtc.org/2021063002
Cr-Commit-Position: refs/heads/master@{#12974}
2016-05-31 13:28:09 +00:00
kwiberg
6c2eab34f8 AudioDecoder: New method SampleRateHz, + implementations for our codecs
This will let NetEq (and the factory, and every layer in between) keep
track of just the decoder, instead of decoder and sample rate.

BUG=webrtc:5801

Review-Url: https://codereview.webrtc.org/2024633002
Cr-Commit-Position: refs/heads/master@{#12968}
2016-05-31 09:46:28 +00:00
henrik.lundin
303d3e1782 Fixing neteq_rtpplay
A regression happened in https://codereview.webrtc.org/2006723002,
causing neteq_rtpplay not to work. The problem was that when the main
code was moved inside of the webrtc::test namespace, it was no longer
visible to the linker. Meanwhile, the dependency on test_support_main
rather than test_support caused the executable to be a gtest.

In this fix, the gyp dependencies are corrected, and a main method is
added outside of the namespaces.

NOTRY=True

Review-Url: https://codereview.webrtc.org/2018473002
Cr-Commit-Position: refs/heads/master@{#12918}
2016-05-26 12:56:07 +00:00
henrik.lundin
612c25e7af NetEq: Fix stats counting in muted mode
The NetEqNetworkStatistics::expand_rate was not incremented during muted
state, which caused under-reporting of that metric. This change fixes
that.

BUG=chromium:613321, webrtc:5608

Review-Url: https://codereview.webrtc.org/2003203004
Cr-Commit-Position: refs/heads/master@{#12894}
2016-05-25 15:21:09 +00:00
ossu
e352578bc8 Moved injection of AudioDecoderFactory into voe::Channel.
Channel's API remains unchanged, but the creation of a BuiltinAudioDecoderFactory is now in Channel. The next step would be to amend Channel's API (through CreateChannel, I believe) to allow an AudioDecoderFactory to be sent along.

BUG=webrtc:5805

Review-Url: https://codereview.webrtc.org/1992763002
Cr-Commit-Position: refs/heads/master@{#12893}
2016-05-25 14:37:47 +00:00
henrik.lundin
46ba49c622 Let PacketSource::NextPacket() return an std::unique_ptr
The return type of PacketSource::NextPacket() is changed from a naked
pointer to an std::uniqe_ptr. The interface contract was and still is
that the ownership is passed from the callee to the caller, but a
unique_ptr makes this explicit.

BUG=webrtc:2692

Review-Url: https://codereview.webrtc.org/2005873002
Cr-Commit-Position: refs/heads/master@{#12884}
2016-05-25 05:50:54 +00:00
henrik.lundin
ce5570e54e Move neteq_rtpplay.cc inside webrtc::test namespace
This simplifies the code.

BUG=webrtc:2692

Review-Url: https://codereview.webrtc.org/2006723002
Cr-Commit-Position: refs/heads/master@{#12873}
2016-05-24 13:15:03 +00:00
ossu
e725f7c73e Turned AudioDecoderFactory into a RefCounted thing to use with scoped_refptr.
First step of AudioDecoderFactory injection CLs. AudioDecoderFactories will be shared, and shared_ptr is currently off the table, so this CL changes the current uses of AudioDecoderFactory from std::unique_ptr to rtc::scoped_refptr.

BUG=webrtc:5805

Review-Url: https://codereview.webrtc.org/1990803004
Cr-Commit-Position: refs/heads/master@{#12815}
2016-05-19 17:48:12 +00:00
terelius
d5c1a0bd5d New parser for event log. Manually parse the outermost EventStream to more easily deal with corrupt or partially written logs.
Changed rtpdump converter and neteq tool to use new parser, but still aborting if the file is corrupt.

Review-Url: https://codereview.webrtc.org/1768773002
Cr-Commit-Position: refs/heads/master@{#12714}
2016-05-13 07:43:04 +00:00
henrik.lundin
7a926812d8 NetEq: Implement muted output
This CL implements the muted output functionality in NetEq. Tests are
added. The feature is currently off by default, and AcmReceiver makes
sure that the muted state is not engaged.

BUG=webrtc:5608

Review-Url: https://codereview.webrtc.org/1965733002
Cr-Commit-Position: refs/heads/master@{#12711}
2016-05-12 20:51:37 +00:00
minyue-webrtc
79553cb66e Using ring buffer for AudioVector in NetEq.
AudioVector used NetEq was based on a shift buffer, which has a high complexity, and the complexity is very much dependent on the capacity of the buffer.

This CL changes the shift buffer to a ring buffer.

Reduction in the CPU usages of NetEq is expected.

BUG=608644
R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12676}
2016-05-10 17:56:10 +00:00
henrik.lundin
f3995f71ce NetEq: Implement Expand::Muted
Adding a new method to the Expand class, which will answer the question
whether an ongoing expansion has been faded down to zero
amplitude (i.e., been muted). Also adding a test.

This new functionality will be used in CLs to follow.

BUG=webrtc:5608
NOTRY=True

Review-Url: https://codereview.webrtc.org/1967473004
Cr-Commit-Position: refs/heads/master@{#12672}
2016-05-10 12:54:43 +00:00
henrik.lundin
60f6ce2a29 NetEq: Update stats earlier in the GetAudioInternal call
This is to prepare for implementation of NetEq muted state, which may
cause GetAudioInternal to make an early return just before the call to
GetDecision. With this change, the stats are updated in any case.

BUG=webrtc:5608
NOTRY=True

Review-Url: https://codereview.webrtc.org/1948663002
Cr-Commit-Position: refs/heads/master@{#12671}
2016-05-10 10:52:13 +00:00
Henrik Lundin
47b17dc59c NetEq: Replace timescale_holdoff_ with a Countdown timer
The timescale_holdoff_ is a counter in the DecisionLogic class. The
purpose is to enforce a minimum number of GetAudio calls
between (successfull) time-scaling operations (i.e., Accelerate and
Pre-emptive Expand operations). With this change, the counter is
replaced with a Countdown timer obtained from a TickTimer object.

BUG=webrtc:5608
R=tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12670}
2016-05-10 08:21:11 +00:00
pbos
c7a6569713 Revert of Disable failing modules_unittests for UBSan. (patchset #1 id:40001 of https://codereview.webrtc.org/1915813002/ )
Reason for revert:
Fix upstream should've landed in our repository.

Original issue's description:
> Disable failing modules_unittests for UBSan.
>
> BUG=webrtc:5820
> TBR=pbos@webrtc.org
>
> Committed: https://crrev.com/c23bf2e54d922486254cdd7657aafceaa958ce25
> Cr-Commit-Position: refs/heads/master@{#12482}

TBR=kjellander@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:5820

Review-Url: https://codereview.webrtc.org/1937153002
Cr-Commit-Position: refs/heads/master@{#12647}
2016-05-06 19:50:08 +00:00
minyue
1746179c96 Reducing neteq sync buffer size.
BUG=608644

Review-Url: https://codereview.webrtc.org/1947453002
Cr-Commit-Position: refs/heads/master@{#12614}
2016-05-03 20:32:13 +00:00
henrik.lundin
b1fb72bebb NetEq: Move counting of generated CNG samples from DecisionLogic
The counting is moved to NetEqImpl, and the new counter is realized as a
Stopwatch object. The DecisionLogic class still has to maintain record
of when the CNG period is shortened, in order to reduce the delay. This
is recorded in a new noise_fast_forward_ member in DecisionLogic.

BUG=webrtc:5608

Review-Url: https://codereview.webrtc.org/1914303004
Cr-Commit-Position: refs/heads/master@{#12608}
2016-05-03 15:18:54 +00:00
kwiberg
5178ee86ba NetEq: Use a BuiltinAudioDecoderFactory to create decoders
Later steps in the refactoring will have the factory injected from the
outside rather than owned by NetEq.

BUG=webrtc:5801

Review-Url: https://codereview.webrtc.org/1928293002
Cr-Commit-Position: refs/heads/master@{#12604}
2016-05-03 08:39:08 +00:00
minyue
5bd3397e53 Adding 120 ms frame length support in NetEq.
BUG=webrtc:1015

Review-Url: https://codereview.webrtc.org/1901633002
Cr-Commit-Position: refs/heads/master@{#12592}
2016-05-02 11:46:19 +00:00
minyue
53ff70f582 Reland "Avoiding overflow in cross correlation in NetEq."
The original CL is https://codereview.webrtc.org/1908623002/

An error was caused by that and this CL fix that problem and reland the CL.

BUG=

Review-Url: https://codereview.webrtc.org/1931933004
Cr-Commit-Position: refs/heads/master@{#12589}
2016-05-02 08:50:34 +00:00
kwiberg
bfefb03ec1 Replace scoped_ptr with unique_ptr everywhere
But keep #including scoped_ptr.h in .h files, so as not to break
WebRTC users who expect those .h files to give them rtc::scoped_ptr.

BUG=webrtc:5520

Review-Url: https://codereview.webrtc.org/1937693002
Cr-Commit-Position: refs/heads/master@{#12581}
2016-05-01 21:53:55 +00:00
minyue
4f90677527 Making NetEq bitexactness test independent on reference files.
NetEq bitexactness test depended on reference files which differs from platform to platform. This makes it very hard to update Neteq.

New method maintains the ability to save output into files. But it verifies the checksum only. With this, when bitexactness test fails, we can still check closely to the output file if need, but the test becomes much easier to modify.

BUG=

Review-Url: https://codereview.webrtc.org/1928923002
Cr-Commit-Position: refs/heads/master@{#12567}
2016-04-29 18:05:18 +00:00
nisse
ef8b61e110 Enable -Winconsistent-missing-override flag.
The problem with gmock is worked around by commenting out any other override declarations in classes using gmock.

NOPRESUBMIT=True
BUG=webrtc:3970

Review-Url: https://codereview.webrtc.org/1921653002
Cr-Commit-Position: refs/heads/master@{#12563}
2016-04-29 13:09:23 +00:00
henrik.lundin
8f8c96d192 NetEq: Use TickTimer in DelayManager
This change replaces packet_iat_count_ms_ and max_timer_ms_, two
time-counting member variables in DelayManager, with Stopwatch objects
obtained from a TickTimer.

BUG=webrtc:5608

Review-Url: https://codereview.webrtc.org/1929863002
Cr-Commit-Position: refs/heads/master@{#12554}
2016-04-29 06:19:27 +00:00
minyue
8c22962474 Revert of Avoiding overflow in cross correlation in NetEq. (patchset #6 id:180001 of https://codereview.webrtc.org/1908623002/ )
Reason for revert:
There seems an error made in this patch.

Hi Henrik,

I think the bit shift returned by CrossCorrelationWithAutoShift may be wrongly used by DotProduct.

We'd better revert this CL.

Doing another fix (and future fixes) will be paintful. I will work on a easy-to-modify bitexactness test first.

Original issue's description:
> Avoiding overflow in cross correlation in NetEq.
>
> BUG=

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

Review-Url: https://codereview.webrtc.org/1925053002
Cr-Commit-Position: refs/heads/master@{#12543}
2016-04-28 09:16:54 +00:00
henrik.lundin
f393370f02 NetEq: Introduce TickTimer in DelayPeakDetector
Specifically, this change replaces peak_period_counter_ms_ with
peak_period_stopwatch_ which obtains a Stopwatch object from
TickTimer. Necessary plumbing to get the TickTimer through to the
DelayPeakDetector is also included.

BUG=webrtc:5608
NOTRY=True

Review-Url: https://codereview.webrtc.org/1921163003
Cr-Commit-Position: refs/heads/master@{#12542}
2016-04-28 08:54:33 +00:00
minyue
3d09dfdbba Avoiding overflow in cross correlation in NetEq.
BUG=

Review-Url: https://codereview.webrtc.org/1908623002
Cr-Commit-Position: refs/heads/master@{#12538}
2016-04-27 22:06:18 +00:00
ossu
6353723b02 DecoderDatabase::IsComfortNoise: Improved efficiency.
Changed DecoderDatabase::IsComfortNoise to do one, rather than four,
lookups of the rtp payload type. IsComfortNoise is called more frequently
since CNG was changed to not be an AudioDecoder.

BUG=606765

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

Cr-Commit-Position: refs/heads/master@{#12533}
2016-04-27 14:43:45 +00:00
henrik.lundin
034154b46a Re-land "NetEq: Silence a few unexpected mock calls in NetEqImplTest"
The change made in https://codereview.webrtc.org/1918193002 was
accidentally reverted in https://codereview.webrtc.org/1921243002, but
is now reinstalled.

TBR=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12529}
2016-04-27 13:11:53 +00:00
kwiberg
84be511ac0 Replace the remaining scoped_ptr with unique_ptr in webrtc/modules/
(This is a re-land of https://codereview.webrtc.org/1921233002, which
got reverted for breaking Chromium.)

BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#12522}
2016-04-27 08:20:08 +00:00
henrik.lundin
8833f850cf NetEq: Correcting a mistake in NetEqImplTest
The mistake was made in https://codereview.webrtc.org/1921243002/.

TBR=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12520}
2016-04-27 07:34:23 +00:00
henrik.lundin
1d9061e8ae NetEq: Dependency injection through one struct instead of many params
With this change, the NetEqImpl constructor takes a struct
(NetEqImpl::Dependencies) as input instead of a collection of
individual dependencies. The NetEqImpl unit test fixture is modified
to make better used of unique_ptrs.

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

Cr-Commit-Position: refs/heads/master@{#12514}
2016-04-26 19:19:43 +00:00
terelius
52d4e6bf5e Revert of Replace the remaining scoped_ptr with unique_ptr in webrtc/modules/ (patchset #1 id:40001 of https://codereview.webrtc.org/1921233002/ )
Reason for revert:
Fails on Chromium FYI bots.

https://build.chromium.org/p/chromium.webrtc.fyi/builders/Linux%20Builder/builds/5392/

Original issue's description:
> Replace the remaining scoped_ptr with unique_ptr in webrtc/modules/
>
> BUG=webrtc:5520
>
> Committed: https://crrev.com/2c27a062ee46258abe9facc2cceee74f09bf6a99
> Cr-Commit-Position: refs/heads/master@{#12511}

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

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

Cr-Commit-Position: refs/heads/master@{#12513}
2016-04-26 16:32:09 +00:00
kwiberg
2c27a062ee Replace the remaining scoped_ptr with unique_ptr in webrtc/modules/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#12511}
2016-04-26 15:38:03 +00:00
henrik.lundin
84f8cd6df4 NetEq: Use TickTimer in PacketBuffer
This change makes use of the TickTimer::Stopwatch in Packets. When a
packet is inserted into the PacketBuffer, a Stopwatch object is
attached to it. When the packet is extracted from the buffer, the
Stopwatch is read to know how long the packet waited in the buffer.

BUG=webrtc:5608

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

Cr-Commit-Position: refs/heads/master@{#12508}
2016-04-26 14:45:26 +00:00
henrik.lundin
d29005e485 NetEq: Silence a few unexpected mock calls in NetEqImplTest
TBR=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12507}
2016-04-26 13:19:21 +00:00
Peter Boström
d98d457134 Remove "This file includes unit tests" comments.
Superfluous, neteq_unittests.cc conveys that the file contains unittests
for NetEq for instance.

BUG=
TBR=henrik.lundin@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12504}
2016-04-26 11:44:02 +00:00
henrik.lundin
ed4972116c Add a TickTimer object to NetEqImpl
The TickTimer is incremented on each call to GetAudioInternal(). Other
than that, the new object is not used yet.

Also adding a unit test in NetEqImplTest to verify that the tick timer
is incremented in the call to NetEq::GetAudio.

BUG=webrtc:5608

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

Cr-Commit-Position: refs/heads/master@{#12493}
2016-04-25 17:11:45 +00:00
ossu
97ba30eedf Convert CNG into C++ and remove it from AudioDecoder
Broke out CNG from AudioDecoder as they didn't really share an interface.

Converted the CNG code to C++, to make initialization and resource handling easier. This includes several changes to the behavior, favoring RTC_CHECKs over returning error codes.

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

Cr-Commit-Position: refs/heads/master@{#12491}
2016-04-25 14:56:05 +00:00
kjellander@webrtc.org
c23bf2e54d Disable failing modules_unittests for UBSan.
BUG=webrtc:5820
TBR=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12482}
2016-04-25 04:43:20 +00:00