ffsrever: Make the status page bitexact if any stream is bitexact
authorMichael Niedermayer <michael@niedermayer.cc>
Tue, 29 Nov 2016 18:05:43 +0000 (19:05 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Tue, 29 Nov 2016 18:26:26 +0000 (19:26 +0100)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
ffserver.c
ffserver_config.c
ffserver_config.h

index 9b1f6d5..20f5995 100644 (file)
@@ -1987,7 +1987,9 @@ static void compute_status(HTTPContext *c)
                     sfilename, stream->filename);
         avio_printf(pb, "<td align=right> %d <td align=right> ",
                     stream->conns_served);
-        fmt_bytecount(pb, stream->bytes_served);
+        // TODO: Investigate if we can make http bitexact so it always produces the same count of bytes
+        if (!config.bitexact)
+            fmt_bytecount(pb, stream->bytes_served);
 
         switch(stream->stream_type) {
         case STREAM_TYPE_LIVE: {
@@ -2140,10 +2142,12 @@ static void compute_status(HTTPContext *c)
     }
     avio_printf(pb, "</table>\n");
 
-    /* date */
-    ti = time(NULL);
-    p = ctime(&ti);
-    avio_printf(pb, "<hr size=1 noshade>Generated at %s", p);
+    if (!config.bitexact) {
+        /* date */
+        ti = time(NULL);
+        p = ctime(&ti);
+        avio_printf(pb, "<hr size=1 noshade>Generated at %s", p);
+    }
     avio_printf(pb, "</body>\n</html>\n");
 
     len = avio_close_dyn_buf(pb, &c->pb_buffer);
index 2354cc7..05c6622 100644 (file)
@@ -1048,6 +1048,7 @@ static int ffserver_parse_config_stream(FFServerConfig *config, const char *cmd,
                                        AV_OPT_FLAG_VIDEO_PARAM, config) < 0)
             goto nomem;
     } else if (!av_strcasecmp(cmd, "BitExact")) {
+        config->bitexact = 1;
         if (ffserver_save_avoption("flags", "+bitexact", AV_OPT_FLAG_VIDEO_PARAM, config) < 0)
             goto nomem;
     } else if (!av_strcasecmp(cmd, "DctFastint")) {
index 373767b..48d38dc 100644 (file)
@@ -122,6 +122,7 @@ typedef struct FFServerConfig {
     unsigned int nb_max_connections;
     uint64_t max_bandwidth;
     int debug;
+    int bitexact;
     char logfilename[1024];
     struct sockaddr_in http_addr;
     struct sockaddr_in rtsp_addr;