mirror of
https://github.com/pikvm/ustreamer.git
synced 2026-02-28 12:46:32 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
077f236a43 | ||
|
|
d57277877e | ||
|
|
1b0db859b2 | ||
|
|
d1d8c645a8 |
@@ -1,7 +1,7 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
commit = True
|
commit = True
|
||||||
tag = True
|
tag = True
|
||||||
current_version = 0.32
|
current_version = 0.34
|
||||||
parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)?
|
parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)?
|
||||||
serialize =
|
serialize =
|
||||||
{major}.{minor}
|
{major}.{minor}
|
||||||
|
|||||||
2
PKGBUILD
2
PKGBUILD
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
pkgname=ustreamer
|
pkgname=ustreamer
|
||||||
pkgver=0.32
|
pkgver=0.34
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Lightweight and fast MJPG-HTTP streamer"
|
pkgdesc="Lightweight and fast MJPG-HTTP streamer"
|
||||||
url="https://github.com/pi-kvm/ustreamer"
|
url="https://github.com/pi-kvm/ustreamer"
|
||||||
|
|||||||
@@ -21,4 +21,4 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define VERSION "0.32"
|
#define VERSION "0.34"
|
||||||
|
|||||||
22
src/http.c
22
src/http.c
@@ -219,7 +219,7 @@ static void _http_callback_ping(struct evhttp_request *request, void *v_server)
|
|||||||
static void _http_callback_snapshot(struct evhttp_request *request, void *v_server) {
|
static void _http_callback_snapshot(struct evhttp_request *request, void *v_server) {
|
||||||
struct http_server_t *server = (struct http_server_t *)v_server;
|
struct http_server_t *server = (struct http_server_t *)v_server;
|
||||||
struct evbuffer *buf;
|
struct evbuffer *buf;
|
||||||
char time_buf[64];
|
char header_buf[64];
|
||||||
|
|
||||||
PROCESS_HEAD_REQUEST;
|
PROCESS_HEAD_REQUEST;
|
||||||
|
|
||||||
@@ -234,11 +234,16 @@ static void _http_callback_snapshot(struct evhttp_request *request, void *v_serv
|
|||||||
ADD_HEADER("Expires", "Mon, 3 Jan 2000 12:34:56 GMT");
|
ADD_HEADER("Expires", "Mon, 3 Jan 2000 12:34:56 GMT");
|
||||||
|
|
||||||
# define ADD_TIME_HEADER(_key, _value) \
|
# define ADD_TIME_HEADER(_key, _value) \
|
||||||
{ sprintf(time_buf, "%.06Lf", _value); ADD_HEADER(_key, time_buf); }
|
{ sprintf(header_buf, "%.06Lf", _value); ADD_HEADER(_key, header_buf); }
|
||||||
|
|
||||||
|
# define ADD_UNSIGNED_HEADER(_key, _value) \
|
||||||
|
{ sprintf(header_buf, "%u", _value); ADD_HEADER(_key, header_buf); }
|
||||||
|
|
||||||
ADD_TIME_HEADER("X-Timestamp", get_now_real());
|
ADD_TIME_HEADER("X-Timestamp", get_now_real());
|
||||||
|
|
||||||
ADD_HEADER("X-UStreamer-Online", bool_to_string(EXPOSED(online)));
|
ADD_HEADER("X-UStreamer-Online", bool_to_string(EXPOSED(online)));
|
||||||
|
ADD_UNSIGNED_HEADER("X-UStreamer-Width", EXPOSED(width));
|
||||||
|
ADD_UNSIGNED_HEADER("X-UStreamer-Height", EXPOSED(height));
|
||||||
ADD_TIME_HEADER("X-UStreamer-Grab-Time", EXPOSED(picture.grab_time));
|
ADD_TIME_HEADER("X-UStreamer-Grab-Time", EXPOSED(picture.grab_time));
|
||||||
ADD_TIME_HEADER("X-UStreamer-Encode-Begin-Time", EXPOSED(picture.encode_begin_time));
|
ADD_TIME_HEADER("X-UStreamer-Encode-Begin-Time", EXPOSED(picture.encode_begin_time));
|
||||||
ADD_TIME_HEADER("X-UStreamer-Encode-End-Time", EXPOSED(picture.encode_end_time));
|
ADD_TIME_HEADER("X-UStreamer-Encode-End-Time", EXPOSED(picture.encode_end_time));
|
||||||
@@ -247,6 +252,7 @@ static void _http_callback_snapshot(struct evhttp_request *request, void *v_serv
|
|||||||
ADD_TIME_HEADER("X-UStreamer-Expose-End-Time", EXPOSED(expose_end_time));
|
ADD_TIME_HEADER("X-UStreamer-Expose-End-Time", EXPOSED(expose_end_time));
|
||||||
ADD_TIME_HEADER("X-UStreamer-Send-Time", get_now_monotonic());
|
ADD_TIME_HEADER("X-UStreamer-Send-Time", get_now_monotonic());
|
||||||
|
|
||||||
|
# undef ADD_UNSUGNED_HEADER
|
||||||
# undef ADD_TIME_HEADER
|
# undef ADD_TIME_HEADER
|
||||||
|
|
||||||
ADD_HEADER("Content-Type", "image/jpeg");
|
ADD_HEADER("Content-Type", "image/jpeg");
|
||||||
@@ -404,6 +410,8 @@ static void _http_callback_stream_write(struct bufferevent *buf_event, void *v_c
|
|||||||
if (client->extra_headers) {
|
if (client->extra_headers) {
|
||||||
assert(evbuffer_add_printf(buf,
|
assert(evbuffer_add_printf(buf,
|
||||||
"X-UStreamer-Online: %s" RN
|
"X-UStreamer-Online: %s" RN
|
||||||
|
"X-UStreamer-Width: %u" RN
|
||||||
|
"X-UStreamer-Height: %u" RN
|
||||||
"X-UStreamer-Client-FPS: %u" RN
|
"X-UStreamer-Client-FPS: %u" RN
|
||||||
"X-UStreamer-Grab-Time: %.06Lf" RN
|
"X-UStreamer-Grab-Time: %.06Lf" RN
|
||||||
"X-UStreamer-Encode-Begin-Time: %.06Lf" RN
|
"X-UStreamer-Encode-Begin-Time: %.06Lf" RN
|
||||||
@@ -414,6 +422,8 @@ static void _http_callback_stream_write(struct bufferevent *buf_event, void *v_c
|
|||||||
"X-UStreamer-Send-Time: %.06Lf" RN
|
"X-UStreamer-Send-Time: %.06Lf" RN
|
||||||
RN,
|
RN,
|
||||||
bool_to_string(EXPOSED(online)),
|
bool_to_string(EXPOSED(online)),
|
||||||
|
EXPOSED(width),
|
||||||
|
EXPOSED(height),
|
||||||
client->fps,
|
client->fps,
|
||||||
EXPOSED(picture.grab_time),
|
EXPOSED(picture.grab_time),
|
||||||
EXPOSED(picture.encode_begin_time),
|
EXPOSED(picture.encode_begin_time),
|
||||||
@@ -442,10 +452,10 @@ static void _http_callback_stream_write(struct bufferevent *buf_event, void *v_c
|
|||||||
bufferevent_setcb(buf_event, NULL, NULL, _http_callback_stream_error, (void *)client);
|
bufferevent_setcb(buf_event, NULL, NULL, _http_callback_stream_error, (void *)client);
|
||||||
bufferevent_enable(buf_event, EV_READ);
|
bufferevent_enable(buf_event, EV_READ);
|
||||||
|
|
||||||
# undef BOUNDARY
|
|
||||||
# undef RN
|
|
||||||
# undef ADD_ADVANCE_HEADERS
|
|
||||||
# undef EXPOSED
|
# undef EXPOSED
|
||||||
|
# undef ADD_ADVANCE_HEADERS
|
||||||
|
# undef RN
|
||||||
|
# undef BOUNDARY
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _http_callback_stream_error(UNUSED struct bufferevent *buf_event, UNUSED short what, void *v_client) {
|
static void _http_callback_stream_error(UNUSED struct bufferevent *buf_event, UNUSED short what, void *v_client) {
|
||||||
@@ -621,8 +631,8 @@ static bool _expose_new_picture(struct http_server_t *server) {
|
|||||||
EXPOSED(expose_end_time) - EXPOSED(expose_begin_time)
|
EXPOSED(expose_end_time) - EXPOSED(expose_begin_time)
|
||||||
);
|
);
|
||||||
|
|
||||||
# undef STREAM
|
|
||||||
# undef EXPOSED
|
# undef EXPOSED
|
||||||
|
# undef STREAM
|
||||||
return true; // Updated
|
return true; // Updated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -213,9 +213,9 @@ static int _parse_options(int argc, char *argv[], struct device_t *dev, struct e
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# undef OPT_SET
|
|
||||||
# undef OPT_UNSIGNED
|
|
||||||
# undef OPT_PARSE
|
# undef OPT_PARSE
|
||||||
|
# undef OPT_UNSIGNED
|
||||||
|
# undef OPT_SET
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,5 +78,5 @@ const char *omx_state_to_string(const OMX_STATETYPE state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef CASE_TO_STRING
|
|
||||||
#undef CASE_ASSERT
|
#undef CASE_ASSERT
|
||||||
|
#undef CASE_TO_STRING
|
||||||
|
|||||||
Reference in New Issue
Block a user