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

📄 testc_s.c

📁 G.726 ADPCM算法在C语言上的实现代码
💻 C
字号:
/* testc - Test adpcm coder */   
   
#include <STDIO.H>    
#include <STDLIB.H>    
#include <STRING.H>    
#include <DOS.H>    
   
struct adpcm_state {   
    short      valprev_l;        /* Previous output value */   
    char       index_l;          /* Index into stepsize table */   
    short      valprev_r;        /* Previous output value */   
    char       index_r;          /* Index into stepsize table */   
};   
   
struct adpcm_state state;   
   
void adpcm_coder (short [], char [], int, struct adpcm_state *);   
void adpcm_decoder (char [], short [], int, struct adpcm_state *);   
   
#define NSAMPLES 1000    
   
char   abuf[NSAMPLES/2];   
short  sbuf[NSAMPLES];   
   
main() {   
    FILE    *f, *f2;   
    char    fname[64],fname2[64];   
   
    if (_argc < 3 )   
    {   
        printf("Usage: %s infile outfile\r\n", _argv[0]);   
        exit(1);   
    }   
    strcpy(fname,_argv[1]);   
    strcpy(fname2,_argv[2]);   
   
    if ( NULL == (f2=fopen(fname2,"wb")) )   
    {   
        printf("Error opening '%s', terminating..\r\n", fname2);   
        exit(4);   
    }   
    if ( NULL == (f=fopen(fname,"rb")) )   
    {   
        printf("Error opening '%s', terminating..\r\n", fname);   
        exit(4);   
    }   
    while( fread(&sbuf,sizeof(sbuf),1,f) )   
    {   
        adpcm_coder(sbuf, abuf, sizeof(sbuf)/4, &state);   
        fwrite(&abuf,sizeof(abuf),1,f2);   
    }   
    fclose(f);   
    fclose(f2);   
    exit(0);   
}   

/* testc - Test adpcm coder */ 
 
#include  
#include  
#include  
#include  
 
struct adpcm_state { 
    short      valprev_l;        /* Previous output value */ 
    char       index_l;          /* Index into stepsize table */ 
    short      valprev_r;        /* Previous output value */ 
    char       index_r;          /* Index into stepsize table */ 
}; 
 
struct adpcm_state state; 
 
void adpcm_coder (short [], char [], int, struct adpcm_state *); 
void adpcm_decoder (char [], short [], int, struct adpcm_state *); 
 
#define NSAMPLES 1000 
 
char   abuf[NSAMPLES/2]; 
short  sbuf[NSAMPLES]; 
 
main() { 
    FILE    *f, *f2; 
    char    fname[64],fname2[64]; 
 
    if (_argc < 3 ) 
    { 
        printf("Usage: %s infile outfile\r\n", _argv[0]); 
        exit(1); 
    } 
    strcpy(fname,_argv[1]); 
    strcpy(fname2,_argv[2]); 
 
    if ( NULL == (f2=fopen(fname2,"wb")) ) 
    { 
        printf("Error opening '%s', terminating..\r\n", fname2); 
        exit(4); 
    } 
    if ( NULL == (f=fopen(fname,"rb")) ) 
    { 
        printf("Error opening '%s', terminating..\r\n", fname); 
        exit(4); 
    } 
    while( fread(&sbuf,sizeof(sbuf),1,f) ) 
    { 
        adpcm_coder(sbuf, abuf, sizeof(sbuf)/4, &state); 
        fwrite(&abuf,sizeof(abuf),1,f2); 
    } 
    fclose(f); 
    fclose(f2); 
    exit(0); 
} 


⌨️ 快捷键说明

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