3269 Commits

Author SHA1 Message Date
henrik.lundin
2c38c20e7b Fix out-of-buffer write in iLBC
In some cases, the decoder can write outside of an allocated array. See
the new comment in the code for more details.

BUG=chromium:568885, webrtc:5305

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

Cr-Commit-Position: refs/heads/master@{#11641}
2016-02-16 18:01:57 +00:00
Stefan Holmer
44c65e9eed Enable adaptive threshold experiment by default.
BUG=webrtc:4711
R=mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11640}
2016-02-16 17:22:30 +00:00
Peter Boström
9d0c43242b Remove video-codec max bitrate from TMMBN.
TMMBN was capped by configured max bitrate for no apparent reason.
Removing this to not require payload-type reconfiguration on new
video-codec settings. Actual removal of payload-type reconfiguration
will happen in a pending CL.

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

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

Cr-Commit-Position: refs/heads/master@{#11639}
2016-02-16 16:59:36 +00:00
henrik.lundin
ee31f0a7d5 Fix out-of-buffer read in iLBC
In some cases, the decoder can read outside of an allocated array. See
the new comment in the code for more details.

BUG=chromium:568889, webrtc:5305

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

Cr-Commit-Position: refs/heads/master@{#11637}
2016-02-16 16:42:15 +00:00
Stefan Holmer
62a5ccdb53 Update bitrate only when we have incoming packet.
Also cleans up some unused code and makes sure the min bitrate of the BWE can't be set to anything lower than 10 kbps.

BUG=webrtc:5474
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11636}
2016-02-16 16:07:31 +00:00
peah
58cf5f14ec Changed order of events when synthesizing a call.
This is needed when synthesizing a call based on
48 kHz audio files as otherwise an error is
generated about the wrong sample rate is generated.
That error is in turned caused by the sample rate
being changed from the default 16 kHz
at the first Capture API call event.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11635}
2016-02-16 15:26:25 +00:00
Peter Boström
0453ef857f Prevent busy-looping PacedSender on small packets.
Skip accounting for small packets and suspend the prober if no
large-enough packets have been sent for some time. This especially seems
to have triggered in audio-only calls where all packets are too small,
making TimeUntilNextProbe return 0 forever, causing the module process
thread to wake up forever.

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

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

Cr-Commit-Position: refs/heads/master@{#11634}
2016-02-16 15:23:16 +00:00
kwiberg
16c5a96630 Replace scoped_ptr with unique_ptr in webrtc/modules/audio_coding/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11622}
2016-02-15 10:27:34 +00:00
kwiberg
3747838afb Replace scoped_ptr with unique_ptr in webrtc/modules/audio_coding/test/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11618}
2016-02-15 04:41:04 +00:00
kwiberg
2d0c33277c Replace scoped_ptr with unique_ptr in webrtc/modules/audio_coding/neteq/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11616}
2016-02-14 17:28:39 +00:00
kwiberg
91d9756bc6 Replace scoped_ptr with unique_ptr in webrtc/modules/audio_coding/codecs/
BUG=webrtc:5520

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

Cr-Commit-Position: refs/heads/master@{#11613}
2016-02-14 09:10:08 +00:00
peah
be61562bfb Moved the GainControlForNewAGC class to be a separate file.
Apart from being motivated in order to make the source files shorter
this is needed when separating the APM submodules structs into
separate files.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11611}
2016-02-14 00:40:53 +00:00
henrika
e78765bd4b Removes Nexus 5 from AEC and NS blacklists
BUG=b/27086464
R=tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11605}
2016-02-12 15:33:44 +00:00
Peter Boström
b72dada927 Remove Reset from conditionally-compiled decoders.
Reset is no longer called but removal of them was missed in a previous
commit.

BUG=webrtc:5475
TBR=hbos@webrtc.org,tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11603}
2016-02-12 14:57:03 +00:00
aluebs
73e2373af2 Fix negative shift exponent in WPDTree
BUG=webrtc:5510

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

Cr-Commit-Position: refs/heads/master@{#11585}
2016-02-11 19:03:04 +00:00
Alejandro Luebs
66d2481106 Fix division by zero errors in IntelligibilityEnhancer
BUG=webrtc:5509
R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11584}
2016-02-11 18:37:23 +00:00
danilchap
9f35d55c58 Added accessor and Parse function.
Create function merged into one.

BUG=webrtc:5260

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

Cr-Commit-Position: refs/heads/master@{#11581}
2016-02-11 16:19:06 +00:00
henrik.lundin
07c51e3f79 Fix two UBSan warnings in NetEq
Both were related to very large jumps in RTP timestamps.

BUG=webrtc:5488

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

Cr-Commit-Position: refs/heads/master@{#11569}
2016-02-11 11:35:51 +00:00
Alejandro Luebs
42d8aa77d8 Fix IntelligibilityEnhancerTest.TestRenderUpdate test
TBR=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11561}
2016-02-11 00:10:37 +00:00
aluebs
c466badd86 Using the NS noise estimate for the IE
Review URL: https://codereview.webrtc.org/1672343002

Cr-Commit-Position: refs/heads/master@{#11559}
2016-02-10 20:03:05 +00:00
jbauch
541f1869ca Cleanup temporary files created by tests.
This CL removes some temporary files created by OptionsFileTest and
TransientFileUtilsTest.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11554}
2016-02-10 17:10:00 +00:00
peah
1147b75b52 Moved buffering of farend into the EchoSubtraction method.
This makes sense since the buffered data is only used by
the echo subtraction method. Furthermore, it simplifies the
upcoming modifications to the echo subtraction method since
the way the buffering is done can then be specific for the
echo subtraction implementation used.

The change is bitexact and this was verified using a fairly
extensive bitexactness suite.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11547}
2016-02-10 11:55:38 +00:00
henrik.lundin
6608d9a1aa NetEq: Fix a negative shift value
In some rare occations (very low energy signal), a shift value happened
to be negative. This is now fixed by using the WEBRTC_SPL_SHIFT_W32,
which in essence checks the sign of the number of shifts and performs a
right or left shift accordingly.

The fix reverts to how the code was written in old NetEq; see
4d363ae305/webrtc/modules/audio_coding/neteq/normal.c (165).

BUG=webrtc:5490

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

Cr-Commit-Position: refs/heads/master@{#11546}
2016-02-10 10:47:56 +00:00
sergeyu
cc9669c6b8 Cleanup shared memory handling in DesktopCapturer interface.
Previously shared memory buffers for DesktopCapturer were created
using DesktopCapturer::Callback::CreateSharedBuffer(). That made it
difficult to proxy DesktopCapturer interface from one thread to another.
This CL adds SharedBufferFactory interface that's allowed to be called
on a background thread. This also simplifies clients that don't
need to use shared memory, as they no longer need to override
CreateSharedBuffer().

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

Cr-Commit-Position: refs/heads/master@{#11543}
2016-02-09 23:13:32 +00:00
Alejandro Luebs
fa639f0bb3 Surface the noise estimate of the NS to be used by other components
R=henrik.lundin@webrtc.org, turaj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11541}
2016-02-09 19:24:51 +00:00
kjellander
78ddd733b0 Update path for audioproc_debug proto output.
This will make it align with protoc tools that use the relative
path from the project root to the files in the output path.
Having this, no hacks will need to be applied downstream.

TBR=henrik.lundin@webrtc.org
NOTRY=True

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

Cr-Commit-Position: refs/heads/master@{#11540}
2016-02-09 16:13:16 +00:00
kjellander
4bba35f735 Switch third_party/gflags to use updated GitHub repo.
This pulls in several fixes and gets Visual Studio 2015 support.
The new repo is located at https://github.com/gflags/gflags
which is mirrored in Chrome infrastructure at
https://chromium.googlesource.com/external/github.com/gflags/gflags

New configuration headers were generated according to README.webrtc
on Windows and Linux. I verified the Linux generated ones are working
on Mac. The generating headers on Mac are identical with only a minor
difference (an __unused attribute) that doesn't effect the build.

BUG=webrtc:5185
NOTRY=True
NOPRESUBMIT=True
TESTED=Successfully ran:
out/Release/video_quality_measurement --input_filename=resources/foreman_cif.yuv  --width=352 --height=288
to verify flags are still being parsed properly.
I also ran the compile trybots and the baremetal bots
(since they run tests that have gflags flags).

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

Cr-Commit-Position: refs/heads/master@{#11539}
2016-02-09 14:47:47 +00:00
danilchap
09fef9e6f7 [rtp_rtcp] Added Sender Report Request rtcp packet.
BUG=webrtc:5260
R=åsapersson

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

Cr-Commit-Position: refs/heads/master@{#11538}
2016-02-09 13:57:56 +00:00
hbos
0715a83a07 Avoid OpenH264 encoder bug for #threads > 1 on Mac and Chromium+Sandbox.
Until the bug has been further investigated, we're limiting the number
of threads to 1 to avoid problems. See crbug.com/583348.

BUG=chromium:500605, chromium:468365, chromium:583348

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

Cr-Commit-Position: refs/heads/master@{#11536}
2016-02-09 10:34:34 +00:00
henrik.lundin
e594213a2b Fix div-by-0 in NetEq's StatisticsCalculator
If a StatisticsCalculator::PeriodicUmaAverage object was created and
then deleted without any samples being logged, the destructor would call
the Metric() method, which calculated sum_/counter_. However, with no
samples logged, counter_ is 0.

This was found and verified using UBSan tests; see the bug for more info.

BUG=webrtc:5490
R=ivoc@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11534}
2016-02-09 08:36:02 +00:00
jbauch
d2a22960c3 Enable cpplint for webrtc/modules/pacing and fix all uncovered cpplint errors.
This CL enableds cpplint for webrtc/modules/pacing.

BUG=webrtc:5460
NOTRY=true

TESTED=Fixed issues reported by:
find webrtc/modules/pacing -type f -name *.cc -o -name *.h | xargs cpplint.py
followed by 'git cl presubmit'.

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

Cr-Commit-Position: refs/heads/master@{#11531}
2016-02-09 07:18:30 +00:00
Peter Boström
c0ae305a9e Fix null-pointer dereference in RTPSenderVideo.
Since the address of the dereference is taken this inputs a garbage
almost-null pointer into RtpPacketizer. Not likely that a load/store is
performed on the address, but UBSan fires and it's a source of potential
future errors.

BUG=webrtc:5124, webrtc:5490
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11528}
2016-02-08 14:00:22 +00:00
Stefan Holmer
58c664c13d Clean up of CongestionController.
Removes unused methods and moves out ViERemb to Call.

R=pbos@webrtc.org, solenberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11527}
2016-02-08 13:31:53 +00:00
danilchap
7336eeb690 [rtp_rtcp] rtcp::Tmmbn cleaned and got Parse function
Added accessor and Parse function
removed dependencies on structures from rtcp_utility.h (except RtcpCommonHeader)
removed limitation of 50 items per TMMBN.

BUG=webrtc:5260
R=åsapersson

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

Cr-Commit-Position: refs/heads/master@{#11524}
2016-02-08 11:35:20 +00:00
kjellander
f6b5509229 Fix GYP and GN references that are invalid in Chromium builds.
There were a couple of GN and GYP references that were incorrect in Chromium builds:
- GN references between WebRTC targets must be using relative paths, not absolute.
- GYP references between WebRTC targets must be using the <(webrtc_root)v variable
  in order to be expanded to the correct path in a Chromium build.

NOTRY=True
TBR=hjon@webrtc.org, hbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11521}
2016-02-08 07:04:33 +00:00
Weiyong Yao
e796f96378 check v4l frame rate capability with bitwise method.
BUG=webrtc:5462
TEST=autotest
R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11512}
2016-02-06 01:06:25 +00:00
hbos
900f97534b H264: Improve FFmpeg decoder performance by using I420BufferPool.
Had to update I420BufferPool to allow zero-initializing buffers.

BUG=chromium:500605, chromium:468365, webrtc:5428

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

Cr-Commit-Position: refs/heads/master@{#11505}
2016-02-05 16:08:39 +00:00
danilchap
f174e3a260 [rtp_rtcp] rtcp::Tmmbr cleaned and got Parse function
Added accessor and Parse function
removed dependencies on structures from rtcp_utility.h (except RtcpCommonHeader)

BUG=webrtc:5260
R=åsapersson

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

Cr-Commit-Position: refs/heads/master@{#11502}
2016-02-05 12:56:40 +00:00
peah
48fa27136a Made implicit casts in the echo canceller explicit.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#11501}
2016-02-05 11:16:27 +00:00
Peter Boström
1d04ac6f29 Untangle ViEChannel and ViEEncoder.
Extracts shared members outside the two objects, removing PayloadRouter
from receivers and the VCM for ViEChannel from senders.

Removes Start/StopThreadsAndSetSharedMembers that was used to set the
shared state between them.

Also adding DCHECKs to document what's only used by the
sender/receiver side.

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

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

Cr-Commit-Position: refs/heads/master@{#11500}
2016-02-05 10:25:52 +00:00
Peter Boström
e449915455 Measure encoding time on encode callbacks.
Permits measuring encoding time even when performed on another thread,
typically for hardware encoding, instead of assuming that encoding is
blocking the calling thread.

Permitted encoding time is increased for hardware encoders since they
can be timed to keep 30fps, for instance, without indicating overload.

Merges EncodingTimeObserver into EncodedFrameObserver to have one post-encode
callback.

BUG=webrtc:5042, webrtc:5132
R=asapersson@webrtc.org, mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11499}
2016-02-05 10:13:41 +00:00
kjellander
988d31eb9b Move gtest_prod_util.h out of webrtc/test tree.
This is needed because the target is defined in webrtc/common.gyp
and its current location crosses package boundaries when generating
projects for some build systems.

NOTRY=True

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

Cr-Commit-Position: refs/heads/master@{#11496}
2016-02-05 08:23:57 +00:00
danilchap
a92d6be411 rtcp::TmmbItem designed to replace RTCPUtility::RTCPPacketRTPFBTMMBRItem (for creating and parsing rtcp TMMBR/TMMBN packets)
std::vector<rtcp::TmmbItem> will replace TMMBRSet class for storage, processing and preparing TMBBR/TMMBN
(i.e. this TmmbItem replaces Timber structure introduced in https://codereview.webrtc.org/1474693002 )
Previous structures store bitrate in kbps. TmmbItem use bps removing need to regularly divide and multiply by 1000.

BUG=webrtc:5260
R=åsapersson

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

Cr-Commit-Position: refs/heads/master@{#11491}
2016-02-04 15:33:44 +00:00
sprang
2ddb8bd359 Avoid undefined behavior in vp8 screenshare_layers
active_layer_ could be dereferenced while being -1...
Also added som DCHECKs

BUG=webrtc:5490

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

Cr-Commit-Position: refs/heads/master@{#11486}
2016-02-04 11:59:57 +00:00
asapersson
c2148a50d2 Integrate helper macros for calling histograms with different names (real-time vs screenshare and rampup metrics).
Sparse macro is replaced and new implementation in metrics.h is used.

BUG=webrtc:5283

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

Cr-Commit-Position: refs/heads/master@{#11483}
2016-02-04 08:33:29 +00:00
hbos
9dc5928eb2 Ability to disable the effects of |rtc_use_h264| with DisableRtcUseH264.
Renamed the WEBRTC_THIRD_PARTY_H264 macro to WEBRTC_USE_H264 to match flag name.

The idea is to be able to turn off H264 from chromium with this function because...
1) The Chromium trybots will soon use this flag, we want to temporarily disable H264 from chromium even if flag is set in case something is broken. That way when we are ready to flip the switch the trybots will run our test code then and not after it is already enabled.
2) If feature is launched and we discover major problems we can easily disable H264 and merge with beta/stable.
3) Or, if feature is behind a *runtime* flag, this is how we would control if it is used or not.

The idea is to call DisableRtcUseH264 in chromium's PeerConnectionDependencyFactory.

BUG=chromium:500605, chromium:468365
NOTRY=True
NOPRESUBMIT=True

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

Cr-Commit-Position: refs/heads/master@{#11474}
2016-02-03 13:09:40 +00:00
Stefan Holmer
10880011d9 Support multiple rtx codecs.
Adds negotiation of rtx codecs for red and vp9. To keep backwards
compatibility with older Chrome versions, this change includes two
hacks:
1. Red packets will be retransmitted over the rtx codec associated with
   vp8 if no rtx codec is associated with red. This is how Chrome does
   it today and ensures that we still can send red over rtx to older
   versions.

2. If rtx packets associated with the media codec (vp8/vp9 etc) are
   received and red has been negotiated, we will assume that the sender
   incorrectly has packetized red inside the rtx header associated with
   media. We will therefore restore it with the red payload type
   instead, which ensures that we can still receive rtx associated with
   red from old versions.

Offering multiple rtx codecs to older versions should not be a problem
since old versions themselves only try to negotiate rtx for vp8.

R=pbos@webrtc.org
TBR=mflodman@webrtc.org
BUG=webrtc:4024
TEST=Verified by running apprtc and emulating packet loss between Chrome with and without the patch.

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

Cr-Commit-Position: refs/heads/master@{#11472}
2016-02-03 12:30:10 +00:00
noahric
d983c3c9e5 Add SEI to the list of packets counted as keyframe.
It's generated by some encoders between SPS/PPS and an IDR frame, so we should treat it like sps/pps.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#11470}
2016-02-03 11:43:50 +00:00
kjellander
c3a0983d4b Roll chromium_revision a8e5140..c6076f2 (372922:372974) incl. update to Opus v.1.1.2
Includes updates to tests for Opus v.1.1.2, reveiwed in
https://codereview.webrtc.org/1629413002/

Change log: a8e5140..c6076f2
Full diff: a8e5140..c6076f2

Changed dependencies:
* src/third_party/catapult: 471db30..d4d48e6
* src/third_party/opus/src: cae6961..655cc54
DEPS diff: a8e5140..c6076f2/DEPS

No update to Clang.

BUG=chromium:580524
TBR=

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

Cr-Commit-Position: refs/heads/master@{#11464}
2016-02-02 21:18:42 +00:00
tommi
ae695e95a6 Refactor RtpSender and SSRCDatabase.
* SSRCDatabase doesn't need to be a global instance, so I've changed it to be a "regular" class (i.e. construct via ctor, not maybe via GetSSRCDatabase( + release via ReturnSSRCDatabase())).  If we ever have parallel tests running in the same process, they won't have the problem of using the same ssrc database.

* Made RtpSender a more const.  Also added some todos for myself and holmer to look into clarifying the threading model.

* Switched from CriticalSectionWrapper to rtc::CriticalSection

* Changed the random seeding to use TickTime::Now().Ticks() since TimeInMicroseconds() could return 0 when the process was starting.  This is what TimeInMicroseconds() does anyway but now we don't need to access a global clock object.

BUG=webrtc:3062

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

Cr-Commit-Position: refs/heads/master@{#11462}
2016-02-02 16:34:16 +00:00