xine-lib 1.2.13-20230125hg15249
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
load_plugins.c File Reference
#include <inttypes.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pthread.h>
#include <dlfcn.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <signal.h>
#include <basedir.h>
#include <xine/xine_internal.h>
#include <xine/xine_plugin.h>
#include <xine/plugin_catalog.h>
#include <xine/demux.h>
#include <xine/input_plugin.h>
#include <xine/video_out.h>
#include <xine/post.h>
#include <xine/xine_module.h>
#include <xine/metronom.h>
#include <xine/configfile.h>
#include <xine/xineutils.h>
#include <xine/compat.h>
#include "xine_private.h"

Data Structures

union  all_info_t
 
struct  fat_node_st
 
struct  new_entry_data_t
 
struct  _load_plugins_dupl_cfg_t
 

Macros

#define LOG_MODULE   "load_plugins"
 
#define LOG_VERBOSE
 
#define XINE_ENABLE_EXPERIMENTAL_FEATURES   1
 
#define FAST_SCAN_PLUGINS
 
#define CACHE_CATALOG_VERSION   5
 
#define CACHE_CATALOG_VERSION_STR   "5"
 
#define MAX_DUPL_CFG_ENTRIES   256
 
#define __Max(a, b)   ((a) > (b) ? (a) : (b))
 
#define FAT_NODE_FLAG_PROBE_CLASS   1
 
#define IS_FAT_NODE(_node)   (_node->node.info == &_node->info[0])
 
#define SAVE_PLUGIN_BUF_SIZE   4096
 
#define XSP_BUFSIZE   4096
 
#define GET_PLUGIN_DESC(NAME, TYPE, CATITEM)
 

Typedefs

typedef struct fat_node_st fat_node_t
 

Enumerations

enum  _k_t {
  _K_NONE = 0 , _K_cache_catalog_version , _K_flush , _K_filename ,
  _K_size , _K_mtime , _K_type , _K_api ,
  _K_id , _K_version , _K_visual_type , _K_supported_types ,
  _K_vo_priority , _K_ao_priority , _K_decoder_priority , _K_demuxer_priority ,
  _K_input_priority , _K_post_type , _K_config_key , _K_module_priority ,
  _K_module_sub_type , _K_module_type , _K_LAST
}
 

Functions

static void _fat_node_init (fat_node_t *node)
 
static int _fat_node_file_cmp (void *a_gen, void *b_gen)
 
static void _mime_set (uint8_t *buf, size_t bsize, const char *needle)
 
static int _mime_find (uint8_t *buf, const char *haystack)
 
static const char *const * _build_list_typed_plugins (xine_t *xine, int type, uint64_t mask)
 
static void inc_file_ref (plugin_file_t *file)
 
static void dec_file_ref (plugin_file_t *file)
 
static void inc_node_ref (plugin_node_t *node)
 
static void dec_node_ref (plugin_node_t *node)
 
static void map_decoder_list (xine_t *this, xine_sarray_t *decoder_list, plugin_node_t *decoder_map[DECODER_MAX][PLUGINS_PER_TYPE])
 
static void map_decoders (xine_t *this)
 
static void _decoder_priority_cb (void *data, xine_cfg_entry_t *cfg)
 
static plugin_file_t_insert_file (xine_list_t *list, const char *filename, const struct stat *statbuffer, void *lib, uint32_t name_len)
 
static int _insert_node (xine_t *this, plugin_file_t *file, fat_node_t *node_cache, const plugin_info_t *info, uint32_t flags)
 
static int _plugin_node_comparator (void *a, void *b)
 
static int _post_plugin_node_comparator (void *a, void *b)
 
static plugin_catalog_t_new_catalog (void)
 
static void _register_plugins_internal (xine_t *this, plugin_file_t *file, fat_node_t *node_cache, const plugin_info_t *info, uint32_t flags)
 
void xine_register_plugins (xine_t *self, const plugin_info_t *info)
 
static void collect_plugins (xine_t *this, char *path, char *stop, char *pend)
 
static int _plugin_info_equal (const plugin_info_t *a, const plugin_info_t *b)
 
static void _new_entry_cb (void *user_data, xine_cfg_entry_t *entry)
 
static int _load_plugin_class (xine_t *this, plugin_node_t *node, const void *data)
 
static void _dispose_plugin_class (plugin_node_t *node)
 
static void _load_required_plugins (xine_t *this, xine_sarray_t *list)
 
static void load_required_plugins (xine_t *this)
 
static unsigned int _cfg_entry_hash (void *a)
 
static int _cfg_entry_cmp (void *a, void *b)
 
static void save_plugin_list (xine_t *this, FILE *fp, xine_sarray_t *list, _load_plugins_dupl_cfg_t *cfg)
 
static _k_t _key_2_index (const char *key, size_t klen)
 
static void load_plugin_list (xine_t *this, const char *filename, xine_sarray_t *plugins)
 
static size_t catalog_filename (xine_t *this, char *buf, size_t bsize, int createdir)
 Returns the complete filename for the plugins' cache file.
 
static void save_catalog (xine_t *this)
 
static void load_cached_catalog (xine_t *this)
 
int _x_scan_plugins (xine_t *this_gen)
 Load plugins into catalog.
 
xine_module_t_x_find_module (xine_t *xine, const char *type, const char *id, unsigned sub_type, const void *params)
 
void _x_free_module (xine_t *xine, xine_module_t **pmodule)
 
input_plugin_t_x_find_input_plugin (xine_stream_t *stream, const char *mrl)
 
void _x_free_input_plugin (xine_stream_t *stream, input_plugin_t *input)
 
demux_plugin_t_x_find_demux_plugin (xine_stream_t *stream, input_plugin_t *input)
 
demux_plugin_t_x_find_demux_plugin_by_name (xine_stream_t *stream, const char *name, input_plugin_t *input)
 
demux_plugin_t_x_find_demux_plugin_last_probe (xine_stream_t *stream, const char *last_demux_name, input_plugin_t *input)
 
void _x_free_demux_plugin (xine_stream_t *stream, demux_plugin_t **pdemux)
 
const char *const * xine_get_autoplay_input_plugin_ids (xine_t *this)
 
const char *const * xine_get_browsable_input_plugin_ids (xine_t *this)
 
static vo_driver_t_load_video_driver (xine_t *this, plugin_node_t *node, const void *data)
 
vo_driver_t_x_load_video_output_plugin (xine_t *this, const char *id, int visual_type, const void *visual)
 
xine_video_port_txine_open_video_driver (xine_t *this, const char *id, int visual_type, const void *visual)
 
xine_video_port_txine_new_framegrab_video_port (xine_t *this)
 
const char *const * xine_list_audio_output_plugins (xine_t *xine)
 
const char *const * xine_list_video_output_plugins (xine_t *xine)
 
const char *const * xine_list_video_output_plugins_typed (xine_t *xine, uint64_t typemask)
 
static ao_driver_t_load_audio_driver (xine_t *this, plugin_node_t *node, const void *data)
 
ao_driver_t_x_load_audio_output_plugin (xine_t *this, const char *id)
 
xine_audio_port_txine_open_audio_driver (xine_t *this, const char *id, const void *data)
 
xine_audio_port_txine_new_framegrab_audio_port (xine_t *this)
 
void _x_free_audio_driver (xine_t *xine, ao_driver_t **pdriver)
 
void _x_free_video_driver (xine_t *xine, vo_driver_t **pdriver)
 
void xine_close_audio_driver (xine_t *this, xine_audio_port_t *ao_port)
 
void xine_close_video_driver (xine_t *this, xine_video_port_t *vo_port)
 
static input_class_t_get_input_class (xine_t *this, const char *plugin_id)
 
const char *const * xine_get_autoplay_mrls (xine_t *this, const char *plugin_id, int *num_mrls)
 
xine_mrl_t ** xine_get_browse_mrls (xine_t *this, const char *plugin_id, const char *start_mrl, int *num_mrls)
 
video_decoder_t_x_get_video_decoder (xine_stream_t *stream, uint8_t stream_type)
 
void _x_free_video_decoder (xine_stream_t *stream, video_decoder_t *vd)
 
audio_decoder_t_x_get_audio_decoder (xine_stream_t *stream, uint8_t stream_type)
 
void _x_free_audio_decoder (xine_stream_t *stream, audio_decoder_t *ad)
 
int _x_decoder_available (xine_t *xine, uint32_t buftype)
 
static void _unload_unref_plugin (xine_t *xine, plugin_node_t *node)
 
static void _unload_unref_plugins (xine_t *xine, xine_sarray_t *list)
 
void xine_plugins_garbage_collector (xine_t *self)
 
spu_decoder_t_x_get_spu_decoder (xine_stream_t *stream, uint8_t stream_type)
 
void _x_free_spu_decoder (xine_stream_t *stream, spu_decoder_t *sd)
 
const char *const * xine_list_demuxer_plugins (xine_t *xine)
 
const char *const * xine_list_input_plugins (xine_t *xine)
 
const char *const * xine_list_spu_plugins (xine_t *xine)
 
const char *const * xine_list_audio_decoder_plugins (xine_t *xine)
 
const char *const * xine_list_video_decoder_plugins (xine_t *xine)
 
const char *const * xine_list_post_plugins (xine_t *xine)
 
const char *const * xine_list_post_plugins_typed (xine_t *xine, uint32_t type)
 
const char * xine_get_input_plugin_description (xine_t *this, const char *plugin_id)
 
const char * xine_get_demux_plugin_description (xine_t *this, const char *plugin_id)
 
const char * xine_get_spu_plugin_description (xine_t *this, const char *plugin_id)
 
const char * xine_get_audio_plugin_description (xine_t *this, const char *plugin_id)
 
const char * xine_get_video_plugin_description (xine_t *this, const char *plugin_id)
 
const char * xine_get_audio_driver_plugin_description (xine_t *this, const char *plugin_id)
 
const char * xine_get_video_driver_plugin_description (xine_t *this, const char *plugin_id)
 
const char * xine_get_post_plugin_description (xine_t *this, const char *plugin_id)
 
xine_post_txine_post_init (xine_t *xine_gen, const char *name, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target)
 
void xine_post_dispose (xine_t *xine, xine_post_t *post_gen)
 
static char * _get_demux_strings (xine_t *self, int kind)
 
char * xine_get_file_extensions (xine_t *self)
 
char * xine_get_mime_types (xine_t *self)
 
char * xine_get_demux_for_mime_type (xine_t *xine, const char *mime_type)
 
static int dispose_plugin_list (xine_sarray_t *list, int is_cache)
 
static void dispose_plugin_file_list (xine_list_t *list)
 
void _x_dispose_plugins (xine_t *this)
 Dispose (shutdown) all currently loaded plugins.
 

Variables

static const uint8_t plugin_iface_versions [((PLUGIN_TYPE_MAX) >(PLUGIN_XINE_MODULE) ?(PLUGIN_TYPE_MAX) :(PLUGIN_XINE_MODULE))+1]
 
static const uint8_t tab_tolower [256]
 
static const uint8_t tab_mime [256]
 

Macro Definition Documentation

◆ __Max

#define __Max ( a,
b )   ((a) > (b) ? (a) : (b))

◆ CACHE_CATALOG_VERSION

#define CACHE_CATALOG_VERSION   5

Referenced by load_plugin_list().

◆ CACHE_CATALOG_VERSION_STR

#define CACHE_CATALOG_VERSION_STR   "5"

Referenced by save_catalog().

◆ FAST_SCAN_PLUGINS

#define FAST_SCAN_PLUGINS

◆ FAT_NODE_FLAG_PROBE_CLASS

#define FAT_NODE_FLAG_PROBE_CLASS   1

◆ GET_PLUGIN_DESC

#define GET_PLUGIN_DESC ( NAME,
TYPE,
CATITEM )
Value:
const char *xine_get_##NAME##_plugin_description (xine_t *this, const char *plugin_id) { \
plugin_catalog_t *catalog = this->plugin_catalog; \
plugin_node_t *node; \
int list_id, list_size; \
pthread_mutex_lock (&catalog->lock); \
list_size = xine_sarray_size (catalog->plugin_lists[CATITEM - 1]); \
for (list_id = 0; list_id < list_size; list_id++) { \
node = xine_sarray_get (catalog->plugin_lists[CATITEM - 1], list_id); \
if (!strcasecmp (node->info->id, plugin_id)) { \
TYPE##_class_t *ic = (TYPE##_class_t *) node->plugin_class; \
const char *ret = NULL; \
if (!ic) { \
if (_load_plugin_class (this, node, NULL)) \
ic = node->plugin_class; \
} \
if (ic) \
ret = dgettext(ic->text_domain ? ic->text_domain : XINE_TEXTDOMAIN, ic->description); \
pthread_mutex_unlock (&catalog->lock); \
return ret; \
} \
} \
pthread_mutex_unlock (&catalog->lock); \
return NULL; \
}
#define XINE_TEXTDOMAIN
Definition configure.h:925
static int _load_plugin_class(xine_t *this, plugin_node_t *node, const void *data)
Definition load_plugins.c:1039
void * xine_sarray_get(xine_sarray_t *sarray, unsigned int position)
Definition sorted_array.c:271
size_t xine_sarray_size(const xine_sarray_t *sarray)
Definition sorted_array.c:257
Definition plugin_catalog.h:53
pthread_mutex_t lock
Definition plugin_catalog.h:68
xine_sarray_t * plugin_lists[PLUGIN_TYPE_MAX]
Definition plugin_catalog.h:54
const char * id
Definition xine_plugin.h:58
Definition plugin_catalog.h:44
plugin_info_t * info
Definition plugin_catalog.h:46
void * plugin_class
Definition plugin_catalog.h:47
Definition xine_internal.h:80
NULL
Definition xine_plugin.c:78
#define dgettext(Domain, Message)
Definition xineintl.h:42

◆ IS_FAT_NODE

#define IS_FAT_NODE ( _node)    (_node->node.info == &_node->info[0])

◆ LOG_MODULE

#define LOG_MODULE   "load_plugins"

◆ LOG_VERBOSE

#define LOG_VERBOSE

◆ MAX_DUPL_CFG_ENTRIES

#define MAX_DUPL_CFG_ENTRIES   256

◆ SAVE_PLUGIN_BUF_SIZE

#define SAVE_PLUGIN_BUF_SIZE   4096

◆ XINE_ENABLE_EXPERIMENTAL_FEATURES

#define XINE_ENABLE_EXPERIMENTAL_FEATURES   1

◆ XSP_BUFSIZE

#define XSP_BUFSIZE   4096

Typedef Documentation

◆ fat_node_t

typedef struct fat_node_st fat_node_t

Enumeration Type Documentation

◆ _k_t

enum _k_t
Enumerator
_K_NONE 
_K_cache_catalog_version 
_K_flush 
_K_filename 
_K_size 
_K_mtime 
_K_type 
_K_api 
_K_id 
_K_version 
_K_visual_type 
_K_supported_types 
_K_vo_priority 
_K_ao_priority 
_K_decoder_priority 
_K_demuxer_priority 
_K_input_priority 
_K_post_type 
_K_config_key 
_K_module_priority 
_K_module_sub_type 
_K_module_type 
_K_LAST 

Function Documentation

◆ _build_list_typed_plugins()

static const char *const * _build_list_typed_plugins ( xine_t * xine,
int type,
uint64_t mask )
static

◆ _cfg_entry_cmp()

static int _cfg_entry_cmp ( void * a,
void * b )
static

Referenced by save_catalog().

◆ _cfg_entry_hash()

static unsigned int _cfg_entry_hash ( void * a)
static

Referenced by save_catalog().

◆ _decoder_priority_cb()

static void _decoder_priority_cb ( void * data,
xine_cfg_entry_t * cfg )
static

◆ _dispose_plugin_class()

static void _dispose_plugin_class ( plugin_node_t * node)
static

◆ _fat_node_file_cmp()

static int _fat_node_file_cmp ( void * a_gen,
void * b_gen )
static

◆ _fat_node_init()

static void _fat_node_init ( fat_node_t * node)
static

◆ _get_demux_strings()

static char * _get_demux_strings ( xine_t * self,
int kind )
static

◆ _get_input_class()

static input_class_t * _get_input_class ( xine_t * this,
const char * plugin_id )
static

◆ _insert_file()

static plugin_file_t * _insert_file ( xine_list_t * list,
const char * filename,
const struct stat * statbuffer,
void * lib,
uint32_t name_len )
static

◆ _insert_node()

static int _insert_node ( xine_t * this,
plugin_file_t * file,
fat_node_t * node_cache,
const plugin_info_t * info,
uint32_t flags )
static

◆ _key_2_index()

static _k_t _key_2_index ( const char * key,
size_t klen )
static

◆ _load_audio_driver()

static ao_driver_t * _load_audio_driver ( xine_t * this,
plugin_node_t * node,
const void * data )
static

◆ _load_plugin_class()

static int _load_plugin_class ( xine_t * this,
plugin_node_t * node,
const void * data )
static

◆ _load_required_plugins()

static void _load_required_plugins ( xine_t * this,
xine_sarray_t * list )
static

◆ _load_video_driver()

static vo_driver_t * _load_video_driver ( xine_t * this,
plugin_node_t * node,
const void * data )
static

◆ _mime_find()

static int _mime_find ( uint8_t * buf,
const char * haystack )
static

◆ _mime_set()

static void _mime_set ( uint8_t * buf,
size_t bsize,
const char * needle )
static

◆ _new_catalog()

static plugin_catalog_t * _new_catalog ( void )
static

◆ _new_entry_cb()

static void _new_entry_cb ( void * user_data,
xine_cfg_entry_t * entry )
static

◆ _plugin_info_equal()

static int _plugin_info_equal ( const plugin_info_t * a,
const plugin_info_t * b )
inlinestatic

◆ _plugin_node_comparator()

static int _plugin_node_comparator ( void * a,
void * b )
static

References plugin_node_s::priority.

Referenced by _new_catalog().

◆ _post_plugin_node_comparator()

static int _post_plugin_node_comparator ( void * a,
void * b )
static

◆ _register_plugins_internal()

static void _register_plugins_internal ( xine_t * this,
plugin_file_t * file,
fat_node_t * node_cache,
const plugin_info_t * info,
uint32_t flags )
static

◆ _unload_unref_plugin()

static void _unload_unref_plugin ( xine_t * xine,
plugin_node_t * node )
static

◆ _unload_unref_plugins()

static void _unload_unref_plugins ( xine_t * xine,
xine_sarray_t * list )
static

◆ _x_decoder_available()

int _x_decoder_available ( xine_t * xine,
uint32_t buftype )

◆ _x_find_demux_plugin()

demux_plugin_t * _x_find_demux_plugin ( xine_stream_t * stream,
input_plugin_t * input )

◆ _x_find_demux_plugin_by_name()

demux_plugin_t * _x_find_demux_plugin_by_name ( xine_stream_t * stream,
const char * name,
input_plugin_t * input )

◆ _x_find_demux_plugin_last_probe()

demux_plugin_t * _x_find_demux_plugin_last_probe ( xine_stream_t * stream,
const char * last_demux_name,
input_plugin_t * input )

◆ _x_find_input_plugin()

input_plugin_t * _x_find_input_plugin ( xine_stream_t * stream,
const char * mrl )

◆ _x_find_module()

xine_module_t * _x_find_module ( xine_t * xine,
const char * type,
const char * id,
unsigned sub_type,
const void * params )

◆ _x_free_audio_decoder()

void _x_free_audio_decoder ( xine_stream_t * stream,
audio_decoder_t * ad )

◆ _x_free_audio_driver()

void _x_free_audio_driver ( xine_t * xine,
ao_driver_t ** pdriver )

◆ _x_free_demux_plugin()

void _x_free_demux_plugin ( xine_stream_t * stream,
demux_plugin_t ** pdemux )

◆ _x_free_input_plugin()

void _x_free_input_plugin ( xine_stream_t * stream,
input_plugin_t * input )

◆ _x_free_module()

void _x_free_module ( xine_t * xine,
xine_module_t ** pmodule )

◆ _x_free_spu_decoder()

void _x_free_spu_decoder ( xine_stream_t * stream,
spu_decoder_t * sd )

◆ _x_free_video_decoder()

void _x_free_video_decoder ( xine_stream_t * stream,
video_decoder_t * vd )

◆ _x_free_video_driver()

void _x_free_video_driver ( xine_t * xine,
vo_driver_t ** pdriver )

◆ _x_get_audio_decoder()

audio_decoder_t * _x_get_audio_decoder ( xine_stream_t * stream,
uint8_t stream_type )

◆ _x_get_spu_decoder()

spu_decoder_t * _x_get_spu_decoder ( xine_stream_t * stream,
uint8_t stream_type )

◆ _x_get_video_decoder()

video_decoder_t * _x_get_video_decoder ( xine_stream_t * stream,
uint8_t stream_type )

◆ _x_load_audio_output_plugin()

ao_driver_t * _x_load_audio_output_plugin ( xine_t * this,
const char * id )

◆ _x_load_video_output_plugin()

vo_driver_t * _x_load_video_output_plugin ( xine_t * this,
const char * id,
int visual_type,
const void * visual )

◆ catalog_filename()

static size_t catalog_filename ( xine_t * this,
char * buf,
size_t bsize,
int createdir )
static

Returns the complete filename for the plugins' cache file.

Parameters
thisxine instance pointer, used for logging and libxdg-basedir.
bufwrite filename here.
bsizewrite at most this many bytes.
createdirIf not zero, create the directory structure in which the file has to reside.
Returns
the strlen () of filename, or 0 (eg if a directory could not be created).
See also
XDG Base Directory specification: http://standards.freedesktop.org/basedir-spec/latest/index.html

References _, PACKAGE, xine_find_byte(), XINE_VERBOSITY_LOG, and xprintf.

Referenced by load_cached_catalog(), and save_catalog().

◆ collect_plugins()

static void collect_plugins ( xine_t * this,
char * path,
char * stop,
char * pend )
static

◆ dec_file_ref()

static void dec_file_ref ( plugin_file_t * file)
static

◆ dec_node_ref()

static void dec_node_ref ( plugin_node_t * node)
static

◆ dispose_plugin_file_list()

static void dispose_plugin_file_list ( xine_list_t * list)
static

◆ dispose_plugin_list()

static int dispose_plugin_list ( xine_sarray_t * list,
int is_cache )
static

◆ inc_file_ref()

static void inc_file_ref ( plugin_file_t * file)
static

◆ inc_node_ref()

static void inc_node_ref ( plugin_node_t * node)
static

◆ load_cached_catalog()

static void load_cached_catalog ( xine_t * this)
static

References catalog_filename(), and load_plugin_list().

Referenced by _x_scan_plugins().

◆ load_plugin_list()

static void load_plugin_list ( xine_t * this,
const char * filename,
xine_sarray_t * plugins )
static

<< node.file.filename is not a xine_fast_string_t, never passed there.

References _fat_node_init(), _K_ao_priority, _K_api, _K_cache_catalog_version, _K_config_key, _K_decoder_priority, _K_demuxer_priority, _K_filename, _K_flush, _K_id, _K_input_priority, _K_module_priority, _K_module_sub_type, _K_module_type, _K_mtime, _K_post_type, _K_size, _K_supported_types, _K_type, _K_version, _K_visual_type, _K_vo_priority, _key_2_index(), _new_entry_cb(), fat_node_st::ainfo, all_info_t::ao_info, plugin_info_t::API, CACHE_CATALOG_VERSION, new_entry_data_t::cfg_entry, plugin_node_s::config_entry_list, all_info_t::decoder_info, all_info_t::demuxer_info, plugin_node_s::file, fat_node_st::file, plugin_file_t::filemtime, plugin_file_t::filename, plugin_file_t::filesize, plugin_info_t::id, plugin_node_s::info, fat_node_st::info, all_info_t::input_info, fat_node_st::lastplugin, lprintf, MAX_DUPL_CFG_ENTRIES, all_info_t::module_info, fat_node_st::nextplugin, fat_node_st::node, new_entry_data_t::node, NULL, all_info_t::post_info, vo_info_t::priority, ao_info_t::priority, decoder_info_t::priority, demuxer_info_t::priority, input_info_t::priority, xine_module_info_t::priority, plugin_info_t::special_info, xine_module_info_t::sub_type, decoder_info_t::supported_types, fat_node_st::supported_types, supported_types, plugin_info_t::type, post_info_t::type, xine_module_info_t::type, new_entry_data_t::v, v, plugin_info_t::version, vo_info_t::visual_type, all_info_t::vo_info, xine_fast_string_init(), xine_fast_string_set(), xine_fast_text_line(), xine_fast_text_load(), xine_fast_text_unload(), xine_find_byte(), xine_list_find(), xine_list_new(), xine_list_push_back(), xine_sarray_add(), xine_sarray_get(), xine_small_memcpy, xine_str2int32(), xine_str2uint32(), and xine_str2uint64().

Referenced by load_cached_catalog().

◆ load_required_plugins()

static void load_required_plugins ( xine_t * this)
static

◆ map_decoder_list()

static void map_decoder_list ( xine_t * this,
xine_sarray_t * decoder_list,
plugin_node_t * decoder_map[DECODER_MAX][PLUGINS_PER_TYPE] )
static

◆ map_decoders()

static void map_decoders ( xine_t * this)
static

◆ save_catalog()

static void save_catalog ( xine_t * this)
static

◆ save_plugin_list()

static void save_plugin_list ( xine_t * this,
FILE * fp,
xine_sarray_t * list,
_load_plugins_dupl_cfg_t * cfg )
static

◆ xine_close_audio_driver()

void xine_close_audio_driver ( xine_t * this,
xine_audio_port_t * ao_port )

◆ xine_close_video_driver()

void xine_close_video_driver ( xine_t * this,
xine_video_port_t * vo_port )

◆ xine_get_audio_driver_plugin_description()

const char * xine_get_audio_driver_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_get_audio_plugin_description()

const char * xine_get_audio_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_get_autoplay_input_plugin_ids()

const char *const * xine_get_autoplay_input_plugin_ids ( xine_t * this)

◆ xine_get_autoplay_mrls()

const char *const * xine_get_autoplay_mrls ( xine_t * this,
const char * plugin_id,
int * num_mrls )

◆ xine_get_browsable_input_plugin_ids()

const char *const * xine_get_browsable_input_plugin_ids ( xine_t * this)

◆ xine_get_browse_mrls()

xine_mrl_t ** xine_get_browse_mrls ( xine_t * this,
const char * plugin_id,
const char * start_mrl,
int * num_mrls )

◆ xine_get_demux_for_mime_type()

char * xine_get_demux_for_mime_type ( xine_t * xine,
const char * mime_type )

◆ xine_get_demux_plugin_description()

const char * xine_get_demux_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_get_file_extensions()

char * xine_get_file_extensions ( xine_t * self)

References _get_demux_strings().

◆ xine_get_input_plugin_description()

const char * xine_get_input_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_get_mime_types()

char * xine_get_mime_types ( xine_t * self)

References _get_demux_strings().

◆ xine_get_post_plugin_description()

const char * xine_get_post_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_get_spu_plugin_description()

const char * xine_get_spu_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_get_video_driver_plugin_description()

const char * xine_get_video_driver_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_get_video_plugin_description()

const char * xine_get_video_plugin_description ( xine_t * this,
const char * plugin_id )

◆ xine_list_audio_decoder_plugins()

const char *const * xine_list_audio_decoder_plugins ( xine_t * xine)

◆ xine_list_audio_output_plugins()

const char *const * xine_list_audio_output_plugins ( xine_t * xine)

◆ xine_list_demuxer_plugins()

const char *const * xine_list_demuxer_plugins ( xine_t * xine)

◆ xine_list_input_plugins()

const char *const * xine_list_input_plugins ( xine_t * xine)

◆ xine_list_post_plugins()

const char *const * xine_list_post_plugins ( xine_t * xine)

◆ xine_list_post_plugins_typed()

const char *const * xine_list_post_plugins_typed ( xine_t * xine,
uint32_t type )

◆ xine_list_spu_plugins()

const char *const * xine_list_spu_plugins ( xine_t * xine)

◆ xine_list_video_decoder_plugins()

const char *const * xine_list_video_decoder_plugins ( xine_t * xine)

◆ xine_list_video_output_plugins()

const char *const * xine_list_video_output_plugins ( xine_t * xine)

◆ xine_list_video_output_plugins_typed()

const char *const * xine_list_video_output_plugins_typed ( xine_t * xine,
uint64_t typemask )

◆ xine_new_framegrab_audio_port()

xine_audio_port_t * xine_new_framegrab_audio_port ( xine_t * this)

References _x_ao_new_port(), and NULL.

◆ xine_new_framegrab_video_port()

xine_video_port_t * xine_new_framegrab_video_port ( xine_t * this)

◆ xine_open_audio_driver()

xine_audio_port_t * xine_open_audio_driver ( xine_t * this,
const char * id,
const void * data )

◆ xine_open_video_driver()

xine_video_port_t * xine_open_video_driver ( xine_t * this,
const char * id,
int visual_type,
const void * visual )

◆ xine_plugins_garbage_collector()

void xine_plugins_garbage_collector ( xine_t * self)

◆ xine_post_dispose()

void xine_post_dispose ( xine_t * xine,
xine_post_t * post_gen )

◆ xine_post_init()

xine_post_t * xine_post_init ( xine_t * xine_gen,
const char * name,
int inputs,
xine_audio_port_t ** audio_target,
xine_video_port_t ** video_target )

◆ xine_register_plugins()

void xine_register_plugins ( xine_t * self,
const plugin_info_t * info )

Variable Documentation

◆ plugin_iface_versions

const uint8_t plugin_iface_versions[((PLUGIN_TYPE_MAX) >(PLUGIN_XINE_MODULE) ?(PLUGIN_TYPE_MAX) :(PLUGIN_XINE_MODULE))+1]
static
Initial value:
= {
}
#define AUDIO_DECODER_IFACE_VERSION
Definition audio_decoder.h:31
#define AUDIO_OUT_IFACE_VERSION
Definition audio_out.h:34
#define DEMUXER_PLUGIN_IFACE_VERSION
Definition demux.h:31
#define VIDEO_OUT_DRIVER_IFACE_VERSION
Definition video_out.h:369
#define INPUT_PLUGIN_IFACE_VERSION
Definition input_plugin.h:33
#define POST_PLUGIN_IFACE_VERSION
Definition post.h:37
#define SPU_DECODER_IFACE_VERSION
Definition spu_decoder.h:33
#define VIDEO_DECODER_IFACE_VERSION
Definition video_decoder.h:31
#define XINE_MODULE_IFACE_VERSION
Definition xine_module.h:24
#define PLUGIN_DEMUX
Definition xine_plugin.h:31
#define PLUGIN_AUDIO_DECODER
Definition xine_plugin.h:32
#define PLUGIN_SPU_DECODER
Definition xine_plugin.h:34
#define PLUGIN_AUDIO_OUT
Definition xine_plugin.h:35
#define PLUGIN_VIDEO_OUT
Definition xine_plugin.h:36
#define PLUGIN_INPUT
Definition xine_plugin.h:30
#define PLUGIN_VIDEO_DECODER
Definition xine_plugin.h:33
#define PLUGIN_POST
Definition xine_plugin.h:37
#define PLUGIN_XINE_MODULE
Definition xine_plugin.h:41

Referenced by _insert_node().

◆ tab_mime

const uint8_t tab_mime[256]
static
Initial value:
= {
['\0'] = 1,
['\r'] = 2,
['\n'] = 2,
['\t'] = 2,
[' '] = 2,
[':'] = 4,
[';'] = 8
}

Referenced by _mime_find(), and _mime_set().

◆ tab_tolower

const uint8_t tab_tolower[256]
static
Initial value:
= {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z', 91, 92, 93, 94, 95,
96,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z',123,124,125,126,127,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
}

Referenced by _mime_find(), _mime_set(), and http_plugin_handshake().