Added bit-rate information via speex_*_ctl calls, fixed stupid bug in
authorjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Wed, 31 Jul 2002 22:30:29 +0000 (22:30 +0000)
committerjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Wed, 31 Jul 2002 22:30:29 +0000 (22:30 +0000)
speexenc

git-svn-id: http://svn.xiph.org/trunk/speex@3742 0101bb08-14d6-0310-b084-bc0e0c8e3800

configure.in
libspeex/modes.c
libspeex/modes.h
libspeex/nb_celp.c
libspeex/sb_celp.c
libspeex/speex.h
src/speexdec.c
src/speexenc.c

index 021274a..bc59e8e 100644 (file)
@@ -4,7 +4,7 @@ AC_INIT(libspeex/speex.h)
 
 SPEEX_MAJOR_VERSION=0
 SPEEX_MINOR_VERSION=5
 
 SPEEX_MAJOR_VERSION=0
 SPEEX_MINOR_VERSION=5
-SPEEX_MICRO_VERSION=2
+SPEEX_MICRO_VERSION=3
 SPEEX_VERSION=$SPEEX_MAJOR_VERSION.$SPEEX_MINOR_VERSION.$SPEEX_MICRO_VERSION
 SPEEX_BINARY_AGE=0
 SPEEX_INTERFACE_AGE=0
 SPEEX_VERSION=$SPEEX_MAJOR_VERSION.$SPEEX_MINOR_VERSION.$SPEEX_MICRO_VERSION
 SPEEX_BINARY_AGE=0
 SPEEX_INTERFACE_AGE=0
index a3e4e49..eb2612b 100644 (file)
@@ -174,7 +174,8 @@ static SpeexSubmode nb_submode1 = {
    NULL,
    /* No Post-filter */
    NULL,
    NULL,
    /* No Post-filter */
    NULL,
-   NULL
+   NULL,
+   2500
 };
 
 static SpeexSubmode nb_submode2 = {
 };
 
 static SpeexSubmode nb_submode2 = {
@@ -192,7 +193,8 @@ static SpeexSubmode nb_submode2 = {
    split_cb_nogain_unquant,
    &split_cb_nb_vlbr,
    nb_post_filter,
    split_cb_nogain_unquant,
    &split_cb_nb_vlbr,
    nb_post_filter,
-   &pf_params_lbr
+   &pf_params_lbr,
+   5900
 };
 
 
 };
 
 
@@ -211,7 +213,8 @@ static SpeexSubmode nb_submode3 = {
    split_cb_nogain_unquant,
    &split_cb_nb_lbr,
    nb_post_filter,
    split_cb_nogain_unquant,
    &split_cb_nb_lbr,
    nb_post_filter,
-   &pf_params_lbr
+   &pf_params_lbr,
+   8350
 };
 
 static SpeexSubmode nb_submode4 = {
 };
 
 static SpeexSubmode nb_submode4 = {
@@ -229,7 +232,8 @@ static SpeexSubmode nb_submode4 = {
    split_cb_nogain_unquant,
    &split_cb_nb_med,
    nb_post_filter,
    split_cb_nogain_unquant,
    &split_cb_nb_med,
    nb_post_filter,
-   &pf_params_med
+   &pf_params_med,
+   11350
 };
 
 static SpeexSubmode nb_submode5 = {
 };
 
 static SpeexSubmode nb_submode5 = {
@@ -247,7 +251,8 @@ static SpeexSubmode nb_submode5 = {
    split_cb_nogain_unquant,
    &split_cb_nb,
    nb_post_filter,
    split_cb_nogain_unquant,
    &split_cb_nb,
    nb_post_filter,
-   &pf_params_nb
+   &pf_params_nb,
+   14950
 };
 
 static SpeexSubmode nb_submode6 = {
 };
 
 static SpeexSubmode nb_submode6 = {
@@ -265,7 +270,8 @@ static SpeexSubmode nb_submode6 = {
    split_cb_nogain_unquant,
    &split_cb_sb,
    nb_post_filter,
    split_cb_nogain_unquant,
    &split_cb_sb,
    nb_post_filter,
-   &pf_params_sb
+   &pf_params_sb,
+   18150
 };
 
 
 };
 
 
@@ -302,7 +308,7 @@ SpeexMode speex_nb_mode = {
    &nb_encoder_ctl,
    &nb_decoder_ctl,
    160,
    &nb_encoder_ctl,
    &nb_decoder_ctl,
    160,
-   14750,
+   -1,
    0
 };
 
    0
 };
 
@@ -322,7 +328,8 @@ static SpeexSubmode wb_submode1 = {
    NULL,
    /*No post-filter*/
    NULL,
    NULL,
    /*No post-filter*/
    NULL,
-   NULL
+   NULL,
+   1750
 };
 
 
 };
 
 
@@ -341,7 +348,8 @@ static SpeexSubmode wb_submode2 = {
    split_cb_nogain_unquant,
    &split_cb_high_lbr,
    NULL,
    split_cb_nogain_unquant,
    &split_cb_high_lbr,
    NULL,
-   NULL
+   NULL,
+   5550
 };
 
 
 };
 
 
@@ -360,7 +368,8 @@ static SpeexSubmode wb_submode3 = {
    split_cb_shape_sign_unquant,
    &split_cb_high,
    NULL,
    split_cb_shape_sign_unquant,
    &split_cb_high,
    NULL,
-   NULL
+   NULL,
+   9550
 };
 
 
 };
 
 
@@ -395,7 +404,7 @@ SpeexMode speex_wb_mode = {
    &sb_encoder_ctl,
    &sb_decoder_ctl,
    320,
    &sb_encoder_ctl,
    &sb_decoder_ctl,
    320,
-   27350,
+   -1,
    0
 };
 
    0
 };
 
index 6d5c8d1..176ac01 100644 (file)
@@ -77,7 +77,7 @@ typedef struct SpeexSubmode {
    /*Post-filter*/
    nb_post_filter_func post_filter_func;
    void             *post_filter_params;
    /*Post-filter*/
    nb_post_filter_func post_filter_func;
    void             *post_filter_params;
-
+   int               bitrate;
 } SpeexSubmode;
 
 /*Struct defining the encoding/decoding mode*/
 } SpeexSubmode;
 
 /*Struct defining the encoding/decoding mode*/
index 2fbe2ba..68f0bdf 100644 (file)
@@ -1022,6 +1022,9 @@ void nb_encoder_ctl(void *state, int request, void *ptr)
    case SPEEX_GET_COMPLEXITY:
       (*(int*)ptr) = st->complexity;
       break;
    case SPEEX_GET_COMPLEXITY:
       (*(int*)ptr) = st->complexity;
       break;
+   case SPEEX_GET_BITRATE:
+      (*(int*)ptr) = SUBMODE(bitrate);
+      break;
    default:
       fprintf(stderr, "Unknown nb_ctl request: %d\n", request);
    }
    default:
       fprintf(stderr, "Unknown nb_ctl request: %d\n", request);
    }
@@ -1039,6 +1042,9 @@ void nb_decoder_ctl(void *state, int request, void *ptr)
    case SPEEX_GET_FRAME_SIZE:
       (*(int*)ptr) = st->frameSize;
       break;
    case SPEEX_GET_FRAME_SIZE:
       (*(int*)ptr) = st->frameSize;
       break;
+   case SPEEX_GET_BITRATE:
+      (*(int*)ptr) = SUBMODE(bitrate);
+      break;
    default:
       fprintf(stderr, "Unknown nb_ctl request: %d\n", request);
    }
    default:
       fprintf(stderr, "Unknown nb_ctl request: %d\n", request);
    }
index 35a6805..16bc6c1 100644 (file)
@@ -948,6 +948,10 @@ void sb_encoder_ctl(void *state, int request, void *ptr)
    case SPEEX_GET_COMPLEXITY:
       (*(int*)ptr) = st->complexity;
       break;
    case SPEEX_GET_COMPLEXITY:
       (*(int*)ptr) = st->complexity;
       break;
+   case SPEEX_GET_BITRATE:
+      speex_encoder_ctl(st->st_low, request, ptr);
+      (*(int*)ptr) += SUBMODE(bitrate);
+      break;
    default:
       fprintf(stderr, "Unknown nb_ctl request: %d\n", request);
    }
    default:
       fprintf(stderr, "Unknown nb_ctl request: %d\n", request);
    }
@@ -966,6 +970,10 @@ void sb_decoder_ctl(void *state, int request, void *ptr)
    case SPEEX_SET_PF:
       speex_decoder_ctl(st->st_low, request, ptr);
       break;
    case SPEEX_SET_PF:
       speex_decoder_ctl(st->st_low, request, ptr);
       break;
+   case SPEEX_GET_BITRATE:
+      speex_decoder_ctl(st->st_low, request, ptr);
+      (*(int*)ptr) += SUBMODE(bitrate);
+      break;
    default:
       fprintf(stderr, "Unknown sb_ctl request: %d\n", request);
    }
    default:
       fprintf(stderr, "Unknown sb_ctl request: %d\n", request);
    }
index 7ddb5ed..2a64e15 100644 (file)
@@ -47,7 +47,8 @@ extern "C" {
 #define SPEEX_GET_VBR_QUALITY 15
 #define SPEEX_SET_COMPLEXITY 16
 #define SPEEX_GET_COMPLEXITY 17
 #define SPEEX_GET_VBR_QUALITY 15
 #define SPEEX_SET_COMPLEXITY 16
 #define SPEEX_GET_COMPLEXITY 17
-
+/*Would be SPEEX_SET_FRAME_SIZE, but it's (currently) invalid*/
+#define SPEEX_GET_BITRATE 19
 
 #define SPEEX_NB_MODES 2
 
 
 #define SPEEX_NB_MODES 2
 
index 34938d9..4c4d0ae 100644 (file)
@@ -119,10 +119,11 @@ void usage()
    fprintf (stderr, "  (nothing)             will be played to soundcard\n");
    fprintf (stderr, "\n");  
    fprintf (stderr, "options:\n");
    fprintf (stderr, "  (nothing)             will be played to soundcard\n");
    fprintf (stderr, "\n");  
    fprintf (stderr, "options:\n");
-   fprintf (stderr, "  --help       -h      This help\n");
-   fprintf (stderr, "  --version    -v      Version information\n");
    fprintf (stderr, "  --pf                 Enable post-filter\n");
    fprintf (stderr, "  --no-pf              Disable post-filter (default FOR NOW)\n");
    fprintf (stderr, "  --pf                 Enable post-filter\n");
    fprintf (stderr, "  --no-pf              Disable post-filter (default FOR NOW)\n");
+   fprintf (stderr, "  --help       -h      This help\n");
+   fprintf (stderr, "  --version    -v      Version information\n");
+   fprintf (stderr, "  -V                 Verbose mode (show bit-rate)\n"); 
 }
 
 void version()
 }
 
 void version()
index 26f61fa..5547b73 100644 (file)
@@ -66,6 +66,7 @@ void usage()
    fprintf (stderr, "  --nframes n        Number of frames per Ogg packet\n"); 
    fprintf (stderr, "  --help       -h    This help\n"); 
    fprintf (stderr, "  --version    -v    Version information\n"); 
    fprintf (stderr, "  --nframes n        Number of frames per Ogg packet\n"); 
    fprintf (stderr, "  --help       -h    This help\n"); 
    fprintf (stderr, "  --version    -v    Version information\n"); 
+   fprintf (stderr, "  -V                 Verbose mode (show bit-rate)\n"); 
    fprintf (stderr, "\n");  
    fprintf (stderr, "Input must be mono\n"); 
    fprintf (stderr, "Raw PCM needs to be 16-bit little-endian\n"); 
    fprintf (stderr, "\n");  
    fprintf (stderr, "Input must be mono\n"); 
    fprintf (stderr, "Raw PCM needs to be 16-bit little-endian\n"); 
@@ -113,7 +114,7 @@ int main(int argc, char **argv)
    ogg_page             og;
    ogg_packet           op;
    int bytes_written, ret, result;
    ogg_page             og;
    ogg_packet           op;
    int bytes_written, ret, result;
-   int id=0;
+   int id=-1;
    SpeexHeader header;
    int nframes=1;
    int complexity=3;
    SpeexHeader header;
    int nframes=1;
    int complexity=3;
@@ -330,6 +331,7 @@ int main(int argc, char **argv)
    /*Main encoding loop (one frame per iteration)*/
    while (1)
    {
    /*Main encoding loop (one frame per iteration)*/
    while (1)
    {
+      id++;
       /*Read input audio*/
       fread(in, sizeof(short), frame_size, fin);
       if (feof(fin))
       /*Read input audio*/
       fread(in, sizeof(short), frame_size, fin);
       if (feof(fin))
@@ -370,7 +372,6 @@ int main(int argc, char **argv)
          else
             bytes_written += ret;
       }
          else
             bytes_written += ret;
       }
-      id++;
    }
    
    op.packet = (unsigned char *)"END OF STREAM";
    }
    
    op.packet = (unsigned char *)"END OF STREAM";