|
VLC 4.0.0-dev
|
Data Structures | |
| struct | preparser_serdes_cbs_ctx |
| struct | preparser_sys |
| struct | preparser_process_thread |
| union | preparser_task_cbs |
| struct | preparser_task |
| struct | preparser_process_pool |
Macros | |
| #define | VLC_PREPARSER_PATH "vlc-preparser" |
Functions | |
| static ssize_t | write_cbs (const void *data, size_t size, void *userdata) |
| static ssize_t | read_cbs (void *data, size_t size, void *userdata) |
| static struct preparser_task * | preparser_task_get_req_owner (struct vlc_preparser_req *req) |
| static void | preparser_task_ExecCallback (struct preparser_task *task, int status) |
| Execute task callbacks. | |
| static int | preparser_task_Run (struct preparser_process_thread *thread, vlc_tick_t timeout) |
| Execute a task: Send a request and wait for a response then call callbacks. | |
| static struct vlc_preparser_req * | preparser_task_req_Hold (struct vlc_preparser_req *req) |
| static input_item_t * | preparser_task_req_GetItem (struct vlc_preparser_req *req) |
| static void | preparser_task_req_Release (struct vlc_preparser_req *req) |
| static struct preparser_task * | preparser_task_New (input_item_t *item, enum vlc_preparser_msg_req_type req_type) |
| Create a new task. | |
| static void | preparser_task_Delete (struct preparser_task *task) |
| Delete a task and its message. | |
| static void | preparser_task_InitPush (struct preparser_task *task, int options, const union preparser_task_cbs *cbs, void *userdata) |
| Init a task for a Push request. | |
| static void | preparser_task_InitThumbnail (struct preparser_task *task, const struct vlc_thumbnailer_arg *arg, const union preparser_task_cbs *cbs, void *userdata) |
| Init a task for a Generate Thumbnail request. | |
| static void | preparser_task_InitThumbnailToFile (struct preparser_task *task, const struct vlc_thumbnailer_arg *arg, const struct vlc_thumbnailer_output *outputs, size_t output_count, const union preparser_task_cbs *cbs, void *userdata) |
| Init a task for a Generate Thumbnail To Files request. | |
| static void | preparser_pool_QueuePush (struct preparser_process_pool *pool, struct preparser_task *task) |
Add a task to the process pool queue and trigger the queue_wait. | |
| static struct preparser_task * | preparser_pool_QueueTake (struct preparser_process_pool *pool) |
| Take a task on the queue or wait for a new one to be added. | |
| static int | preparser_pool_SpawnProcess (struct preparser_process_thread *thread) |
| static void * | preparser_pool_Run (void *data) |
| Process thread loop. | |
| static int | preparser_pool_SpawnThread (struct preparser_process_pool *pool) |
| Start a new thread process with its external process. | |
| static void | preparser_pool_Submit (struct preparser_process_pool *pool, struct preparser_task *task) |
| Push a new task in the queue and check if a new process thread can be spawn. | |
| static size_t | preparser_pool_Cancel (struct preparser_process_pool *pool, struct vlc_preparser_req *req) |
| Cancel a request. | |
| static void | preparser_pool_Delete (struct preparser_process_pool *pool) |
| Clear and delete the process pool. | |
| static struct preparser_process_pool * | preparser_pool_New (vlc_object_t *obj, size_t max, vlc_tick_t timeout, int types) |
Create a new process pool with max maximum process. | |
| static struct vlc_preparser_req * | preparser_Push (void *opaque, input_item_t *item, int options, const struct vlc_preparser_cbs *cbs, void *cbs_userdata) |
| Preparser push operation. | |
| static struct vlc_preparser_req * | preparser_GenerateThumbnail (void *opaque, input_item_t *item, const struct vlc_thumbnailer_arg *thumb_arg, const struct vlc_thumbnailer_cbs *cbs, void *cbs_userdata) |
| Preparser GenerateThumbnail operation. | |
| static struct vlc_preparser_req * | preparser_GenerateThumbnailToFiles (void *opaque, input_item_t *item, const struct vlc_thumbnailer_arg *thumb_arg, const struct vlc_thumbnailer_output *outputs, size_t output_count, const struct vlc_thumbnailer_to_files_cbs *cbs, void *cbs_userdata) |
| Preparser GenerateThumbnailToFiles operation. | |
| static size_t | preparser_Cancel (void *opaque, struct vlc_preparser_req *req) |
| Preparser Cancel operation. | |
| static void | preparser_SetTimeout (void *opaque, vlc_tick_t timeout) |
| Preparser SetTimeout operation. | |
| static void | preparser_Delete (void *opaque) |
| Preparser Delete operation. | |
| void * | vlc_preparser_external_New (vlc_preparser_t *owner, vlc_object_t *parent, const struct vlc_preparser_cfg *cfg) |
| Create a new preparser with an external process. | |
| #define VLC_PREPARSER_PATH "vlc-preparser" |
|
static |
Preparser Cancel operation.
(see vlc_preparser_Cancel)
References count, preparser_sys::pool_preparser, preparser_sys::pool_thumbnailer, and preparser_pool_Cancel().
Referenced by vlc_preparser_external_New().
|
static |
Preparser Delete operation.
(see vlc_preparser_Delete)
References preparser_sys::pool_preparser, preparser_sys::pool_thumbnailer, preparser_pool_Cancel(), and preparser_pool_Delete().
Referenced by vlc_preparser_external_New().
|
static |
Preparser GenerateThumbnail operation.
(see vlc_preparser_GenerateThumbnail)
References preparser_task::cbs_userdata, preparser_task::item, preparser_sys::pool_thumbnailer, preparser_pool_Submit(), preparser_task_InitThumbnail(), preparser_task_New(), preparser_task_req_Hold(), preparser_task_cbs::thumbnailer, and VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL.
Referenced by vlc_preparser_external_New().
|
static |
Preparser GenerateThumbnailToFiles operation.
(see vlc_preparser_GenerateThumbnailToFiles)
References preparser_task::cbs_userdata, preparser_task::item, preparser_sys::pool_thumbnailer, preparser_pool_Submit(), preparser_task_InitThumbnailToFile(), preparser_task_New(), preparser_task_req_Hold(), preparser_task_cbs::thumbnailer_to_files, and VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL_TO_FILES.
Referenced by vlc_preparser_external_New().
|
static |
Cancel a request.
If NULL is given, all request are canceled.
References count, task::interrupt, preparser_process_pool::lock, preparser_task::node, task::node, preparser_task_Delete(), preparser_task_ExecCallback(), preparser_process_pool::queue, preparser_task::req, preparser_process_pool::running, preparser_process_pool::unfinished, vlc_interrupt_raise(), vlc_list_foreach, vlc_list_remove(), vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by preparser_Cancel(), and preparser_Delete().
|
static |
Clear and delete the process pool.
References preparser_process_pool::closing, preparser_process_pool::lock, preparser_process_thread::node, preparser_process_pool::queue, preparser_process_pool::queue_wait, vlc_thread::thread, thread, preparser_process_pool::threads, preparser_process_pool::unfinished, vlc_cond_broadcast(), vlc_join(), vlc_list_foreach, vlc_list_is_empty(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_preparser_msg_serdes_Delete(), and vlc_process_Terminate().
Referenced by preparser_Delete().
|
static |
Create a new process pool with max maximum process.
References preparser_process_pool::closing, preparser_process_pool::lock, preparser_process_pool::max_threads, preparser_process_pool::nthreads, preparser_process_pool::parent, preparser_pool_SpawnThread(), preparser_process_pool::queue, preparser_process_pool::queue_wait, preparser_process_pool::running, preparser_process_pool::threads, preparser_process_pool::timeout, preparser_process_pool::types, preparser_process_pool::unfinished, vlc_cond_init(), vlc_list_init(), vlc_mutex_init(), and VLC_SUCCESS.
Referenced by vlc_preparser_external_New().
|
static |
Add a task to the process pool queue and trigger the queue_wait.
References preparser_process_pool::lock, task::node, preparser_process_pool::queue, preparser_process_pool::queue_wait, vlc_cond_signal(), vlc_list_append(), and vlc_mutex_assert.
Referenced by preparser_pool_Submit().
|
static |
Take a task on the queue or wait for a new one to be added.
References preparser_process_pool::closing, preparser_process_pool::lock, preparser_task::node, task::node, preparser_process_pool::queue, preparser_process_pool::queue_wait, vlc_cond_wait(), vlc_list_first_entry_or_null, vlc_list_is_empty(), vlc_list_remove(), and vlc_mutex_assert.
Referenced by preparser_pool_Run().
|
static |
Process thread loop.
Take a task on the queue, then execute the task and delete it. Check that the external process has not crashed otherwise start a new one.
References task::interrupt, task::node, preparser_pool_QueueTake(), preparser_pool_SpawnProcess(), preparser_task_Delete(), preparser_task_Run(), thread, vlc_interrupt_set(), vlc_list_append(), vlc_list_remove(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_process_Terminate(), VLC_SUCCESS, and vlc_thread_set_name().
Referenced by preparser_pool_SpawnThread().
|
static |
References preparser_process_pool::argc, preparser_process_pool::argv, ARRAY_SIZE, asprintf(), config_GetSysPath(), getenv(), name, thread, preparser_process_pool::timeout, preparser_process_pool::types, VLC_EGENERIC, VLC_ENOMEM, vlc_mutex_assert, VLC_PKG_LIBEXEC_DIR, VLC_PREPARSER_PATH, vlc_process_Spawn(), and VLC_SUCCESS.
Referenced by preparser_pool_Run(), and preparser_pool_SpawnThread().
|
static |
Start a new thread process with its external process.
References preparser_process_pool::lock, preparser_process_pool::max_threads, msg_Err, preparser_process_pool::nthreads, preparser_process_pool::parent, preparser_pool_Run(), preparser_pool_SpawnProcess(), read_cbs(), vlc_thread::thread, thread, preparser_process_pool::threads, vlc_clone(), VLC_EGENERIC, vlc_list_append(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_preparser_msg_serdes_Create(), vlc_preparser_msg_serdes_Delete(), vlc_process_Terminate(), VLC_SUCCESS, vlc_preparser_msg_serdes_cbs::write, and write_cbs().
Referenced by preparser_pool_New(), and preparser_pool_Submit().
|
static |
Push a new task in the queue and check if a new process thread can be spawn.
If there is more unfinished task than spawned process thread and that the max number of process thread is not reached, then a new thread is spwaned.
References preparser_process_pool::closing, preparser_process_pool::lock, preparser_process_pool::max_threads, preparser_process_pool::nthreads, preparser_pool_QueuePush(), preparser_pool_SpawnThread(), preparser_process_pool::unfinished, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by preparser_GenerateThumbnail(), preparser_GenerateThumbnailToFiles(), and preparser_Push().
|
static |
Preparser push operation.
(see vlc_preparser_Push)
References preparser_task::cbs_userdata, preparser_task::item, preparser_task_cbs::parser, preparser_sys::pool_preparser, preparser_pool_Submit(), preparser_task_InitPush(), preparser_task_New(), preparser_task_req_Hold(), and VLC_PREPARSER_MSG_REQ_TYPE_PARSE.
Referenced by vlc_preparser_external_New().
|
static |
Preparser SetTimeout operation.
(see vlc_preparser_SetTimeout)
References preparser_process_pool::lock, preparser_sys::pool_preparser, preparser_sys::pool_thumbnailer, preparser_process_pool::timeout, preparser_sys::timeout, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by vlc_preparser_external_New().
|
static |
Delete a task and its message.
References input_item_Release(), task::interrupt, task::item, vlc_interrupt_destroy(), and vlc_preparser_msg_Clean().
Referenced by preparser_pool_Cancel(), and preparser_pool_Run().
|
static |
Execute task callbacks.
References vlc_preparser_msg_res::attachments, task::cbs, vlc_preparser_msg_res::data, input_item_Hold(), input_item_Update(), vlc_preparser_msg_res::item, task::item, vlc_preparser_msg_res::pic, vlc_preparser_msg::res, vlc_preparser_msg_res::result, vlc_preparser_msg_res::size, vlc_preparser_msg_res::status, vlc_preparser_msg_res::subtree, vlc_assert_unreachable, vlc_preparser_msg_Init(), VLC_PREPARSER_MSG_REQ_TYPE_PARSE, VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL, VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL_TO_FILES, and vlc_preparser_msg::VLC_PREPARSER_MSG_TYPE_RES.
Referenced by preparser_pool_Cancel(), and preparser_task_Run().
|
static |
References container_of, and preparser_task::req.
Referenced by preparser_task_req_GetItem(), preparser_task_req_Hold(), and preparser_task_req_Release().
|
static |
Init a task for a Push request.
References task::cbs, vlc_preparser_msg_req::options, vlc_preparser_msg::req, vlc_preparser_msg::req_type, vlc_preparser_msg::type, VLC_PREPARSER_MSG_REQ_TYPE_PARSE, and vlc_preparser_msg::VLC_PREPARSER_MSG_TYPE_REQ.
Referenced by preparser_Push().
|
static |
Init a task for a Generate Thumbnail request.
References vlc_preparser_msg_req::arg, arg, task::cbs, vlc_thumbnailer_arg::hw_dec, vlc_preparser_msg::req, vlc_preparser_msg::req_type, vlc_thumbnailer_arg::seek, vlc_thumbnailer_arg::seek::type, vlc_preparser_msg::type, VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL, and vlc_preparser_msg::VLC_PREPARSER_MSG_TYPE_REQ.
Referenced by preparser_GenerateThumbnail().
|
static |
Init a task for a Generate Thumbnail To Files request.
References vlc_preparser_msg_req::arg, arg, task::cbs, vlc_thumbnailer_arg::hw_dec, vlc_preparser_msg_req::outputs, vlc_preparser_msg::req, vlc_preparser_msg::req_type, vlc_thumbnailer_arg::seek, vlc_thumbnailer_arg::seek::type, vlc_preparser_msg::type, VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL_TO_FILES, vlc_preparser_msg::VLC_PREPARSER_MSG_TYPE_REQ, and vlc_vector_push_all.
Referenced by preparser_GenerateThumbnailToFiles().
|
static |
Create a new task.
References vlc_preparser_req_operations::get_item, input_item_Hold(), task::interrupt, preparser_task::item, task::item, task::node, preparser_task_req_GetItem(), preparser_task_req_Release(), input_item_t::psz_uri, strdup(), vlc_atomic_rc_init(), vlc_interrupt_create(), vlc_interrupt_destroy(), vlc_list_init(), vlc_preparser_msg_Clean(), vlc_preparser_msg_Init(), VLC_PREPARSER_MSG_REQ_TYPE_PARSE, VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL, and VLC_PREPARSER_MSG_REQ_TYPE_THUMBNAIL_TO_FILES.
Referenced by preparser_GenerateThumbnail(), preparser_GenerateThumbnailToFiles(), and preparser_Push().
|
static |
References task::item, preparser_task_get_req_owner(), and preparser_task::req.
Referenced by preparser_task_New().
|
static |
References preparser_task_get_req_owner(), preparser_task::req, and vlc_atomic_rc_inc().
Referenced by preparser_GenerateThumbnail(), preparser_GenerateThumbnailToFiles(), and preparser_Push().
|
static |
References input_item_Release(), task::interrupt, task::item, preparser_task_get_req_owner(), preparser_task::req, vlc_atomic_rc_dec(), vlc_interrupt_destroy(), and vlc_preparser_msg_Clean().
Referenced by preparser_task_New().
|
static |
Execute a task: Send a request and wait for a response then call callbacks.
References task::item, preparser_task_ExecCallback(), preparser_serdes_cbs_ctx::start, thread, preparser_serdes_cbs_ctx::timeout, vlc_preparser_msg_serdes_Deserialize(), vlc_preparser_msg_serdes_Serialize(), VLC_SUCCESS, vlc_thread_set_name(), and vlc_tick_now().
Referenced by preparser_pool_Run().
|
static |
| void * vlc_preparser_external_New | ( | vlc_preparser_t * | owner, |
| vlc_object_t * | parent, | ||
| const struct vlc_preparser_cfg * | cfg | ||
| ) |
Create a new preparser with an external process.
(see vlc_preparser_New)
References preparser_sys::current_id, vlc_preparser_cfg::max_parser_threads, vlc_preparser_cfg::max_thumbnailer_threads, vlc_preparser_t::ops, preparser_sys::owner, preparser_sys::parent, preparser_sys::pool_preparser, preparser_sys::pool_thumbnailer, preparser_Cancel(), preparser_Delete(), preparser_GenerateThumbnail(), preparser_GenerateThumbnailToFiles(), preparser_pool_New(), preparser_Push(), preparser_SetTimeout(), vlc_preparser_operations::push, vlc_preparser_cfg::timeout, vlc_preparser_cfg::types, VLC_PREPARSER_TYPE_PARSE, VLC_PREPARSER_TYPE_THUMBNAIL, and VLC_PREPARSER_TYPE_THUMBNAIL_TO_FILES.
Referenced by vlc_preparser_New().
|
static |