Audio编程中的一些

adts 头部中 audioObjectType 5bits  0001 0
samplingFrequencyIndex 4bits 
0x3 48000
0x4 44100 
0x5 32000 
0x6 24000 
0x7 22050 
0x8 16000 
0x9 12000 
0xa 11025 
0xb 8000 

channelConfiguration 4bits


测试时候可以 用一下方法填充AudioBufferData

[audio buffer make]
long length = 4*1024;
audioData_ = malloc(length);
void *pDst = AudioBufferData;
memset(pDst, 0, 0); // 1kHz tone
double Radian1kHzAcc = 0.0;
const double Radian1kHzInc = 2.0 * 3.1415926535 * 1000.0 / 44100;
int FrameRate = 25;
unsigned SampleCount = 0;
int nChannels = 2;
switch (FrameRate)
{
case 23: 
SampleCount = 2002;break;
	
case 24:
 SampleCount = 2000; break;
	
case 25: 
SampleCount = 1920; break;
	
case 29: 
SampleCount = 1602; break;
	
case 30:
 SampleCount = 1600; break;
	
case 50:
 SampleCount = 960; break;
	
case 59: 
SampleCount = 800; break;
	
case 60: 
SampleCount = 800; break;
}
SampleCount = (length)/4;// 1kHz burst for one frame
short* pData = (short*)pDst;
short Data;
for (unsigned Sample=0; Sample<SampleCount; ++Sample, Radian1kHzAcc+=Radian1kHzInc)
{
Data = (short)(sin(Radian1kHzAcc) * (double)0x6FFF);
for (unsigned channel=0; channel<nChannels; ++channel)
{	
*pData++ = Data;
	
}


}






static void fill_audio_buffer(unsigned char* buf, size_t len)
{
	memset(buf, 0, len); // 1kHz tone
	double Radian1kHzAcc = 0.0;
	static const double Radian1kHzInc = 1.0 * 3.1415926535 * 1000.0 / 8000;
	
	int FrameRate = 25;
	unsigned SampleCount = 0;
	int nChannels = 1;
	switch (FrameRate)
	{		
	case 23: 
		SampleCount = 2002;break;		
	case 24: 
		SampleCount = 2000; break;
		
	case 25: 
		SampleCount = 1920; break;
		
	case 29: 
		SampleCount = 1602; break;
		
	case 30: 
		SampleCount = 1600; break;
		
	case 50: 
		SampleCount = 960; break;
		
	case 59: 
		SampleCount = 800; break;
		
	case 60: 
		SampleCount = 800; break;
		
	}
	
	SampleCount = len/4;// 1kHz burst for one frame
	
	short* pData = (short*)buf;
	short Data;
	for (unsigned Sample=0; Sample<SampleCount; ++Sample, Radian1kHzAcc+=Radian1kHzInc)
	{
		
		Data = (short)(sin(Radian1kHzAcc) * (double)0x6FFF);
		for (int channel = 0; channel<nChannels; ++channel)		
		{		
			*pData++ = Data;		
		}	
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值