www.pudn.com > G711-729.rar > DECODER.C


/* Version 3.3    Last modified: December 26, 1995 */ 
 
/* 
   ITU-T G.729 Speech Coder     ANSI-C Source Code 
   Copyright (c) 1995, AT&T, France Telecom, NTT, Universite de Sherbrooke. 
   All rights reserved. 
*/ 
 
/*-----------------------------------------------------------------* 
 * Main program of the ITU-T G.729  8 kbit/s decoder.              * 
 *                                                                 * 
 *    Usage : decoder  bitstream_file  synth_file                  * 
 *                                                                 * 
 *-----------------------------------------------------------------*/ 
 
#include  
#include  
 
#include "typedef.h" 
#include "basic_op.h" 
#include "ld8k.h" 
 
/*-----------------------------------------------------------------* 
 *            Main decoder routine                                 * 
 *-----------------------------------------------------------------*/ 
 
int main(int argc, char *argv[] ) 
{ 
  Word16  synth_buf[L_FRAME+M], *synth; /* Synthesis                   */ 
  Word16  parm[PRM_SIZE+1];             /* Synthesis parameters        */ 
  Word16  serial[SERIAL_SIZE];          /* Serial stream               */ 
  Word16  Az_dec[MP1*2], *ptr_Az;       /* Decoded Az for post-filter  */ 
  Word16  T0_first;                     /* Pitch lag in 1st subframe   */ 
  Word16  pst_out[L_FRAME];             /* Postfilter output           */ 
 
  Word16  voicing;                      /* voicing from previous frame */ 
  Word16  sf_voic;                      /* voicing for subframe        */ 
 
  Word16  i, frame; 
  FILE   *f_syn, *f_serial; 
 
  printf("\n"); 
  printf("***********     ITU G.729 8 KBIT/S SPEECH CODER    ***********\n"); 
  printf("\n"); 
  printf("------------------- Fixed point C simulation -----------------\n"); 
  printf("\n"); 
  printf("-----------------          Version 3.3        ----------------\n"); 
  printf("\n"); 
 
   /* Passed arguments */ 
 
   if ( argc != 3 ) 
     { 
        printf("Usage :%s bitstream_file  outputspeech_file\n",argv[0]); 
        printf("\n"); 
        printf("Format for bitstream_file:\n"); 
        printf("  One (2-byte) synchronization word,\n"); 
        printf("  One (2-byte) size word,\n"); 
        printf("  80 words (2-byte) containing 80 bits.\n"); 
        printf("\n"); 
        printf("Format for outputspeech_file:\n"); 
        printf("  Output is written to a binary file of 16 bits data.\n"); 
        exit( 1 ); 
     } 
 
   /* Open file for synthesis and packed serial stream */ 
 
   if( (f_serial = fopen(argv[1],"rb") ) == NULL ) 
     { 
        printf("%s - Error opening file  %s !!\n", argv[0], argv[1]); 
        exit(0); 
     } 
 
   if( (f_syn = fopen(argv[2], "wb") ) == NULL ) 
     { 
        printf("%s - Error opening file  %s !!\n", argv[0], argv[2]); 
        exit(0); 
     } 
   printf("Input bitstream file  :   %s\n",argv[1]); 
   printf("Synthesis speech file :   %s\n",argv[2]); 
 
/*-----------------------------------------------------------------* 
 *           Initialization of decoder                             * 
 *-----------------------------------------------------------------*/ 
 
  for (i=0; i