...
[speexdsp.git] / doc / sampleenc.c
index c8a4b93..9b52078 100644 (file)
@@ -1,7 +1,7 @@
 #include <speex.h>
 #include <stdio.h>
-#include <stdlib.h>
 
+/*The frame size in hardcoded for this sample code but it doesn't have to be*/
 #define FRAME_SIZE 160
 int main(int argc, char **argv)
 {
@@ -11,39 +11,53 @@ int main(int argc, char **argv)
    float input[FRAME_SIZE];
    char cbits[200];
    int nbBytes;
+   /*Holds the state of the encoder*/
    void *state;
+   /*Holds bits so they can be read and written to by the Speex routines*/
    SpeexBits bits;
    int i, tmp;
 
-
+   /*Create a new encoder state in narrowband mode*/
    state = speex_encoder_init(&speex_nb_mode);
 
+   /*Set the quality to 8 (15 kbps)*/
    tmp=8;
    speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);
 
    inFile = argv[1];
    fin = fopen(inFile, "r");
 
+   /*Initialization of the structure that holds the bits*/
    speex_bits_init(&bits);
    while (1)
    {
+      /*Read a 16 bits/sample audio frame*/
       fread(in, sizeof(short), FRAME_SIZE, fin);
       if (feof(fin))
          break;
+      /*Copy the 16 bits values to float so Speex can work on them*/
       for (i=0;i<FRAME_SIZE;i++)
          input[i]=in[i];
+
+      /*Flush all the bits in the struct so we can encode a new frame*/
       speex_bits_reset(&bits);
 
+      /*Encode the frame*/
       speex_encode(state, input, &bits);
+      /*Copy the bits to an array of char that can be written*/
       nbBytes = speex_bits_write(&bits, cbits, 200);
 
+      /*Write the size of the frame first. This is what sampledec expects but
+       it's likely to be different in your own application*/
       fwrite(&nbBytes, sizeof(int), 1, stdout);
+      /*Write the compressed data*/
       fwrite(cbits, 1, nbBytes, stdout);
-      speex_bits_rewind(&bits);
       
    }
    
+   /*Destroy the encoder state*/
    speex_encoder_destroy(state);
+   /*Destroy the bit-packing struct*/
    speex_bits_destroy(&bits);
    fclose(fin);
    return 0;