shithub: opus-tools

Download patch

ref: 736d934754c8fc7c765c24f80ba74ed675454039
parent: d60075951a3154f3cb7b5a201701e44c94df2834
author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
date: Thu Aug 4 06:32:49 EDT 2011

Implements --speech and --music

--- a/src/opusenc.c
+++ b/src/opusenc.c
@@ -223,6 +223,8 @@
    printf ("  -                 stdout\n");
    printf ("\n");  
    printf ("Options:\n");
+   printf (" --speech           Optimize for speech\n"); 
+   printf (" --music            Optimize for music\n"); 
    printf (" --bitrate n        Encoding bit-rate in kbit/sec\n"); 
    printf (" --cbr              Use constant bitrate encoding\n");
    printf (" --comp n           Encoding complexity (0-10)\n");
@@ -283,6 +285,8 @@
       {"mono", no_argument, NULL, 0},
       {"stereo", no_argument, NULL, 0},
       {"rate", required_argument, NULL, 0},
+      {"music", no_argument, NULL, 0},
+      {"speech", no_argument, NULL, 0},
       {"version", no_argument, NULL, 0},
       {"version-short", no_argument, NULL, 0},
       {"comment", required_argument, NULL, 0},
@@ -316,6 +320,7 @@
    const char *opus_version;
    SpeexResamplerState *resampler=NULL;
    int extra_samples;
+   int signal = OPUS_SIGNAL_AUTO;
 
    opus_version = opus_get_version_string();
    snprintf(vendor_string, sizeof(vendor_string), "%s\n",opus_version);
@@ -377,6 +382,12 @@
          } else if (strcmp(long_options[option_index].name,"rate")==0)
          {
             rate=atoi (optarg);
+         } else if (strcmp(long_options[option_index].name,"music")==0)
+         {
+            signal = OPUS_SIGNAL_MUSIC;
+         } else if (strcmp(long_options[option_index].name,"speech")==0)
+         {
+            signal = OPUS_SIGNAL_VOICE;
          } else if (strcmp(long_options[option_index].name,"comp")==0)
          {
             complexity=atoi (optarg);
@@ -488,6 +499,7 @@
    /*Initialize OPUS encoder*/
    st = opus_encoder_create(48000, chan, OPUS_APPLICATION_AUDIO);
 
+   opus_encoder_ctl(st, OPUS_SET_SIGNAL(signal));
    header.channels = chan;
    opus_encoder_ctl(st, OPUS_GET_LOOKAHEAD(&lookahead));
    header.preskip = lookahead;