VLC  3.0.15
Data Structures | Macros | Functions
fetcher.c File Reference
Include dependency graph for fetcher.c:

Data Structures

struct  playlist_fetcher_t
 
struct  fetcher_request
 
struct  fetcher_thread
 

Macros

#define DEF_STARTER(name, worker)
 

Functions

static char * CreateCacheKey (input_item_t *item)
 
static void FreeCacheEntry (void *data, void *obj)
 
static int ReadAlbumCache (playlist_fetcher_t *fetcher, input_item_t *item)
 
static void AddAlbumCache (playlist_fetcher_t *fetcher, input_item_t *item, bool overwrite)
 
static int InvokeModule (playlist_fetcher_t *fetcher, input_item_t *item, int scope, char const *type)
 
static int CheckMeta (input_item_t *item)
 
static int CheckArt (input_item_t *item)
 
static int SearchArt (playlist_fetcher_t *fetcher, input_item_t *item, int scope)
 
static int SearchByScope (playlist_fetcher_t *fetcher, struct fetcher_request *req, int scope)
 
static void SetPreparsed (struct fetcher_request *req)
 
static void Downloader (playlist_fetcher_t *fetcher, struct fetcher_request *req)
 
static void SearchLocal (playlist_fetcher_t *fetcher, struct fetcher_request *req)
 
static void SearchNetwork (playlist_fetcher_t *fetcher, struct fetcher_request *req)
 
static void RequestRelease (void *req_)
 
static void RequestHold (void *req_)
 
static void * FetcherThread (void *handle)
 
static int StartWorker (playlist_fetcher_t *fetcher, void(*pf_worker)(playlist_fetcher_t *, struct fetcher_request *), struct background_worker *bg, struct fetcher_request *req, void **handle)
 
static int ProbeWorker (void *fetcher_, void *th_)
 
static void CloseWorker (void *fetcher_, void *th_)
 
static int StartSearchLocal (void *fetcher_, void *req_, void **out)
 
static int StartSearchNetwork (void *fetcher_, void *req_, void **out)
 
static int StartDownloader (void *fetcher_, void *req_, void **out)
 
static void WorkerInit (playlist_fetcher_t *fetcher, struct background_worker **worker, int(*starter)(void *, void *, void **))
 
playlist_fetcher_tplaylist_fetcher_New (vlc_object_t *owner)
 This function creates the fetcher object and thread. More...
 
int playlist_fetcher_Push (playlist_fetcher_t *fetcher, input_item_t *item, input_item_meta_request_option_t options, int preparse_status)
 This function enqueues the provided item to be art fetched. More...
 
void playlist_fetcher_Delete (playlist_fetcher_t *fetcher)
 This function destroys the fetcher object and thread. More...
 

Macro Definition Documentation

◆ DEF_STARTER

#define DEF_STARTER (   name,
  worker 
)
Value:
static int Start ## name( void* fetcher_, void* req_, void** out ) { \
playlist_fetcher_t* fetcher = fetcher_; \
return StartWorker( fetcher, name, worker, req_, out ); }

Function Documentation

◆ AddAlbumCache()

static void AddAlbumCache ( playlist_fetcher_t fetcher,
input_item_t item,
bool  overwrite 
)
static

◆ CheckArt()

static int CheckArt ( input_item_t item)
static

◆ CheckMeta()

static int CheckMeta ( input_item_t item)
static

◆ CloseWorker()

static void CloseWorker ( void *  fetcher_,
void *  th_ 
)
static

◆ CreateCacheKey()

static char* CreateCacheKey ( input_item_t item)
static

Simple concatenation of artist and album can lead to the same key for entities that should not have such. Imagine { dogs, tick } and { dog, stick }

References asprintf(), fetcher_request::item, input_item_t::lock, input_item_t::p_meta, vlc_meta_Album, vlc_meta_Artist, vlc_meta_Get(), vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by AddAlbumCache(), and ReadAlbumCache().

◆ Downloader()

static void Downloader ( playlist_fetcher_t fetcher,
struct fetcher_request req 
)
static

◆ FetcherThread()

static void* FetcherThread ( void *  handle)
static

◆ FreeCacheEntry()

static void FreeCacheEntry ( void *  data,
void *  obj 
)
static

References VLC_UNUSED.

Referenced by playlist_fetcher_Delete().

◆ InvokeModule()

static int InvokeModule ( playlist_fetcher_t fetcher,
input_item_t item,
int  scope,
char const *  type 
)
static

◆ playlist_fetcher_Delete()

void playlist_fetcher_Delete ( playlist_fetcher_t )

◆ playlist_fetcher_New()

playlist_fetcher_t* playlist_fetcher_New ( vlc_object_t owner)

◆ playlist_fetcher_Push()

int playlist_fetcher_Push ( playlist_fetcher_t ,
input_item_t ,
input_item_meta_request_option_t  ,
int   
)

This function enqueues the provided item to be art fetched.

The input item is retained until the art fetching is done or until the fetcher object is destroyed.

< Not enough memory

< No error

References background_worker_Push(), input_item_Hold(), fetcher_request::item, playlist_fetcher_t::local, fetcher_request::options, fetcher_request::preparse_status, fetcher_request::refs, RequestRelease(), SetPreparsed(), unlikely, VLC_ENOMEM, and VLC_SUCCESS.

Referenced by playlist_preparser_fetcher_Push(), and PreparserCloseInput().

◆ ProbeWorker()

static int ProbeWorker ( void *  fetcher_,
void *  th_ 
)
static

References fetcher_thread::active, and VLC_UNUSED.

Referenced by WorkerInit().

◆ ReadAlbumCache()

static int ReadAlbumCache ( playlist_fetcher_t fetcher,
input_item_t item 
)
static

◆ RequestHold()

static void RequestHold ( void *  req_)
static

References fetcher_request::refs.

Referenced by WorkerInit().

◆ RequestRelease()

static void RequestRelease ( void *  req_)
static

◆ SearchArt()

static int SearchArt ( playlist_fetcher_t fetcher,
input_item_t item,
int  scope 
)
static

◆ SearchByScope()

static int SearchByScope ( playlist_fetcher_t fetcher,
struct fetcher_request req,
int  scope 
)
static

◆ SearchLocal()

static void SearchLocal ( playlist_fetcher_t fetcher,
struct fetcher_request req 
)
static

◆ SearchNetwork()

static void SearchNetwork ( playlist_fetcher_t fetcher,
struct fetcher_request req 
)
static

◆ SetPreparsed()

static void SetPreparsed ( struct fetcher_request req)
static

◆ StartDownloader()

static int StartDownloader ( void *  fetcher_,
void *  req_,
void **  out 
)
static

Referenced by playlist_fetcher_New().

◆ StartSearchLocal()

static int StartSearchLocal ( void *  fetcher_,
void *  req_,
void **  out 
)
static

Referenced by playlist_fetcher_New().

◆ StartSearchNetwork()

static int StartSearchNetwork ( void *  fetcher_,
void *  req_,
void **  out 
)
static

Referenced by playlist_fetcher_New().

◆ StartWorker()

static int StartWorker ( playlist_fetcher_t fetcher,
void(*)(playlist_fetcher_t *, struct fetcher_request *)  pf_worker,
struct background_worker bg,
struct fetcher_request req,
void **  handle 
)
static

◆ WorkerInit()

static void WorkerInit ( playlist_fetcher_t fetcher,
struct background_worker **  worker,
int(*)(void *, void *, void **)  starter 
)
static
StartWorker
static int StartWorker(playlist_fetcher_t *fetcher, void(*pf_worker)(playlist_fetcher_t *, struct fetcher_request *), struct background_worker *bg, struct fetcher_request *req, void **handle)
Definition: fetcher.c:348
name
const char name[16]
Definition: httpd.c:1249