p_parity.c
上传用户:zhouyunkk
上传日期:2013-01-10
资源大小:59k
文件大小:2k
源码类别:

语音压缩

开发平台:

C/C++

  1. /*
  2.    ITU-T G.729 Annex C - Reference C code for floating point
  3.                          implementation of G.729
  4.                          Version 1.01 of 15.September.98
  5. */
  6. /*
  7. ----------------------------------------------------------------------
  8.                     COPYRIGHT NOTICE
  9. ----------------------------------------------------------------------
  10.    ITU-T G.729 Annex C ANSI C source code
  11.    Copyright (C) 1998, AT&T, France Telecom, NTT, University of
  12.    Sherbrooke.  All rights reserved.
  13. ----------------------------------------------------------------------
  14. */
  15. /*
  16.  File : P_PARITY.C
  17.  Used for the floating point version of both
  18.  G.729 main body and G.729A
  19. */
  20. #include "typedef.h"
  21. #include "version.h"
  22. #ifdef VER_G729A
  23.  #include "ld8a.h"
  24. #else
  25.  #include "ld8k.h"
  26. #endif
  27. /*-----------------------------------------------------*
  28.  * parity_pitch - compute parity bit for first 6 MSBs  *
  29.  *-----------------------------------------------------*/
  30. int parity_pitch(     /* output: parity bit (XOR of 6 MSB bits)     */
  31.   int pitch_index     /* input : index for which parity is computed */
  32. )
  33. {
  34.     int temp, sum, i, bit;
  35.     temp = pitch_index >> 1;
  36.     sum = 1;
  37.     for (i = 0; i <= 5; i++) {
  38.         temp >>= 1;
  39.         bit = temp & 1;
  40.         sum = sum + bit;
  41.     }
  42.     sum = sum & 1;
  43.     return (sum);
  44. }
  45. /*--------------------------------------------------------------------*
  46.  * check_parity_pitch - check parity of index with transmitted parity *
  47.  *--------------------------------------------------------------------*/
  48. int check_parity_pitch(  /* output: 0 = no error, 1= error */
  49.   int pitch_index,       /* input : index of parameter     */
  50.   int parity             /* input : parity bit             */
  51. )
  52. {
  53.     int temp, sum, i, bit;
  54.     temp = pitch_index >> 1;
  55.     sum = 1;
  56.     for (i = 0; i <= 5; i++) {
  57.         temp >>= 1;
  58.         bit = temp & 1;
  59.         sum = sum + bit;
  60.     }
  61.     sum += parity;
  62.     sum = sum & 1;
  63.     return (sum);
  64. }