AlgebraicCodebookSearch_AMRWB

Performs the fixed (algebraic) codebook search.

Syntax

IppStatus ippsAlgebraicCodebookSearch_AMRWB_16s(const Ipp16s* pSrcFixedTarget, const Ipp16s* pSrcLtpResidual, Ipp16s* pSrcDstImpulseResponse, Ipp16s* pDstFixedVector, Ipp16s* pDstFltFixedVector, IppSpchBitRate mode, Ipp16s* pDstIndex);

Parameters

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.

Description

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

Return Values

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.

Submit feedback on this help topic

Copyright © 2000 - 2011, Intel Corporation. All rights reserved.