Speex Decoding Issue

Mauricio Cirelli <[email protected]> Tue, 24 Jun 2014 18:22:56 +0000
Newsgroups gmane.comp.audio.compression.speex.devel
Message-ID <[email protected]>
Dear Speex community,

I am having problems to get the Speex Decoding API to work properly in our project.

I am working in an embedded project with a very limited RAM and Flash memory and would like to use Speex encoded files to save memory while having good voice sounds in our speakers.
I have developed a Windows-based tool to convert WAV files to Speex files in packets of 160 bytes (we are using only the narrowband mode). Those packets are written into a C file which we compile and embed in our custom hardware (ARM-based microcontroller). I am attaching one of such C source files with speex encoded bytes for reference, which consists of 61 encoded packets. I am also attaching the original WAV file.

In our application, we are trying to decode the embedded list of packets and playback using the microcontroller DA converter. Here I paste the function which handles this task:

  SpeexBits bits;
  void *dec_state;
  int idx = 0;
  // 160 decoded "samples"
  short output_frame[SPEEX_NB_FRAME_SIZE];

  // Getting the timer period from the Sample Rate of the original WAV file
  float periodSec = 1.0f / (float) pstAudioBuffer->u.spx->dwSampleRate;
  unsigned int periodMicroSec = (unsigned int) (periodSec * 1000000.0f);

  // Initialization
  speex_bits_init(&bits);
  dec_state = speex_decoder_init(&speex_nb_mode);

  // Configures the output timer to generate IRQs every <periodMicroSec> microseconds
  pstAudioDriverInterface->configure_output_timer(periodMicroSec);

  // Configures the DAC for audio playback
  pstAudioDriverInterface->configure_dac(pstAudioBuffer->u.spx->dwSampleRate);

  // Playback loop, for each packet in the List
  for(idx = 0; idx < pstAudioBuffer->u.spx->dwTotalChunks; idx++)
  {
    speex_bits_reset(&bits);
    speex_bits_read_from(&bits, pstAudioBuffer->u.spx->pstChunkList[idx]->pbyBuffer, pstAudioBuffer->u.spx->pstChunkList[idx]->dwChunkSize);
    while(speex_decode_int(dec_state, &bits, output_frame) != -1);
    // Sends each decoded sample to the DAC at the specified TIMER IRQ period
    pstAudioDriverInterface->write_buffer(output_frame, sizeof(output_frame));
  }

  // Freeing memory
  speex_bits_destroy(&bits);
  speex_decoder_destroy(dec_state);


Everything I get is a very noise "hiss" output. When we playback a RAW PCM file or a WAV file in our hardware, it is perfectly clear and sounds good. However, due to hardware limitations, we cannot proceed with raw WAV files.

Any help would be very appreciated.

Thanks in advance.

[Descrição: Mauricio Cirelli]

AVISO LEGAL: As informações contidas nesta mensagem e nos arquivos anexados são para uso restrito, sendo seu sigilo protegido por lei, não havendo ainda garantia legal quanto à integridade de seu conteúdo. Caso não seja o destinatário, por favor, desconsidere essa mensagem. O uso indevido dessas informações será tratado conforme as normas da empresa e a legislação em vigor.

LEGAL ADVICE: The information in this e-mail and in the attached files are confidential and may be legally privileged. There is no legal guarantee as regards the reliability of said information. If you are not the intended recipient please disregard the content thereof. The unduly use of this information is subject to the rules of the company and the legislation in force.

P Economize papel, só imprima em caso de real necessidade, a natureza agradece.

_______________________________________________
Speex-dev mailing list
[email protected]
http://lists.xiph.org/mailman/listinfo/speex-dev
image001.jpg (image/jpeg, 9.6 KB) - not displayed
youGotMail_spx.c (text/plain, 20.5 KB)
/*********************************************************************
* Source file: youGotMail_spx.c                                                    
* Format: SPX (Narrowband)                                                         
* Sample Rate: 11000 Hz                                                 
* Data Size: 9910 bytes                                                
* Channels: 1                                                       
* Bit Rate: 88000 bps                                                   
* Bits Per Sample: 8                                                
*********************************************************************/


const char youGotMail_spx_buffer_0[20] = {

0x00,0x00,0x00,0x00,0x1D,0xC0,0x74,0x90,0x00,0x3B,0x2E,0xC9,0x2F,0x1D,0x97,0x65,
0xCF,0x29,0x01,0xC0

};


static struct spx_chunk_t youGotMail_spx_chunk_0 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_0,
};


const char youGotMail_spx_buffer_1[20] = {

0x00,0x00,0x00,0x00,0x1A,0x60,0x3A,0x74,0x07,0xFD,0xAF,0xE4,0x5C,0x79,0xB7,0x39,
0xCD,0x70,0xE8,0x8E

};


static struct spx_chunk_t youGotMail_spx_chunk_1 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_1,
};


const char youGotMail_spx_buffer_2[20] = {

0x00,0x00,0x00,0x00,0x1A,0x60,0x4A,0x75,0xE7,0x35,0xE7,0x52,0xD5,0x5A,0xC7,0x89,
0x5E,0x37,0x26,0x6D

};


static struct spx_chunk_t youGotMail_spx_chunk_2 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_2,
};


const char youGotMail_spx_buffer_3[20] = {

0x00,0x00,0x00,0x00,0x1A,0x65,0x3E,0x65,0x26,0xDC,0xBB,0x1E,0x2B,0xD2,0xE2,0xE6,
0xF3,0xB2,0x8E,0x6C

};


static struct spx_chunk_t youGotMail_spx_chunk_3 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_3,
};


const char youGotMail_spx_buffer_4[20] = {

0x00,0x00,0x00,0x00,0x1D,0xC0,0x0A,0x74,0xBD,0xE0,0x64,0xDA,0x4D,0xCA,0xC8,0xE5,
0x1E,0xEF,0x8E,0xEA

};


static struct spx_chunk_t youGotMail_spx_chunk_4 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_4,
};


const char youGotMail_spx_buffer_5[20] = {

0x00,0x00,0x00,0x00,0x1D,0xC0,0x0A,0x74,0x58,0xDA,0x01,0x72,0x15,0x34,0x36,0xB5,
0x07,0x56,0x23,0x6E

};


static struct spx_chunk_t youGotMail_spx_chunk_5 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_5,
};


const char youGotMail_spx_buffer_6[20] = {

0x00,0x00,0x00,0x00,0x1A,0x65,0x3E,0x73,0xE6,0xDC,0xEA,0x65,0x15,0xF5,0x3A,0xBC,
0xFE,0xBF,0xEE,0xB1

};


static struct spx_chunk_t youGotMail_spx_chunk_6 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_6,
};


const char youGotMail_spx_buffer_7[20] = {

0x00,0x00,0x00,0x00,0x1D,0xC5,0x0A,0x73,0xFA,0xE5,0x53,0xC9,0xF5,0xDF,0xAC,0x44,
0xFD,0x40,0x56,0x0A

};


static struct spx_chunk_t youGotMail_spx_chunk_7 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_7,
};


const char youGotMail_spx_buffer_8[20] = {

0x00,0x00,0x00,0x00,0x1A,0x65,0x52,0x73,0xF8,0xC3,0x19,0x39,0x93,0xD6,0xA9,0x2C,
0xF5,0xB0,0x2E,0xF0

};


static struct spx_chunk_t youGotMail_spx_chunk_8 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_8,
};


const char youGotMail_spx_buffer_9[20] = {

0x00,0x00,0x00,0x00,0x1B,0x65,0x10,0x63,0xEB,0xE9,0xA6,0x81,0xF5,0xCC,0x4C,0xD4,
0xF9,0x7F,0xE7,0x84

};


static struct spx_chunk_t youGotMail_spx_chunk_9 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_9,
};


const char youGotMail_spx_buffer_10[20] = {

0x00,0x00,0x00,0x00,0x1C,0x25,0x3A,0x74,0x44,0x08,0xBB,0xBD,0x49,0x62,0x1C,0xBE,
0xBC,0xA0,0xB3,0x80

};


static struct spx_chunk_t youGotMail_spx_chunk_10 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_10,
};


const char youGotMail_spx_buffer_11[20] = {

0x00,0x00,0x00,0x00,0x19,0xD4,0x62,0x64,0xB7,0xD4,0x4B,0xB2,0x79,0xCD,0x3E,0x89,
0x64,0xE8,0x58,0xC7

};


static struct spx_chunk_t youGotMail_spx_chunk_11 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_11,
};


const char youGotMail_spx_buffer_12[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x5D,0x2E,0x56,0xCE,0x28,0xA3,0xBF,0xB7,0x64,
0x5E,0xCD,0xCF,0x62

};


static struct spx_chunk_t youGotMail_spx_chunk_12 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_12,
};


const char youGotMail_spx_buffer_13[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x28,0x27,0x9E,0x16,0x9B,0x33,0x82,0xEC,0xA4,
0x29,0xC7,0x7E,0xDA

};


static struct spx_chunk_t youGotMail_spx_chunk_13 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_13,
};


const char youGotMail_spx_buffer_14[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x17,0x67,0x07,0x39,0x3B,0xB6,0x5F,0x16,0x49,
0xCF,0x4A,0x4A,0x7C

};


static struct spx_chunk_t youGotMail_spx_chunk_14 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_14,
};


const char youGotMail_spx_buffer_15[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x10,0xC7,0x67,0x35,0x83,0x43,0x8B,0x97,0xE6,
0x32,0x96,0x78,0xA2

};


static struct spx_chunk_t youGotMail_spx_chunk_15 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_15,
};


const char youGotMail_spx_buffer_16[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x00,0x7D,0x3E,0xA5,0xE3,0xFE,0xBF,0xD9,0x38,
0x17,0x49,0x8A,0x4E

};


static struct spx_chunk_t youGotMail_spx_chunk_16 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_16,
};


const char youGotMail_spx_buffer_17[20] = {

0x00,0x00,0x00,0x00,0x1B,0x65,0x60,0x83,0x3A,0x3C,0x5B,0xE9,0x8F,0xAE,0x1F,0x15,
0x4D,0xEF,0xCD,0x83

};


static struct spx_chunk_t youGotMail_spx_chunk_17 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_17,
};


const char youGotMail_spx_buffer_18[20] = {

0x00,0x00,0x00,0x00,0x1D,0xD4,0x52,0x50,0x7B,0xDF,0x3F,0x7B,0xB9,0x40,0xF5,0xBC,
0x4E,0xFE,0x5F,0x16

};


static struct spx_chunk_t youGotMail_spx_chunk_18 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_18,
};


const char youGotMail_spx_buffer_19[20] = {

0x00,0x00,0x00,0x00,0x1B,0x65,0x2E,0x67,0x58,0x01,0x68,0xB3,0xD9,0xED,0x17,0x32,
0x04,0xFF,0x7B,0x86

};


static struct spx_chunk_t youGotMail_spx_chunk_19 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_19,
};


const char youGotMail_spx_buffer_20[20] = {

0x00,0x00,0x00,0x00,0x1B,0x65,0x0E,0x87,0xDA,0xC5,0xE6,0xCB,0xED,0x1D,0xA1,0x32,
0xB1,0x37,0x48,0x53

};


static struct spx_chunk_t youGotMail_spx_chunk_20 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_20,
};


const char youGotMail_spx_buffer_21[20] = {

0x00,0x00,0x00,0x00,0x1F,0xF1,0xD2,0x74,0x5B,0xC9,0x2B,0x8C,0x8E,0xCE,0x0B,0xA6,
0x0E,0xF1,0x02,0xCE

};


static struct spx_chunk_t youGotMail_spx_chunk_21 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_21,
};


const char youGotMail_spx_buffer_22[20] = {

0x00,0x00,0x00,0x00,0x1F,0xF5,0xE2,0x85,0x47,0x89,0x35,0xC0,0x13,0xEC,0x18,0x04,
0xD2,0xF5,0xC2,0x92

};


static struct spx_chunk_t youGotMail_spx_chunk_22 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_22,
};


const char youGotMail_spx_buffer_23[20] = {

0x00,0x00,0x00,0x00,0x1F,0xE8,0xD2,0x8F,0xFE,0xA1,0x7F,0xB9,0x3D,0xAE,0xBC,0x9C,
0xF6,0xEB,0x6B,0x7D

};


static struct spx_chunk_t youGotMail_spx_chunk_23 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_23,
};


const char youGotMail_spx_buffer_24[20] = {

0x00,0x00,0x00,0x00,0x19,0x35,0x6A,0x85,0xFB,0xAC,0x4D,0x4C,0x0D,0xB2,0x95,0xB1,
0x71,0xE7,0xD6,0xB6

};


static struct spx_chunk_t youGotMail_spx_chunk_24 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_24,
};


const char youGotMail_spx_buffer_25[20] = {

0x00,0x00,0x00,0x00,0x1B,0x75,0x42,0x83,0x45,0xDD,0x7E,0x13,0xD9,0xA6,0x70,0xD5,
0x53,0xF3,0x66,0x8C

};


static struct spx_chunk_t youGotMail_spx_chunk_25 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_25,
};


const char youGotMail_spx_buffer_26[20] = {

0x00,0x00,0x00,0x00,0x1B,0x75,0x42,0x77,0x6E,0xDE,0x59,0xB3,0xBD,0x02,0xE5,0xE1,
0xD5,0xB1,0x19,0x84

};


static struct spx_chunk_t youGotMail_spx_chunk_26 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_26,
};


const char youGotMail_spx_buffer_27[20] = {

0x00,0x00,0x00,0x00,0x1B,0x75,0x42,0x77,0x27,0x45,0x93,0x0B,0x9F,0x82,0x31,0xC1,
0xC1,0xDA,0x1B,0xF2

};


static struct spx_chunk_t youGotMail_spx_chunk_27 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_27,
};


const char youGotMail_spx_buffer_28[20] = {

0x00,0x00,0x00,0x00,0x1B,0x75,0x60,0x66,0xDD,0xB2,0xD0,0xA3,0x73,0xCC,0xD8,0xF3,
0xF6,0x32,0x70,0xB2

};


static struct spx_chunk_t youGotMail_spx_chunk_28 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_28,
};


const char youGotMail_spx_buffer_29[20] = {

0x00,0x00,0x00,0x00,0x1C,0x25,0x16,0x67,0x18,0xFB,0x2C,0x0B,0x82,0x57,0x64,0x9D,
0xCE,0xEB,0xB1,0x6A

};


static struct spx_chunk_t youGotMail_spx_chunk_29 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_29,
};


const char youGotMail_spx_buffer_30[20] = {

0x00,0x00,0x00,0x00,0x19,0xD4,0x62,0x73,0x17,0x56,0x88,0xE0,0x4B,0x8C,0xCC,0xAB,
0x3F,0x91,0x0A,0x73

};


static struct spx_chunk_t youGotMail_spx_chunk_30 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_30,
};


const char youGotMail_spx_buffer_31[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x61,0xBB,0x44,0x3A,0xDB,0x8D,0x8D,0x9C,0xD4,
0xAE,0x15,0x76,0x64

};


static struct spx_chunk_t youGotMail_spx_chunk_31 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_31,
};


const char youGotMail_spx_buffer_32[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x20,0x67,0x2C,0xCB,0xB8,0xEE,0xB2,0xC2,0x1D,
0x9A,0x9E,0xCB,0x2E

};


static struct spx_chunk_t youGotMail_spx_chunk_32 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_32,
};


const char youGotMail_spx_buffer_33[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x1E,0x0A,0x29,0x6A,0x5B,0x95,0x0B,0x48,0x54,
0xA7,0x53,0x35,0x4B

};


static struct spx_chunk_t youGotMail_spx_chunk_33 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_33,
};


const char youGotMail_spx_buffer_34[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x15,0x47,0x1B,0x5B,0x3D,0xCA,0xA4,0x9F,0x05,
0xBF,0x44,0xE6,0x6A

};


static struct spx_chunk_t youGotMail_spx_chunk_34 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_34,
};


const char youGotMail_spx_buffer_35[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x27,0x6A,0x44,0xA1,0x26,0x93,0xAA,0x42,0xB9,
0xB7,0x59,0x84,0x3E

};


static struct spx_chunk_t youGotMail_spx_chunk_35 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_35,
};


const char youGotMail_spx_buffer_36[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x26,0x8A,0xA7,0x24,0x7B,0x4E,0x84,0xFC,0xD9,
0x97,0x49,0x12,0x52

};


static struct spx_chunk_t youGotMail_spx_chunk_36 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_36,
};


const char youGotMail_spx_buffer_37[20] = {

0x00,0x00,0x00,0x00,0x19,0xD4,0x66,0x2E,0xC6,0x78,0xAE,0x5F,0x5B,0xB2,0xA6,0x9D,
0x95,0xFE,0xD4,0x0E

};


static struct spx_chunk_t youGotMail_spx_chunk_37 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_37,
};


const char youGotMail_spx_buffer_38[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x2E,0xA7,0xC1,0xE2,0x9F,0x2D,0xE1,0x59,0xC1,
0x8E,0xF0,0x5E,0x50

};


static struct spx_chunk_t youGotMail_spx_chunk_38 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_38,
};


const char youGotMail_spx_buffer_39[20] = {

0x00,0x00,0x00,0x00,0x1B,0x75,0x76,0x9C,0xCC,0x3F,0x23,0x1E,0xD2,0x2D,0xBB,0x3B,
0xB4,0x82,0x0C,0x46

};


static struct spx_chunk_t youGotMail_spx_chunk_39 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_39,
};


const char youGotMail_spx_buffer_40[20] = {

0x00,0x00,0x00,0x00,0x1A,0xA5,0x24,0x9B,0xF2,0x8C,0x50,0x6A,0xCD,0x9A,0x25,0x8D,
0x5E,0xEB,0x1C,0x72

};


static struct spx_chunk_t youGotMail_spx_chunk_40 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_40,
};


const char youGotMail_spx_buffer_41[20] = {

0x00,0x00,0x00,0x00,0x1B,0x65,0x2E,0x75,0x4B,0x9A,0x5C,0x6E,0x49,0xD4,0xBB,0x75,
0x4F,0xA3,0x71,0xF0

};


static struct spx_chunk_t youGotMail_spx_chunk_41 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_41,
};


const char youGotMail_spx_buffer_42[20] = {

0x00,0x00,0x00,0x00,0x1B,0x61,0xE2,0x8C,0x0F,0x8C,0xD7,0x8D,0xD9,0x57,0xBC,0xD1,
0x2E,0xC0,0x3A,0xFE

};


static struct spx_chunk_t youGotMail_spx_chunk_42 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_42,
};


const char youGotMail_spx_buffer_43[20] = {

0x00,0x00,0x00,0x00,0x1B,0x69,0xC2,0x84,0x96,0xC9,0x66,0xAA,0x54,0x69,0x0E,0xC5,
0x26,0xA3,0x1C,0xB7

};


static struct spx_chunk_t youGotMail_spx_chunk_43 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_43,
};


const char youGotMail_spx_buffer_44[20] = {

0x00,0x00,0x00,0x00,0x1B,0x60,0x42,0x74,0x88,0xC0,0x99,0x92,0x2B,0xDD,0xD2,0x0D,
0x13,0xEE,0xCD,0x72

};


static struct spx_chunk_t youGotMail_spx_chunk_44 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_44,
};


const char youGotMail_spx_buffer_45[20] = {

0x00,0x00,0x00,0x00,0x1B,0x7B,0xE6,0x7A,0x87,0x75,0xF9,0x8A,0x1D,0x97,0x48,0x79,
0x0D,0x2B,0x59,0xDA

};


static struct spx_chunk_t youGotMail_spx_chunk_45 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_45,
};


const char youGotMail_spx_buffer_46[20] = {

0x00,0x00,0x00,0x00,0x1A,0x60,0x12,0x74,0x0A,0xB6,0xB6,0xED,0x2A,0x92,0xB5,0x61,
0x09,0xF1,0xBA,0xC6

};


static struct spx_chunk_t youGotMail_spx_chunk_46 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_46,
};


const char youGotMail_spx_buffer_47[20] = {

0x00,0x00,0x00,0x00,0x1B,0x7B,0x82,0x64,0x35,0x8C,0x64,0x2A,0x1C,0x62,0x11,0xFA,
0x9E,0xE3,0x8E,0x6E

};


static struct spx_chunk_t youGotMail_spx_chunk_47 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_47,
};


const char youGotMail_spx_buffer_48[20] = {

0x00,0x00,0x00,0x00,0x1B,0x79,0x82,0x6A,0xBF,0xDB,0xDA,0x7A,0x34,0x5F,0x56,0x65,
0x1D,0xD8,0x12,0xDA

};


static struct spx_chunk_t youGotMail_spx_chunk_48 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_48,
};


const char youGotMail_spx_buffer_49[20] = {

0x00,0x00,0x00,0x00,0x1B,0x60,0x02,0x6B,0x45,0xA9,0x82,0x85,0xC7,0x43,0xE8,0x9D,
0x2A,0x0E,0xB8,0x6A

};


static struct spx_chunk_t youGotMail_spx_chunk_49 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_49,
};


const char youGotMail_spx_buffer_50[20] = {

0x00,0x00,0x00,0x00,0x1B,0x60,0x1C,0x65,0x5F,0x85,0xBC,0x6A,0xD6,0x4A,0xD3,0x69,
0x76,0x33,0x18,0x60

};


static struct spx_chunk_t youGotMail_spx_chunk_50 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_50,
};


const char youGotMail_spx_buffer_51[20] = {

0x00,0x00,0x00,0x00,0x1B,0x60,0x60,0x66,0x55,0xB6,0x45,0x1B,0x83,0xF2,0xE1,0x44,
0x19,0xEF,0x23,0x49

};


static struct spx_chunk_t youGotMail_spx_chunk_51 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_51,
};


const char youGotMail_spx_buffer_52[20] = {

0x00,0x00,0x00,0x00,0x1B,0x70,0x1C,0x65,0xDD,0xBB,0x37,0x84,0x53,0xA3,0x92,0xA5,
0x95,0x72,0x4F,0x13

};


static struct spx_chunk_t youGotMail_spx_chunk_52 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_52,
};


const char youGotMail_spx_buffer_53[20] = {

0x00,0x00,0x00,0x00,0x1B,0x65,0x30,0x6A,0x8B,0x8C,0x55,0x7D,0x22,0xD6,0x4B,0x4F,
0x24,0xD1,0x95,0x9C

};


static struct spx_chunk_t youGotMail_spx_chunk_53 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_53,
};


const char youGotMail_spx_buffer_54[20] = {

0x00,0x00,0x00,0x00,0x1F,0x74,0x00,0x68,0xEB,0x55,0xD0,0x4E,0xD7,0xBF,0x5E,0x3A,
0x7E,0xD5,0xAB,0xA5

};


static struct spx_chunk_t youGotMail_spx_chunk_54 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_54,
};


const char youGotMail_spx_buffer_55[20] = {

0x00,0x00,0x00,0x00,0x1F,0x75,0x00,0x40,0x3B,0x0C,0x87,0xAF,0x7D,0xF2,0x74,0x00,
0x19,0xEF,0xE3,0x97

};


static struct spx_chunk_t youGotMail_spx_chunk_55 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_55,
};


const char youGotMail_spx_buffer_56[20] = {

0x00,0x00,0x00,0x00,0x1F,0x74,0x1C,0x4E,0xC4,0xD4,0x55,0x8E,0x3F,0xFF,0x14,0x24,
0x19,0xE1,0x48,0x15

};


static struct spx_chunk_t youGotMail_spx_chunk_56 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_56,
};


const char youGotMail_spx_buffer_57[20] = {

0x00,0x00,0x00,0x00,0x1F,0x74,0x1C,0x30,0x46,0x1A,0xB8,0x3F,0xDB,0xE3,0x1A,0xB9,
0x31,0xD9,0x6A,0x59

};


static struct spx_chunk_t youGotMail_spx_chunk_57 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_57,
};


const char youGotMail_spx_buffer_58[20] = {

0x00,0x00,0x00,0x00,0x1D,0x60,0x10,0x31,0x67,0xFF,0xBC,0xA4,0x23,0xFC,0x2C,0x8C,
0x2F,0x72,0x90,0x79

};


static struct spx_chunk_t youGotMail_spx_chunk_58 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_58,
};


const char youGotMail_spx_buffer_59[20] = {

0x00,0x00,0x00,0x00,0x19,0xD8,0x66,0x37,0xAC,0xA6,0x39,0xAA,0x9D,0xD6,0x2C,0xBB,
0xE4,0xA9,0x5B,0x6D

};


static struct spx_chunk_t youGotMail_spx_chunk_59 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_59,
};


const char youGotMail_spx_buffer_60[20] = {

0x00,0x00,0x00,0x00,0x1D,0x70,0x50,0x33,0x17,0xFF,0xF4,0xA8,0x7B,0xFE,0x41,0xDF,
0xDA,0xE0,0x42,0xD5

};


static struct spx_chunk_t youGotMail_spx_chunk_60 = 
{
    .dwChunkSize = 20,
    .pbyBuffer = (char *)youGotMail_spx_buffer_60,
};


static struct spx_chunk_t* youGotMail_spx_list[61] = 
{
&youGotMail_spx_chunk_0,
&youGotMail_spx_chunk_1,
&youGotMail_spx_chunk_2,
&youGotMail_spx_chunk_3,
&youGotMail_spx_chunk_4,
&youGotMail_spx_chunk_5,
&youGotMail_spx_chunk_6,
&youGotMail_spx_chunk_7,
&youGotMail_spx_chunk_8,
&youGotMail_spx_chunk_9,
&youGotMail_spx_chunk_10,
&youGotMail_spx_chunk_11,
&youGotMail_spx_chunk_12,
&youGotMail_spx_chunk_13,
&youGotMail_spx_chunk_14,
&youGotMail_spx_chunk_15,
&youGotMail_spx_chunk_16,
&youGotMail_spx_chunk_17,
&youGotMail_spx_chunk_18,
&youGotMail_spx_chunk_19,
&youGotMail_spx_chunk_20,
&youGotMail_spx_chunk_21,
&youGotMail_spx_chunk_22,
&youGotMail_spx_chunk_23,
&youGotMail_spx_chunk_24,
&youGotMail_spx_chunk_25,
&youGotMail_spx_chunk_26,
&youGotMail_spx_chunk_27,
&youGotMail_spx_chunk_28,
&youGotMail_spx_chunk_29,
&youGotMail_spx_chunk_30,
&youGotMail_spx_chunk_31,
&youGotMail_spx_chunk_32,
&youGotMail_spx_chunk_33,
&youGotMail_spx_chunk_34,
&youGotMail_spx_chunk_35,
&youGotMail_spx_chunk_36,
&youGotMail_spx_chunk_37,
&youGotMail_spx_chunk_38,
&youGotMail_spx_chunk_39,
&youGotMail_spx_chunk_40,
&youGotMail_spx_chunk_41,
&youGotMail_spx_chunk_42,
&youGotMail_spx_chunk_43,
&youGotMail_spx_chunk_44,
&youGotMail_spx_chunk_45,
&youGotMail_spx_chunk_46,
&youGotMail_spx_chunk_47,
&youGotMail_spx_chunk_48,
&youGotMail_spx_chunk_49,
&youGotMail_spx_chunk_50,
&youGotMail_spx_chunk_51,
&youGotMail_spx_chunk_52,
&youGotMail_spx_chunk_53,
&youGotMail_spx_chunk_54,
&youGotMail_spx_chunk_55,
&youGotMail_spx_chunk_56,
&youGotMail_spx_chunk_57,
&youGotMail_spx_chunk_58,
&youGotMail_spx_chunk_59,
&youGotMail_spx_chunk_60


};


static struct spx_audio_data_t youGotMail_spx = 
{
    .dwSampleRate = 11000,
    .dwTotalChunks = 61,
    .pstChunkList = youGotMail_spx_list,
};

const struct audio_data_t youGotMail_spx_audio = 
{
    .enAudioFormat = AUDIO_FORMAT_SPEEX_NB,
    .u.spx = &youGotMail_spx,
};
youGotmail.wav (audio/wav, 9.7 KB) - not displayed