VLC  4.0.0-dev
Data Structures | Typedefs | Functions
thumbnailer.c File Reference
Include dependency graph for thumbnailer.c:

Data Structures

struct  vlc_thumbnailer_t
 
struct  seek_target
 
struct  vlc_thumbnailer_request_t
 

Typedefs

typedef struct vlc_thumbnailer_request_t task_t
 

Functions

static void RunnableRun (void *)
 
static task_tTaskNew (vlc_thumbnailer_t *thumbnailer, input_item_t *item, struct seek_target seek_target, bool fast_seek, vlc_thumbnailer_cb cb, void *userdata, vlc_tick_t timeout)
 
static void TaskDelete (task_t *task)
 
static void ThumbnailerAddTask (vlc_thumbnailer_t *thumbnailer, task_t *task)
 
static void ThumbnailerRemoveTask (vlc_thumbnailer_t *thumbnailer, task_t *task)
 
static void NotifyThumbnail (task_t *task, picture_t *pic)
 
static void on_thumbnailer_input_event (input_thread_t *input, const struct vlc_input_event *event, void *userdata)
 
static void Interrupt (task_t *task)
 
static task_tRequestCommon (vlc_thumbnailer_t *thumbnailer, struct seek_target seek_target, enum vlc_thumbnailer_seek_speed speed, input_item_t *item, vlc_tick_t timeout, vlc_thumbnailer_cb cb, void *userdata)
 
task_tvlc_thumbnailer_RequestByTime (vlc_thumbnailer_t *thumbnailer, vlc_tick_t time, enum vlc_thumbnailer_seek_speed speed, input_item_t *item, vlc_tick_t timeout, vlc_thumbnailer_cb cb, void *userdata)
 vlc_thumbnailer_RequestByTime Requests a thumbnailer at a given time More...
 
task_tvlc_thumbnailer_RequestByPos (vlc_thumbnailer_t *thumbnailer, float pos, enum vlc_thumbnailer_seek_speed speed, input_item_t *item, vlc_tick_t timeout, vlc_thumbnailer_cb cb, void *userdata)
 vlc_thumbnailer_RequestByTime Requests a thumbnailer at a given time More...
 
void vlc_thumbnailer_Cancel (vlc_thumbnailer_t *thumbnailer, task_t *task)
 vlc_thumbnailer_Cancel Cancel a thumbnail request More...
 
vlc_thumbnailer_tvlc_thumbnailer_Create (vlc_object_t *parent)
 vlc_thumbnailer_Create Creates a thumbnailer object More...
 
static void CancelAllTasks (vlc_thumbnailer_t *thumbnailer)
 
void vlc_thumbnailer_Release (vlc_thumbnailer_t *thumbnailer)
 vlc_thumbnailer_Release releases a thumbnailer and cancel all pending requests More...
 

Typedef Documentation

◆ task_t

Function Documentation

◆ CancelAllTasks()

static void CancelAllTasks ( vlc_thumbnailer_t thumbnailer)
static

◆ Interrupt()

static void Interrupt ( task_t task)
static

◆ NotifyThumbnail()

static void NotifyThumbnail ( task_t task,
picture_t pic 
)
static

◆ on_thumbnailer_input_event()

static void on_thumbnailer_input_event ( input_thread_t input,
const struct vlc_input_event event,
void *  userdata 
)
static

◆ RequestCommon()

static task_t* RequestCommon ( vlc_thumbnailer_t thumbnailer,
struct seek_target  seek_target,
enum vlc_thumbnailer_seek_speed  speed,
input_item_t item,
vlc_tick_t  timeout,
vlc_thumbnailer_cb  cb,
void *  userdata 
)
static

◆ RunnableRun()

static void RunnableRun ( void *  userdata)
static

◆ TaskDelete()

static void TaskDelete ( task_t task)
static

References input_item_Release(), and task::item.

Referenced by CancelAllTasks(), and RunnableRun().

◆ TaskNew()

static task_t* TaskNew ( vlc_thumbnailer_t thumbnailer,
input_item_t item,
struct seek_target  seek_target,
bool  fast_seek,
vlc_thumbnailer_cb  cb,
void *  userdata,
vlc_tick_t  timeout 
)
static

◆ ThumbnailerAddTask()

static void ThumbnailerAddTask ( vlc_thumbnailer_t thumbnailer,
task_t task 
)
static

◆ ThumbnailerRemoveTask()

static void ThumbnailerRemoveTask ( vlc_thumbnailer_t thumbnailer,
task_t task 
)
static

◆ vlc_thumbnailer_Cancel()

void vlc_thumbnailer_Cancel ( vlc_thumbnailer_t thumbnailer,
vlc_thumbnailer_request_t request 
)

vlc_thumbnailer_Cancel Cancel a thumbnail request

Parameters
thumbnailerA thumbnailer object
requestAn opaque thumbnail request object

Cancelling a request will not invoke the completion callback. The behavior is undefined if the request is cancelled after its completion.

References Interrupt().

◆ vlc_thumbnailer_Create()

vlc_thumbnailer_t* vlc_thumbnailer_Create ( vlc_object_t p_parent)

vlc_thumbnailer_Create Creates a thumbnailer object

Parameters
parentA VLC object
Returns
A thumbnailer object, or NULL in case of failure

References vlc_thumbnailer_t::executor, vlc_thumbnailer_t::lock, vlc_thumbnailer_t::parent, vlc_thumbnailer_t::submitted_tasks, unlikely, vlc_executor_New(), vlc_list_init(), and vlc_mutex_init().

Referenced by libvlc_InternalInit().

◆ vlc_thumbnailer_Release()

void vlc_thumbnailer_Release ( vlc_thumbnailer_t thumbnailer)

vlc_thumbnailer_Release releases a thumbnailer and cancel all pending requests

Parameters
thumbnailerA thumbnailer object

References CancelAllTasks(), vlc_thumbnailer_t::executor, and vlc_executor_Delete().

Referenced by libvlc_InternalCleanup().

◆ vlc_thumbnailer_RequestByPos()

task_t* vlc_thumbnailer_RequestByPos ( vlc_thumbnailer_t thumbnailer,
float  pos,
enum vlc_thumbnailer_seek_speed  speed,
input_item_t input_item,
vlc_tick_t  timeout,
vlc_thumbnailer_cb  cb,
void *  user_data 
)

vlc_thumbnailer_RequestByTime Requests a thumbnailer at a given time

Parameters
thumbnailerA thumbnailer object
posThe position at which the thumbnail should be taken
speedThe seeking speed
See also
{enum vlc_thumbnailer_seek_speed}
Parameters
input_itemThe input item to generate the thumbnail for
timeoutA timeout value, or VLC_TICK_INVALID to disable timeout
cbA user callback to be called on completion (success & error)
user_dataAn opaque value, provided as pf_cb's first parameter
Returns
An opaque request object, or NULL in case of failure

If this function returns a valid request object, the callback is guaranteed to be called, even in case of later failure. The returned request object must not be used after the callback has been invoked. That request object is owned by the thumbnailer, and must not be released. The provided input_item will be held by the thumbnailer and can safely be released after calling this function.

References seek_target::pos, RequestCommon(), seek_target::type, and seek_target::VLC_THUMBNAILER_SEEK_POS.

◆ vlc_thumbnailer_RequestByTime()

task_t* vlc_thumbnailer_RequestByTime ( vlc_thumbnailer_t thumbnailer,
vlc_tick_t  time,
enum vlc_thumbnailer_seek_speed  speed,
input_item_t input_item,
vlc_tick_t  timeout,
vlc_thumbnailer_cb  cb,
void *  user_data 
)

vlc_thumbnailer_RequestByTime Requests a thumbnailer at a given time

Parameters
thumbnailerA thumbnailer object
timeThe time at which the thumbnail should be taken
speedThe seeking speed
See also
{enum vlc_thumbnailer_seek_speed}
Parameters
input_itemThe input item to generate the thumbnail for
timeoutA timeout value, or VLC_TICK_INVALID to disable timeout
cbA user callback to be called on completion (success & error)
user_dataAn opaque value, provided as pf_cb's first parameter
Returns
An opaque request object, or NULL in case of failure

If this function returns a valid request object, the callback is guaranteed to be called, even in case of later failure. The returned request object must not be used after the callback has been invoked. That request object is owned by the thumbnailer, and must not be released. The provided input_item will be held by the thumbnailer and can safely be released safely after calling this function.

References RequestCommon(), seek_target::time, seek_target::type, and seek_target::VLC_THUMBNAILER_SEEK_TIME.