Commit Graph

91 Commits

Author SHA1 Message Date
f45c8ca88b Reland r8248 "Introduce ACMGenericCodecWrapper"
This effectively reverts r8249.

This new class inherits from ACMGenericCodec. The purpose is to wrap
AudioEncoder objects into an ACMGenericCodec interface. This is a
temporary construction that will be used during the ACM redesign work.

BUG=4228
COAUTHOR=kwiberg@webrtc.org
TBR=tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8255}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8255 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-05 18:30:16 +00:00
4455f6243a WebRtcIsacfix_Time2SpecNeon and _Spec2TimeNeon: Fix stack alignment
The ABI
(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf)
says to 8-byte-align stack frames. That means we have to push an even
number of registers on function entry if we want to be able to make
subroutine calls without adjusting the stack first.

BUG=4177
R=bjornv@webrtc.org, henrik.lundin@webrtc.org, zhongwei.yao@arm.com

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

Cr-Commit-Position: refs/heads/master@{#8214}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8214 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-30 11:58:15 +00:00
bdebccf384 Fix a number of things in AudioEncoderDecoderIsac*
- Add max_bit_rate and max_payload_size_bytes to config structs.
- Fix support for 48 kHz sample rate.
- Fix iSAC-RED.
- Add method UpdateDecoderSampleRate().
- Update locking structure with a separate lock for local member
variables used by the encoder methods.

BUG=3926
COAUTHOR:kwiberg@webrtc.org

R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8204}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8204 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-29 14:11:09 +00:00
6c3855258d Add WebRtcIsacfix_AllpassFilter2FixDec16Neon()'s intrinsics version.
This intrinsics version gives bit-exact result as the current C
code. And the performance is 14% better than current assembly
neon version, 3.4 times faster than current C version. The test runs
under Cortex-a53 aarch32 mode, other cpu should give similar performance
result.

Change-Id: Icce5eaf2e17790ce44513d52b53b9f600cc16f96

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

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8070 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-15 02:56:06 +00:00
86e1e487e7 Move system_wrappers.gyp files to the proper directory.
Build targets should not refer to non-subpaths as was happening before when
 source/system_wrappers.gyp refers to ../interface/ files.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8057 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-14 09:30:52 +00:00
2a26734f04 Partial revert of r7396
This change reverts a small part of what was done in r7396. It seems
like that change uncovered another issue with NEON.

BUG=4177,chrome-os-partner:31534
R=tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8043 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-12 20:52:21 +00:00
f3fd8e7cdf Add NEON intrinsics version for transform_neon
WebRtcIsacfix_Time2SpecNeon and WebRtcIsacfix_Spec2TimeNeon are added.
TransformTest in modules_unittests is passed on ARM32/ARM64 platform.

Initially reviewed here:
https://webrtc-codereview.appspot.com/36449004/

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

Change-Id: I0920ff66a0a0f529707fd7e6619f91e271a47019

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

Patch from Yang Zhang <yang.zhang@arm.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8030 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-09 18:29:37 +00:00
84d84471f5 Minor fixes regarding accumulator usage on MIPS platforms.
R=andrew@webrtc.org

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7979 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-29 17:08:44 +00:00
1090a6eccf Remove obsolete target_arch == armv7.
Also, use arm_version >= 7 so things will continue to work when building
for ARMv8 and higher targets.

BUG=3906
R=kjellander@webrtc.org, tkchin@webrtc.org, zhongwei.yao@arm.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7957 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-18 21:36:18 +00:00
eed7a22bbf Make an AudioEncoder subclass for iSAC redundant encoding
Adding unit test, too.

BUG=3926
R=kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7946 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-18 09:52:36 +00:00
eb544460e4 Rename _t struct types in audio_coding.
_t names are reserved in POSIX.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7933 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-17 15:23:29 +00:00
88bdec8c3a AudioEncoder subclass for iSACfix
This patch refactors AudioEncoderDecoderIsac so that it can share
almost all code with the very similar AudioEncoderDecoderIsacFix.

BUG=3926
R=henrik.lundin@webrtc.org, kjellander@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7912 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-16 12:49:37 +00:00
b413a30097 Add WebRtcIsacfix_FilterMaLoopNeon's intrinsics version.
This intrinsics version gives bit-exact result as the current assembly
neon code. And the performance is 38% better than current assembly
neon version, 5.92 times faster than current C version. The test runs
under Cortex-a53 aarch32 mode, other cpu should give similar performance
result.

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

Change-Id: I257e33ef6d634a519fd71adc4f52b06dd655bd9d

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7891 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-15 07:23:49 +00:00
3a52458237 add WebRtcIsacfix_AutocorrNeon's intrinsics version
The modification only uses the unique part of the
 WebRtcIsacfix_AutocorrC function. Pass FiltersTest.AutocorrFixTest test
 on both ARMv7 and ARM64, and the single function performance is similar
 with original assembly version on different platforms. If not
 specified, the code is compiled by GCC 4.6. The result is the "X
 version / C version" ratio, and the less is better.

| run 100k times             | cortex-a7 | cortex-a15 |
| use C as the base on each  |  (1.2Ghz) |   (1.7Ghz) |
| CPU target                 |           |            |
|----------------------------+-----------+------------|
| Neon asm                   |       24% |        23% |
| Neon intrinsics (GCC 4.6)  |       33% |        32% |
| Neon intrinsics (GCC 4.8)  |       27% |        27% |

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

Change-Id: Id6cd0671502fadbebd10b1f5493f5b16c988286f

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7802 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-03 21:58:18 +00:00
1153322cf8 Build fix for MIPS Android Webview build.
Excluding optimizations to support MIPS32R6 platform for Android Webview build (see also https://code.google.com/p/webrtc/source/detail?r=7580).

R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7729 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-21 16:28:32 +00:00
508c91683c Build fix for MIPS32R6.
Exclude MIPS optimizations for MIPS32R6 build since some of the instructions
are not supported. This is temporary fix, until the MIPS32R6 code is added.

R=andrew@webrtc.org

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7580 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-31 16:26:17 +00:00
a296725d0e audio_coding/codecs/isac/fix: Replaced macro WEBRTC_SPL_RSHIFT_W32 with >>"
BUG=3348,3353
TESTED=locally on linux and trybots
R=henrik.lundin@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7544 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-28 13:05:43 +00:00
67ca26e087 common_audio: Removed trivial macro WEBRTC_SPL_UMUL_16_16
The macro made a cast to uint16_t before a plain multiplication. At the few places where it was used the variables were already uint16_t.

Affected components:
* isac/fix

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7543 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-28 13:03:10 +00:00
0552356fda isacfix: Refactor big-endian reading and writing
Make subroutines for encoding and decoding arrays of 16-bit big-endian
integers, and in the process fix a bug: When decoding an odd number of
bytes from be16, the least significant byte of the last int16 in the
array was properly taken to be zero instead of actually being read
(since it's outside the array). However, when encoding an odd number
of bytes, the least significant byte of the last int16 in the array
was written to the output as-is instead of being taken to be zero;
thus, we encoded one byte more than we should. This was probably not
harmful, and the value was dropped at decoding anyway; nevertheless,
writing a constant zero is the safe thing to do, and this patch does
so.

R=aluebs@webrtc.org, bjornv@webrtc.org, henrik.lundin@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7527 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-27 11:25:37 +00:00
396a5e0001 WebRtcIsac_Decode et al.: Type encoded data as uint8[], not uint16[]
This patch changes WebRtcIsac_Decode, WebRtcIsac_DecodeRcu, and
WebRtcIsacfix_Decode so that they read the encoded data from a uint8
array instead of a uint16 array.

BUG=909
R=aluebs@webrtc.org, bjornv@webrtc.org, henrik.lundin@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7431 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-13 11:23:24 +00:00
3f7f899a15 WebRtcIsac_UpdateBwEstimate et al.: Type byte streams as uint8, not uint16
This patch changes the signature of WebRtcIsac_UpdateBwEstimate,
WebRtcIsacfix_UpdateBwEstimate, and WebRtcIsacfix_UpdateBwEstimate1 so
that they expect the encoded data to be uint8 arrays, not uint16,
which is more natural. The implementations of the functions are left
unchanged for now.

BUG=909
R=aluebs@webrtc.org, bjornv@webrtc.org, henrik.lundin@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7430 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-13 11:07:06 +00:00
1172988c79 Some WebRtcIsac_* and WebRtcIsacfix_* functions: type encoded stream as uint8[]
The affected functions are

  WebRtcIsacfix_ReadFrameLen
  WebRtcIsacfix_GetNewBitStream
  WebRtcIsacfix_ReadBwIndex

and

  WebRtcIsac_ReadFrameLen
  WebRtcIsac_GetNewBitStream
  WebRtcIsac_ReadBwIndex
  WebRtcIsac_GetRedPayload

BUG=909
R=aluebs@webrtc.org, henrik.lundin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7429 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-13 10:53:42 +00:00
3ea35fdb1b common_audio: Removed macro WEBRTC_SPL_LSHIFT_W16
The macro was a trivial << operation and where used has been replaced by <<. Affected components are
* ilbc
* isacfix

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7404 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-09 08:47:02 +00:00
f71785cd3b audio_coding: Replaced macro WEBRTC_SPL_RSHIFT_W16 with >>
Replaced trivial shift macro with >>. The actual implementation of the macro is simply >>.

Affected codecs:
* ilbc
* isac/fix

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7396 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-08 15:36:30 +00:00
532ed43e85 Prevent reading outside iSAC bitstream, if the stream is corrupted.
BUG=chrome_373312(#24)
R=henrik.lundin@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7379 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-07 00:21:02 +00:00
7c15510f38 common_audio refactoring: Removed macro WEBRTC_SPL_LSHIFT_U32
The macro is a trivial shift operator including a cast before shift. There is no guard against negative shifts. Replaced with << at place and added casts when necessary.

Affects both fixed and float point versions of iSAC

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7320 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-29 09:40:38 +00:00
7ee24a7906 WebRtcIsac_Encode and WebRtcIsacfix_Encode: Type encoded stream as uint8_t
We have to fix both at once, since there's a macro that calls one of
them or the other.

BUG=909
R=andrew@webrtc.org, bjornv@webrtc.org, henrik.lundin@webrtc.org, minyue@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=7266

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7285 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-24 10:31:02 +00:00
a3c4d4dd2c Revert 7266 "WebRtcIsac_Encode and WebRtcIsacfix_Encode: Type en..."
This was causing apparently legitimate failures on the following bots:
http://chromegw/i/client.webrtc/builders/Linux64%20Release%20%5Blarge%20tests%5D/builds/2599
http://chromegw/i/client.webrtc/builders/Android%20Tests%20%28KK%20Nexus5%29%28dbg%29/builds/2023
http://chromegw/i/client.webrtc/builders/Android%20Tests%20%28JB%20Nexus7.2%29%28dbg%29/builds/1825
http://chromegw/i/client.webrtc/builders/Android%20Tests%20%28KK%20Nexus5%29/builds/2013
http://chromegw/i/client.webrtc/builders/Android%20Tests%20%28JB%20Nexus7.2%29/builds/1795

> WebRtcIsac_Encode and WebRtcIsacfix_Encode: Type encoded stream as uint8_t
> 
> We have to fix both at once, since there's a macro that calls one of
> them or the other.
> 
> BUG=909
> R=andrew@webrtc.org, bjornv@webrtc.org, henrik.lundin@webrtc.org, minyue@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/19229004

TBR=kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7267 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-23 01:32:57 +00:00
8c5740b485 WebRtcIsac_Encode and WebRtcIsacfix_Encode: Type encoded stream as uint8_t
We have to fix both at once, since there's a macro that calls one of
them or the other.

BUG=909
R=andrew@webrtc.org, bjornv@webrtc.org, henrik.lundin@webrtc.org, minyue@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7266 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-22 23:04:14 +00:00
262e676a08 Reland rev 7041 with BUILD.gn files.
Original description:
  Audio codecs to include webrtc/typedefs.h

  Will easy merge of webrtc/typedefs.h and webrtc/base/basictypes.h

  CL Generated with:
  $ git grep -l \"typedefs.h\" | xargs sed -i "s/typedefs.h/webrtc\/typedefs.h/g"

BUG=3777
R=henrik.lundin@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7061 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-04 13:28:48 +00:00
3c0aae17f0 Change gflags and gmock includes to be full paths.
This will fix PRESUBMIT warnings developers will get due to
r7014 and r7020.

Also some minor style cleanup in:
webrtc/modules/audio_coding/main/test/RTPFile.cc
webrtc/modules/audio_coding/neteq/test/RTPjitter.cc

BUG=
R=henrik.lundin@webrtc.org, niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7058 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-04 09:55:40 +00:00
1b8b4c4959 Revert 7041 " Audio codecs to include webrtc/typedefs.h"
Breaks gn build, see e.g. http://chromegw.corp.google.com/i/chromium.webrtc.fyi/builders/Linux%20GN/builds/1248/steps/compile/logs/stdio

R=turaj@webrtc.org
TBR=andresp@webrtc.org
BUG=N/A

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7046 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-03 19:42:16 +00:00
9730d3aae9 Audio codecs to include webrtc/typedefs.h
Will easy merge of webrtc/typedefs.h and webrtc/base/basictypes.h

CL Generated with:
$ git grep -l \"typedefs.h\" | xargs sed -i "s/typedefs.h/webrtc\/typedefs.h/g"

BUG=3777
R=henrik.lundin@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7041 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-03 14:37:18 +00:00
af7fdfcde8 Add LTO support for Android Chromium.
This is to add support for a Link-Time Optimizations experiment in Android Chromium. As it is disabled by default, it won't change anything for most configurations.
BUG=chromium:407544
R=andrew@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7009 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-29 17:41:13 +00:00
df9fef6638 common_audio: Removed macro WEBRTC_SPL_DIV
The macro has no built-in divide by zero check. The only thing that is done is casting to int32_t.
In addition a bug was discovered where it was supposed to do a division with rounding, but instead did a division with truncation + addition by 2. This is corrected in this CL.

BUG=3348,3353
TESTED=locally on Linux
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6998 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-28 12:57:32 +00:00
4f71e22bf9 Refactoring common_audio/signal_processing: Remove macro WEBRTC_SPL_UDIV
This macro is a direct use of the division operator without checking for division by zero. Hence, it is dangerous to use.
This CL replaces the macro with '/' at place.

BUG=3348,3353
TESTED=locally on linux and trybots
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6976 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-26 10:25:10 +00:00
047a46f8b4 Remove Android.mk build files.
These files are generally not maintained and break, some contain files
that don't exist anymore and do not build anymore. If we need to add
some of these back we should really set up a bot for them.

R=andrew@webrtc.org, glaznev@webrtc.org, henrike@webrtc.org
BUG=

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6974 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-26 08:48:51 +00:00
926707b167 Refactoring common_audio: Replace trivial multiplication macro
This multiplication macro literally use the '*' operator, so there is no need for it.

BUG=3348,3353
TESTED=locally on linux and trybots
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6964 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-25 11:42:42 +00:00
6e71d17bc9 Refactoring common_audio/signal_processing: Replaces trivial macros
The macros WEBRTC_SPL_ADD_SAT_W16 and WEBRTC_SPL_ADD_SAT_W32 make direct use of the corresponding functions WebRtcSpl_AddSatW16() and WebRtcSpl_AddSatW32().
This CL replaces these macros in the code.

BUG=3348,3353
TESTED=locally on linux and trybots
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6960 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-25 07:44:52 +00:00
742bac20b2 Remove __inline from WebRtcIsacfix_Log2Q8.
This function is used externally and needs to always be emitted, also
there's no point in explicitly marking this as inline.

R=tina.legrand@webrtc.org
BUG=

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6926 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-19 06:54:12 +00:00
f86b262588 MIPS optimizations for ISAC (patch #3)
Implemented functions:
- WebRtcIsacfix_MatrixProduct1
- WebRtcIsacfix_MatrixProduct2

The optimizations are bit-exact to the C code.

R=andrew@webrtc.org, tina.legrand@webrtc.org

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6919 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-18 17:32:19 +00:00
34a865a038 Roll chromium_revision 288251:289723
Mainly to pick up the libvpx.gyp change in r288724
to unblock https://webrtc-codereview.appspot.com/16229005/

Overview of changes in Chrome DEPS:
$ svn diff http://src.chromium.org/chrome/trunk/src/DEPS -r 288251:289723
which can be compared with the output of:
$ svn cat http://webrtc.googlecode.com/svn/trunk/DEPS | grep chromium_deps | sed 's/^ *//' | sort | uniq

In a WebRTC checkout, that sums up to the following relevant changes:
* src/buildtools 59b932:567f0a
* testing/gtest 643:692
* testing/gmock 410:485
* third_party/boringssl/src 533cbe:c3d796
* third_party/libvpx 287125:289332
* third_party/libyuv 1035:1038
* third_party/nss 287121:289430
* third_party/opus/src 256783:289085
* tools/gyp 1959:1964

BUG=2863, chromium:339647
TEST=Local testing as trybots currently cannot handle DEPS changes properly due to http://crbug.com/385594
R=tommi@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6913 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-16 18:49:55 +00:00
1e3ef4b999 common_audio/signal_processing: Remove macro WEBRTC_SPL_UMUL_32_16_RSFT16
Macros should in general be avoided. WEBRTC_SPL_UMUL_32_16_RSFT16 is only used in iSAC fixed point as part of multiplying with LSB and MSB. A better approach is to have one function for that complete operation in iSAC.

This CL removes the macro and replace the operation locally.

BUG=3148, 3353
TESTED=locally on Linux and trybots
R=tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6907 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-15 05:17:20 +00:00
0a3cbb3906 common_audio/signal_processing: Removes macro WEBRTC_SPL_MUL_32_32_RSFT32
The macro is only used at four places in iSAC fixed point and the macro have been replaced at those places.
In addition, it is used in a unit test, but throws a warning treated as error (issue3674).

The macro has both MIPS and armv7 optimizations. Removing them impacts only MIPS platforms without DSP ASE. This may cause a very small increase in complexity when using iSAC fix.
The armv7 optimizations are not used anywhere, since specific ones are used inline in iSAC fix.

BUG=3348,3353,3674
TESTED=locally and trybots
R=ljubomir.papuga@gmail.com, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6871 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-12 10:54:50 +00:00
ceafa8cce9 MIPS optimizations for ISAC (patch #2)
Implemented functions:
- WebRtcIsacfix_CalculateResidualEnergy
- WebRtcIsacfix_Spec2Time
- WebRtcIsacfix_Time2Spec
- WebRtcIsacfix_HighpassFilterFixDec32
- WebRtcIsacfix_PCorr2Q32

Gain achieved: aprox. further 5% on top of patch#1 on ISAC encoding path.
The optimizations are bit-exact to the C code, with the excception of the
MIPS DSPr2 variant of the WebRtcIsacfix_Time2Spec function (the accuracy of
the WebRtcIsacfix_Time2Spec MIPS DSPr2 variant is same or better than C
variant). Code verification and improvement achieved have been determined
using the iSACFixtest application.

R=andrew@webrtc.org, tina.legrand@webrtc.org

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6749 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-21 16:43:13 +00:00
8de8c9155e Maintain constantness of the input to iSAC-fix decoder, and prevent heap-buffer overflow.
To save memory in iSAC-fix, decoder operated directly on the recieved bitstream. However, this breaks constantness of input when decoder performed in-place big to little Endian conversion. Furthermore, for bit-streams with odd lengths, this meant writing outside the memory. That is because the last byte will be shifted to the Most Significat Byte which might be outside the allocated memory.

If we care about memory, the solution is to do a big-to-little Endian conversion everytime we read a Word16 from the bitstream.

BUG=845,chrome:379458
R=henrik.lundin@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6494 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-19 15:47:09 +00:00
721f970cba common_audio: Removes macro WEBRTC_SPL_LSHIFT_U16
We should avoid macros in general (see style guide) and the shift ones are particular dangerous since they assume that the user apply a non-negative shift.

Related CL: https://webrtc-codereview.appspot.com/16669004

BUG=3348,3353
TESTED=trybots and manually on linux
R=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6444 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-16 10:30:14 +00:00
18026abd82 common_audio/signal_processing: Removes macro WEBRTC_SPL_RSHIFT_U16
This macro is only used at a few places and implies a cast to uint16_t before right shifting. All places already use uint16_t. Further, the amount of shifts applied in the macro has no sanity check for negativity, makes the macro dangerous to use.

BUG=3348,3353
TESTED=trybots and manually
R=kwiberg@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6393 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-11 06:53:20 +00:00
782978cfcb common_audio/signal_processing: Moves WEBRTC_SPL_UMUL_16_16_RSFT16 to iSAC fix
This macro is only used by the fixed point version of iSAC. Replacing the (five) locations in arith_routines_logist.c, where it is used, with the actual operation.

BUG=3348,3353
TESTED=trybots and manually
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6392 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-11 06:39:03 +00:00
919914d71b MIPS optimizations for ISAC (patch #1)
Implemented functions:
    - WebRtcIsacfix_AutocorrMIPS
    - WebRtcIsacfix_FilterArLoop
    - WebRtcIsacfix_FilterMaLoopMIPS
    - WebRtcIsacfix_AllpassFilter2FixDec16MIPS (only MIPS DSP)
    - WebRtcIsacfix_PitchFilterCore (only MIPS DSPR2)

Gain achieved: from aprox. 15% (MIPS32) up to aprox. 40% (MIPS DSPR2)

R=andrew@webrtc.org, tina.legrand@webrtc.org

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6387 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-10 18:13:15 +00:00