資源簡介
是著名外企公司sun的源代碼,包含 g721 g711 g729 g723 g722 音頻編碼解碼及實例分析c代碼

代碼片段和文件信息
/*
?*?decode.c
?*
?*?CCITT?ADPCM?decoder
?*
?*?Usage?:?decode?[-3|4|5]?[-a|u|l]??outfile
?*/
#include?
#include?“g72x.h“
/*
?*?Unpack?input?codes?and?pass?them?back?as?bytes.
?*?Returns?1?if?there?is?residual?input?returns?-1?if?eof?else?returns?0.
?*/
int
unpack_input(
unsigned?char *code
int bits)
{
static?unsigned?int in_buffer?=?0;
static?int in_bits?=?0;
unsigned?char in_byte;
if?(in_bits? if?(fread(&in_byte?sizeof?(char)?1?stdin)?!=?1)?{
*code?=?0;
return?(-1);
}
in_buffer?|=?(in_byte?< in_bits?+=?8;
}
*code?=?in_buffer?&?((1?< in_buffer?>>=?bits;
in_bits?-=?bits;
return?(in_bits?>?0);
}
main(
int argc
char **argv)
{
short sample;
unsigned?char code;
int n;
struct?g72x_state state;
int out_coding;
int out_size;
int (*dec_routine)();
int dec_bits;
g72x_init_state(&state);
out_coding?=?AUDIO_ENCODING_ULAW;
out_size?=?sizeof?(char);
dec_routine?=?g721_decoder;
dec_bits?=?4;
/*?Process?encoding?argument?if?any?*/
while?((argc?>?1)?&&?(argv[1][0]?==?‘-‘))?{
switch?(argv[1][1])?{
case?‘3‘:
dec_routine?=?g723_24_decoder;
dec_bits?=?3;
break;
case?‘4‘:
dec_routine?=?g721_decoder;
dec_bits?=?4;
break;
case?‘5‘:
dec_routine?=?g723_40_decoder;
dec_bits?=?5;
break;
case?‘u‘:
out_coding?=?AUDIO_ENCODING_ULAW;
out_size?=?sizeof?(char);
break;
case?‘a‘:
out_coding?=?AUDIO_ENCODING_ALAW;
out_size?=?sizeof?(char);
break;
case?‘l‘:
out_coding?=?AUDIO_ENCODING_LINEAR;
out_size?=?sizeof?(short);
break;
default:
fprintf(stderr?“CCITT?ADPCM?Decoder?--?usage:\n“);
fprintf(stderr?“\tdecode?[-3|4|5]?[-a|u|l]??outfile\n“);
fprintf(stderr?“where:\n“);
fprintf(stderr?“\t-3\tProcess?G.723?24kbps?(3-bit)?input?data\n“);
fprintf(stderr?“\t-4\tProcess?G.721?32kbps?(4-bit)?input?data?[default]\n“);
fprintf(stderr?“\t-5\tProcess?G.723?40kbps?(5-bit)?input?data\n“);
fprintf(stderr?“\t-a\tGenerate?8-bit?A-law?data\n“);
fprintf(stderr?“\t-u\tGenerate?8-bit?u-law?data?[default]\n“);
fprintf(stderr?“\t-l\tGenerate?16-bit?linear?PCM?data\n“);
exit(1);
}
argc--;
argv++;
}
/*?Read?and?unpack?input?codes?and?process?them?*/
while?(unpack_input(&code?dec_bits)?>=?0)?{
sample?=?(*dec_routine)(code?out_coding?&state);
if?(out_size?==?2)?{
fwrite(&sample?out_size?1?stdout);
}?else?{
code?=?(unsigned?char)sample;
fwrite(&code?out_size?1?stdout);
}
}
fclose(stdout);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5707??1992-09-01?06:09??g723_40.c
?????文件????????603??1992-09-01?06:09??Makefile
?????文件???????3311??1992-09-01?06:09??README
?????文件???????2640??1992-09-01?06:09??decode.c
?????文件???????2866??1992-09-01?06:09??encode.c
?????文件??????14948??1992-09-01?06:09??g72x.c
?????文件???????3438??1992-09-01?06:09??g72x.h
?????文件???????7804??1992-09-01?06:09??g711.c
?????文件???????5430??1992-09-01?06:09??g721.c
?????文件???????4795??1992-09-01?06:09??g723_24.c
?????文件????????229??2007-09-18?11:49??www.mp4tech.net便攜式多媒體技術中心.txt
-----------?---------??----------?-----??----
????????????????51771????????????????????11
- 上一篇:適合word練習的素材
- 下一篇:南昌大學計算機操作系統期末試卷
評論
共有 條評論