📄 lbccodec.c
字号:
#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/ioctl.h>#include <stdlib.h>#include <stdio.h>#include <linux/soundcard.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include "codecpc.h"#include "basop.h"#include "cst_lbc.h"#include "tab_lbc.h"#include "lbccodec.h"#include "decod.h"#include "exc_lbc.h"#include "util_lbc.h"/* Global variables */enum Wmode WrkMode = Both ;enum Crate WrkRate = Rate63 ;//enum Crate * WrkRate_ptr = &WrkRate ;int PackedFrameSize[2] = { 24 , 20 } ; Flag UseHp = True ;Flag UsePf = True ;Flag UseVx = False ;Flag UsePr = True ;char SignOn[] = "ACL/USH/FT/DSPG ANSI C CODEC ITU LBC Ver 5.00\n" ;/* This function processes the argument parameters. The function opens the IO files, and sets the global arguments accordingly to the command line parameters.*/long Process_Files( FILE **Ifp, FILE **Ofp, FILE **Fep, FILE **Ratp, int Argc, char *Argv[] ){ int i ; long Flen ; char *FerFileName = NULL ; char *RateFileName = NULL ; /* Process the argument list, if any */ if (Argc < 3 ) { printf("Usage: %s [options] inputfile outputfile \n", Argv[0]); exit(1); } for ( i = 1 ; i < Argc-2 ; i ++ ) { /* Check the coder rate */ if ( ! strncmp( "-r", Argv[i], 2) ) { if ( ! strcmp("63", Argv[i]+2) ) { WrkRate = Rate63 ; continue ; } else if ( ! strcmp("53", Argv[i]+2) ) { WrkRate = Rate53 ; continue ; } else { RateFileName = &Argv[i][2] ; continue ; } } /* Check Working mode */ if ( ! strcmp("-b", Argv[i]) ) { WrkMode = Both ; continue ; } if ( ! strcmp("-c", Argv[i]) ) { WrkMode = Cod ; continue ; } if ( ! strcmp("-d", Argv[i]) ) { WrkMode = Dec ; continue ; } if ( ! strcmp("-v", Argv[i]) ) { UseVx = True ; continue ; } if ( ! strcmp("-Noh", Argv[i]) ) { UseHp = False; continue ; } if ( ! strcmp("-Nop", Argv[i]) ) { UsePf = False; continue ; } if ( ! strncmp( "-f", Argv[i], 2) ) { FerFileName = &Argv[i][2] ; continue ; } if ( ! strcmp("-n", Argv[i]) ) { UsePr = False; continue ; } fprintf(stderr, "Illegal argument, %s\n", Argv[i] ) ; exit(1) ; } *Ifp = fopen( Argv[Argc-2], "rb") ; if ( *Ifp == NULL ) { fprintf(stderr, "Invalid input file name: %s\n", Argv[Argc-2] ) ; exit(1) ; } if ( UsePr ) printf("Input file: %s\n", Argv[Argc-2] ) ; *Ofp = fopen( Argv[Argc-1], "wb") ; if ( *Ofp == NULL ) { fprintf(stderr, "Can't open output file: %s\n", Argv[Argc-1] ) ; exit(1) ; } if ( UsePr ) printf("Output file: %s\n", Argv[Argc-1] ) ; /* Open Fer file if required */ if ( WrkMode == Dec ) { if ( FerFileName != NULL ) { *Fep = fopen( FerFileName, "rb" ) ; if ( *Fep == NULL ) { fprintf(stderr, "Can't open FER file: %s\n", FerFileName ) ; exit(1) ; } if ( UsePr ) printf("FER file: %s\n", FerFileName ) ; } } else { if ( RateFileName != NULL ) { *Ratp = fopen( RateFileName, "rb" ) ; if ( *Ratp == NULL ) { fprintf(stderr, "Can't open Rate file: %s\n", RateFileName ) ; exit(1) ; } if ( UsePr ) printf("Rate file: %s\n", RateFileName ) ; } } /* Options report */ if ( UsePr ) { printf("Options:\n"); if (WrkMode == Both ) printf("Encoder/Decoder\n"); else if (WrkMode == Cod ) printf("Encoder\n"); else printf("Decoder\n"); if( WrkMode != Cod ) { if (UsePf == 0 ) printf("Postfilter disabled\n"); else printf("Postfilter enabled\n"); } if( WrkMode <= Cod ) { if(*Ratp == NULL) { if (WrkRate == Rate63 ) printf("Rate 6.3 kb/s\n"); else printf("Rate 5.3 kb/s\n"); } if (UseHp == 0 ) printf("Highpassfilter disabled\n"); else printf("Highpassfilter enabled\n"); if (UseVx == 0 ) printf("VAD/CNG disabled\n"); else printf("VAD/CNG enabled\n"); } } /* Compute the file length */ fseek( *Ifp, 0L, SEEK_END ) ; Flen = ftell( *Ifp ) ; rewind( *Ifp ) ; if ( WrkMode == Dec ) Flen = 0x7fffffffL ; else Flen /= sizeof(Word16)*Frame ; return Flen ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -