Browse Source

preparser: configure threads and timeout externally

pull/170/head
Thomas Guillem 2 years ago
committed by Steve Lhomme
parent
commit
c3346925c8
  1. 6
      include/vlc_preparser.h
  2. 12
      src/libvlc.c
  3. 15
      src/preparser/preparser.c

6
include/vlc_preparser.h

@ -81,9 +81,13 @@ struct vlc_metadata_cbs {
* This function creates the preparser object and thread.
*
* @param obj the parent object
* @param max_threads the maximum number of threads used to parse, must be >= 1
* @param default_timeout default timeout of the preparser, 0 for no limits.
* @return a valid preparser object or NULL in case of error
*/
VLC_API vlc_preparser_t *vlc_preparser_New( vlc_object_t *obj );
VLC_API vlc_preparser_t *vlc_preparser_New( vlc_object_t *obj,
unsigned max_threads,
vlc_tick_t default_timeout );
/**
* This function enqueues the provided item to be preparsed or fetched.

12
src/libvlc.c

@ -235,7 +235,17 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
/*
* Meta data handling
*/
priv->parser = vlc_preparser_New(VLC_OBJECT(p_libvlc));
int max_threads = var_InheritInteger(p_libvlc, "preparse-threads");
if (max_threads < 1)
max_threads = 1;
vlc_tick_t default_timeout =
VLC_TICK_FROM_MS(var_InheritInteger(p_libvlc, "preparse-timeout"));
if (default_timeout < 0)
default_timeout = 0;
priv->parser = vlc_preparser_New(VLC_OBJECT(p_libvlc), max_threads,
default_timeout);
if( !priv->parser )
goto error;

15
src/preparser/preparser.c

@ -314,16 +314,16 @@ Interrupt(struct task *task)
vlc_sem_post(&task->preparse_ended);
}
vlc_preparser_t* vlc_preparser_New( vlc_object_t *parent )
vlc_preparser_t* vlc_preparser_New( vlc_object_t *parent, unsigned max_threads,
vlc_tick_t default_timeout )
{
assert(max_threads >= 1);
assert(default_timeout >= 0);
vlc_preparser_t* preparser = malloc( sizeof *preparser );
if (!preparser)
return NULL;
int max_threads = var_InheritInteger(parent, "preparse-threads");
if (max_threads < 1)
max_threads = 1;
preparser->executor = vlc_executor_New(max_threads);
if (!preparser->executor)
{
@ -331,10 +331,7 @@ vlc_preparser_t* vlc_preparser_New( vlc_object_t *parent )
return NULL;
}
preparser->default_timeout =
VLC_TICK_FROM_MS(var_InheritInteger(parent, "preparse-timeout"));
if (preparser->default_timeout < 0)
preparser->default_timeout = 0;
preparser->default_timeout = default_timeout;
preparser->owner = parent;
preparser->fetcher = input_fetcher_New( parent );

Loading…
Cancel
Save