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

📄 nuke2.c

📁 mgcp协议源代码。支持多种编码:g711
💻 C
字号:
#include <stdio.h>#include "lpc10.h"int read_bits(FILE *f, INT32 *bits, int len);void write_bits(FILE *f, INT32 *bits, int len);int read_16bit_samples(FILE *f, float speech[], int n);int write_16bit_samples(FILE *f, float speech[], int n);/*This is just like nuke.c, except that we read in two audio files,interleaving the reading and encoding of frames from one file withframes from the other file.  Each file has its own lpc10_encoder_statestructure, so if things are implemented correctly, this should workthe same way as running nuke on each file one at a time.*/voidmain(int argc, char *argv[]){    int n;    float speech[LPC10_SAMPLES_PER_FRAME];    INT32 bits[LPC10_BITS_IN_COMPRESSED_FRAME];    struct lpc10_encoder_state *st1;    struct lpc10_encoder_state *st2;    FILE *infile1, *outfile1;    FILE *infile2, *outfile2;    int done_with_file_1;    int done_with_file_2;    if (argc != 5) {	fprintf(stderr, "Usage: %s infile1 outfile1 infile2 outfile2\n",		argv[0]);	exit(1);    }    infile1 = fopen(argv[1], "r");    if (infile1 == NULL) {	fprintf(stderr, "%s: Could not open file '%s' for reading.\n",		argv[0], argv[1]);	exit(1);    }    outfile1 = fopen(argv[2], "w");    if (outfile1 == NULL) {	fprintf(stderr, "%s: Could not open file '%s' for writing.\n",		argv[0], argv[2]);	exit(1);    }    infile2 = fopen(argv[3], "r");    if (infile2 == NULL) {	fprintf(stderr, "%s: Could not open file '%s' for reading.\n",		argv[0], argv[3]);	exit(1);    }    outfile2 = fopen(argv[4], "w");    if (outfile2 == NULL) {	fprintf(stderr, "%s: Could not open file '%s' for writing.\n",		argv[0], argv[4]);	exit(1);    }    st1 = create_lpc10_encoder_state();    st2 = create_lpc10_encoder_state();    if (st1 == 0 || st2 == 0) {	fprintf(stderr,		"Couldn't allocate %d bytes for two sets of encoder state.\n",		2 * sizeof(struct lpc10_encoder_state));	exit(1);    }    done_with_file_1 = 0;    done_with_file_2 = 0;    do {	/* Read and process one frame from file 1. */	n = read_16bit_samples(infile1, speech, LPC10_SAMPLES_PER_FRAME);	if (n != LPC10_SAMPLES_PER_FRAME) {	    done_with_file_1 = 1;	}	if (!done_with_file_1) {	    lpc10_encode(speech, bits, st1);	    write_bits(outfile1, bits, LPC10_BITS_IN_COMPRESSED_FRAME);	}	/* Now do the same thing for file 2. */	n = read_16bit_samples(infile2, speech, LPC10_SAMPLES_PER_FRAME);	if (n != LPC10_SAMPLES_PER_FRAME) {	    done_with_file_2 = 1;	}	if (!done_with_file_2) {	    lpc10_encode(speech, bits, st2);	    write_bits(outfile2, bits, LPC10_BITS_IN_COMPRESSED_FRAME);	}    } while (!(done_with_file_1 && done_with_file_2));    exit(0);}

⌨️ 快捷键说明

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