Performs the fixed (algebraic) codebook search.
IppStatus ippsAlgebraicCodebookSearch_AMRWB_16s(const Ipp16s* pSrcFixedTarget, const Ipp16s* pSrcLtpResidual, Ipp16s* pSrcDstImpulseResponse, Ipp16s* pDstFixedVector, Ipp16s* pDstFltFixedVector, IppSpchBitRate mode, Ipp16s* pDstIndex);
pSrcFixedTarget |
Pointer to the target vector. |
pSrcLtpResidual |
Pointer to the long term prediction residual. |
pSrcDstImpulseResponse |
Pointer to the impulse response of the weighted synthesis filter; pSrcDstImpulseResponse[-L_subfr..-1] must be set to zero. |
pDstFixedVector |
Pointer to the innovative codebook. |
pDstFltFixedVector |
Pointer to the filtered fixed codebook excitation. |
mode |
Coder mode. |
pDstIndex |
Pointer to the indexes of the pulses. |
This function is declared in ippsc.h file. It performs the following steps:
1. Computes backward filtered target vector d by
where x2(n) is the fixed target signal used for fixed codebook search.
2. Computes the signal b(n), which is used for presetting the pulse amplitudes, as:
The scaling factor a controls the amount of dependence of the reference signal on d(n), it is lowered as the bit rate is increased: a=2 for 6.6 and 8.85 bit rates; a=1 for 12.65, 14.25 and 15.85 bit rates; a=0.8 for 18.25 bit rate; a=75 for 19.25 bit rate; and a=0.5 for 23.05 and 23.85 bit rates.
3. Calculates the symmetric Toepliz matrix Φ for each mode. The element of this matrix is computed by
4. Searches signed pulses in appropriate positions and encodes them. The pulse positions for different modes are in the tables below:
Modes 23.05 and 23.85:
Track | Pulse | Positions |
---|---|---|
1 | i0, i4, i8, i12, i16, i20 | 0, 4, 8, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 |
2 | i1, i5, i9, i13, i17, i21 | 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 |
3 | i2, i6, i10, i14, i18, i22 | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 |
4 | i3, i7, i11, i15, i19, i23 | 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 |
Modes 19.85:
Track | Pulse | Positions |
---|---|---|
1 | i0, i4, i8, i12, i16, | 0, 4, 8, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 |
2 | i1, i5, i9, i13, i17, | 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 |
3 | i2, i6, i10, i14, | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 |
4 | i3, i7, i11, i15, | 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 |
Modes 18.25:
Track | Pulse | Positions |
---|---|---|
1 | i0, i4, i8, i12, | 0, 4, 8, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 |
2 | i1, i5, i9, i13, | 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 |
3 | i2, i6, i10, i14, | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 |
4 | i3, i7, i11, i15, | 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 |
Modes 15.85:
Track | Pulse | Positions |
---|---|---|
1 | i0, i4, i8, | 0, 4, 8, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 |
2 | i1, i5, i9, | 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 |
3 | i2, i6, i10, | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 |
4 | i3, i7, i11, | 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 |
Modes 14.25:
Track | Pulse | Positions |
---|---|---|
1 | i0, i4, i8, | 0, 4, 8, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 |
2 | i1, i5, i9, | 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 |
3 | i2, i6, | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 |
4 | i3, i7, | 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 |
Modes 12.65:
Track | Pulse | Positions |
---|---|---|
1 | i0, i4, | 0, 4, 8, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 |
2 | i1, i5, | 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 |
3 | i2, i6, | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 |
4 | i3, i7, | 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 |
Modes 8.85:
Track | Pulse | Positions |
---|---|---|
1 | i0, | 0, 4, 8, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 |
2 | i1, | 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 |
3 | i2, | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 |
4 | i3, | 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 |
Modes 6.60:
Track | Pulse | Positions |
---|---|---|
1 | i0, | 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62 |
2 | i1, | 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35,37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63 |
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error when one of the specified pointers is NULL. |
ippStsRangeErr |
Indicates an error when mode is not a valid element of the enumerated type IppSpchBitRate. |
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.