diff --git a/src/dump/file.c b/src/dump/file.c index 5111054..43e7bcd 100644 --- a/src/dump/file.c +++ b/src/dump/file.c @@ -52,11 +52,11 @@ void us_output_file_write(void *v_output, const us_frame_s *frame) { us_base64_encode(frame->data, frame->used, &output->base64_data, &output->base64_allocated); fprintf(output->fp, "{\"size\": %zu, \"width\": %u, \"height\": %u," - " \"format\": %u, \"stride\": %u, \"online\": %u," + " \"format\": %u, \"stride\": %u, \"online\": %u, \"key\": %u," " \"grab_ts\": %.3Lf, \"encode_begin_ts\": %.3Lf, \"encode_end_ts\": %.3Lf," " \"data\": \"%s\"}\n", frame->used, frame->width, frame->height, - frame->format, frame->stride, frame->online, + frame->format, frame->stride, frame->online, frame->key, frame->grab_ts, frame->encode_begin_ts, frame->encode_end_ts, output->base64_data); } else { diff --git a/src/dump/main.c b/src/dump/main.c index c59f689..d09bff9 100644 --- a/src/dump/main.c +++ b/src/dump/main.c @@ -251,7 +251,8 @@ static int _dump_sink( long double last_ts = 0; while (!_g_stop) { - const int error = us_memsink_client_get(sink, frame, key_required); + bool key_requested; + const int error = us_memsink_client_get(sink, frame, &key_requested, key_required); if (error == 0) { key_required = false; @@ -259,11 +260,12 @@ static int _dump_sink( const long long now_second = us_floor_ms(now); char fourcc_str[8]; - US_LOG_VERBOSE("Frame: size=%zu, res=%ux%u, fourcc=%s, stride=%u, online=%d, key=%d, latency=%.3Lf, diff=%.3Lf", - frame->used, frame->width, frame->height, + US_LOG_VERBOSE("Frame: res=%ux%u, fmt=%s, stride=%u, online=%d, key=%d, kr=%d, latency=%.3Lf, diff=%.3Lf, size=%zu", + frame->width, frame->height, us_fourcc_to_string(frame->format, fourcc_str, 8), - frame->stride, frame->online, frame->key, - now - frame->grab_ts, (last_ts ? now - last_ts : 0)); + frame->stride, frame->online, frame->key, key_requested, + now - frame->grab_ts, (last_ts ? now - last_ts : 0), + frame->used); last_ts = now; US_LOG_DEBUG(" grab_ts=%.3Lf, encode_begin_ts=%.3Lf, encode_end_ts=%.3Lf", diff --git a/src/libs/memsink.c b/src/libs/memsink.c index 739412f..c35cfaa 100644 --- a/src/libs/memsink.c +++ b/src/libs/memsink.c @@ -136,9 +136,7 @@ int us_memsink_server_put(us_memsink_s *sink, const us_frame_s *frame, bool *con if (sink->mem->key_requested && frame->key) { sink->mem->key_requested = false; } - if (key_requested != NULL) { - *key_requested = sink->mem->key_requested; - } + *key_requested = sink->mem->key_requested; memcpy(sink->mem->data, frame->data, frame->used); sink->mem->used = frame->used; @@ -166,7 +164,7 @@ int us_memsink_server_put(us_memsink_s *sink, const us_frame_s *frame, bool *con return 0; } -int us_memsink_client_get(us_memsink_s *sink, us_frame_s *frame, bool key_required) { // cppcheck-suppress unusedFunction +int us_memsink_client_get(us_memsink_s *sink, us_frame_s *frame, bool *const key_requested, bool key_required) { // cppcheck-suppress unusedFunction assert(!sink->server); // Client only if (us_flock_timedwait_monotonic(sink->fd, sink->timeout) < 0) { @@ -189,6 +187,7 @@ int us_memsink_client_get(us_memsink_s *sink, us_frame_s *frame, bool key_requir sink->last_id = sink->mem->id; us_frame_set_data(frame, sink->mem->data, sink->mem->used); US_FRAME_COPY_META(sink->mem, frame); + *key_requested = sink->mem->key_requested; retval = 0; } sink->mem->last_client_ts = us_get_now_monotonic(); diff --git a/src/libs/memsink.h b/src/libs/memsink.h index 79cf3c8..16d0aaf 100644 --- a/src/libs/memsink.h +++ b/src/libs/memsink.h @@ -65,4 +65,4 @@ void us_memsink_destroy(us_memsink_s *sink); bool us_memsink_server_check(us_memsink_s *sink, const us_frame_s *frame); int us_memsink_server_put(us_memsink_s *sink, const us_frame_s *frame, bool *const key_requested); -int us_memsink_client_get(us_memsink_s *sink, us_frame_s *frame, bool key_required); +int us_memsink_client_get(us_memsink_s *sink, us_frame_s *frame, bool *const key_requested, bool key_required); diff --git a/src/ustreamer/stream.c b/src/ustreamer/stream.c index fdf31dd..94a5279 100644 --- a/src/ustreamer/stream.c +++ b/src/ustreamer/stream.c @@ -32,7 +32,8 @@ static void _stream_expose_frame(us_stream_s *stream, us_frame_s *frame, unsigne #define _SINK_PUT(x_sink, x_frame) { \ if (stream->x_sink && us_memsink_server_check(stream->x_sink, x_frame)) {\ - us_memsink_server_put(stream->x_sink, x_frame, NULL); \ + bool m_key_requested; /* Unused */ \ + us_memsink_server_put(stream->x_sink, x_frame, &m_key_requested); \ } \ }