Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (7)
......@@ -61,11 +61,15 @@ typedef enum input_item_meta_request_option_t
* @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.
* @param request_type a combination of META_REQUEST_OPTION_PARSE,
* META_REQUEST_OPTION_FETCH_LOCAL and META_REQUEST_OPTION_FETCH_NETWORK, it is
* used to setup the executors for each domain.
* @return a valid preparser object or NULL in case of error
*/
VLC_API vlc_preparser_t *vlc_preparser_New( vlc_object_t *obj,
unsigned max_threads,
vlc_tick_t default_timeout );
vlc_tick_t default_timeout,
input_item_meta_request_option_t request_type );
/**
* This function enqueues the provided item to be preparsed or fetched.
......
......@@ -268,7 +268,9 @@ vlc_preparser_t *libvlc_get_preparser(libvlc_instance_t *instance)
parser = instance->parser =
vlc_preparser_New(VLC_OBJECT(instance->p_libvlc_int), max_threads,
default_timeout);
default_timeout,
META_REQUEST_OPTION_PARSE |
META_REQUEST_OPTION_FETCH_ANY);
}
vlc_mutex_unlock(&instance->lazy_init_lock);
......
......@@ -155,7 +155,8 @@ int OpenIntf (vlc_object_t *p_this)
intf_thread_t *p_intf = (intf_thread_t*) p_this;
p_interface_thread = p_intf;
p_network_preparser = vlc_preparser_New(p_this, 1, 0);
p_network_preparser = vlc_preparser_New(p_this, 1, 0,
META_REQUEST_OPTION_PARSE);
if (p_network_preparser == nil)
{
retcode = VLC_ENOMEM;
......
......@@ -251,7 +251,8 @@ MainCtx::MainCtx(qt_intf_t *_p_intf)
QMetaObject::invokeMethod(m_medialib, &MediaLib::reload, Qt::QueuedConnection);
}
m_network_preparser = vlc_preparser_New(VLC_OBJECT(libvlc), 1, 0);
m_network_preparser = vlc_preparser_New(VLC_OBJECT(libvlc), 1, 0,
META_REQUEST_OPTION_PARSE);
#ifdef UPDATE_CHECK
/* Checking for VLC updates */
......
......@@ -1956,7 +1956,8 @@ void PlayerController::requestArtUpdate( input_item_t *p_item )
default_timeout = 0;
d->m_preparser = vlc_preparser_New(VLC_OBJECT(d->p_intf), 1,
default_timeout);
default_timeout,
META_REQUEST_OPTION_FETCH_ANY);
if (unlikely(d->m_preparser == nullptr))
return;
}
......
......@@ -41,7 +41,9 @@ vlc_playlist_New(vlc_object_t *parent, enum vlc_playlist_preparsing rec,
if (rec != VLC_PLAYLIST_PREPARSING_DISABLED)
{
playlist->parser = vlc_preparser_New(parent, preparse_max_threads,
preparse_timeout);
preparse_timeout,
META_REQUEST_OPTION_PARSE |
META_REQUEST_OPTION_FETCH_LOCAL);
if (playlist->parser == NULL)
{
free(playlist);
......
......@@ -425,8 +425,10 @@ static void RunSearchNetwork(void *userdata)
TaskDelete(task);
}
input_fetcher_t* input_fetcher_New( vlc_object_t* owner )
input_fetcher_t* input_fetcher_New( vlc_object_t* owner,
input_item_meta_request_option_t request_type )
{
assert(request_type & META_REQUEST_OPTION_FETCH_ANY);
input_fetcher_t* fetcher = malloc( sizeof( *fetcher ) );
if( unlikely( !fetcher ) )
......@@ -436,28 +438,44 @@ input_fetcher_t* input_fetcher_New( vlc_object_t* owner )
if (max_threads < 1)
max_threads = 1;
fetcher->executor_local = vlc_executor_New(max_threads);
if (!fetcher->executor_local)
if (request_type & META_REQUEST_OPTION_FETCH_LOCAL)
{
free(fetcher);
return NULL;
fetcher->executor_local = vlc_executor_New(max_threads);
if (!fetcher->executor_local)
{
free(fetcher);
return NULL;
}
}
else
fetcher->executor_local = NULL;
fetcher->executor_network = vlc_executor_New(max_threads);
if (!fetcher->executor_network)
if (request_type & META_REQUEST_OPTION_FETCH_NETWORK)
{
vlc_executor_Delete(fetcher->executor_local);
free(fetcher);
return NULL;
}
fetcher->executor_network = vlc_executor_New(max_threads);
if (!fetcher->executor_network)
{
if (fetcher->executor_local)
vlc_executor_Delete(fetcher->executor_local);
free(fetcher);
return NULL;
}
fetcher->executor_downloader = vlc_executor_New(max_threads);
if (!fetcher->executor_downloader)
fetcher->executor_downloader = vlc_executor_New(max_threads);
if (!fetcher->executor_downloader)
{
if (fetcher->executor_network)
vlc_executor_Delete(fetcher->executor_network);
if (fetcher->executor_local)
vlc_executor_Delete(fetcher->executor_local);
free(fetcher);
return NULL;
}
}
else
{
vlc_executor_Delete(fetcher->executor_network);
vlc_executor_Delete(fetcher->executor_local);
free(fetcher);
return NULL;
fetcher->executor_network = NULL;
fetcher->executor_downloader = NULL;
}
fetcher->owner = owner;
......@@ -475,6 +493,10 @@ int input_fetcher_Push(input_fetcher_t* fetcher, input_item_t* item,
const input_fetcher_callbacks_t *cbs, void *cbs_userdata)
{
assert(options & META_REQUEST_OPTION_FETCH_ANY);
if (options & META_REQUEST_OPTION_FETCH_LOCAL)
assert(fetcher->executor_local != NULL);
if (options & META_REQUEST_OPTION_FETCH_NETWORK)
assert(fetcher->executor_network != NULL);
vlc_executor_t *executor = options & META_REQUEST_OPTION_FETCH_LOCAL
? fetcher->executor_local
......@@ -508,9 +530,12 @@ void input_fetcher_Delete( input_fetcher_t* fetcher )
{
CancelAllTasks(fetcher);
vlc_executor_Delete(fetcher->executor_local);
vlc_executor_Delete(fetcher->executor_network);
vlc_executor_Delete(fetcher->executor_downloader);
if (fetcher->executor_local)
vlc_executor_Delete(fetcher->executor_local);
if (fetcher->executor_network)
vlc_executor_Delete(fetcher->executor_network);
if (fetcher->executor_downloader)
vlc_executor_Delete(fetcher->executor_downloader);
vlc_dictionary_clear( &fetcher->album_cache, FreeCacheEntry, NULL );
free( fetcher );
......
......@@ -41,8 +41,13 @@ typedef struct input_fetcher_callbacks_t {
/**
* This function creates the fetcher object and thread.
*
* @param request_type a combination of META_REQUEST_OPTION_FETCH_LOCAL and
* META_REQUEST_OPTION_FETCH_NETWORK, it is used to setup the executors for
* each domain.
*/
input_fetcher_t *input_fetcher_New( vlc_object_t * );
input_fetcher_t *input_fetcher_New( vlc_object_t *,
input_item_meta_request_option_t request_type );
/**
* This function enqueues the provided item to be art fetched.
......
......@@ -308,34 +308,51 @@ Interrupt(struct task *task)
}
vlc_preparser_t* vlc_preparser_New( vlc_object_t *parent, unsigned max_threads,
vlc_tick_t default_timeout )
vlc_tick_t default_timeout,
input_item_meta_request_option_t request_type )
{
assert(max_threads >= 1);
assert(default_timeout >= 0);
assert(request_type & (META_REQUEST_OPTION_FETCH_ANY|META_REQUEST_OPTION_PARSE));
vlc_preparser_t* preparser = malloc( sizeof *preparser );
if (!preparser)
return NULL;
preparser->executor = vlc_executor_New(max_threads);
if (!preparser->executor)
if (request_type & META_REQUEST_OPTION_PARSE)
{
free(preparser);
return NULL;
preparser->executor = vlc_executor_New(max_threads);
if (!preparser->executor)
{
free(preparser);
return NULL;
}
}
else
preparser->executor = NULL;
preparser->default_timeout = default_timeout;
preparser->owner = parent;
preparser->fetcher = input_fetcher_New( parent );
if (request_type & META_REQUEST_OPTION_FETCH_ANY)
{
preparser->fetcher = input_fetcher_New(parent, request_type);
if (unlikely(preparser->fetcher == NULL))
{
if (preparser->executor != NULL)
vlc_executor_Delete(preparser->executor);
free(preparser);
return NULL;
}
}
else
preparser->fetcher = NULL;
atomic_init( &preparser->deactivated, false );
vlc_mutex_init(&preparser->lock);
vlc_list_init(&preparser->submitted_tasks);
if( unlikely( !preparser->fetcher ) )
msg_Warn( parent, "unable to create art fetcher" );
return preparser;
}
......@@ -349,20 +366,33 @@ int vlc_preparser_Push( vlc_preparser_t *preparser,
assert(i_options & META_REQUEST_OPTION_PARSE
|| i_options & META_REQUEST_OPTION_FETCH_ANY);
assert(!(i_options & META_REQUEST_OPTION_PARSE)
|| preparser->executor != NULL);
assert(!(i_options & META_REQUEST_OPTION_FETCH_ANY)
|| preparser->fetcher != NULL);
struct task *task =
TaskNew(preparser, item, i_options, cbs, cbs_userdata, id,
preparser->default_timeout);
if( !task )
return VLC_ENOMEM;
PreparserAddTask(preparser, task);
if (preparser->executor != NULL)
{
PreparserAddTask(preparser, task);
vlc_executor_Submit(preparser->executor, &task->runnable);
vlc_executor_Submit(preparser->executor, &task->runnable);
return VLC_SUCCESS;
return VLC_SUCCESS;
}
return Fetch(task);
}
void vlc_preparser_Cancel( vlc_preparser_t *preparser, void *id )
{
if (preparser->executor == NULL)
return; /* TODO: the fetcher should be cancellable too */
vlc_mutex_lock(&preparser->lock);
struct task *task;
......@@ -404,7 +434,8 @@ void vlc_preparser_Delete( vlc_preparser_t *preparser )
/* In case vlc_preparser_Deactivate() has not been called */
vlc_preparser_Cancel(preparser, NULL);
vlc_executor_Delete(preparser->executor);
if (preparser->executor != NULL)
vlc_executor_Delete(preparser->executor);
if( preparser->fetcher )
input_fetcher_Delete( preparser->fetcher );
......
......@@ -240,13 +240,14 @@ static void test_input_metadata_timeout(libvlc_instance_t *vlc, int timeout,
.on_ended = input_item_preparse_timeout,
};
input_item_meta_request_option_t options =
META_REQUEST_OPTION_PARSE | META_REQUEST_OPTION_FETCH_LOCAL;
vlc_preparser_t *parser = vlc_preparser_New(VLC_OBJECT(vlc->p_libvlc_int),
1, VLC_TICK_FROM_MS(timeout));
1, VLC_TICK_FROM_MS(timeout),
options);
assert(parser != NULL);
i_ret = vlc_preparser_Push(parser, p_item,
META_REQUEST_OPTION_PARSE |
META_REQUEST_OPTION_FETCH_LOCAL,
&cbs, &sem, parser);
i_ret = vlc_preparser_Push(parser, p_item, options, &cbs, &sem, parser);
assert(i_ret == 0);
if (wait_and_cancel > 0)
......