android里面怎么把speex解码成pcm啊?

android里面怎么把speex解码成pcm啊?
android里面怎么把speex解码成pcm啊?
android里面怎么把speex解码成pcm啊?

可以使用Speex库中提供的解码器来将Speex编码的音频文件解码成PCM格式。


具体来说,你需要使用Speex库中的speex_decoder_init函数来初始化一个解码器,然后使用speex_decode函数来对Speex编码的音频进行解码。


下面是一个示例代码,它展示了如何将Speex编码的音频解码成PCM格式:

#include <speex/speex.h>
#include <stdio.h>

int main(int argc, char **argv) {
  char *inFile;
  FILE *fin;
  short out[FRAME_SIZE];
  void *state;
  SpeexBits bits;
  int i, tmp;

  /* Open the file and check if it's a Speex file */
  inFile = argv[1];
  fin = fopen(inFile, "rb");
  if (!fin) {
    fprintf(stderr, "Cannot open %s\n", inFile);
    exit(1);
  }
  speex_bits_init(&bits);

  /* Initialize the decoder */
  state = speex_decoder_init(&speex_uwb_mode);

  /* Set decoder options */
  tmp=1;
  speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp);

  while (1) {
    /* Read a frame */
    if (!speex_bits_read_from(&bits, fin, SPEEX_FRAME_SIZE))
      break;

    /* Decode the data */
    speex_decode(state, &bits, out);

    /* Write the decoded audio to file */
    fwrite(out, sizeof(short), FRAME_SIZE, stdout);
  }

  /* Destroy the decoder state */
  speex_decoder_destroy(state);
  speex_bits_destroy(&bits);
  fclose(fin);

  return 0;
}