请教下speex编解码问题

chenjiawei007 2011-07-19 08:56:34
考虑用speex来对音频数据编解码处理后进行发送,

想测试下speex的编解码效果,

我用一个short[200]数组默认设置为1,

通过编码,再解码后,看效果,

speex_decode_int返回的是0,意思是成功,但是解码输出数组一直没有结果,是因为我的测试数据不是音频数据的缘故吗?

以下是我的代码。编码后直接解码。希望有经验的朋友指点下,自己也在继续摸索中




int _ErrorFlag = 0;

//编码后数据
char _Output_Temp[200] = { 0 };

//编码
SpeexBits _Bits;

void* _State;

//所要编码的数组
short _Input[200] = { 0 };

for ( int i = 0; i < 200; i++ )
{

_Input[i] = 1;

}


_State = speex_encoder_init( &speex_nb_mode );

//设置编码质量
int quality_value = 8;

speex_encoder_ctl( _State, SPEEX_SET_QUALITY, &quality_value );

speex_bits_init( &_Bits );

speex_bits_reset( &_Bits );


speex_encode_int( _State, _Input, &_Bits );

int nbBytes = speex_bits_write( &_Bits, _Output_Temp, 200 );

speex_encoder_destroy( _State );

speex_bits_destroy( &_Bits );


//解码
SpeexBits _Bits_De;

void* _State_De;

//解码数组
short _Output[200] = { 0 };

_State_De = speex_decoder_init( &speex_nb_mode );

speex_bits_init( &_Bits_De );

speex_bits_read_from( &_Bits_De, _Output_Temp, nbBytes );

quality_value = 8;

speex_decoder_ctl( _State_De, SPEEX_SET_QUALITY, &quality_value );



//返回结果为0 但是_Output仍然为0.而不是1....
int nRet = speex_decode_int( _State_De, &_Bits_De , _Output );

speex_decoder_destroy( _State_De );

speex_bits_destroy( &_Bits_De );
...全文
340 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jcccn 2012-11-08
  • 打赏
  • 举报
回复
如何搞定的呢?
Proteas 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luciferisnotsatan 的回复:]

不了解
帮顶
[/Quote]
up
wangqiulei 2011-09-12
  • 打赏
  • 举报
回复
楼主,问题解决了没有,我也有些问题,想请教你下!
luciferisnotsatan 2011-07-19
  • 打赏
  • 举报
回复
不了解
帮顶
chenjiawei007 2011-07-19
  • 打赏
  • 举报
回复
我的天,解码是成功了 160为一帧, short[160] 初始化1,解码后,只有将近70个short被解码还原成1了~~egg pain..

自己顶下。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧