Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Matthew Waters
webrtc-audio-processing
Commits
7e71fffb
Commit
7e71fffb
authored
Oct 20, 2011
by
Arun Raghavan
Browse files
Update code to upstream revision r766
Removes matlab tests, adds delay estimation logging, and some other minor fixes/improvements.
parent
139f0b6d
Changes
78
Hide whitespace changes
Inline
Side-by-side
configure.ac
View file @
7e71fffb
# Revision changelog (version - date, svn rev. from upstream that was merged)
# 0.1 - 1
5 Sep
2011, r
597
# 0.1 - 1
9 Oct
2011, r
766
AC_INIT([webrtc-audio-processing], [0.1])
AM_INIT_AUTOMAKE([tar-ustar])
...
...
src/common_audio/signal_processing_library/OWNERS
deleted
100644 → 0
View file @
139f0b6d
bjornv@webrtc.org
tina.legrand@webrtc.org
jan.skoglund@webrtc.org
src/common_audio/signal_processing_library/main/interface/signal_processing_library.h
View file @
7e71fffb
...
...
@@ -1659,6 +1659,30 @@ void WebRtcSpl_SynthesisQMF(const WebRtc_Word16* low_band,
// - out_data : Super-wideband speech signal, 0-16 kHz
//
// WebRtc_Word16 WebRtcSpl_SatW32ToW16(...)
//
// This function saturates a 32-bit word into a 16-bit word.
//
// Input:
// - value32 : The value of a 32-bit word.
//
// Output:
// - out16 : the saturated 16-bit word.
//
// int32_t WebRtc_MulAccumW16(...)
//
// This function multiply a 16-bit word by a 16-bit word, and accumulate this
// value to a 32-bit integer.
//
// Input:
// - a : The value of the first 16-bit word.
// - b : The value of the second 16-bit word.
// - c : The value of an 32-bit integer.
//
// Return Value: The value of a * b + c.
//
// WebRtc_Word16 WebRtcSpl_get_version(...)
//
// This function gives the version string of the Signal Processing Library.
...
...
src/common_audio/signal_processing_library/main/interface/spl_inl.h
View file @
7e71fffb
...
...
@@ -19,16 +19,20 @@
#include
"spl_inl_armv7.h"
#else
static
__inline
WebRtc_Word16
WebRtcSpl_AddSatW16
(
WebRtc_Word16
a
,
WebRtc_Word16
b
)
{
WebRtc_Word32
s_sum
=
(
WebRtc_Word32
)
a
+
(
WebRtc_Word32
)
b
;
static
__inline
WebRtc_Word16
WebRtcSpl_SatW32ToW16
(
WebRtc_Word32
value32
)
{
WebRtc_Word16
out16
=
(
WebRtc_Word16
)
value32
;
if
(
s_sum
>
WEBRTC_SPL_WORD16_MAX
)
s_sum
=
WEBRTC_SPL_WORD16_MAX
;
else
if
(
s_sum
<
WEBRTC_SPL_WORD16_MIN
)
s_sum
=
WEBRTC_SPL_WORD16_MIN
;
if
(
value32
>
32767
)
out16
=
32767
;
else
if
(
value32
<
-
32768
)
out16
=
-
32768
;
return
(
WebRtc_Word16
)
s_sum
;
return
out16
;
}
static
__inline
WebRtc_Word16
WebRtcSpl_AddSatW16
(
WebRtc_Word16
a
,
WebRtc_Word16
b
)
{
return
WebRtcSpl_SatW32ToW16
((
WebRtc_Word32
)
a
+
(
WebRtc_Word32
)
b
);
}
static
__inline
WebRtc_Word32
WebRtcSpl_AddSatW32
(
WebRtc_Word32
l_var1
,
...
...
@@ -54,24 +58,7 @@ static __inline WebRtc_Word32 WebRtcSpl_AddSatW32(WebRtc_Word32 l_var1,
static
__inline
WebRtc_Word16
WebRtcSpl_SubSatW16
(
WebRtc_Word16
var1
,
WebRtc_Word16
var2
)
{
WebRtc_Word32
l_diff
;
WebRtc_Word16
s_diff
;
// perform subtraction
l_diff
=
(
WebRtc_Word32
)
var1
-
(
WebRtc_Word32
)
var2
;
// default setting
s_diff
=
(
WebRtc_Word16
)
l_diff
;
// check for overflow
if
(
l_diff
>
(
WebRtc_Word32
)
32767
)
s_diff
=
(
WebRtc_Word16
)
32767
;
// check for underflow
if
(
l_diff
<
(
WebRtc_Word32
)
-
32768
)
s_diff
=
(
WebRtc_Word16
)
-
32768
;
return
s_diff
;
return
WebRtcSpl_SatW32ToW16
((
WebRtc_Word32
)
var1
-
(
WebRtc_Word32
)
var2
);
}
static
__inline
WebRtc_Word32
WebRtcSpl_SubSatW32
(
WebRtc_Word32
l_var1
,
...
...
@@ -161,6 +148,12 @@ static __inline int WebRtcSpl_NormW16(WebRtc_Word16 a) {
return
zeros
;
}
static
__inline
int32_t
WebRtc_MulAccumW16
(
int16_t
a
,
int16_t
b
,
int32_t
c
)
{
return
(
a
*
b
+
c
);
}
#endif // WEBRTC_ARCH_ARM_V7A
#endif // WEBRTC_SPL_SPL_INL_H_
src/common_audio/signal_processing_library/main/interface/spl_inl_armv7.h
View file @
7e71fffb
...
...
@@ -45,6 +45,14 @@ static __inline WebRtc_Word32 WEBRTC_SPL_MUL_16_16(WebRtc_Word16 a,
return
tmp
;
}
static
__inline
int32_t
WebRtc_MulAccumW16
(
int16_t
a
,
int16_t
b
,
int32_t
c
)
{
int32_t
tmp
=
0
;
__asm__
(
"smlabb %0, %1, %2, %3"
:
"=r"
(
tmp
)
:
"r"
(
a
),
"r"
(
b
),
"r"
(
c
));
return
tmp
;
}
static
__inline
WebRtc_Word16
WebRtcSpl_AddSatW16
(
WebRtc_Word16
a
,
WebRtc_Word16
b
)
{
WebRtc_Word32
s_sum
;
...
...
@@ -119,4 +127,11 @@ static __inline int WebRtcSpl_NormW16(WebRtc_Word16 a) {
return
tmp
-
17
;
}
static
__inline
WebRtc_Word16
WebRtcSpl_SatW32ToW16
(
WebRtc_Word32
value32
)
{
WebRtc_Word16
out16
;
__asm__
(
"ssat %r0, #16, %r1"
:
"=r"
(
out16
)
:
"r"
(
value32
));
return
out16
;
}
#endif // WEBRTC_SPL_SPL_INL_ARMV7_H_
src/common_audio/signal_processing_library/main/source/downsample_fast.c
View file @
7e71fffb
...
...
@@ -52,7 +52,7 @@ int WebRtcSpl_DownsampleFast(WebRtc_Word16 *in_ptr, WebRtc_Word16 in_length,
// If output is higher than 32768, saturate it. Same with negative side
*
downsampled_ptr
++
=
(
WebRtc
_Word16
)
WEBRTC_SPL_SAT
(
32767
,
o
,
-
32768
);
*
downsampled_ptr
++
=
WebRtc
Spl_SatW32ToW16
(
o
);
}
return
0
;
...
...
src/common_audio/signal_processing_library/main/source/resample_by_2.c
View file @
7e71fffb
...
...
@@ -17,154 +17,165 @@
#include
"signal_processing_library.h"
#ifdef WEBRTC_ARCH_ARM_V7A
// allpass filter coefficients.
static
const
WebRtc_UWord32
kResampleAllpass1
[
3
]
=
{
3284
,
24441
,
49528
<<
15
};
static
const
WebRtc_UWord32
kResampleAllpass2
[
3
]
=
{
12199
,
37471
<<
15
,
60255
<<
15
};
// Multiply two 32-bit values and accumulate to another input value.
// Return: state + ((diff * tbl_value) >> 16)
static
__inline
WebRtc_Word32
MUL_ACCUM_1
(
WebRtc_Word32
tbl_value
,
WebRtc_Word32
diff
,
WebRtc_Word32
state
)
{
WebRtc_Word32
result
;
__asm__
(
"smlawb %r0, %r1, %r2, %r3"
:
"=r"
(
result
)
:
"r"
(
diff
),
"r"
(
tbl_value
),
"r"
(
state
));
return
result
;
}
// Multiply two 32-bit values and accumulate to another input value.
// Return: Return: state + (((diff << 1) * tbl_value) >> 32)
//
// The reason to introduce this function is that, in case we can't use smlawb
// instruction (in MUL_ACCUM_1) due to input value range, we can still use
// smmla to save some cycles.
static
__inline
WebRtc_Word32
MUL_ACCUM_2
(
WebRtc_Word32
tbl_value
,
WebRtc_Word32
diff
,
WebRtc_Word32
state
)
{
WebRtc_Word32
result
;
__asm__
(
"smmla %r0, %r1, %r2, %r3"
:
"=r"
(
result
)
:
"r"
(
diff
<<
1
),
"r"
(
tbl_value
),
"r"
(
state
));
return
result
;
}
#else
// allpass filter coefficients.
static
const
WebRtc_UWord16
kResampleAllpass1
[
3
]
=
{
3284
,
24441
,
49528
};
static
const
WebRtc_UWord16
kResampleAllpass2
[
3
]
=
{
12199
,
37471
,
60255
};
// Multiply a 32-bit value with a 16-bit value and accumulate to another input:
#define MUL_ACCUM_1(a, b, c) WEBRTC_SPL_SCALEDIFF32(a, b, c)
#define MUL_ACCUM_2(a, b, c) WEBRTC_SPL_SCALEDIFF32(a, b, c)
#endif // WEBRTC_ARCH_ARM_V7A
// decimator
void
WebRtcSpl_DownsampleBy2
(
const
WebRtc_Word16
*
in
,
const
WebRtc_Word16
len
,
WebRtc_Word16
*
out
,
WebRtc_Word32
*
filtState
)
{
WebRtc_Word32
tmp1
,
tmp2
,
diff
,
in32
,
out32
;
WebRtc_Word16
i
;
register
WebRtc_Word32
state0
=
filtState
[
0
];
register
WebRtc_Word32
state1
=
filtState
[
1
];
register
WebRtc_Word32
state2
=
filtState
[
2
];
register
WebRtc_Word32
state3
=
filtState
[
3
];
register
WebRtc_Word32
state4
=
filtState
[
4
];
register
WebRtc_Word32
state5
=
filtState
[
5
];
register
WebRtc_Word32
state6
=
filtState
[
6
];
register
WebRtc_Word32
state7
=
filtState
[
7
];
for
(
i
=
(
len
>>
1
);
i
>
0
;
i
--
)
{
// lower allpass filter
in32
=
(
WebRtc_Word32
)(
*
in
++
)
<<
10
;
diff
=
in32
-
state1
;
tmp1
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass2
[
0
],
diff
,
state0
);
state0
=
in32
;
diff
=
tmp1
-
state2
;
tmp2
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass2
[
1
],
diff
,
state1
);
state1
=
tmp1
;
diff
=
tmp2
-
state3
;
state3
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass2
[
2
],
diff
,
state2
);
state2
=
tmp2
;
// upper allpass filter
in32
=
(
WebRtc_Word32
)(
*
in
++
)
<<
10
;
diff
=
in32
-
state5
;
tmp1
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass1
[
0
],
diff
,
state4
);
state4
=
in32
;
diff
=
tmp1
-
state6
;
tmp2
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass1
[
1
],
diff
,
state5
);
state5
=
tmp1
;
diff
=
tmp2
-
state7
;
state7
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass1
[
2
],
diff
,
state6
);
state6
=
tmp2
;
// add two allpass outputs, divide by two and round
out32
=
(
state3
+
state7
+
1024
)
>>
11
;
// limit amplitude to prevent wrap-around, and write to output array
#ifdef WEBRTC_ARCH_ARM_V7A
__asm__
(
"ssat %r0, #16, %r1"
:
"=r"
(
*
out
)
:
"r"
(
out32
));
out
++
;
#else
if
(
out32
>
32767
)
*
out
++
=
32767
;
else
if
(
out32
<
-
32768
)
*
out
++
=
-
32768
;
else
*
out
++
=
(
WebRtc_Word16
)
out32
;
#endif
}
filtState
[
0
]
=
state0
;
filtState
[
1
]
=
state1
;
filtState
[
2
]
=
state2
;
filtState
[
3
]
=
state3
;
filtState
[
4
]
=
state4
;
filtState
[
5
]
=
state5
;
filtState
[
6
]
=
state6
;
filtState
[
7
]
=
state7
;
WebRtc_Word16
*
out
,
WebRtc_Word32
*
filtState
)
{
WebRtc_Word32
tmp1
,
tmp2
,
diff
,
in32
,
out32
;
WebRtc_Word16
i
;
register
WebRtc_Word32
state0
=
filtState
[
0
];
register
WebRtc_Word32
state1
=
filtState
[
1
];
register
WebRtc_Word32
state2
=
filtState
[
2
];
register
WebRtc_Word32
state3
=
filtState
[
3
];
register
WebRtc_Word32
state4
=
filtState
[
4
];
register
WebRtc_Word32
state5
=
filtState
[
5
];
register
WebRtc_Word32
state6
=
filtState
[
6
];
register
WebRtc_Word32
state7
=
filtState
[
7
];
for
(
i
=
(
len
>>
1
);
i
>
0
;
i
--
)
{
// lower allpass filter
in32
=
(
WebRtc_Word32
)(
*
in
++
)
<<
10
;
diff
=
in32
-
state1
;
tmp1
=
MUL_ACCUM_1
(
kResampleAllpass2
[
0
],
diff
,
state0
);
state0
=
in32
;
diff
=
tmp1
-
state2
;
tmp2
=
MUL_ACCUM_2
(
kResampleAllpass2
[
1
],
diff
,
state1
);
state1
=
tmp1
;
diff
=
tmp2
-
state3
;
state3
=
MUL_ACCUM_2
(
kResampleAllpass2
[
2
],
diff
,
state2
);
state2
=
tmp2
;
// upper allpass filter
in32
=
(
WebRtc_Word32
)(
*
in
++
)
<<
10
;
diff
=
in32
-
state5
;
tmp1
=
MUL_ACCUM_1
(
kResampleAllpass1
[
0
],
diff
,
state4
);
state4
=
in32
;
diff
=
tmp1
-
state6
;
tmp2
=
MUL_ACCUM_1
(
kResampleAllpass1
[
1
],
diff
,
state5
);
state5
=
tmp1
;
diff
=
tmp2
-
state7
;
state7
=
MUL_ACCUM_2
(
kResampleAllpass1
[
2
],
diff
,
state6
);
state6
=
tmp2
;
// add two allpass outputs, divide by two and round
out32
=
(
state3
+
state7
+
1024
)
>>
11
;
// limit amplitude to prevent wrap-around, and write to output array
*
out
++
=
WebRtcSpl_SatW32ToW16
(
out32
);
}
filtState
[
0
]
=
state0
;
filtState
[
1
]
=
state1
;
filtState
[
2
]
=
state2
;
filtState
[
3
]
=
state3
;
filtState
[
4
]
=
state4
;
filtState
[
5
]
=
state5
;
filtState
[
6
]
=
state6
;
filtState
[
7
]
=
state7
;
}
void
WebRtcSpl_UpsampleBy2
(
const
WebRtc_Word16
*
in
,
WebRtc_Word16
len
,
WebRtc_Word16
*
out
,
WebRtc_Word32
*
filtState
)
{
WebRtc_Word32
tmp1
,
tmp2
,
diff
,
in32
,
out32
;
WebRtc_Word16
i
;
register
WebRtc_Word32
state0
=
filtState
[
0
];
register
WebRtc_Word32
state1
=
filtState
[
1
];
register
WebRtc_Word32
state2
=
filtState
[
2
];
register
WebRtc_Word32
state3
=
filtState
[
3
];
register
WebRtc_Word32
state4
=
filtState
[
4
];
register
WebRtc_Word32
state5
=
filtState
[
5
];
register
WebRtc_Word32
state6
=
filtState
[
6
];
register
WebRtc_Word32
state7
=
filtState
[
7
];
for
(
i
=
len
;
i
>
0
;
i
--
)
{
// lower allpass filter
in32
=
(
WebRtc_Word32
)(
*
in
++
)
<<
10
;
diff
=
in32
-
state1
;
tmp1
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass1
[
0
],
diff
,
state0
);
state0
=
in32
;
diff
=
tmp1
-
state2
;
tmp2
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass1
[
1
],
diff
,
state1
);
state1
=
tmp1
;
diff
=
tmp2
-
state3
;
state3
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass1
[
2
],
diff
,
state2
);
state2
=
tmp2
;
// round; limit amplitude to prevent wrap-around; write to output array
out32
=
(
state3
+
512
)
>>
10
;
#ifdef WEBRTC_ARCH_ARM_V7A
__asm__
(
"ssat %r0, #16, %r1"
:
"=r"
(
*
out
)
:
"r"
(
out32
));
out
++
;
#else
if
(
out32
>
32767
)
*
out
++
=
32767
;
else
if
(
out32
<
-
32768
)
*
out
++
=
-
32768
;
else
*
out
++
=
(
WebRtc_Word16
)
out32
;
#endif
// upper allpass filter
diff
=
in32
-
state5
;
tmp1
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass2
[
0
],
diff
,
state4
);
state4
=
in32
;
diff
=
tmp1
-
state6
;
tmp2
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass2
[
1
],
diff
,
state5
);
state5
=
tmp1
;
diff
=
tmp2
-
state7
;
state7
=
WEBRTC_SPL_SCALEDIFF32
(
kResampleAllpass2
[
2
],
diff
,
state6
);
state6
=
tmp2
;
// round; limit amplitude to prevent wrap-around; write to output array
out32
=
(
state7
+
512
)
>>
10
;
#ifdef WEBRTC_ARCH_ARM_V7A
__asm__
(
"ssat %r0, #16, %r1"
:
"=r"
(
*
out
)
:
"r"
(
out32
));
out
++
;
#else
if
(
out32
>
32767
)
*
out
++
=
32767
;
else
if
(
out32
<
-
32768
)
*
out
++
=
-
32768
;
else
*
out
++
=
(
WebRtc_Word16
)
out32
;
#endif
}
filtState
[
0
]
=
state0
;
filtState
[
1
]
=
state1
;
filtState
[
2
]
=
state2
;
filtState
[
3
]
=
state3
;
filtState
[
4
]
=
state4
;
filtState
[
5
]
=
state5
;
filtState
[
6
]
=
state6
;
filtState
[
7
]
=
state7
;
void
WebRtcSpl_UpsampleBy2
(
const
WebRtc_Word16
*
in
,
WebRtc_Word16
len
,
WebRtc_Word16
*
out
,
WebRtc_Word32
*
filtState
)
{
WebRtc_Word32
tmp1
,
tmp2
,
diff
,
in32
,
out32
;
WebRtc_Word16
i
;
register
WebRtc_Word32
state0
=
filtState
[
0
];
register
WebRtc_Word32
state1
=
filtState
[
1
];
register
WebRtc_Word32
state2
=
filtState
[
2
];
register
WebRtc_Word32
state3
=
filtState
[
3
];
register
WebRtc_Word32
state4
=
filtState
[
4
];
register
WebRtc_Word32
state5
=
filtState
[
5
];
register
WebRtc_Word32
state6
=
filtState
[
6
];
register
WebRtc_Word32
state7
=
filtState
[
7
];
for
(
i
=
len
;
i
>
0
;
i
--
)
{
// lower allpass filter
in32
=
(
WebRtc_Word32
)(
*
in
++
)
<<
10
;
diff
=
in32
-
state1
;
tmp1
=
MUL_ACCUM_1
(
kResampleAllpass1
[
0
],
diff
,
state0
);
state0
=
in32
;
diff
=
tmp1
-
state2
;
tmp2
=
MUL_ACCUM_1
(
kResampleAllpass1
[
1
],
diff
,
state1
);
state1
=
tmp1
;
diff
=
tmp2
-
state3
;
state3
=
MUL_ACCUM_2
(
kResampleAllpass1
[
2
],
diff
,
state2
);
state2
=
tmp2
;
// round; limit amplitude to prevent wrap-around; write to output array
out32
=
(
state3
+
512
)
>>
10
;
*
out
++
=
WebRtcSpl_SatW32ToW16
(
out32
);
// upper allpass filter
diff
=
in32
-
state5
;
tmp1
=
MUL_ACCUM_1
(
kResampleAllpass2
[
0
],
diff
,
state4
);
state4
=
in32
;
diff
=
tmp1
-
state6
;
tmp2
=
MUL_ACCUM_2
(
kResampleAllpass2
[
1
],
diff
,
state5
);
state5
=
tmp1
;
diff
=
tmp2
-
state7
;
state7
=
MUL_ACCUM_2
(
kResampleAllpass2
[
2
],
diff
,
state6
);
state6
=
tmp2
;
// round; limit amplitude to prevent wrap-around; write to output array
out32
=
(
state7
+
512
)
>>
10
;
*
out
++
=
WebRtcSpl_SatW32ToW16
(
out32
);
}
filtState
[
0
]
=
state0
;
filtState
[
1
]
=
state1
;
filtState
[
2
]
=
state2
;
filtState
[
3
]
=
state3
;
filtState
[
4
]
=
state4
;
filtState
[
5
]
=
state5
;
filtState
[
6
]
=
state6
;
filtState
[
7
]
=
state7
;
}
src/common_audio/signal_processing_library/main/source/splitting_filter.c
View file @
7e71fffb
...
...
@@ -147,13 +147,11 @@ void WebRtcSpl_AnalysisQMF(const WebRtc_Word16* in_data, WebRtc_Word16* low_band
{
tmp
=
filter1
[
i
]
+
filter2
[
i
]
+
1024
;
tmp
=
WEBRTC_SPL_RSHIFT_W32
(
tmp
,
11
);
low_band
[
i
]
=
(
WebRtc_Word16
)
WEBRTC_SPL_SAT
(
WEBRTC_SPL_WORD16_MAX
,
tmp
,
WEBRTC_SPL_WORD16_MIN
);
low_band
[
i
]
=
WebRtcSpl_SatW32ToW16
(
tmp
);
tmp
=
filter1
[
i
]
-
filter2
[
i
]
+
1024
;
tmp
=
WEBRTC_SPL_RSHIFT_W32
(
tmp
,
11
);
high_band
[
i
]
=
(
WebRtc_Word16
)
WEBRTC_SPL_SAT
(
WEBRTC_SPL_WORD16_MAX
,
tmp
,
WEBRTC_SPL_WORD16_MIN
);
high_band
[
i
]
=
WebRtcSpl_SatW32ToW16
(
tmp
);
}
}
...
...
@@ -191,10 +189,10 @@ void WebRtcSpl_SynthesisQMF(const WebRtc_Word16* low_band, const WebRtc_Word16*
for
(
i
=
0
,
k
=
0
;
i
<
kBandFrameLength
;
i
++
)
{
tmp
=
WEBRTC_SPL_RSHIFT_W32
(
filter2
[
i
]
+
512
,
10
);
out_data
[
k
++
]
=
(
WebRtc
_Word16
)
WEBRTC_SPL_SAT
(
32767
,
tmp
,
-
32768
);
out_data
[
k
++
]
=
WebRtc
Spl_SatW32ToW16
(
tmp
);
tmp
=
WEBRTC_SPL_RSHIFT_W32
(
filter1
[
i
]
+
512
,
10
);
out_data
[
k
++
]
=
(
WebRtc
_Word16
)
WEBRTC_SPL_SAT
(
32767
,
tmp
,
-
32768
);
out_data
[
k
++
]
=
WebRtc
Spl_SatW32ToW16
(
tmp
);
}
}
src/common_audio/signal_processing_library/main/source/vector_scaling_operations.c
View file @
7e71fffb
...
...
@@ -125,7 +125,7 @@ void WebRtcSpl_ScaleVectorWithSat(G_CONST WebRtc_Word16 *in_vector, WebRtc_Word1
for
(
i
=
0
;
i
<
in_vector_length
;
i
++
)
{
tmpW32
=
WEBRTC_SPL_MUL_16_16_RSFT
(
*
inptr
++
,
gain
,
right_shifts
);
(
*
outptr
++
)
=
(
WebRtc
_Word16
)
WEBRTC_SPL_SAT
(
32767
,
tmpW32
,
-
32768
);
(
*
outptr
++
)
=
WebRtc
Spl_SatW32ToW16
(
tmpW32
);
}
}
...
...
src/common_audio/vad/Makefile.am
View file @
7e71fffb
...
...
@@ -2,11 +2,9 @@ noinst_LTLIBRARIES = libvad.la
libvad_la_SOURCES
=
main/interface/webrtc_vad.h
\
main/source/webrtc_vad.c
\
main/source/vad_const.c
\
main/source/vad_const.h
\
main/source/vad_defines.h
\
main/source/vad_core.c
\
main/source/vad_core.h
\
main/source/vad_defines.h
\
main/source/vad_filterbank.c
\
main/source/vad_filterbank.h
\
main/source/vad_gmm.c
\
...
...
src/common_audio/vad/OWNERS
deleted
100644 → 0
View file @
139f0b6d
bjornv@webrtc.org
jan.skoglund@webrtc.org
src/common_audio/vad/main/source/vad.gypi
View file @
7e71fffb
...
...
@@ -25,11 +25,9 @@
'sources': [
'../interface/webrtc_vad.h',
'webrtc_vad.c',
'vad_const.c',
'vad_const.h',
'vad_defines.h',
'vad_core.c',
'vad_core.h',
'vad_defines.h',
'vad_filterbank.c',
'vad_filterbank.h',
'vad_gmm.c',
...
...
src/common_audio/vad/main/source/vad_const.c
deleted
100644 → 0
View file @
139f0b6d
/*
* 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 includes the constant values used internally in VAD.
*/
#include
"vad_const.h"
// Spectrum Weighting
const
WebRtc_Word16
kSpectrumWeight
[
6
]
=
{
6
,
8
,
10
,
12
,
14
,
16
};
const
WebRtc_Word16
kCompVar
=
22005
;
// Constant 160*log10(2) in Q9
const
WebRtc_Word16
kLogConst
=
24660
;
// Constant log2(exp(1)) in Q12
const
WebRtc_Word16
kLog10Const
=
5909
;
// Q15
const
WebRtc_Word16
kNoiseUpdateConst
=
655
;
const
WebRtc_Word16
kSpeechUpdateConst
=
6554
;
// Q8
const
WebRtc_Word16
kBackEta
=
154
;
// Coefficients used by WebRtcVad_HpOutput, Q14
const
WebRtc_Word16
kHpZeroCoefs
[
3
]
=
{
6631
,
-
13262
,
6631
};
const
WebRtc_Word16
kHpPoleCoefs
[
3
]
=
{
16384
,
-
7756
,
5620
};
// Allpass filter coefficients, upper and lower, in Q15
// Upper: 0.64, Lower: 0.17
const
WebRtc_Word16
kAllPassCoefsQ15
[
2
]
=
{
20972
,
5571
};
const
WebRtc_Word16
kAllPassCoefsQ13
[
2
]
=
{
5243
,
1392
};
// Q13
// Minimum difference between the two models, Q5
const
WebRtc_Word16
kMinimumDifference
[
6
]
=
{
544
,
544
,
576
,
576
,
576
,
576
};