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

📄 lbccodec.c

📁 嵌入式linux系统的网络编程(C++) 在ARM上实现视频会议 此程序获得全国研究生电子大赛一等奖 压缩包内为全部源码
💻 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 + -