diff --git a/src/data/html_index.h b/src/data/html_index.h
index 056ed73..69e5c0f 100644
--- a/src/data/html_index.h
+++ b/src/data/html_index.h
@@ -47,8 +47,14 @@ const char *HTML_INDEX_PAGE = " \
\
\
/stream
\
- Get a live stream. Query params: \
+ Get a live stream. Query params:
\
+
\
\
+ - \
+ extra_headers=1
\
+ Add X-UStreamer-* headers to /stream handle (like on /snapshot). \
+ \
+
\
- \
advance_headers=1
\
Enable workaround for Chromium/Blink \
diff --git a/src/http.c b/src/http.c
index ae3da36..a5721de 100644
--- a/src/http.c
+++ b/src/http.c
@@ -284,6 +284,7 @@ static void _http_callback_stream(struct evhttp_request *request, void *v_server
client->need_first_frame = true;
evhttp_parse_query(evhttp_request_get_uri(request), ¶ms);
+ client->extra_headers = _http_get_param_true(¶ms, "extra_headers");
client->advance_headers = _http_get_param_true(¶ms, "advance_headers");
evhttp_clear_headers(¶ms);
@@ -389,9 +390,9 @@ static void _http_callback_stream_write(struct bufferevent *buf_event, void *v_c
"X-Timestamp: %.06Lf" RN
"%s",
EXPOSED(picture.size) * sizeof(*EXPOSED(picture.data)),
- get_now_real(), (client->server->extra_stream_headers ? "" : RN)
+ get_now_real(), (client->extra_headers ? "" : RN)
));
- if (client->server->extra_stream_headers) {
+ if (client->extra_headers) {
assert(evbuffer_add_printf(buf,
"X-UStreamer-Online: %s" RN
"X-UStreamer-Client-FPS: %u" RN
diff --git a/src/http.h b/src/http.h
index 2a095d7..5eaf2d5 100644
--- a/src/http.h
+++ b/src/http.h
@@ -32,6 +32,7 @@ struct stream_client_t {
struct http_server_t *server;
struct evhttp_request *request;
char id[37]; // ex. "1b4e28ba-2fa1-11d2-883f-0016d3cca427" + "\0"
+ bool extra_headers;
bool advance_headers;
bool need_initial;
bool need_first_frame;
@@ -71,7 +72,6 @@ struct http_server_t {
char *host;
unsigned port;
unsigned drop_same_frames;
- bool extra_stream_headers;
unsigned fake_width;
unsigned fake_height;
unsigned timeout;
diff --git a/src/main.c b/src/main.c
index 23f0166..bd911d5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -66,7 +66,6 @@ static const struct option _long_opts[] = {
{"host", required_argument, NULL, 's'},
{"port", required_argument, NULL, 'p'},
{"drop-same-frames", required_argument, NULL, 'r'},
- {"extra-stream-headers", no_argument, NULL, 2000},
{"fake-width", required_argument, NULL, 2001},
{"fake-height", required_argument, NULL, 2002},
{"server-timeout", required_argument, NULL, 2003},
@@ -136,8 +135,6 @@ static void _help(struct device_t *dev, struct encoder_t *encoder, struct http_s
printf(" It can significantly reduce the outgoing traffic, but will increase\n");
printf(" the CPU loading. Don't use this option with analog signal sources\n");
printf(" or webcams, it's useless. Default: disabled.\n\n");
- printf(" --extra-stream-headers -- Add X-UStreamer-* headers to /stream handle (like /snapshot).\n");
- printf(" Default: disabled.\n\n");
printf(" --fake-width -- Override image width for /ping. Default: disabled\n\n");
printf(" --fake-height -- Override image height for /ping. Default: disabled.\n\n");
printf(" --server-timeout -- Timeout for client connections. Default: %d\n\n", server->timeout);
@@ -201,7 +198,6 @@ static int _parse_options(int argc, char *argv[], struct device_t *dev, struct e
case 's': OPT_SET(server->host, optarg);
case 'p': OPT_UNSIGNED(server->port, "--port", 1, 65535);
case 'r': OPT_UNSIGNED(server->drop_same_frames, "--drop-same-frames", 0, 30);
- case 2000: OPT_SET(server->extra_stream_headers, true);
case 2001: OPT_UNSIGNED(server->fake_width, "--fake-width", 0, 1920);
case 2002: OPT_UNSIGNED(server->fake_height, "--fake-height", 0, 1200);
case 2003: OPT_UNSIGNED(server->timeout, "--server-timeout", 1, 60);