Commit Graph

800 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
d67a219bec Switch to base/logging.h in neteq_impl.cc
This change includes base/logging.h instead of the old and deprecated
system_wrappers/interface/logging.h. This requires some changes of the
actual logging invocations.

For reference the following regexps where used (in Eclipse) for a few
of the replacements:

find: LOG_FERR1\(\s*([^,]*),\s*([^,]*),\s*(.*)\);
replace: LOG($1) << "$2 " << $3;

find: LOG_FERR2\(\s*([^,]*),\s*([^,]*),\s*([^,]*),\s*(.*)\);
replace: LOG($1) << "$2 " << $3 << " " << $4;

BUG=4735
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9669}
2015-08-03 10:55:11 +00:00
364118518f Includes webrtc/build/protoc.gypi instead of build/protoc.gypi
Re-lands "Renamed the ACMDump to RtcEventLog and moved it to webrtc/video, since it is not specific to the audio coding module."

This reverts commit b933667a7f97697d6390d1eee5f378cedd9ca208.

R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9661}
2015-07-30 10:45:24 +00:00
b933667a7f Revert "Renamed the ACMDump to RtcEventLog and moved it to webrtc/video, since it is not specific to the audio coding module. Updated .gyp and .gn files accordingly."
This reverts commit c159b046d7a0086e45ae0f79c00a462f3fafd207.

BUG=
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9660}
2015-07-30 10:05:18 +00:00
9a6e74179c Move audio_coding_module.gypi from main/acm2 to main/.
Prevents presubmit failures when touching audio_coding_module.gypi due
to source files being included from outside the gypi directory.

BUG=
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9659}
2015-07-30 09:34:12 +00:00
c159b046d7 Renamed the ACMDump to RtcEventLog and moved it to webrtc/video, since it is not specific to the audio coding module. Updated .gyp and .gn files accordingly.
Placed the protobuf structures in the namespace webrtc::rtclog. Removed the message field from the DebugEvent structure, since it was not used.

Added an interface to set config information for VideoReceiveStream and VideoSendStream in the event log.

Added function to log full RTCP packets and changed RTP-logging to only log headers.

Significantly extended the unit tests for RtcEventLog.

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

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

Cr-Commit-Position: refs/heads/master@{#9656}
2015-07-30 09:06:09 +00:00
b3cc77f4ba Re-enable WebRtcIsacfix_AllpassFilter2FixDec16Neon
WebRtcIsacfix_AllpassFilter2FixDec16Neon was disabled due to a Clang
bug. The bug is fixed in current Clang version, re-enable it in this patch.

BUG=4567
R=andrew@webrtc.org, kjellander@webrtc.org
TEST=buildbot build

Change-Id: I71e309cec6caf376181cf9c299c9e8967c9a328e

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

Patch from Zhongwei Yao <zhongwei.yao@arm.com>.

Cr-Commit-Position: refs/heads/master@{#9645}
2015-07-28 03:18:19 +00:00
b297c5a01f Miscellaneous changes split from https://codereview.webrtc.org/1230503003 .
These are mostly trivial changes and are separated out just to reduce the
diff on that change to the minimum possible.

Note explanatory comments on patch set 1.

BUG=none
TEST=none

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

Cr-Commit-Position: refs/heads/master@{#9617}
2015-07-22 22:17:26 +00:00
3258db26ed Split iSAC encoder/decoder: Test more cases (and make sure they work)
This patch tests separate iSAC encoder and decoder in more cases (32
kHz in addition to 16 kHz, and 30 ms adaptive and 60 ms nonadaptive).

In order to handle 32 kHz adaptive, the decoder needs to be told of
the encoder's sample rate (16 kHz worked already because that's the
default). And since we can't set the encoder's frame size without also
setting its bit rate, we need a way to set the decoder's bit rate as
well.

It turned out to be way too messy to continue verifying that the
bandwidth estimator does something reasonable in all these cases,
because it seems it doesn't. So the GetSetBandwidthInfo is now just
responsible for ensuring that split encoder/decoder behaves the same
as conjoined encoder/decoder; the job of verifying that the bandwidth
estimator does its job properly falls on some other test (that doesn't
exist yet).

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

Cr-Commit-Position: refs/heads/master@{#9583}
2015-07-15 01:54:43 +00:00
72a8cee425 Targets should not depend on protobuf when enable_protobuf=0.
BUG=webrtc:4741
R=henrik.lundin@webrtc.org, stefan@webrtc.org, ivoc@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9539}
2015-07-03 15:53:22 +00:00
2224294c52 iSAC: Functions for importing and exporting bandwidth est. info
They make it possible to send bandwidth estimation info from decoder
to encoder even if they are separate objects (which we want them to be
because multithreading).

R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9535}
2015-07-03 02:04:46 +00:00
f4eca64596 iSAC: Pad with zeros instead of random data, to make testing easier
Using random "garbage" bytes makes testing harder for no good reason.
Any deterministic sequence would do, but we choose all zeros because
it's simple.

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

Cr-Commit-Position: refs/heads/master@{#9532}
2015-07-02 09:10:11 +00:00
6e355af348 Added fields for configuration information to the protobuf format
in the ACMDump. The ACMDump interface itself is not updated, so there
is no way (yet) to actually write the configuration fields.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#9519}
2015-06-30 08:51:19 +00:00
c6891248b5 Simplify OWNERS structure in modules/audio_coding
All ownership is now handled by the top-level OWNERS file in
modules/audio_coding.

NOTRY=True

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

Cr-Commit-Position: refs/heads/master@{#9512}
2015-06-29 11:54:50 +00:00
9b9f338f44 Adding Minyue to audio_coding/OWNERS
Review URL: https://codereview.webrtc.org/1205313002

Cr-Commit-Position: refs/heads/master@{#9511}
2015-06-29 09:29:24 +00:00
241338eeb7 Added support for keeping a buffer of the previous X seconds, to add to an AcmDump.
In addition, timestamps are now absolute instead of relative to LOG_START.

BUG=webrtc:4741
R=henrik.lundin@webrtc.org, kwiberg@webrtc.org, stefan@webrtc.org, terelius@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9509}
2015-06-26 08:19:33 +00:00
93fb53acf5 Adding a new ChangeLogger class to handle UMA logging of bitrates
This change introduces the sub-class ChangeLogger in AudioCodingModuleImpl. The class writes values to the named UMA histogram, but only if the value has changed since the last time (and always for the first call). This is to avoid the problem with audio codecs being registered but never used. Before this change, these codecs' bitrate was also logged, even though they were never used.

BUG=chromium:488124
R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9506}
2015-06-25 20:03:12 +00:00
ac4234ccfc Add a [rtc_]build_with_neon variable to unify conditions.
Also consolidate ARM options for gn in an arm_neon_config.

R=jridges@masque.com, kjellander@webrtc.org, zhongwei.yao@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#9501}
2015-06-25 01:25:59 +00:00
747d5f6268 Reland "Added ACM_dump protobuf, class for reading/writing and...", commit e9bdfd859c309991b4ea759587f39eecdbd42bd4.
Changed the BUILD.gn file that was lacking some necessary items which caused Chromium to break.
Original review: https://webrtc-codereview.appspot.com/52059005/

The revert of the original CL was commit 7a75415419cbd52d798f9226010e9190e1cbad53.

BUG=webrtc:4741
R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9489}
2015-06-23 08:08:17 +00:00
6b4a564d21 Add UMA logging for target audio bitrate
This CL logs the target audio bitrate to a UMA histogram called
WebRTC.Audio.TargetBitrateInKbps. It logs the rate when a codec is
created, and when the target is explicitly updated. Note that since
each codec implementation is free to change or ignore the target
value, there is no guarantee that the logged value will actually be
used as the target.

BUG=chromium:488124

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

Cr-Commit-Position: refs/heads/master@{#9484}
2015-06-22 13:35:22 +00:00
7a75415419 Revert "Added ACM_dump protobuf, class for reading/writing and unittest."
This reverts commit e9bdfd859c309991b4ea759587f39eecdbd42bd4.

This CL makes the GN chrome bot fail, not really sure why...

FAILED: /mnt/data/b/build/goma/gomacc
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF
obj/third_party/webrtc/modules/audio_coding/main/acm2/acm_dump.acm_dump.o.d
-DRTC_AUDIOCODING_DEBUG_DUMP -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2
-DENABLE_MDNS=1 -DENABLE_NOTIFICATIONS -DENABLE_PEPPER_CDMS -DENABLE_PLUGINS=1
-DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1
-DENABLE_SPELLCHECK=1 -DDONT_EMBED_BUILD_METADATA -DUSE_UDEV
-DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_ASH=1 -DUSE_AURA=1 -DUSE_PANGO=1
-DUSE_CAIRO=1 -DUSE_CLIPBOARD_AURAX11=1 -DUSE_DEFAULT_RENDER_THEME=1
-DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DENABLE_WEBRTC=1
-DENABLE_EXTENSIONS=1 -DENABLE_CONFIGURATION_POLICY -DENABLE_TASK_MANAGER=1
-DENABLE_THEMES=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_SESSION_SERVICE=1
-DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1
-DENABLE_SERVICE_DISCOVERY=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_REMOTING=1
-DENABLE_GOOGLE_NOW=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_HIDPI=1
-DV8_USE_EXTERNAL_STARTUP_DATA -DENABLE_BACKGROUND=1 -DENABLE_PRE_SYNC_BACKUP
-DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL
-DSAFE_BROWSING_SERVICE -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1
-DCR_CLANG_REVISION=239765-1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG
-DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGOOGLE_PROTOBUF_NO_RTTI
-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -I../.. -Igen
-I../../third_party/protobuf/src -Igen/protoc_out
-I../../third_party/protobuf/src -I../../third_party/protobuf
-fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -m64
-march=x86-64 -funwind-tables -fPIC -pipe -pthread
-B../../third_party/binutils/Linux_x64/Release/bin -fcolor-diagnostics -Wall
-Wsign-compare -Wendif-labels -Werror -Wno-missing-field-initializers
-Wno-unused-parameter -Wno-c++11-narrowing -Wno-char-subscripts
-Wno-covered-switch-default -Wno-deprecated-register
-Wno-unneeded-internal-declaration -Wno-reserved-user-defined-literal
-Wno-inconsistent-missing-override -fvisibility=hidden -Xclang -load -Xclang
../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang
-plugin-arg-find-bad-constructs -Xclang check-templates -Xclang -add-plugin
-Xclang find-bad-constructs -Wheader-hygiene -Wstring-conversion -O2 -fno-ident
-fdata-sections -ffunction-sections -g1 -gsplit-dwarf -fno-threadsafe-statics
-fvisibility-inlines-hidden -std=gnu++11 -fno-rtti -fno-exceptions -c
../../third_party/webrtc/modules/audio_coding/main/acm2/acm_dump.cc -o
obj/third_party/webrtc/modules/audio_coding/main/acm2/acm_dump.acm_dump.o
../../third_party/webrtc/modules/audio_coding/main/acm2/acm_dump.cc:11:10: fatal
error: 'webrtc/modules/audio_coding/main/acm2/acm_dump.h' file not found
#include "webrtc/modules/audio_coding/main/acm2/acm_dump.h"
         ^
1 error generated.
ninja: build stopped: subcommand failed.

TBR=ivoc@webrtc.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#9474}
2015-06-19 21:30:27 +00:00
76eea37ed0 Workaround a (Windows) linker bug when doing a PGO build.
It looks like having a function that ends with "FATAL()" but doesn't also have a return value (even if it's useless).

This is causing a hang in link.exe when doing a PGO build (this has been blocking us from doing PGO builds for more than a month now). See https://connect.microsoft.com/VisualStudio/feedback/details/996802/link-exe-hang-during-the-pgo-optimization-step for more details.
BUG=chromium:491914
R=turaj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9469}
2015-06-19 16:11:10 +00:00
3e89dbf458 Add AudioEncoder::GetTargetBitrate
The GetTargetBitrate implementation will return the
target bitrate of the codec. This may differ from the
desired target bitrate, as set by SetTargetBitrate, depending on implementation.

Tests are updated to exercise the new functionality.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9461}
2015-06-18 12:58:46 +00:00
e9bdfd859c Added ACM_dump protobuf, class for reading/writing and unittest.
This adds a class to read and write ACM_dump protobuf files. In this CL
it is not hooked up to actually store any packets or debug events.
The unittest writes two dummy RTP packets to disk and reads them to see
if they contain the expected data.

BUG=webrtc:4741
R=andrew@webrtc.org, henrik.lundin@webrtc.org, kjellander@webrtc.org, kwiberg@webrtc.org, tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9460}
2015-06-18 11:04:35 +00:00
1d34fe979c Adds support for webrtc::test::ResourcePath on iOS
BUG=webrtc:4752
R=tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9445}
2015-06-16 08:04:24 +00:00
ac81163011 iSAC: Move global trig tables into the codec instance
These tables are constant, so it makes sense for all encoders to share
one copy---but it was initialized in a racy way, and there's no
appealing way to fix that without adding dependencies on locking
functions. So we simply give each codec instance its own copy, which
costs 8 * (240 + 240 + 120 + 120) = 5760 bytes apiece.

As noted in the TODO comment, the size of the tables could be reduced,
and they could be filled in at compile-time, but that would make the
encoder output slightly different, which would mess with our tests.

R=henrik.lundin@webrtc.org, solenberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9442}
2015-06-15 22:02:45 +00:00
d10cd97ad3 Make global constants 'const'
R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9438}
2015-06-15 13:07:11 +00:00
a6aa6d96f8 Fix a data race in AudioEncoderMutableImpl and derived classes
Before this change, it could happen that a caller would get a pointer
to the encoder_ but not use it before another thread called the
Reconstruct method, changing the pointer. This of course resulted in
bad access crashes. With this change, each use of the pointer acquired
from the encoder() method is protected by the same lock that is
required to update the pointer. Note that this fix is probably too
aggressive, since it also affects the Opus implementation; the crash
has so far only been seen for iSAC.

Also adding a test to trigger the problem. The test did not trigger
the problem deterministically, but out would typically find it in less
than 1000 runs.

BUG=chromium:499468
R=jmarusic@webrtc.org, kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9436}
2015-06-15 11:46:24 +00:00
01bbe3eb8c Fix AppRTCDemo crash under iOS armv7 devices
Fix AppRTCDemo crash under iOS due to the unaligned access in vld1
instruction in iSACFix codec, which is not allowed in iOS build.

BUG=4717
R=andrew@webrtc.org, jridges@masque.com
TEST=Run the AppRTCDemo

Change-Id: Ie5fbc9b8ae88cd00b243a8e65cab95b00362a9da

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

Cr-Commit-Position: refs/heads/master@{#9432}
2015-06-15 06:57:00 +00:00
36b7cc3264 Reland "Upconvert various types to int.", neteq portion.
This reverts portions of commit cb180976dd0e9672cde4523d87b5f4857478b5e9, which
reverted commit 83ad33a8aed1fb00e422b6abd33c3e8942821c24.  Specifically, the
files in webrtc/modules/audio_coding/neteq/ are relanded.

The original commit message is below:

Upconvert various types to int.

Per comments from HL/kwiberg on https://webrtc-codereview.appspot.com/42569004 , when there is existing usage of mixed types (int16_t, int, etc.), we'd prefer to standardize on larger types like int and phase out use of int16_t.

Specifically, "Using int16 just because we're sure all reasonable values will fit in 16 bits isn't usually meaningful in C."

This converts some existing uses of int16_t (and, in a few cases, other types such as uint16_t) to int (or, in a few places, int32_t).  Other locations will be converted to size_t in a separate change.

BUG=none
TBR=kwiberg

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

Cr-Commit-Position: refs/heads/master@{#9427}
2015-06-12 02:57:28 +00:00
bba7807078 Reland "Upconvert various types to int.", misc. codecs portion.
This reverts portions of commit cb180976dd0e9672cde4523d87b5f4857478b5e9, which
reverted commit 83ad33a8aed1fb00e422b6abd33c3e8942821c24.  Specifically, the
files in webrtc/modules/audio_coding/codecs/ that are not in ilbc/ or isac/, as
well as webrtc/modules/audio_coding/main/test/opus_test.cc, are relanded.

The original commit message is below:

Upconvert various types to int.

Per comments from HL/kwiberg on https://webrtc-codereview.appspot.com/42569004 , when there is existing usage of mixed types (int16_t, int, etc.), we'd prefer to standardize on larger types like int and phase out use of int16_t.

Specifically, "Using int16 just because we're sure all reasonable values will fit in 16 bits isn't usually meaningful in C."

This converts some existing uses of int16_t (and, in a few cases, other types such as uint16_t) to int (or, in a few places, int32_t).  Other locations will be converted to size_t in a separate change.

BUG=none
TBR=kwiberg

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

Cr-Commit-Position: refs/heads/master@{#9424}
2015-06-12 02:02:58 +00:00