and touched VoEBaseImpl::NeedMorePlayData and AudioCodingModuleImpl::PlayoutData10Ms(), for
performance reasons in Android platforms.
The two functions used about 6% of VoE originally. After the change, the percentage reduced
to about 0.2%.
Review URL: https://webrtc-codereview.appspot.com/379001
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1589 4adac7df-926f-26a2-2b94-8c16560cd09d
Investigation with corrupt payloads revealed a few places we could
be using stronger checks. These are not foolproof by any means, but
I figure the earlier we catch this the better.
BUG=242
TEST=loopback call with a hacked ViE to insert corrupt payloads, and vie_auto_test without the hacks.
Review URL: https://webrtc-codereview.appspot.com/369015
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1585 4adac7df-926f-26a2-2b94-8c16560cd09d
When _amountOfMixableParticipants == 1, we skip mixing and saturation
protection. Without this fix, an anonymous participant would only be
properly counted if it was the last added.
For example, if an anonymous participant was added first, followed by
a regular participant, _amoutOfMixableParticipants would == 1 and the
regular participant would not be mixed.
BUG=issue209
TEST=New test added to voe_auto_test to verify, and used voe_cmd_test.
Review URL: https://webrtc-codereview.appspot.com/367006
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1551 4adac7df-926f-26a2-2b94-8c16560cd09d
NetEQ now checks for too early CNG packets, and modifies the CNG
sample counter to jump forward in time if needed to combat clock
drift.
Adding a new unittest to reproduce and solve the issue. The
unittest LongCngWithClockDrift verifies that the buffer delay
before and after a long CNG period is almost constant. The test
introduces a clock drift of 25 ms/s.
BUG=http://code.google.com/p/webrtc/issues/detail?id=88
TEST=neteq_unittests NetEqDecodingTest.LongCngWithClockDrift
Review URL: https://webrtc-codereview.appspot.com/372002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1547 4adac7df-926f-26a2-2b94-8c16560cd09d
As part of style this CL includes changing the input aggressiveness mode from int16_t to int. No other style changes made.
Impact on:
- Audio Processing: Changed return value on MapSetting().
- Function test in audio_conference_mixer already uses int. No action.
- NetEq: Function pointer changes and input parameter changes in SetVADMode() and SetVADModeInternal().
- Audio Coding: Uses enum ACMVADMode which is type independent.
- VAD: Two unit tests.
TESTS=vad_unittests, neteq_unittests, audioproc_unittest
Review URL: https://webrtc-codereview.appspot.com/373001
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1544 4adac7df-926f-26a2-2b94-8c16560cd09d
Impact on NetEq function pointers. Other components already treat the output as int. These are:
* audio_processing
* funtion test in audio_conference_mixer
* audio_coding
TEST=vad_unittests, neteq_unittests
Review URL: https://webrtc-codereview.appspot.com/367003
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1503 4adac7df-926f-26a2-2b94-8c16560cd09d
Make the program look for the ptypes.txt file in the default trunk
path, if the path to the executable indicates that it sits in the
trunk/out/Debug folder.
Changing PT for CNG-WB to 98
Remove warnings when building NetEQ with NETEQ_DELAY_LOGGING
Review URL: https://webrtc-codereview.appspot.com/339003
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1497 4adac7df-926f-26a2-2b94-8c16560cd09d
Simple initialization of the allocated memory for the image buffer avoids reading uninitialized data in some special cases.
This fix is only intended for Linux, since the test is known to fail on Windows. But since we're currently only running Valgrind on Linux, this will give us improved control over memory issues.
BUG=
TEST=tools/valgrind-webrtc/webrtc_tests.sh -t cmdline out/Debug/video_processing_unittests
Review URL: http://webrtc-codereview.appspot.com/349012
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1493 4adac7df-926f-26a2-2b94-8c16560cd09d
10198: Out-of-bounds read in acm_isac.cc
10251: Unintended sign extension in acm_resampler.cc
10273: Uninitialized pointer field in acm_amr.cc
10274: Uninitialized pointer field in acm_amrwb.cc
10275: Uninitialized scalar field in acm_dtmf_detection.cc
10276: Uninitialized pointer field in acm_g722.cc
10277: Uninitialized pointer field in acm_g7221.cc
10278: Uninitialized pointer field in acm_g7221c.cc
10279: Uninitialized pointer field in acm_g729.cc
10280: Uninitialized pointer field in acm_g7291.cc
10281: Uninitialized pointer scalar in acm_generic_codec.cc
10282: Uninitialized pointer field in acm_gsmfr.cc
10283: Uninitialized scalar field in acm_isac.cc
10284: Uninitialized pointer field in acm_opus.cc
10285: Uninitialized scalar field in acm_resampler.cc
10286: Uninitialized pointer field in acm_speex.cc
10287: Uninitialized scalar field in audio_coding_module_impl.cc
10581: Unintended sign extension in audio_coding_module_impl.cc
Additional change: removed unused function and member from ACMResampler.
Review URL: https://webrtc-codereview.appspot.com/343016
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1471 4adac7df-926f-26a2-2b94-8c16560cd09d
Performance verified on a few 32 kHz files.
BUG=
TEST=audioproc, audioproc_unittest
Updated output_data_float.pb
Changes in SWB tests (3, 6, 9 and 12) as
Running test 3 of 12...
src/modules/audio_processing/test/unit_test.cc:1182: Failure
Value of: max_output_average
Actual: 1363
Expected: test->max_output_average()
Which is: 1386
Running test 6 of 12...
src/modules/audio_processing/test/unit_test.cc:1182: Failure
Value of: max_output_average
Actual: 2070
Expected: test->max_output_average()
Which is: 2109
Running test 9 of 12...
src/modules/audio_processing/test/unit_test.cc:1182: Failure
Value of: max_output_average
Actual: 1314
Expected: test->max_output_average()
Which is: 1336
Running test 12 of 12...
src/modules/audio_processing/test/unit_test.cc:1182: Failure
Value of: max_output_average
Actual: 2049
Expected: test->max_output_average()
Which is: 2085
Review URL: https://webrtc-codereview.appspot.com/344013
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1465 4adac7df-926f-26a2-2b94-8c16560cd09d
For consistency and as part of style, the return value of WebRtcVad_Init() has been changed to int.
Impact:
1) audio_processing, audio_coding, a test in CNG, functionTest in audio_conference_mixer, a test in net_eq all used int values. Hence, unaffected.
2) Function pointers in net_eq changed.
3) The VADInit in neteq/dsp.c boiled down to typecast into int anyhow, which now is removed.
TEST=vad_unittests, neteq_unittests
Review URL: https://webrtc-codereview.appspot.com/355003
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1453 4adac7df-926f-26a2-2b94-8c16560cd09d
This change introduces a new algorithm for aggregating small
partitions into packets. The algorithm is based on a tree-search
to find an optimal allocation of the packets, such that the
difference in size between packets is minimized.
The new method is used when partition aggregation is allowed and
balanced packets are requested. Otherwise, the old method is used.
The new method is implemented using the new classes
Vp8PartitionAggregator and PartitionTreeNode. Both classes have
dedicated unit tests.
In order to facilitate the new algorithm, the packetizer was
redesigned to calculate all packet sizes when the first packet is
extracted. The information about all packets is stored in a packet
queue structure, which is then popped for each packet extracted.
Finally, a bug in the old packetizer algorithm was fixed. The bug
caused a +/-1 error in packet sizes when balanced packets were
produced. The unit test were updated accordingly.
TEST=rtp_rtcp_unittests: PartitionTreeNode.* Vp8PartitionAggregator.* RtpFormatVp8Test.*
Review URL: https://webrtc-codereview.appspot.com/345008
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1447 4adac7df-926f-26a2-2b94-8c16560cd09d
You might overrun the 32 byte fixed-size string "receiveCodec.plname" by copying "payloadName" without checking the length.
Note: This defect has an elevated risk because the source argument is a parameter of the current function.
Review URL: http://webrtc-codereview.appspot.com/352009
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1428 4adac7df-926f-26a2-2b94-8c16560cd09d
When targeting 32-bit Linux, we need to pass -msse2 to gcc to compile
SSE2 intrinsics. However, -msse2 also gives gcc license to automatically
generate SSE2 instructions wherever it pleases. This will crash our code
on processors without SSE2 support.
This change breaks the files with SSE2 intrinsics into separate targets,
such that we can limit the scope of -msse2 to where it's needed.
We no longer need to employ the WEBRTC_USE_SSE2 define; the build system
decides when SSE2 is supported and compiles the appropriate files.
TBR=bjornv@webrtc.org
TEST=audioproc (performance testing), audioproc_unittest, video_processing_unittests, build on Linux (targeting ia32/x64, with disable_sse2==0/1), Mac, Windows
Review URL: http://webrtc-codereview.appspot.com/352008
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1425 4adac7df-926f-26a2-2b94-8c16560cd09d
If no frame has been decoded the jitter buffer might generate huge
erroneous NACK lists.
Adds a couple of new jitter buffer unittests (some ported from
jitter_buffer_test.cc).
Adds a test to the VCM robustness tests.
BUG=226
TEST=VCMRobustnessTest, TestJitterBufferFull, TestNackListFull, TestNackBeforeDecode, TestNormalOperation
Review URL: http://webrtc-codereview.appspot.com/352002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1412 4adac7df-926f-26a2-2b94-8c16560cd09d
In addition to our naming guidelines, this will cause these files to get parsed by Sonar, and to make searching/grepping the source using file extensions easier in the future.
BUG=
TEST=Compiling on Linux.
Review URL: http://webrtc-codereview.appspot.com/348005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1405 4adac7df-926f-26a2-2b94-8c16560cd09d
I found some issues in building ARMv5 with ICM. This CL includes fixes,
and a design change which now will exclude any NEON libraries unless
the build is for dynamic detection or for Neon specifically.
Review URL: http://webrtc-codereview.appspot.com/330021
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1335 4adac7df-926f-26a2-2b94-8c16560cd09d
Removing platform limitations for NetEqDecodingTest:TestBitExactness
and NetEqDecodingTest:TestNetworkStatistics. New reference files
where provided in revision 6 of the resources, which allows us
to enable these tests.
BUG=
TEST=neteq_unittests linux32/64, win32/64, mac32
Review URL: http://webrtc-codereview.appspot.com/329027
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1332 4adac7df-926f-26a2-2b94-8c16560cd09d
Clock-drift (in parts-per-million) and peaky-jitter mode status.
Both metrics are propagated to the VoE API. Tests are added
in the NetEQ unittests, and to some extent in ACM unittests
and VoE tests.
Introducing a proper translation between structs NetworkStatistics
and ACMNetworkStatistics.
Note: The file neteq_network_stats.dat in resources must be updated
for the unittests to pass.
Review URL: http://webrtc-codereview.appspot.com/337005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1328 4adac7df-926f-26a2-2b94-8c16560cd09d
Removed old PSNR/SSIM implementations in:
* test/testsupport/metrics/video_metrics.cc
* src/modules/video_coding/codecs/test_framework/test.cc
The functions in video_metrics.cc is now using code in libyuv instead. Old code in test.cc is using the same functions.
The code for video_metrics.h had to be moved into a separate GYP file to avoid circular dependency error on Mac (see issue 160 for more details). The reason for this is that libyuv's unittest target depends on test_support_main.
BUG=
TEST=metrics_unittests in Debug+Release on Linux, Mac and Windows.
Review URL: http://webrtc-codereview.appspot.com/333025
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1325 4adac7df-926f-26a2-2b94-8c16560cd09d
Added temporal layers number flag for video_quality_measurement tool.
This tool now also uses webrtc::VideoCodingModule::Codec() to get its
VideoCodec struct configuration instead of filling it in manually.
Updated paths for header files to use full directory paths.
Tested in Debug+Release on Linux, Mac and Windows. Passes Valgrind memcheck on Linux.
BUG=
TEST=video_codecs_test_framework_integrationtests. Also executed out/Debug/video_quality_measurement --input_filename=resources/foreman_cif.yuv --width=352 --height=288
Review URL: http://webrtc-codereview.appspot.com/339001
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1310 4adac7df-926f-26a2-2b94-8c16560cd09d
Robustness improvements to the delay estimator used in AECM and AEC. In AEC only for logging. Faster convergence.
TEST=audioproc_unittest + offline file tests.
output_data_fixed.pb updated despite unverified changes in r1112.
Review URL: http://webrtc-codereview.appspot.com/337006
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1306 4adac7df-926f-26a2-2b94-8c16560cd09d
This CL includes a larger structural change in how we handle buffers in AEC. We now perform FFT at once and move within blocks to compensate for system delays.
TEST=audioproc_unittest(float and fix), voe_auto_test
Review URL: http://webrtc-codereview.appspot.com/335012
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1299 4adac7df-926f-26a2-2b94-8c16560cd09d
We can't reset the complete last decoded state when we recycle until a
key frame because that will allow any delta frame to be decoded afterwards,
and since the decoder isn't reset we will get decode errors.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/330003
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1295 4adac7df-926f-26a2-2b94-8c16560cd09d
The packetizer class is changed so that the max payload size is
provided on construction of the class rather than for each packet.
The tests are re-written to comply with the new design.
Also fixing a few errors in the tests.
Review URL: http://webrtc-codereview.appspot.com/335010
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1280 4adac7df-926f-26a2-2b94-8c16560cd09d
This CL defines and starts to implement a new robustness API for
video coding module. The API is partly implemented. Some of the
modes and methods are still TBD.
Also including a new unittest with mocking of decoder and callbacks,
and faking of system clock.
Review URL: http://webrtc-codereview.appspot.com/333006
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1276 4adac7df-926f-26a2-2b94-8c16560cd09d
This change basicly re-enables the change of r1220, which was
reverted in r1235 due to Clang issues.
The difference from r1220 is that the TickTimeInterface was
renamed to TickTimeClass, and no longer inherits from TickTime.
Review URL: http://webrtc-codereview.appspot.com/335006
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1267 4adac7df-926f-26a2-2b94-8c16560cd09d
This test now runs and fails as a gtest should (previously it always
exited with 0 even if the tests failed).
The audio_coding_module_test target no longer uses exceptions in the generated project.
Output files are written to our global output folder, using
testsupport/fileutils.h.
BUG=
TEST=audio_coding_module_test on all platforms, in Debug+Release
Review URL: http://webrtc-codereview.appspot.com/334004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1266 4adac7df-926f-26a2-2b94-8c16560cd09d
This is the first change in a series of changes to get new functionality
into the VP8 packetizer.
This first refactors the RtpFormatVp8Test class, without changing the
operation of the tested RtpFormatVp8 class. A test helper class
RtpFormatVp8TestHelper is introduced to reduce code duplication.
Review URL: http://webrtc-codereview.appspot.com/304009
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1258 4adac7df-926f-26a2-2b94-8c16560cd09d
Adding new statistics API to NetEQ, reporting the waiting time
for each frame. The output is raw waiting time for the frames
that have been decoded since the last statistics report (or
maximum 100 frames). The statistics are reset on each query.
Implemented functionality in ACM to query NetEQ for the raw
waiting times, and process it to produce max, average and
median.
Updating common_types.h and VoiceEngine tests to include the
new metrics.
Unit tests are also added for NetEQ and AcmNetEq.
Review URL: http://webrtc-codereview.appspot.com/328011
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1251 4adac7df-926f-26a2-2b94-8c16560cd09d
This change avoids having old packets end up on the current packet list for FEC decoding, and so they are immediately sent out to jitter buffer.
The current list of packets for FEC decoding are sent out only when new packet arrives (with time-stamp greater than current).
Review URL: http://webrtc-codereview.appspot.com/322009
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1222 4adac7df-926f-26a2-2b94-8c16560cd09d
Removed some Valgrind warnings by closing output files. There are still some Valgrind warnings left, that needs to be fixed by a developer with more insight.
Updated all include paths to contain full paths to header files.
Tested in Debug+Release on Linux, Mac and Windows.
All tests ran successfully except the VideoProcessingModuleTest.ContentAnalysis test that fails on Windows with the following error:
unknown file: error: SEH exception with code 0xc0000005
thrown in the test body.
Fixing that is out of scope for this CL.
Review URL: http://webrtc-codereview.appspot.com/266011
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1217 4adac7df-926f-26a2-2b94-8c16560cd09d
- Also rename _dummy -> no_op which states its purpose more clearly.
- Always use exclusion lists (i.e. sources! instead of sources)
TEST=builds and passes system_wrapper_unittest on Linux, Mac, Win
Review URL: http://webrtc-codereview.appspot.com/317007
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1199 4adac7df-926f-26a2-2b94-8c16560cd09d
architecture with intrinsics and assembly code. The total iSAC codec speech improved
about 3~5%.
Notes
(1) The Neon version after this optimization is not bit-exact with the generic
C version. The out quality, however, is not worse as verified by test vectors ouput,
and undertandably in theory (32bit x 32bit in Neon is more accurate than the approximation
C code in the generic version).
(2) In Android, a isac neon library will be built. Along with some new function structures,
it is partly for preparation of introducing a run time detection of Neon architecture soon.
Review URL: http://webrtc-codereview.appspot.com/268016
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1192 4adac7df-926f-26a2-2b94-8c16560cd09d