Added VideoBitRateRange and VideoBitRAteTolerance settings
authorPhilip Gladstone <philipjsg@users.sourceforge.net>
Wed, 30 Oct 2002 02:15:07 +0000 (02:15 +0000)
committerPhilip Gladstone <philipjsg@users.sourceforge.net>
Wed, 30 Oct 2002 02:15:07 +0000 (02:15 +0000)
Also made the Launch directive work again if you invoke ffserver with a relative
path.

Originally committed as revision 1111 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffserver.c

index 2f3eae7ea28744191593607c66d8e0cf29178535..aa8e72c8964148341985ef8e2ebdb9f52939d7cf 100644 (file)
@@ -244,6 +244,7 @@ static int rtp_new_av_stream(HTTPContext *c,
                              int stream_index, struct sockaddr_in *dest_addr);
 
 static const char *my_program_name;
+static const char *my_program_dir;
 
 static int ffserver_debug;
 static int ffserver_daemon;
@@ -380,6 +381,9 @@ static void start_children(FFStream *feed)
                 }
                 strcpy(slash, "ffmpeg");
 
+                /* This is needed to make relative pathnames work */
+                chdir(my_program_dir);
+
                 execvp(pathname, feed->child_argv);
 
                 _exit(1);
@@ -3301,7 +3305,10 @@ void add_codec(FFStream *stream, AVCodecContext *av)
             av->b_quant_factor = 1.25;
         if (!av->b_quant_offset)
             av->b_quant_offset = 1.25;
-            
+        if (!av->rc_min_rate)
+            av->rc_min_rate = av->bit_rate / 2;
+        if (!av->rc_max_rate)
+            av->rc_max_rate = av->bit_rate * 2;
 
         break;
     default:
@@ -3695,6 +3702,26 @@ int parse_ffconfig(const char *filename)
             if (stream) {
                 audio_enc.quality = atof(arg) * 1000;
             }
+        } else if (!strcasecmp(cmd, "VideoBitRateRange")) {
+            if (stream) {
+                int minrate, maxrate;
+
+                get_arg(arg, sizeof(arg), &p);
+
+                if (sscanf(arg, "%d-%d", &minrate, &maxrate) == 2) {
+                    video_enc.rc_min_rate = minrate * 1000;
+                    video_enc.rc_max_rate = maxrate * 1000;
+                } else {
+                    fprintf(stderr, "%s:%d: Incorrect format for VideoBitRateRange -- should be <min>-<max>: %s\n", 
+                            filename, line_num, arg);
+                    errors++;
+                }
+            }
+        } else if (!strcasecmp(cmd, "VideoBitRateTolerance")) {
+            if (stream) {
+                get_arg(arg, sizeof(arg), &p);
+                video_enc.bit_rate_tolerance = atoi(arg) * 1000;
+            }
         } else if (!strcasecmp(cmd, "VideoBitRate")) {
             get_arg(arg, sizeof(arg), &p);
             if (stream) {
@@ -4018,6 +4045,7 @@ int main(int argc, char **argv)
     config_filename = "/etc/ffserver.conf";
 
     my_program_name = argv[0];
+    my_program_dir = getcwd(0, 0);
     ffserver_daemon = 1;
     
     for(;;) {