Commit Graph

3872 Commits

Author SHA1 Message Date
01aeaee719 Fix GetSignatureDigestAlgorithm for openssl to prepare for EC key switch.
BUG=
R=davidben@chromium.org, juberti@google.com

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

Cr-Commit-Position: refs/heads/master@{#9061}
2015-04-22 19:18:16 +00:00
a8e285d193 Remove webrtc/base/move.h, and make types move-only manually
In days of yore, move.h contained complicated macros for approximating
move-only behavior in C++03. But since we live in the future now, and
can rely on C++11 features---including real move semantics!---it makes
more sense to just write the handful of required lines by hand in each
move-only class.

(We only live in the near future, though, not in some sci-fi
intergalactic civilization singularity type future, so we have to
define Pass() methods for these classes since we're not allowed to use
std::move().)

R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9060}
2015-04-22 17:43:59 +00:00
96d1d89c3e Do not register bandwidth observer for receive only channels.
An incoming rtcp report block is inserted to both send and receive channels in Call::DeliverRtcp. The report block may also be accepted by each receive channel (in addition to the send channel) but fails to calculate the rtt (=0).
Remove registration of bandwidth observer for receive channels. Prevents multiple callbacks to the bitrate controller (and with incorrect rtt) for an incoming report block.

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

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

Cr-Commit-Position: refs/heads/master@{#9055}
2015-04-22 12:57:32 +00:00
5a3178042b Reformatting RTPtimeshift.cc file.
BUG=2692
R=henrik.lundin@webrtc.org, kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9052}
2015-04-22 11:11:39 +00:00
ac69016b0f Improve TCP by adding a real timeout to in flight packets.
Note that the timeout should depend on the smoothed RTT, but for now is hard coded to 1000 ms.

This solves issues where a full cwnd gets lost.

R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9051}
2015-04-22 11:11:28 +00:00
e555b7b440 Fix CC flags in GN Windows build.
It was applying a GCC command line flag on Windows

R=brettw@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#9049}
2015-04-22 06:49:37 +00:00
fb49451014 Disables mic bump-up level if not built with chromium
In http://chromegw.corp.google.com/viewvc/chrome-internal?view=rev&revision=61016 a feature to bump up low input audio levels to a fixed value of 33%. In https://webrtc-codereview.appspot.com/43109004/ a configuration to choose an arbitrary level was added, but still using 33% as default.
The original bump-up feature was added to fix audio issues in chrome, but affected also non-chrome users. This CL disables the feature for non-chrome applications.

Note that the default value is set to 0, but any value up to 12 will do. Zero was selected because it is more clear that the feature is turned off.

BUG=4529
R=andrew@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9048}
2015-04-22 04:39:47 +00:00
8f85dbcce4 Reduce the number of registers used in MIPS optimizations.
This change is needed by ChromeOS as it introduces -fno-omit-frame-pointer
flag (see code.google.com/p/chromium/issues/detail?id=477749). This causes
compile error for MIPS, as some MIPS optimization blocks use maximum possible
number of available registers.
Also, this change contains minor GN build fix for MIPS platform regarding the
pitch_filter_mips.c / pitch_filter_c.c file inclusion.

BUG=477749
R=andrew@webrtc.org, djordje.pesut@imgtec.com, tina.legrand@webrtc.org

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

Patch from Ljubomir Papuga <lpapuga@mips.com>.

Cr-Commit-Position: refs/heads/master@{#9047}
2015-04-21 23:52:26 +00:00
bbf7c864ad Add a new BitBuffer class to webrtc base.
Provides a read-only interface for reading byte and bit-sized data from
an underlying buffer in network/big-endian order. Also provides a method
for reading exponential golomb encoded values, which will be useful in
H.264 packet parsing (separate CL).

BUG=
R=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9046}
2015-04-21 23:29:53 +00:00
61b4d518af Dynamic resolution change for VP8 HW encode.
Off by default for now.

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

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

Cr-Commit-Position: refs/heads/master@{#9045}
2015-04-21 22:29:53 +00:00
5464a6e548 Remove VideoCodingModule::InitializeReceiver.
This code is no longer used to reset, so we can just initialize the
object in the constructor.

BUG=4391
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9044}
2015-04-21 14:35:34 +00:00
9dbbcfbcb5 Remove VideoCodingModule::InitializeSender.
This code is no longer used to reset, so we can just initialize the
object in the constructor.

BUG=4391
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9043}
2015-04-21 13:54:56 +00:00
95702246d7 Fix broken perf prints.
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9042}
2015-04-21 13:44:01 +00:00
5f92051f06 Fix bug in TCP implementation (simulations).
The problem was that only ACKed packets were subtracted from in_flight_, but lost packets were never removed, which caused TCP to stop sending eventually.

R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9041}
2015-04-21 12:48:07 +00:00
e62202fedf Support handling multiple RTX but only generate SDP with RTX associated with VP8.
This implementation registers RTX-APT map inside RTP sender and receiver.
While it only generates SDP with RTX associated with VP8 to make it
compatible with previous Chrome versions.

Should add following changes after reaches stable,
* Use RTX-APT map for building and restoring RTP packets.
* Add RTX support for RED or VP9 in Video engine.
* Set RTX payload type for RED inside FecConfig in EndToEndTest.

BUG=4024
R=mflodman@webrtc.org, pbos@webrtc.org, pthatcher@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9040}
2015-04-21 12:25:42 +00:00
6cff9cf8a3 Revert "Remove simulcast modules from ViEReceiver."
This reverts commit 14a97f0a9148be18a66a435a5933441eb023bc82.

Introduces a deadlock due to acquiring simulcast_rtp_rtcp_ in
ReceivedRTCPPacket.

BUG=4568, chromium:478911
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9039}
2015-04-21 11:47:02 +00:00
06b08afb67 VoE: VoEBase unit test
Changes:
1. Documented return values of VoEBase methods.
2. Added/modified VoEBase unit test.

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

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

Cr-Commit-Position: refs/heads/master@{#9038}
2015-04-21 09:39:41 +00:00
011c00f708 rtc::Buffer: Accept void* in addition to the byte-sized types
We used to accept void* (until 9478437f), and we'll have to continue
to do so for a little while longer, until Chromium doesn't need it
anymore.

TBR=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9035}
2015-04-20 20:55:41 +00:00
9478437fde rtc::Buffer improvements
1. Constructors, SetData(), and AppendData() now accept uint8_t*,
     int8_t*, and char*. Previously, they accepted void*, meaning that
     any kind of pointer was accepted. I think requiring an explicit
     cast in cases where the input array isn't already of a byte-sized
     type is a better compromise between convenience and safety.

  2. data() can now return a uint8_t* instead of a char*, which seems
     more appropriate for a byte array, and is harder to mix up with
     zero-terminated C strings. data<int8_t>() is also available so
     that callers that want that type instead won't have to cast, as
     is data<char>() (which remains the default until all existing
     callers have been fixed).

  3. Constructors, SetData(), and AppendData() now accept arrays
     natively, not just decayed to pointers. The advantage of this is
     that callers don't have to pass the size separately.

  4. There are new constructors that allow setting size and capacity
     without initializing the array. Previously, this had to be done
     separately after construction.

  5. Instead of TransferTo(), Buffer now supports swap(), and move
     construction and assignment, and has a Pass() method that works
     just like std::move(). (The Pass method is modeled after
     scoped_ptr::Pass().)

R=jmarusic@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9033}
2015-04-20 12:03:00 +00:00
91543731c3 Do not define POSIX.
It breaks integration with upstream re2 library on Chromium.

Without patching re2 library, with this define, it produces the
following error:

../../third_party/re2/re2/re2.h:254:5: error: expected identifier
    POSIX, // POSIX syntax, leftmost-longest match

As we define POSIX on the command line, the C preprocessor changes
RE2::POSIX to nothing and thus break the compilation. :(

See chromium-dev mailing list for this discussion in
https://groups.google.com/a/chromium.org/d/topic/chromium-dev/UXCHnX7pV44/discussion

BUG=None
TEST=ninja -C out/Debug, everything compiles as before
R=sergeyu@chromium.org, tommi@webrtc.org

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

Patch from Thiago Farina <tfarina@chromium.org>.

Cr-Commit-Position: refs/heads/master@{#9032}
2015-04-20 11:14:22 +00:00
599beb8687 Revert "AudioEncoderDecoderIsac: Merge the two config structs"
Reason for revert - breaks Hangouts

This reverts commit 7c324cac50ac38122b3f3b26455bc55ad834bfc0.

BUG=chromium:478161

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

Cr-Commit-Position: refs/heads/master@{#9030}
2015-04-17 21:13:59 +00:00
a51e8f490c Fix some simulation issues.
Don't default to an infinite queue.
Make sure the computation of missing packets is correct.

R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9028}
2015-04-17 13:48:58 +00:00
14a97f0a91 Remove simulcast modules from ViEReceiver.
Instead of maintaining two lists of simulcast modules, deliver RTCP
packets to simulcast modules inside ViEChannel.

BUG=1695
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9027}
2015-04-17 13:13:52 +00:00
1d19893f3a Add TCP fairness test.
BUG=4548
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9026}
2015-04-17 12:54:34 +00:00
b0b54259c3 Let rtp_analyze parse absolute sender time
Also change to use virtual_packet_length_bytes in order to print the
actual packet size of the complete packet even when the RTP file only
contains RTP headers.

BUG=2692
R=tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9025}
2015-04-17 09:46:56 +00:00
61c2a6f241 Remove rtc::Buffer::length(), since no one uses it anymore
Chromium now uses size() instead, just like WebRTC.

This CL also fixes a new length() call that had crept in.

R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9024}
2015-04-16 19:48:52 +00:00
d4e80146e3 Fix build errors in r9022 / 09bdc1e5f5a9.
Implicit casts detected by Win64 Release.

TBR=pbos@webrtc.org

BUG=4548

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

Cr-Commit-Position: refs/heads/master@{#9023}
2015-04-16 18:35:32 +00:00
09bdc1e5f5 Add a BWE fairness test.
Also moves the BWE perf tests to webrtc_perf_tests for tracking.

BUG=4548
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9022}
2015-04-16 18:20:26 +00:00
3795937920 Adds a simplified Reno-type TCP sender.
BUG=4559
R=sprang@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9021}
2015-04-16 17:55:38 +00:00
3f4eed0cc0 Deliver RTCP packets only once per receive stream.
Receive streams can have multiple entries in the SSRC table when RTX is
configured. This does not mean that they should receive RTCP packets
more than once.

BUG=4546
R=asapersson@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9019}
2015-04-16 13:59:35 +00:00
fb98c40915 Register RTP/RTCP modules outside rtp_rtcp_cs_.
Prevents deadlock between the process thread and SetSendCodec calls.

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

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

Cr-Commit-Position: refs/heads/master@{#9018}
2015-04-16 10:00:12 +00:00
382c58d127 Move target_subarch from gyp_webrtc to supplement.gypi
Since the webrtc/build/supplement.gypi file is loaded before
Chromium's build/common.gypi it is the right place to override
GYP variables. This makes it possible to use the approach in
https://webrtc-codereview.appspot.com/48869004, which I applied
to supplement.gypi in this CL, instead of the hacky approach in
https://webrtc-codereview.appspot.com/48909004 (removed in this CL).

R=tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9017}
2015-04-16 07:24:23 +00:00
f2497cf517 Fix unknown option '-msse2' warning
R=andrew@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9016}
2015-04-16 06:57:12 +00:00
7c324cac50 AudioEncoderDecoderIsac: Merge the two config structs
This patch merges the Config and ConfigAdaptive structs, so that iSAC
has just one config struct like the other codecs. Future CLs will make
use of this.

COAUTHOR=henrik.lundin@webrtc.org
BUG=4228
R=tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9015}
2015-04-16 04:00:18 +00:00
7d89f80fd4 Use BoringSSL as default on iOS
BUG=3605
R=kjellander@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9013}
2015-04-15 19:09:14 +00:00
5d22c006eb Add performance tests flag to audioproc_float
R=andrew@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9012}
2015-04-15 18:26:34 +00:00
41ee1ea4fa Modified the simulcast encoder adapter to correctly handle encoded frames from sub encoders even if the encoder is unable to (temporarily or permanently) produce frames of the exactly matching resolution. This is done by using a different EncodedImageCallback for each encoder, which remembers which VideoEncoder it is registered to and forwards that on to SimulcastEncoderAdapter::Encoded.
BUG=
R=pbos@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9011}
2015-04-15 16:24:16 +00:00
099323e39b Have ViE sender also use the last encoded frame timestamp when determining if the video stream is paused/muted, for purposes of padding.
Without this, external encoders with internal sources (i.e. don't use the normal camera path) won't trigger ViEEncoder::DeliverFrame, so time_of_last_incoming_frame_ms_ will always be 0.

BUG=
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9010}
2015-04-15 16:14:07 +00:00
352b2d7a19 Fix for sent/received RTCP packet counters returned by GetRtcpPacketTypeCounters. The returned counters are incorrect: sent_packets returns stats from a sent stream (and received_packets returns stats from a receive stream).
Add separate functions for returning stats from send/receive stream and updated how functions are used.

Add test implementation for histogram methods in system_wrappers/interface/metrics.h.

BUG=4519
R=pbos@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9009}
2015-04-15 16:00:37 +00:00
c317ce5456 VoE: move mock directory 1 level up
Changes:
1. Moved directory voice_engine/include/mock to voice_engine/mock (current recommendation).
2. Updated includes where necessary.

Caution:
We need confirmation that these mocks are indeed used only locally.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9005}
2015-04-15 10:45:09 +00:00
adc46c4cf7 audio_processing/agc: Adds config to set minimum microphone volume at startup
The AGC is currently bumping up the mic volume to 33% at startup if it is below that level. This is to avoid getting stuck in a poor state from which the AGC can not move, simply a too low input audio level. For some users, 33% is instead too loud.

This CL gives the user the possibility to set that level at create time.
- Extends the Config ExperimentalAgc with a startup_mic_volume for the user to set if desired. Note that the bump up does not apply to the legacy AGC and the "regular" AGC is controlled by ExperimentalAgc.
- Without any actions, the same default value as previously is used.
- In addition I removed a return value from InitializeExperimentalAgc() and InitializeTransient()

This has been tested by building Chromium on Mac and verify through apprtc that
1) startup_mic_volume = 128 bumps up to 50%.
2) startup_mic_volume = 500 (out of range) bumps up to 100%.
3) startup_mic_volume = 0 bumps up to 4%, the AGC min level.

BUG=4529
TESTED=locally
R=andrew@webrtc.org, kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9004}
2015-04-15 09:42:35 +00:00
a9c0ae284c Add a sparse FIR filter implementation
A Finite Impulse Response filter implementation which takes advantage of sparse coefficients.
The coefficients are assumed to be uniformly distributed and have an initial offset.

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

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

Cr-Commit-Position: refs/heads/master@{#9002}
2015-04-14 22:51:22 +00:00
fcf54bdabb Reland "Avoid critsect for protection- and qm setting callbacks in
VideoSender."

The original Cl is uploaded as patch set 1, the fix in ps#2 and I'll rebase in ps#3.

BUG=4534
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9000}
2015-04-14 19:28:03 +00:00
73ba7a690f Remove PORTALLOCATOR_ENABLE_BUNDLE, PortAllocatorSessionProxy, PortAllocatorSessionMuxer, and PortProxy.
R=decurtis@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8999}
2015-04-14 16:25:58 +00:00
74b9769e4e Deliver RTCP packets only once per send stream.
For simulcast VideoSendStreams there are more than one entry in the SSRC
table causing RTCP to currently be delivered more than once per stream.
This messes up unique NACK stats as all NACK requests sent to such a
sender will be delivered multiple times and not look unique.

BUG=4544
R=asapersson@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8998}
2015-04-14 11:31:39 +00:00
2dd6a270c0 VoE: format VoEBase according to new style guide
Purely cosmetic changes:
1. virtual => override
2. NULL => nullptr
3. data member name: underscore prefix => suffix
4. clang format

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8997}
2015-04-14 07:46:57 +00:00
0de7bcf06a Removes use of AudioManager.setSpeakerphoneOn in audio manager
BUG=NONE
TEST=AppRTCDemo
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8996}
2015-04-14 07:19:49 +00:00
529921e7cd Explicitly set target_subarch for iOS on ia32/x64
https://webrtc-codereview.appspot.com/48909004/ only fixed
the target_subarch problem for ARM. This fixes it for the
x86 targets that are used for the iOS simulator (ia32/x64).

BUG=4532
TESTED=Built locally using:
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=ia32"
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_sim"
export GYP_CROSSCOMPILE=1
gclient runhooks
ninja -C out_sim/Release-iphonesimulator iossim AppRTCDemo

R=tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8991}
2015-04-13 20:43:40 +00:00
6ae2572fa6 Add missing configuration of rtx payload type for rtp/rtcp module.
BUG=4528
R=pbos@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8989}
2015-04-13 15:48:16 +00:00
0f911d71a7 Refactor audio_processing/nsx: Removed usage of macro WEBRTC_SPL_MEMCPY_W16
The macro assumes int16_t pointers, but there is no check for it.

BUG=3348,3353
TESTED=locally on Linux and trybots
R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8987}
2015-04-13 13:45:07 +00:00