refactoring

This commit is contained in:
Devaev Maxim
2021-01-02 17:18:35 +03:00
parent 1054b8c10f
commit e21c39e172
3 changed files with 13 additions and 10 deletions

View File

@@ -36,7 +36,7 @@ static workers_pool_s *_stream_init_loop(stream_s *stream);
static workers_pool_s *_stream_init_one(stream_s *stream);
static bool _stream_expose_frame(stream_s *stream, frame_s *frame, unsigned captured_fps);
static void *_worker_job_init(worker_s *wr);
static void *_worker_job_init(worker_s *wr, void *arg);
static void _worker_job_destroy(void *v_job);
static bool _worker_run_job(worker_s *wr);
@@ -170,10 +170,7 @@ void stream_loop(stream_s *stream) {
}
# endif
_job_s *job = (_job_s *)ready_wr->job;
job->dev = stream->dev;
job->encoder = stream->encoder;
job->buf_index = buf_index;
((_job_s *)ready_wr->job)->buf_index = buf_index;
workers_pool_assign(pool, ready_wr);
LOG_DEBUG("Assigned new frame in buffer %d to worker %s", buf_index, ready_wr->name);
}
@@ -279,7 +276,9 @@ static workers_pool_s *_stream_init_one(stream_s *stream) {
return workers_pool_init(
"jpeg", stream->encoder->run->n_workers, desired_interval,
_worker_job_init, _worker_job_destroy, _worker_run_job);
_worker_job_init, (void *)stream,
_worker_job_destroy,
_worker_run_job);
error:
device_close(stream->dev);
@@ -343,10 +342,14 @@ static bool _stream_expose_frame(stream_s *stream, frame_s *frame, unsigned capt
# undef VID
}
static void *_worker_job_init(worker_s *wr) {
static void *_worker_job_init(worker_s *wr, void *arg) {
_job_s *job;
A_CALLOC(job, 1);
stream_s *stream = (stream_s *)arg;
job->dev = stream->dev;
job->encoder = stream->encoder;
const size_t dest_role_len = strlen(wr->name) + 16;
A_CALLOC(job->dest_role, dest_role_len);
snprintf(job->dest_role, dest_role_len, "%s_dest", wr->name);

View File

@@ -28,7 +28,7 @@ static void *_worker_thread(void *v_worker);
workers_pool_s *workers_pool_init(
const char *name, unsigned n_workers, long double desired_interval,
void *(*job_init)(worker_s *wr),
void *(*job_init)(worker_s *wr, void *arg), void *job_init_arg,
void (*job_destroy)(void *),
bool (*run_job)(worker_s *)) {
@@ -63,7 +63,7 @@ workers_pool_s *workers_pool_init(
A_COND_INIT(&WR(has_job_cond));
WR(pool) = pool;
WR(job) = job_init(&pool->workers[number]);
WR(job) = job_init(&pool->workers[number], job_init_arg);
A_THREAD_CREATE(&WR(tid), _worker_thread, (void *)&(pool->workers[number]));
pool->free_workers += 1;

View File

@@ -79,7 +79,7 @@ typedef struct workers_pool_sx {
workers_pool_s *workers_pool_init(
const char *name, unsigned n_workers, long double desired_interval,
void *(*job_init)(worker_s *wr),
void *(*job_init)(worker_s *wr, void *arg), void *job_init_arg,
void (*job_destroy)(void *job),
bool (*run_job)(worker_s *));