speexdec a bit more robust to corrupted files, misc doc fixes
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Sat, 4 Jan 2003 07:04:53 +0000 (07:04 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Sat, 4 Jan 2003 07:04:53 +0000 (07:04 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@4199 0101bb08-14d6-0310-b084-bc0e0c8e3800

doc/manual.lyx
src/speexdec.c
src/speexenc.c

index d3178be..913adc0 100644 (file)
@@ -3239,6 +3239,10 @@ difficulty
 \layout Subsection*
 
 Average Bit-Rate (ABR)
+\layout Standard
+
+Average bit-rate solves one of the problems of VBR, as it dynamically adjusts
+ VBR quality in order to meet a specific target bit-rate.
 \layout Subsection*
 
 Voice Activity Detection (VAD)
@@ -3287,7 +3291,7 @@ sounds
 \emph default 
  better (subjective improvement).
 \layout Section
-
+\pagebreak_top 
 Command-line encoder/decoder
 \begin_inset LatexCommand \label{sec:Command-line-encoder/decoder}
 
@@ -3342,7 +3346,7 @@ ultra-wideband
 \layout Description
 
 --quality\SpecialChar ~
-n Set the encoding quality (0-10), default is 3
+n Set the encoding quality (0-10), default is 8
 \layout Description
 
 --bitrate\SpecialChar ~
index 79de3cf..36eea07 100644 (file)
@@ -76,18 +76,45 @@ static void print_comments(char *comments, int length)
 {
    char *c=comments;
    int len, i, nb_fields;
-
+   char *end;
+   
+   if (length<8)
+   {
+      fprintf (stderr, "Invalid/corrupted comments\n");
+      return;
+   }
+   end = c+length;
    len=readint(c, 0);
    c+=4;
+   if (c+len>=end)
+   {
+      fprintf (stderr, "Invalid/corrupted comments\n");
+      return;
+   }
    fwrite(c, 1, len, stderr);
    c+=len;
    fprintf (stderr, "\n");
+   if (c+4>=end)
+   {
+      fprintf (stderr, "Invalid/corrupted comments\n");
+      return;
+   }
    nb_fields=readint(c, 0);
    c+=4;
    for (i=0;i<nb_fields;i++)
    {
+      if (c+4>=end)
+      {
+         fprintf (stderr, "Invalid/corrupted comments\n");
+         return;
+      }
       len=readint(c, 0);
       c+=4;
+      if (c+len>=end)
+      {
+         fprintf (stderr, "Invalid/corrupted comments\n");
+         return;
+      }
       fwrite(c, 1, len, stderr);
       c+=len;
       fprintf (stderr, "\n");
@@ -593,12 +620,16 @@ int main(int argc, char **argv)
 
    if (st)
       speex_decoder_destroy(st);
+   else 
+   {
+      fprintf (stderr, "This doesn't look like a Speex file\n");
+   }
    speex_bits_destroy(&bits);
    ogg_sync_clear(&oy);
    ogg_stream_clear(&os);
 
 #if defined WIN32 || defined _WIN32
-   if (strlen(outFile)==0)
+   if (fout && strlen(outFile)==0)
       WIN_Audio_close ();
 #endif
 
index 1fae5ee..a041dda 100644 (file)
@@ -141,7 +141,7 @@ void usage()
    printf (" -n, --narrowband   Narrowband (8 kHz) input file\n"); 
    printf (" -w, --wideband     Wideband (16 kHz) input file\n"); 
    printf (" -u, --ultra-wideband \"Ultra-wideband\" (32 kHz) input file\n"); 
-   printf (" --quality n        Encoding quality (0-10), default 3\n"); 
+   printf (" --quality n        Encoding quality (0-10), default 8\n"); 
    printf (" --bitrate n        Encoding bit-rate (use bit-rate n or lower)\n"); 
    printf (" --vbr              Enable variable bit-rate (VBR)\n"); 
    printf (" --abr rate         Enable average bit-rate (ABR) at rate bps\n");