Introduced bit-stream version number (for compatibility)
authorjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Wed, 12 Jun 2002 08:33:29 +0000 (08:33 +0000)
committerjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Wed, 12 Jun 2002 08:33:29 +0000 (08:33 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@3383 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/modes.c
libspeex/speex.h
libspeex/speex_header.c
libspeex/speex_header.h
libspeex/testenc.c

index b404a46..6f13845 100644 (file)
@@ -203,6 +203,7 @@ static SpeexNBMode low_sb_mode = {
 SpeexMode low_wb_mode = {
    &low_sb_mode,
    -1,
+   -1,
    &nb_encoder_init,
    &nb_encoder_destroy,
    &nb_encode,
@@ -219,6 +220,7 @@ SpeexMode low_wb_mode = {
 SpeexMode speex_nb_mode = {
    &nb_mode,
    0,
+   0,
    &nb_encoder_init,
    &nb_encoder_destroy,
    &nb_encode,
@@ -235,6 +237,7 @@ SpeexMode speex_nb_mode = {
 SpeexMode speex_nb_lbr_mode = {
    &nb_lbr_mode,
    1,
+   0,
    &nb_encoder_init,
    &nb_encoder_destroy,
    &nb_encode,
@@ -274,6 +277,7 @@ static SpeexSBMode sb_wb_mode = {
 SpeexMode speex_wb_mode = {
    &sb_wb_mode,
    2,
+   0,
    &sb_encoder_init,
    &sb_encoder_destroy,
    &sb_encode,
index 92c5fdc..39ad026 100644 (file)
@@ -48,9 +48,13 @@ typedef struct SpeexMode {
    /** Pointer to the low-level mode data */
    void *mode;
 
-   /*ID of the mode*/
+   /**ID of the mode*/
    int modeID;
 
+   /**Version number of the bitstream (incremented every time we break
+    bitstream compatibility*/
+   int bitstream_version;
+
    /** Pointer to encoder initialization function */
    encoder_init_func enc_init;
 
index 6fcbcdf..8039a52 100644 (file)
 #include <stdlib.h>
 
 #define ENDIAN_SWITCH(x) {x=le_int(x);}
+
+
 /*
 typedef struct SpeexHeader {
+   char speex_string[8];
    char speex_version[SPEEX_HEADER_VERSION_LENGTH];
    int speex_header_version;
    int header_size;
    int rate;
    int mode;
+   int mode_bitstream_version;
    int nb_channels;
    int bitrate;
    int frame_size;
@@ -55,13 +59,14 @@ void speex_init_header(SpeexHeader *header, int rate, int nb_channels, SpeexMode
    
    header->rate = rate;
    header->mode = m->modeID;
+   header->mode_bitstream_version = m->bitstream_version;
    if (m->modeID<0)
       fprintf (stderr, "This mode is meant to be used alone\n");
    header->nb_channels = nb_channels;
    header->bitrate = nb_channels * m->bitrate;
    header->frame_size = m->frame_size;
    header->vbr = m->vbr;
-
+   
    header->reserved1 = 0;
    header->reserved2 = 0;
    header->reserved3 = 0;
@@ -80,6 +85,7 @@ char *speex_header_to_packet(SpeexHeader *header, int *size)
    ENDIAN_SWITCH(le_header->header_size);
    ENDIAN_SWITCH(le_header->rate);
    ENDIAN_SWITCH(le_header->mode);
+   ENDIAN_SWITCH(le_header->mode_bitstream_version);
    ENDIAN_SWITCH(le_header->nb_channels);
    ENDIAN_SWITCH(le_header->bitrate);
    ENDIAN_SWITCH(le_header->frame_size);
@@ -114,6 +120,7 @@ SpeexHeader *speex_packet_to_header(char *packet, int size)
    ENDIAN_SWITCH(le_header->header_size);
    ENDIAN_SWITCH(le_header->rate);
    ENDIAN_SWITCH(le_header->mode);
+   ENDIAN_SWITCH(le_header->mode_bitstream_version);
    ENDIAN_SWITCH(le_header->nb_channels);
    ENDIAN_SWITCH(le_header->bitrate);
    ENDIAN_SWITCH(le_header->frame_size);
index a96c436..4afcbff 100644 (file)
@@ -34,6 +34,7 @@ typedef struct SpeexHeader {
    int header_size;
    int rate;
    int mode;
+   int mode_bitstream_version;
    int nb_channels;
    int bitrate;
    int frame_size;
index 9848840..4a86ee7 100644 (file)
@@ -20,8 +20,8 @@ int main(int argc, char **argv)
 
    for (i=0;i<FRAME_SIZE;i++)
       bak2[i]=0;
-   st = speex_encoder_init(&speex_nb_mode);
-   dec = speex_decoder_init(&speex_nb_mode);
+   st = speex_encoder_init(&speex_nb_lbr_mode);
+   dec = speex_decoder_init(&speex_nb_lbr_mode);
 
    pf=0;
    speex_decoder_ctl(dec, SPEEX_SET_PF, &pf);
@@ -66,7 +66,7 @@ int main(int argc, char **argv)
       }
       speex_bits_rewind(&bits);
       
-      speex_decode(dec, &bits, input, 0);
+      /*speex_decode(dec, &bits, input, 0);*/
 
       /* Save the bits here */
       for (i=0;i<FRAME_SIZE;i++)