CODER.C
上传用户:meifeng08
上传日期:2013-06-18
资源大小:5304k
文件大小:3k
源码类别:

语音压缩

开发平台:

C/C++

  1. /*
  2.    ITU-T G.729A Speech Coder    ANSI-C Source Code
  3.    Version 1.1    Last modified: September 1996
  4.    Copyright (c) 1996,
  5.    AT&T, France Telecom, NTT, Universite de Sherbrooke
  6.    All rights reserved.
  7. */
  8. /*-------------------------------------------------------------------*
  9.  * Main program of the ITU-T G.729A  8 kbit/s encoder.               *
  10.  *                                                                   *
  11.  *    Usage : coder speech_file  bitstream_file                      *
  12.  *-------------------------------------------------------------------*/
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include "typedef.h"
  16. #include "basic_op.h"
  17. #include "ld8a.h"
  18. int main(int argc, char *argv[] )
  19. {
  20.   FILE *f_speech;               /* File of speech data                   */
  21.   FILE *f_serial;               /* File of serial bits for transmission  */
  22.   extern Word16 *new_speech;     /* Pointer to new speech data            */
  23.   Word16 prm[PRM_SIZE];          /* Analysis parameters.                  */
  24.   Word16 serial[SERIAL_SIZE];    /* Output bitstream buffer               */
  25.   Word16 frame;                  /* frame counter */
  26.   printf("n");
  27.   printf("***********    ITU G.729A 8 KBIT/S SPEECH CODER    ***********n");
  28.   printf("n");
  29.   printf("------------------- Fixed point C simulation -----------------n");
  30.   printf("n");
  31.   printf("-------------------       Version 1.1        -----------------n");
  32.   printf("n");
  33. /*--------------------------------------------------------------------------*
  34.  * Open speech file and result file (output serial bit stream)              *
  35.  *--------------------------------------------------------------------------*/
  36.   if ( argc != 3 )
  37.     {
  38.        printf("Usage : coder speech_file  bitstream_filen");
  39.        printf("n");
  40.        printf("Format for speech_file:n");
  41.        printf("  Speech is read from a binary file of 16 bits PCM data.n");
  42.        printf("n");
  43.        printf("Format for bitstream_file:n");
  44.        printf("  One (2-byte) synchronization word n");
  45.        printf("  One (2-byte) size word,n");
  46.        printf("  80 words (2-byte) containing 80 bits.n");
  47.        printf("n");
  48.        exit(1);
  49.     }
  50.   if ( (f_speech = fopen(argv[1], "rb")) == NULL) {
  51.      printf("%s - Error opening file  %s !!n", argv[0], argv[1]);
  52.      exit(0);
  53.   }
  54.   printf(" Input speech file    :  %sn", argv[1]);
  55.   if ( (f_serial = fopen(argv[2], "wb")) == NULL) {
  56.      printf("%s - Error opening file  %s !!n", argv[0], argv[2]);
  57.      exit(0);
  58.   }
  59.   printf(" Output bitstream file:  %sn", argv[2]);
  60. /*--------------------------------------------------------------------------*
  61.  * Initialization of the coder.                                             *
  62.  *--------------------------------------------------------------------------*/
  63.   Init_Pre_Process();
  64.   Init_Coder_ld8a();
  65.   Set_zero(prm, PRM_SIZE);
  66.   /* Loop for each "L_FRAME" speech data. */
  67.   frame =0;
  68.   while( fread(new_speech, sizeof(Word16), L_FRAME, f_speech) == L_FRAME)
  69.   {
  70.     printf("Frame =%dr", frame++);
  71.     Pre_Process(new_speech, L_FRAME);
  72.     Coder_ld8a(prm);
  73.     prm2bits_ld8k( prm, serial);
  74.     fwrite(serial, sizeof(Word16), SERIAL_SIZE, f_serial);
  75.   }
  76.   return (0);
  77. }