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

📄 io-sparc.c

📁 G729、h263、h264、MPEG4四种最流行的音频和视频标准的压缩和解压算法的源代码.rar
💻 C
字号:
/*************************************************************************//*                                                                       *//*                            LD-CELP  G.728                             *//*                                                                       *//*    Low-Delay Code Excitation Linear Prediction speech compression.    *//*                                                                       *//*                 Copyright: Analog Devices, Inc., 1993                 *//*                                                                       *//*                         Author: Alex Zatsman.                         *//*                                                                       *//*  This program was written mostly for testing  Analog Devices' g21k C  *//*  compiler for the  ADSP21000 architecture  family. While the program  *//*  works  on  Sparc and ADSP21020, it  has  NOT  been  tested with the  *//*  official test data from CCITT/ITU.                                   *//*                                                                       *//*  The program  is   distributed as  is,  WITHOUT ANY WARRANTY, EITHER  *//*  EXPLICIT OR IMPLIED.                                                 *//*                                                                       *//*************************************************************************/#include <fcntl.h>#include <stdio.h>#include <multimedia/libaudio.h>#include <multimedia/ulaw2linear.h>#include "common.h"#include "prototyp.h"extern int fprintf();extern void audio_read_filehdr();extern int read(int, char*, int);real rscale=0.1;  /* Scaling factor for input */char * xfile_name;#ifdef CODERint oxfd = 0; /* output file (codebook indices) */int ifd  = 1; /* input file */char *ifile_name;voidinit_input(){    Audio_hdr hdr;    int hdr_len = 100;        if ((ifd=open(ifile_name, O_RDONLY)) < 0) {	(void) fprintf(stderr, "Can't open \"%s\"\n", ifile_name);	exit(1);    }    audio_read_filehdr(ifd, &hdr, 0, &hdr_len);#ifdef TEST    fprintf(stderr, "sample_rate\t= %d\n",	hdr.sample_rate);    fprintf(stderr, "samples_per_unit\t= %d\n",	hdr.samples_per_unit);    fprintf(stderr, "bytes_per_unit\t= %d\n",	hdr.bytes_per_unit);    fprintf(stderr, "channels\t= %d\n",		hdr.channels);    fprintf(stderr, "encoding\t= %d\n",		hdr.encoding);    fprintf(stderr, "data_size\t= %d\n",	hdr.data_size);#endif         if ((oxfd=open(xfile_name, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) {	(void) fprintf(stderr, "Can't open \"%s\"\n", xfile_name);    }}voidput_index(int x){    short sx = x;    write(oxfd, &sx, 2);}#endif#ifdef DECODERchar * ofile_name;static int ofd=1; /* Outpu file */static ixfd = 0; /* Input file (codebook indices) */int sound_overflow = 0;void init_output(){    sound_overflow = 0;    if ((ofd=open(ofile_name, O_WRONLY|O_CREAT|O_TRUNC, 0644)) < 0) {	extern  int errno;	extern char *sys_errlist[];	int ee = errno;	(void) fprintf(stderr, "Can't open \"%s\" for output\n", ofile_name);	printf(sys_errlist[ee]);	exit(1);    }    if ((ixfd = open(xfile_name, O_RDONLY)) < 0) {	(void) fprintf(stderr, "Can't open \"%s\"\n", xfile_name);	exit(3);    }}int get_index(){    short sx;    if (read(ixfd, (char*)&sx, sizeof(sx)) < sizeof(sx))	return -1;    return (int)sx;}#endif/* Return Number of Samples Read */#ifdef CODERint read_sound_buffer(int n, real buf[]){    unsigned char ch;    short s;    int i, c=0;        for (i=0; i<n && read(ifd, &ch, 1) > 0; i++) {	s = audio_u2s(ch);	buf[c++] =  rscale * (real) s;    }    return c;}#endif#ifdef DECODERintwrite_sound_buffer(int n, real buf[]){    unsigned char ch;    int i, c=0;        for (i=0; i<n; i++) {	float xx = buf[i]/rscale;	short s;	if (xx < - 0x7fff || xx > 0x7fff)	    sound_overflow = 1;	s = (short) xx;	ch = audio_s2u(s);	write(ofd, &ch, 1);    }    return c;}#endif

⌨️ 快捷键说明

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