c4_17pf.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. ********************************************************************************
  3. *
  4. * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001
  5. * R99 Version 3.3.0
  6. * REL-4 Version 4.1.0
  7. *
  8. ********************************************************************************
  9. *
  10. * File : c4_17pf.h
  11. * Purpose : Searches a 17 bit algebraic codebook containing 4 pulses
  12. * in a frame of 40 samples.
  13. *
  14. ********************************************************************************
  15. */
  16. #ifndef c4_17pf_h
  17. #define c4_17pf_h "$Id $"
  18. /*
  19. ********************************************************************************
  20. * INCLUDE FILES
  21. ********************************************************************************
  22. */
  23. #include "typedef.h"
  24. /*
  25. ********************************************************************************
  26. * LOCAL VARIABLES AND TABLES
  27. ********************************************************************************
  28. */
  29. /*
  30. ********************************************************************************
  31. * DEFINITION OF DATA TYPES
  32. ********************************************************************************
  33. */
  34. /*
  35. ********************************************************************************
  36. * DECLARATION OF PROTOTYPES
  37. ********************************************************************************
  38. */
  39. /*************************************************************************
  40. *
  41. * FUNCTION: code_4i40_17bits()
  42. *
  43. * PURPOSE: Searches a 17 bit algebraic codebook containing 4 pulses
  44. * in a frame of 40 samples.
  45. *
  46. * DESCRIPTION:
  47. * The code length is 40, containing 4 nonzero pulses: i0...i3.
  48. * All pulses can have two possible amplitudes: +1 or -1.
  49. * Pulse i0 to i2 can have 8 possible positions, pulse i3 can have
  50. * 2x8=16 positions.
  51. *
  52. * i0 : 0, 5, 10, 15, 20, 25, 30, 35.
  53. * i1 : 1, 6, 11, 16, 21, 26, 31, 36.
  54. * i2 : 2, 7, 12, 17, 22, 27, 32, 37.
  55. * i3 : 3, 8, 13, 18, 23, 28, 33, 38.
  56. * 4, 9, 14, 19, 24, 29, 34, 39.
  57. *
  58. *************************************************************************/
  59. Word16 code_4i40_17bits(
  60. Word16 x[], /* (i) : target vector */
  61. Word16 h[], /* (i) : impulse response of weighted synthesis filter */
  62. /* h[-L_subfr..-1] must be set to zero. */
  63. Word16 T0, /* (i) : Pitch lag */
  64. Word16 pitch_sharp, /* (i) : Last quantized pitch gain */
  65. Word16 code[], /* (o) : Innovative codebook */
  66. Word16 y[], /* (o) : filtered fixed codebook excitation */
  67. Word16 * sign /* (o) : Signs of 4 pulses */
  68. );
  69. #endif