Commit Graph

4101 Commits

Author SHA1 Message Date
a743794d06 audio_processing/aecm: Create() now returns a pointer to the object
Changed Create() to return a pointer to the object rather than an error message, which is in line with how objects should be created.

BUG=441
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/51939004

Cr-Commit-Position: refs/heads/master@{#9315}
2015-05-28 13:58:53 +00:00
71861a0e20 Remove GetSendSideDelay from RtpRtcp.
These stats are reported using a callback either way, removing a getter
+ an old related deadlock suppression.

BUG=1695, 2999
R=stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50119004

Cr-Commit-Position: refs/heads/master@{#9314}
2015-05-28 12:45:45 +00:00
7cd16b03b2 video_processing_unittest: Only create files for visual inspection if the boolean flag 'gen_files' is set.
BUG=4648
R=henrik.lundin@webrtc.org, kjellander@webrtc.org, stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/56399004

Cr-Commit-Position: refs/heads/master@{#9313}
2015-05-28 12:44:39 +00:00
796e17237b Fixes crash in WebRtcAudioManager.setCommunicationMode
BUG=b/21360598
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/53579004

Cr-Commit-Position: refs/heads/master@{#9311}
2015-05-28 12:18:42 +00:00
c41fe5d5d0 Force 8 kHz sampling rate on Android emulator.
BUG=None
R=henrika@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/55419004

Cr-Commit-Position: refs/heads/master@{#9310}
2015-05-28 12:16:45 +00:00
8bb6ea3da9 Reset speech encoder before hooking it up to RED or CNG
Commit 7e0c7d49 ("Add support for external encoders in ACM") changed
things around so that we no longer recreate the speech encoder when
adding CNG or RED to an existing encoder. This isn't correct, since
those two expect to be in sync with the speech encoder they work with.
Solve the problem by resetting the speech encoder before hooking in
RED or CNG.

BUG=crbug/490368
R=jmarusic@webrtc.org
TBR=henrik.lundin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/53589004

Cr-Commit-Position: refs/heads/master@{#9307}
2015-05-28 11:37:27 +00:00
11beccd712 Remove external report blocks from RtcpSender and rtp_rtcp interface.
Feature does not seem to be used and complicates other refactoring of
the rtcp module.

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

Review URL: https://webrtc-codereview.appspot.com/54569004

Cr-Commit-Position: refs/heads/master@{#9304}
2015-05-28 09:10:34 +00:00
23c2e55479 Remove remaining .mk files.
These files are not supported, kept up to date or likely to build
anymore.

BUG=
R=glaznev@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/46489004

Cr-Commit-Position: refs/heads/master@{#9303}
2015-05-28 09:05:11 +00:00
b444b3f0ff Redirect logs to stderr in audioproc_f.
Notably, this displays logs from the AGC.

Also add a "time per chunk" field to the perf output.

R=aluebs@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/56509004

Cr-Commit-Position: refs/heads/master@{#9302}
2015-05-28 00:26:12 +00:00
92fbbb21f8 Switch acm_receiver over to using base/logging.h
BUG=
R=henrik.lundin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/57439004

Cr-Commit-Position: refs/heads/master@{#9298}
2015-05-27 20:07:46 +00:00
9303eaf512 Don't unnecessarily set mode/category on AVAudioSession.
Doing so clears transient properties on the session back to defaults.

BUG=
R=tkchin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/52589004

Cr-Commit-Position: refs/heads/master@{#9297}
2015-05-27 17:24:00 +00:00
cf808d2366 Add new fast mode for NetEq's Accelerate operation
This change instroduces a mode where the Accelerate operation will be
more aggressive. When enabled, it will allow acceleration at lower
correlation levels, and possibly remove multiple pitch periods at
once.

The feature is enabled through NetEq::Config, and is off by
default. This means that bit-exactness tests are currently not
affected.

A unit test was added for the Accelerate class, with and without fast
mode enabled.

BUG=4691
R=minyue@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50039004

Cr-Commit-Position: refs/heads/master@{#9295}
2015-05-27 12:33:39 +00:00
c065cc797d Clarify boolean flags in neteq_opus_quality_test.
Note that the use of boolean flags in gflags is a bit unnatural. For setting a boolean flag to false: putting "no" in front of its name (see http://gflags.github.io/gflags/)

We make this clearer by defaulting boolean flags to false, and clarifying it in the description.

BUG=
R=tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/53539004

Cr-Commit-Position: refs/heads/master@{#9293}
2015-05-27 08:01:18 +00:00
c13cacbb39 Remove an unused method in NetEq::Expand
TBR=ivoc@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/53549004

Cr-Commit-Position: refs/heads/master@{#9292}
2015-05-27 07:23:53 +00:00
de4703c5d1 Refactor common_audio/vad: Create now returns the handle directly instead of an error code
Changed the WebRtcVad_Create() function to the more conventional format of returning the handle directly instead of an error code to take care of.
In addition NULL was changed to nullptr in the files where it applied.

Affected components:
* AGC
* VAD
* NetEQ

BUG=441, 3347
TESTED=locally on Linux and trybots
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/51919004

Cr-Commit-Position: refs/heads/master@{#9291}
2015-05-27 05:23:11 +00:00
6a1ba8c17f Fix coding style nits.
uint32_t parameters don't need to be passed by reference. The
VCMJitterBuffer destructor doesn't need to be virtual because the
class has no virtual methods.

R=stefan@webrtc.org
BUG=none

Review URL: https://webrtc-codereview.appspot.com/55499004

Cr-Commit-Position: refs/heads/master@{#9288}
2015-05-26 21:11:46 +00:00
e87d48719f Fix ARM64 detection for VP8 and VP9 wrappers.
BUG=4702
R=marpan@google.com, stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/57459004

Cr-Commit-Position: refs/heads/master@{#9287}
2015-05-26 20:10:38 +00:00
e14e5f4468 Solve TSan warning about unlocking an unlocked mutex.
In my previous cl, https://webrtc-codereview.appspot.com/52479004/, there is 'UnLock()' left when we switched to scoped lock, which will cause TSan warning sometimes.
===========================================================
WARNING: ThreadSanitizer: unlock of an unlocked mutex (or by a wrong thread) (pid=9981)
#0 pthread_mutex_unlock <null> (libjingle_peerconnection_unittest+0x00000046836f)
#1 webrtc::CriticalSectionPosix::Leave() webrtc/system_wrappers/source/critical_section_posix.cc:39:10 (libjingle_peerconnection_unittest+0x000000bc368d)
#2 ~CriticalSectionScoped webrtc/system_wrappers/interface/critical_section_wrapper.h:46:48 (libjingle_peerconnection_unittest+0x000000a61fcb)
#3 webrtc::AudioDeviceLinuxPulse::RecThreadProcess() webrtc/modules/audio_device/linux/audio_device_pulse_linux.cc:3003 (libjingle_peerconnection_unittest+0x000000a61fcb)
===========================================================

BUG=3056
TEST=bots
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/56439004

Cr-Commit-Position: refs/heads/master@{#9282}
2015-05-26 08:29:27 +00:00
905495cfaa Introduce NetEq::Config::ToString and use it in NetEq's constructor
R=minyue@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/54559004

Cr-Commit-Position: refs/heads/master@{#9279}
2015-05-25 14:58:46 +00:00
d8399e630f Also provide sample rate when registering decoders
This replaces the old practice of looking up the sample rate in a
table, which won't work when we add support for external decoders.

COAUTHOR=henrik.lundin@webrtc.org
BUG=4474
R=jmarusic@webrtc.org, minyue@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/54469004

Cr-Commit-Position: refs/heads/master@{#9276}
2015-05-25 12:40:05 +00:00
323b132f5e Protect ACM decoder buffer in stereo.
In https://code.google.com/p/webrtc/source/detail?r=8730, I did a protection on ACM decoder buffer from being overflow.

However, the I misunderstood the return unit for PacketDuration(), and therefore, stereo decoders are not well protected.

This CL fixed this.

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

Review URL: https://webrtc-codereview.appspot.com/47289004

Cr-Commit-Position: refs/heads/master@{#9275}
2015-05-25 11:49:45 +00:00
57e5fd2e60 PRESUBMIT: Improve PyLint check and add GN format check.
Add pylintrc file based on
https://code.google.com/p/chromium/codesearch#chromium/src/tools/perf/pylintrc
bit tightened up quite a bit (the one in depot_tools is far
more relaxed).

Remove a few excluded directories from pylint check and fixed/
suppressed all warnings generated.

Add GN format check + formatted all GN files using 'gn format'.
Cleanup redundant rules in tools/PRESUBMIT.py

TESTED=Ran 'git cl presubmit -vv', fixed the PyLint violations.
Ran it again with a modification in webrtc/build/webrtc.gni, formatted
all the GN files and ran it again.

R=henrika@webrtc.org, phoglund@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50069004

Cr-Commit-Position: refs/heads/master@{#9274}
2015-05-25 10:55:50 +00:00
ee369e4277 Refactoring of AudioTrackJni and AudioRecordJni using new JVM/JNI classes
BUG=NONE
TEST=./webrtc/build/android/test_runner.py gtest -s modules_unittests --gtest_filter=AudioDevice*
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/51079004

Cr-Commit-Position: refs/heads/master@{#9271}
2015-05-25 08:11:38 +00:00
67b635a47e Fix simulcast_encoder_adapter giving full target_bitrate to the 2nd layer of any simulcast setup during InitEncode.
BUG=
R=stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/51069004

Cr-Commit-Position: refs/heads/master@{#9265}
2015-05-22 21:12:15 +00:00
e4cb4e9aae Fix jitter buffer bug around out-of-order packets and non-RTX padding.
tl;dr - non-continuous frames (due to padding) would get stuck as incomplete if the previous complete frame arrived and was decoded before the padding arrived.This fix re-checks the incomplete frame list for continuous frames after old packets arrive.

When padding is enabled and RTX is not, padding is sent as empty RTP packets tacked onto the end of completed frames (meaning: same timestamp, but after a packet with the marker bit set). Given the following set of circumstances, codified in the new unit test method, a frame can get permanently stuck in the incomplete frames list:

- Frame A decoded (packets 94-95). Next expected sequence number is 96.
- Frame C arrives (packets 100-101) and is marked complete. It isn't continuous, since it starts at 100, so it's placed in the incomplete frame list.
- Frame B arrives (packets 96-97) and is complete, since 97 has a marker bit.  Turns out that packets 98-99 are padding, but the receiver doesn't know that.
- Frame B is decoded, removed from the decodable frames list, and last decoded state is updated.
- Packets 98-99 arrive. They hit the IsOldPacket check and update the last decoded state, but they don't trigger FindAndInsertContinuousFrames.
- Further packets/frames arrive and complete, but FindAndInsertContinuousFrames only runs on frames that are newer than the newly completed frame.

In this state, Frame C is permanently stuck as incomplete, so the jitter buffer overall is stuck until max NACK age (default: 450 packets), the max NACK list size (default: 200 packets), or a keyframe arrives and IsContinuous returns true for the keyframe.

(Before the November refactoring, Frame B wouldn't have to have been decoded for the bug to trigger; just having a complete continuous frame at any time before the padding arrived would cause this state, as FindAndInsertContinuousFrames was only called when the frame originally became continuous and was inserted into the decodable frames list. Post refactoring, the frame is removed/re-added to the decodable list on every padding packet that arrives)

BUG=
R=stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50959004

Cr-Commit-Position: refs/heads/master@{#9264}
2015-05-22 21:03:08 +00:00
477487410a Enable AudioProcessing48kHzSupport by default
Because of the Finch experiment, this will not affect Chrome's behaviour at all.
The SNRs in AudioProcessingTest.Formats were only increased to the next multiple of 5.

BUG=webrtc:3146
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43359004

Cr-Commit-Position: refs/heads/master@{#9263}
2015-05-22 18:59:59 +00:00
367c868c99 AudioEncoderCng: Handle case where speech encoder is reset
Previously, AudioEncoderCng required the speech encoder to not change
its mind regarding the number of 10 ms frames in the next packet
between calls to AudioEncoderCng::EncodeInternal()---specifically, it
could handle an upward but not a downward adjustment. With this patch,
it can handle a downward adjustment too, by simply saving the
overshoot data for the next call to EncodeInternal().

It will still not handle the case where the encoder's reported number
of 10 ms frames in the next packet is inconsistent with the behavior
of its Encode() function when called with no intervening changes to
the encoder.

R=henrik.lundin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/53469005

Cr-Commit-Position: refs/heads/master@{#9261}
2015-05-22 13:13:24 +00:00
f761d10393 Update NetEq Quality Test.
1. move channel number of input file to the base class

2. limit channel number to be 1, since the resampler support only mono at the moment

3. adding a logging function

4. adding more switch to neteq_opus_quality_test

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

Review URL: https://webrtc-codereview.appspot.com/47239004

Cr-Commit-Position: refs/heads/master@{#9260}
2015-05-22 09:21:58 +00:00
5af6d47d26 Code style change for quality_scaler.
TBR=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/52559004

Cr-Commit-Position: refs/heads/master@{#9257}
2015-05-21 21:11:14 +00:00
98d8cf58ee Hardware VP8 encoding: Use QP as metric for resize.
Add vp8 frame header parser to get QP from vp8 bitstream.

BUG= 4273
R=glaznev@webrtc.org, marpan@google.com, pbos@webrtc.org
TBR=stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/49259004

Cr-Commit-Position: refs/heads/master@{#9256}
2015-05-21 18:11:53 +00:00
a3ba0c7f5a RTPFragmentationHeader::VerifyAndAllocateFragmentationHeader: Verify that size fits in 16 bits
This CL change the function declaration from uint16_t to size_t, and CHECKs that the size fits in uint16_t before proceeding.

BUG=484432
R=tommi@webrtc.org

Committed: https://crrev.com/10022cdeae785187e1d4329042b4ed294c393a16
Cr-Commit-Position: refs/heads/master@{#9246}

Review URL: https://webrtc-codereview.appspot.com/47229004

Cr-Commit-Position: refs/heads/master@{#9253}
2015-05-21 15:39:00 +00:00
523183b4aa Disables AudioDeviceTest.StartStopPlayout for Nexus 9 only
BUG=4682
R=henrik.lundin@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50019004

Cr-Commit-Position: refs/heads/master@{#9249}
2015-05-21 11:42:47 +00:00
848d524879 Revert "RTPFragmentationHeader::VerifyAndAllocateFragmentationHeader: Verify that size fits in 16 bits" https://webrtc-codereview.appspot.com/47229004/
Reason for revert: Breaks Chromium FYI compilation

This reverts commit 10022cdeae785187e1d4329042b4ed294c393a16.

BUG=484432
TBR=tommi

Review URL: https://webrtc-codereview.appspot.com/54499004

Cr-Commit-Position: refs/heads/master@{#9247}
2015-05-21 11:25:04 +00:00
10022cdeae RTPFragmentationHeader::VerifyAndAllocateFragmentationHeader: Verify that size fits in 16 bits
This CL change the function declaration from uint16_t to size_t, and CHECKs that the size fits in uint16_t before proceeding.

BUG=484432
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47229004

Cr-Commit-Position: refs/heads/master@{#9246}
2015-05-21 09:40:35 +00:00
b302ad4eab Remove unused VideoDecoder methods.
Removing VideoDecoder::Copy() and
VideoDecoder::SetCodecConfigParameters().

Also adding override to VP8DecoderImpl.

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

Review URL: https://webrtc-codereview.appspot.com/55409004

Cr-Commit-Position: refs/heads/master@{#9244}
2015-05-21 07:42:14 +00:00
1a07a1e825 Solve data race in Pulse audio implementation.
BUG=3056, 1320
TEST=AutoTest

Mainly add threadchecker and remove unnecessary lock.
And some more styling working.
- audio_device_pulse_linux.cc: wrap lines longer than 80 chars. And add '.' to some comments around. Not do it to all places.
- audio_mixer_manager_pulse_linux.cc: Here I adopt some chromium practice. We use to do many things to the failure of pulse operation, which causes most of the data race issue. In chromium, if we failed to call any pulse function, we just fail it w/o use the previous results. Here I did same. Please check if it's good.

R=bjornv@webrtc.org, henrika@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/52479004

Cr-Commit-Position: refs/heads/master@{#9243}
2015-05-21 04:42:24 +00:00
05c760533f Add resampling support in AudioBuffer::DeinterleaveFrom
It is necessary for adding 48kHz support to the AudioProcessing::AnalyzeReverseStream int interface (It was not necessary for 32kHz since in that case the splitting filter is more efficient).

BUG=webrtc:3146
R=andrew@webrtc.org, bjornv@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/56389004

Cr-Commit-Position: refs/heads/master@{#9241}
2015-05-20 21:39:17 +00:00
9b2b40231d Ensures that RECORD_AUDIO permission is required to start recording.
Avoids existing crash and ensures that error message is passed up to Libjingle. Will lead to the following logcat output:

E/libjingle(31404): Error(channel.cc:1514): Failed to SetSend 2 on voice channel

BUG=b/21273153
R=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/54459004

Cr-Commit-Position: refs/heads/master@{#9236}
2015-05-20 14:08:44 +00:00
5779d14321 Avoids crash when StartRecording conflicts with existing recording application
BUG=b/21066709
R=hbos@webrtc.org, magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/56379004

Cr-Commit-Position: refs/heads/master@{#9235}
2015-05-20 14:06:49 +00:00
c3f4dbc40b Remove rtp_rtcp/ dump functionality.
Removes RTP dumping from VideoEngine and VoiceEngine.

BUG=1695
R=henrika@webrtc.org, stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47179004

Cr-Commit-Position: refs/heads/master@{#9234}
2015-05-20 12:10:56 +00:00
ca667dbfdd Remove VCM debug recordings.
BUG=1695
R=stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/46299004

Cr-Commit-Position: refs/heads/master@{#9233}
2015-05-20 11:47:26 +00:00
664cdafb8a Replace assert() with static_assert() if the condition is evaluatable at
compile time.

The condition of static_assert() is evaluated at compile time which is safer and
more efficient.

Note that static_assert() requires C++11.

The changes were generated by the misc-static-assert ClangTidy check by alexfh@google.com

R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/51019004

Cr-Commit-Position: refs/heads/master@{#9231}
2015-05-20 09:11:02 +00:00
931e6583b2 Remove unnecessary dependencies for voe when building with include_internal_audio_device==0.
In particular and practical terms, this avoids pulling in AudioDeviceModuleImpl and associated classes, in Chrome.

BUG=
R=henrika@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/49999004

Cr-Commit-Position: refs/heads/master@{#9229}
2015-05-20 07:44:23 +00:00
cb7f8ce2df Clear ARM NEON flag
Merge WEBRTC_ARCH_ARM64_NEON and WEBRTC_ARCH_ARM_NEON into one
WEBRTC_HAS_NEON.
Replace WEBRTC_DETECT_ARM_NEON by WEBRTC_DETECT_NEON.
Replace WEBRTC_ARCH_ARM by WEBRTC_ARCH_ARM64 for arm64 cpu.

BUG=4002
R=andrew@webrtc.org, jridges@masque.com, kjellander@webrtc.org

Change-Id: I870a4d0682b80633b671c9aab733153f6d95a980

Review URL: https://webrtc-codereview.appspot.com/49309004

Cr-Commit-Position: refs/heads/master@{#9228}
2015-05-20 05:20:04 +00:00
68898a2652 Remove AudioDeviceUtility.
The class doesn't do anything in almost all cases except for grabbing and releasing locks + allocate memory.  There are a couple of methods there such as WaitForKey and GetTimeInMs that are used, but those methods aren't specific to audio and we have implementations of these elsewhere.  The third method, StringCompare isn't used anywhere (and also isn't specific to audio).

BUG=
R=henrika@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50009004

Cr-Commit-Position: refs/heads/master@{#9220}
2015-05-19 15:27:50 +00:00
df0c05b047 Sort source file list for [rtc_]include_internal_audio_device. No code change.
TBR=henrika@webrtc.org
BUG=

Review URL: https://webrtc-codereview.appspot.com/52539004

Cr-Commit-Position: refs/heads/master@{#9219}
2015-05-19 13:30:24 +00:00
c2b63fe1f6 Adding Sony Xperia Z2 D6503 to HW AEC blacklist
BUG=b/21264352
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/56369004

Cr-Commit-Position: refs/heads/master@{#9218}
2015-05-19 12:07:04 +00:00
24e56e3ee8 Fixes Chromium FYI build issue on Android.
See https://build.chromium.org/p/chromium.webrtc.fyi/waterfall?builder=Android%20Builder%20(dbg) for details

BUG=
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47219004

Cr-Commit-Position: refs/heads/master@{#9217}
2015-05-19 09:48:36 +00:00
8db8069660 Change high frequency correction range
From 6kHz-6.5kHz to 3kHz-5kHz. Previous range had unreliable mask values, letting high frequencies from all directions through. The new range is wider and lower, which results in better estimates.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47089004

Cr-Commit-Position: refs/heads/master@{#9213}
2015-05-19 01:19:39 +00:00
79b2e06782 Make the BlockDifference() functions return DiffInfo as their callers expect.
This prevents the compiler from warning about possible type truncations at the
callsites.

BUG=chromium:81439
TEST=none
R=wez@chromium.org

Review URL: https://webrtc-codereview.appspot.com/41059004

Cr-Commit-Position: refs/heads/master@{#9211}
2015-05-18 21:39:07 +00:00