mirror of
https://github.com/pikvm/ustreamer.git
synced 2026-04-11 00:56:13 +00:00
refactoring
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 *));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user