资源简介
sbc codec子带压缩编解码的C++实现,用vc开发
代码片段和文件信息
#include “main.h“
#include
//#include
//#include “main.h“
#include
#define RAW_frame_LENGTH 512 /* 每帧的输入采样数据长度 byte */
__int64 testtype;
unsigned char wavhadtab[]={
0x520x490x460x460xac0xae0x280x000x570x410x560x450x660x6d0x740x20
0x100x000x000x000x010x000x020x000x440xac0x000x000x100xb10x020x00
0x040x000x100x000x640x610x740x610x880xae0x280x00
};
void test(void);
void SetTestWav(short * wdatasigned short val);
int EncFramNumIndex = 0 ;
void BinToText(void);
void main(void)
{
/* #define pi 3.141592654
int ik;
for(k=0;k<16;k++)
{
for(i=0;i<8;i++)
printf(“%f “ cos(pi*(i+0.5)*(k+4)/8));
printf(“\n“);
}
*/
FILE * fInput;
FILE * fSBC;
FILE * fOutput;
char oval;
char name[50];
int encframdecfram;
int encdalengdecdalengbackleng;
int SBC_Fram_leng ;
short RawData[600];
unsigned char wrsbc[200];
char wrwav[600];
// sbc_t sbc;
void * hEnc ;
int frameSize;
signed short teval = 0 ;
//test();
printf(“SBC 编解码测试\n“);
printf(“Please input the file name:“);
scanf(“%s“name);
if((fInput = fopen(name“rb“)) == NULL)
{
printf(“Fail to open file\n“);
}
else{
printf(“%s is open\n“name);
}
if(remove(“SBC.bin“) == -1)
perror(“Could not delete SBC.bin“);
else
printf(“Deleted SBC.bin\n“ );
if(remove(“Output.wav“) == -1)
perror(“Could not delete Output.wav “);
else
printf(“Deleted Output.wav \n“ );
fSBC = NULL ;
if(fInput != NULL)
fSBC = fopen(“SBC.bin““wb“);
if(fInput != NULL)
rewind(fInput);
if(fSBC != NULL)
rewind(fSBC);
hEnc = (void *)0;
hEnc = sbc_init(AUDIO_SAMPRATE AUDIO_BITRATEAUDIO_CHANNELS);
//------------------------------------------------------
// encode
encfram = 0;
if(fInput != NULL)
{
printf(“Encoding\n“);
fread(RawData0x2c1fInput);
encdaleng = (int)RawData[0x15]*0x10000 + RawData[0x14];
encdaleng = 3401*512;
backleng = encdaleng ;
while((encdaleng > RAW_frame_LENGTH)&&(feof(fInput)==NULL))
{
//------------------------------------
// 读取数据
fread(RawDataRAW_frame_LENGTH1fInput);
EncFramNumIndex++;
if(EncFramNumIndex==3055)
{
EncFramNumIndex = 0 ;
}
// SetTestWav(RawDatateval);
// teval += 256*3;
// int sbc_encode(void * hEnc UINT32* pnframeSize UINT8 * pframe UINT32 nRawLen short *pRawData)
sbc_encode((sbc_t *)hEnc(UINT32* )&frameSizewrsbcRAW_frame_LENGTHRawData);
// RawDataRAW_frame_LENGTHwrsbc200&frameSize);
fwrite(wrsbcframeSize1fSBC);
SBC_Fram_leng = frameSize ;
encfram ++ ;
encdaleng -= RAW_frame_LENGTH ;
printf(“.“);
}
}
printf(“\n“);
if(fInput != NULL)
{
fclose(fInput);
printf(“SBC Encode succeed !\n“);
}
if(fSBC != NULL)
{
fclose(fSBC);
}
//------------------------------------------------------
// decod
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20752 2008-12-16 14:35 sbc_vc\2K10s.pk
文件 1764044 2008-12-10 15:20 sbc_vc\2K10s.wav
文件 43819 2009-01-07 10:20 sbc_vc\bak\sbc.cpp
文件 16969 2009-01-07 10:20 sbc_vc\bak\sbc_tables.h
文件 17606 2009-01-06 10:45 sbc_vc\Debug\main.obj
文件 11166 2009-01-06 10:45 sbc_vc\Debug\main.sbr
文件 57742 2009-01-07 10:47 sbc_vc\Debug\sbc.obj
文件 38932 2009-01-07 10:47 sbc_vc\Debug\sbc.sbr
文件 156672 2008-12-22 10:45 sbc_vc\Debug\sbcprj.bsc
文件 233529 2009-01-07 10:47 sbc_vc\Debug\sbcprj.exe
文件 278440 2009-01-07 10:47 sbc_vc\Debug\sbcprj.ilk
文件 255876 2009-01-07 10:03 sbc_vc\Debug\sbcprj.pch
文件 541696 2009-01-07 10:47 sbc_vc\Debug\sbcprj.pdb
文件 50176 2009-01-07 10:47 sbc_vc\Debug\vc60.idb
文件 53248 2009-01-07 10:47 sbc_vc\Debug\vc60.pdb
文件 8104 2009-01-06 10:41 sbc_vc\main.cpp
文件 146 2008-12-18 15:26 sbc_vc\main.d
文件 400 2008-12-22 16:48 sbc_vc\main.h
文件 20488 2009-01-07 10:47 sbc_vc\Output.pk
文件 17620 2009-01-06 10:45 sbc_vc\s.pk
文件 1496504 2008-12-16 15:40 sbc_vc\s.wav
文件 227994 2009-01-07 10:47 sbc_vc\SBC.bin
文件 48517 2009-01-07 10:46 sbc_vc\sbc.cpp
文件 49650 2008-12-22 16:34 sbc_vc\sbc.cppbak
文件 182 2008-12-18 15:22 sbc_vc\sbc.d
文件 2618 2008-08-02 13:44 sbc_vc\sbc.h
文件 4644 2008-07-25 19:37 sbc_vc\sbcprj.dsp
文件 535 2008-07-25 15:47 sbc_vc\sbcprj.dsw
文件 91136 2009-01-07 12:14 sbc_vc\sbcprj.ncb
文件 55808 2009-01-07 12:14 sbc_vc\sbcprj.opt
............此处省略14个文件信息
评论
共有 条评论