[GD32F450方案分享] 移植speex

发新帖
发表于 2017-9-21 09:35:56 | 显示全部楼层 |阅读模式
分享:
查看: 1168|回复: 0
speex是一个语言压缩的库,压缩率还是比较高,而且占用资源很少,很适gd32这样子的MCU。具体的可以参考官网。 ST官网上面有一个移植好的方案,我根据这个方案做些修改,将它移到GD32F450上,由于我外部晶振还没焊接,所以只能先用内部晶振,这样子压缩的速率就慢了好多。 大概的一个示例 [*]#ifdef HAVE_CONFIG_H [*]#include "config.h" [*]#endif [*] [*]#include [*]#include [*]#include [*]#include [*] [*]#ifdef FIXED_DEBUG [*]extern long long spx_mips; [*]#endif [*] [*]#define FRAME_SIZE 160 [*]#include [*] [*]int main(int argc, char **argv) [*]{ [*] void * enc; [*] void * dec; [*] SpeexBits bits; [*] int nbBytes; [*] spx_int16_t input[FRAME_SIZE]; [*] int quality = 0, complexity=1, vbr=0, enh=1;/* SPEEX PARAMETERS, MUST REMAINED UNCHANGED */ [*] unsigned char output[200]; [*] [*] [*] speex_bits_init(&bits); [*] enc = speex_encoder_init(&speex_nb_mode); [*] dec = speex_decoder_init(&speex_nb_mode); [*] [*] speex_encoder_ctl(enc, SPEEX_SET_VBR, &vbr); [*] speex_encoder_ctl(enc, SPEEX_SET_QUALITY,&quality); [*] speex_encoder_ctl(enc, SPEEX_SET_COMPLEXITY, &complexity); [*] speex_encoder_ctl(enc,SPEEX_GET_BITRATE,&complexity); [*] speex_encoder_ctl(enc,SPEEX_GET_SAMPLING_RATE,&complexity); [*] while (1) { [*] speex_bits_reset(&bits); [*] speex_encode_int(enc, input, &bits); [*] nbBytes = speex_bits_write(&bits, output, sizeof(output)); [*] //speex_bits_read_from(&bits, output, nbBytes); [*] //speex_decode_int(dec,&bits,input); [*] } [*] speex_bits_destroy(&bits); [*] speex_encoder_destroy(enc); [*] [*] return 0; [*]} 复制代码
收藏 回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表