From b9e4975b7733ab22f82f6f6188abbb9e5a55c8ec Mon Sep 17 00:00:00 2001 From: Devaev Maxim Date: Thu, 10 Dec 2020 14:03:53 +0300 Subject: [PATCH] refactoring --- src/rawsink/rawsink.c | 22 +++++++++++----------- src/rawsink/rawsink.h | 10 +++++----- src/ustreamer/stream.c | 12 +++--------- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/rawsink/rawsink.c b/src/rawsink/rawsink.c index 3c58a14..f706d22 100644 --- a/src/rawsink/rawsink.c +++ b/src/rawsink/rawsink.c @@ -26,9 +26,9 @@ static int _sem_wait_monotonic(sem_t *sem, long double timeout); -rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) { +rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool server) { rawsink_s *rawsink; - int flags = (master ? O_RDWR | O_CREAT : O_RDWR); + int flags = (server ? O_RDWR | O_CREAT : O_RDWR); A_CALLOC(rawsink, 1); rawsink->fd = -1; @@ -36,7 +36,7 @@ rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) { rawsink->signal_sem = SEM_FAILED; rawsink->lock_sem = SEM_FAILED; rawsink->rm = rm; - rawsink->master = master; + rawsink->server = server; A_CALLOC(rawsink->mem_name, strlen(name) + 8); A_CALLOC(rawsink->signal_name, strlen(name) + 8); @@ -55,7 +55,7 @@ rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) { } \ } - if (!master) { + if (!server) { OPEN_SEM(lock, 1); OPEN_SEM(signal, 0); } @@ -84,7 +84,7 @@ rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) { } } - if (master) { + if (server) { OPEN_SEM(signal, 0); OPEN_SEM(lock, 1); } @@ -140,7 +140,7 @@ void rawsink_destroy(rawsink_s *rawsink) { free(rawsink); } -void rawsink_put( +void rawsink_server_put( rawsink_s *rawsink, const uint8_t *data, size_t size, unsigned format, unsigned width, unsigned height, @@ -148,9 +148,9 @@ void rawsink_put( long double now = get_now_monotonic(); - assert(rawsink->master); // Master only + assert(rawsink->server); - if (rawsink->master_failed) { + if (rawsink->server_failed) { return; } @@ -198,17 +198,17 @@ void rawsink_put( error: LOG_ERROR("RAW sink completely disabled due error"); - rawsink->master_failed = true; + rawsink->server_failed = true; } -int rawsink_get( +int rawsink_client_get( rawsink_s *rawsink, char *data, size_t *size, unsigned *format, unsigned *width, unsigned *height, long double *grab_ts, long double timeout) { - assert(!rawsink->master); // Slave only + assert(!rawsink->server); // Client only # define WAIT_SEM(_role) { \ if (_sem_wait_monotonic(rawsink->_role##_sem, timeout) < 0) { \ diff --git a/src/rawsink/rawsink.h b/src/rawsink/rawsink.h index 20c7447..9c461b8 100644 --- a/src/rawsink/rawsink.h +++ b/src/rawsink/rawsink.h @@ -65,22 +65,22 @@ typedef struct { sem_t *lock_sem; bool rm; - bool master; + bool server; - bool master_failed; + bool server_failed; } rawsink_s; -rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master); +rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool server); void rawsink_destroy(rawsink_s *rawsink); -void rawsink_put( +void rawsink_server_put( rawsink_s *rawsink, const uint8_t *data, size_t size, unsigned format, unsigned witdh, unsigned height, long double grab_ts); -int rawsink_get( +int rawsink_client_get( rawsink_s *rawsink, char *data, size_t *size, unsigned *format, unsigned *width, unsigned *height, diff --git a/src/ustreamer/stream.c b/src/ustreamer/stream.c index 2e14dd5..97220c0 100644 --- a/src/ustreamer/stream.c +++ b/src/ustreamer/stream.c @@ -220,17 +220,11 @@ void stream_loop(stream_s *stream) { LOG_VERBOSE("Fluency: delay=%.03Lf, grab_after=%.03Lf", fluency_delay, grab_after); # ifdef WITH_RAWSINK +# define HW(_next) DEV(run->hw_buffers[buf_index]._next) if (rawsink) { - rawsink_put( - rawsink, - DEV(run->hw_buffers[buf_index].data), - DEV(run->hw_buffers[buf_index].used), - DEV(run->hw_buffers[buf_index].format), - DEV(run->hw_buffers[buf_index].width), - DEV(run->hw_buffers[buf_index].height), - DEV(run->hw_buffers[buf_index].grab_ts) - ); + rawsink_server_put(rawsink, HW(data), HW(used), HW(format), HW(width), HW(height), HW(grab_ts)); } +# undef HW # endif _workers_pool_assign(pool, ready_wr, buf_index);