⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coder.c

📁 g729b_pc.rar是G729语音压缩标准的附件B的C语言实现标准源代码。
💻 C
字号:
/*   ITU-T G.729A Speech Coder with Annex B    ANSI-C Source Code   Version 1.3    Last modified: August 1997   Copyright (c) 1996,   AT&T, France Telecom, NTT, Universite de Sherbrooke, Lucent Technologies,   Rockwell International   All rights reserved.*//*-------------------------------------------------------------------* * Main program of the ITU-T G.729A  8 kbit/s encoder.               * *                                                                   * *    Usage : coder speech_file  bitstream_file                      * *-------------------------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include "typedef.h"#include "basic_op.h"#include "ld8a.h"#include "dtx.h"#include "octet.h"int main(int argc, char *argv[] ){  FILE *f_speech;               /* File of speech data                   */  FILE *f_serial;               /* File of serial bits for transmission  */  extern Word16 *new_speech;     /* Pointer to new speech data            */  Word16 prm[PRM_SIZE+1];        /* Analysis parameters + frame type      */  Word16 serial[SERIAL_SIZE];    /* Output bitstream buffer               */  Word16 frame;                  /* frame counter */  Word32 count_frame;  /* For G.729B */  Word16 nb_words;  Word16 vad_enable;  printf("\n");  printf("***********    ITU G.729A 8 KBIT/S SPEECH CODER    ***********\n");  printf("                        (WITH ANNEX B)                        \n");  printf("\n");  printf("------------------- Fixed point C simulation -----------------\n");  printf("\n");  printf("-------------------       Version 1.3        -----------------\n");  printf("\n");/*--------------------------------------------------------------------------* * Open speech file and result file (output serial bit stream)              * *--------------------------------------------------------------------------*/  if ( argc != 4 ){    printf("Usage :%s speech_file  bitstream_file  VAD_flag\n", argv[0]);    printf("\n");    printf("Format for speech_file:\n");    printf("  Speech is read from a binary file of 16 bits PCM data.\n");    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("VAD flag:\n");    printf("  0 to disable the VAD\n");    printf("  1 to enable the VAD\n");    exit(1);  }  if ( (f_speech = fopen(argv[1], "rb")) == NULL) {     printf("%s - Error opening file  %s !!\n", argv[0], argv[1]);     exit(0);   }  printf(" Input speech file:  %s\n", argv[1]);  if ( (f_serial = fopen(argv[2], "wb")) == NULL) {     printf("%s - Error opening file  %s !!\n", argv[0], argv[2]);     exit(0);  }  printf(" Output bitstream file:  %s\n", argv[2]);  vad_enable = (Word16)atoi(argv[3]);  if (vad_enable == 1)    printf(" VAD enabled\n");  else    printf(" VAD disabled\n");#ifndef OCTET_TX_MODE  printf(" OCTET TRANSMISSION MODE is disabled\n");#endif/*--------------------------------------------------------------------------* * Initialization of the coder.                                             * *--------------------------------------------------------------------------*/  Init_Pre_Process();  Init_Coder_ld8a();  Set_zero(prm, PRM_SIZE+1);  /* for G.729B */  Init_Cod_cng();  /* Loop for each "L_FRAME" speech data. */  frame = 0;  count_frame = 0L;  while( fread(new_speech, sizeof(Word16), L_FRAME, f_speech) == L_FRAME)  {    printf("Frame = %ld\r", count_frame++);    if (frame == 32767) frame = 256;    else frame++;    Pre_Process(new_speech, L_FRAME);    Coder_ld8a(prm, frame, vad_enable);    prm2bits_ld8k( prm, serial);    nb_words = serial[1] +  (Word16)2;    fwrite(serial, sizeof(Word16), nb_words, f_serial);  }  printf("%ld frames processed\n", count_frame);  return (0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -