2011-07-07 08:21:25 +00:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
|
|
|
|
*
|
|
|
|
|
* Use of this source code is governed by a BSD-style license
|
|
|
|
|
* that can be found in the LICENSE file in the root of the source
|
|
|
|
|
* tree. An additional intellectual property rights grant can be found
|
|
|
|
|
* in the file PATENTS. All contributing project authors may
|
|
|
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* This file contains the function WebRtcSpl_Energy().
|
|
|
|
|
* The description header can be found in signal_processing_library.h
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
2013-05-27 09:49:58 +00:00
|
|
|
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
|
2011-07-07 08:21:25 +00:00
|
|
|
|
2013-04-09 16:40:28 +00:00
|
|
|
int32_t WebRtcSpl_Energy(int16_t* vector, int vector_length, int* scale_factor)
|
2011-07-07 08:21:25 +00:00
|
|
|
{
|
2013-04-09 16:40:28 +00:00
|
|
|
int32_t en = 0;
|
2011-07-07 08:21:25 +00:00
|
|
|
int i;
|
Reformat existing code. There should be no functional effects.
This includes changes like:
* Attempt to break lines at better positions
* Use "override" in more places, don't use "virtual" with it
* Use {} where the body is more than one line
* Make declaration and definition arg names match
* Eliminate unused code
* EXPECT_EQ(expected, actual) (but use (actual, expected) for e.g. _GT)
* Correct #include order
* Use anonymous namespaces in preference to "static" for file-scoping
* Eliminate unnecessary casts
* Update reference code in comments of ARM assembly sources to match actual current C code
* Fix indenting to be more style-guide compliant
* Use arraysize() in more places
* Use bool instead of int for "boolean" values (0/1)
* Shorten and simplify code
* Spaces around operators
* 80 column limit
* Use const more consistently
* Space goes after '*' in type name, not before
* Remove unnecessary return values
* Use "(var == const)", not "(const == var)"
* Spelling
* Prefer true, typed constants to "enum hack" constants
* Avoid "virtual" on non-overridden functions
* ASSERT(x == y) -> ASSERT_EQ(y, x)
BUG=none
R=andrew@webrtc.org, asapersson@webrtc.org, henrika@webrtc.org, juberti@webrtc.org, kjellander@webrtc.org, kwiberg@webrtc.org
Review URL: https://codereview.webrtc.org/1172163004
Cr-Commit-Position: refs/heads/master@{#9420}
2015-06-11 14:31:38 -07:00
|
|
|
int scaling =
|
|
|
|
|
WebRtcSpl_GetScalingSquare(vector, vector_length, vector_length);
|
2011-07-07 08:21:25 +00:00
|
|
|
int looptimes = vector_length;
|
2013-04-09 16:40:28 +00:00
|
|
|
int16_t *vectorptr = vector;
|
2011-07-07 08:21:25 +00:00
|
|
|
|
|
|
|
|
for (i = 0; i < looptimes; i++)
|
|
|
|
|
{
|
2015-03-25 13:29:49 +01:00
|
|
|
en += (*vectorptr * *vectorptr) >> scaling;
|
|
|
|
|
vectorptr++;
|
2011-07-07 08:21:25 +00:00
|
|
|
}
|
|
|
|
|
*scale_factor = scaling;
|
|
|
|
|
|
|
|
|
|
return en;
|
|
|
|
|
}
|