xine-lib  1.2.9
Macros | 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/metronom.h>
#include <xine/configfile.h>
#include <xine/xineutils.h>
#include <xine/compat.h>
#include "xine_private.h"
#include "builtins.h"

Macros

#define LOG_MODULE   "load_plugins"
 
#define LOG_VERBOSE
 
#define XINE_ENABLE_EXPERIMENTAL_FEATURES   1
 
#define LINE_MAX_LENGTH   (1024 * 32) /* 32 KiB */
 
#define CACHE_CATALOG_VERSION   4
 
#define GET_PLUGIN_DESC(NAME, TYPE, CATITEM)
 

Functions

static void _build_list_typed_plugins (plugin_catalog_t **catalog, xine_sarray_t *type)
 
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 _free_string_list (xine_list_t **plist)
 
static int get_decoder_priority (xine_t *this, 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_node_t_get_cached_node (xine_t *this, char *filename, off_t filesize, time_t filemtime, plugin_node_t *previous_node)
 
static plugin_file_t_insert_file (xine_t *this, xine_list_t *list, char *filename, struct stat *statbuffer, void *lib)
 
static void _insert_node (xine_t *this, xine_sarray_t *list, plugin_file_t *file, plugin_node_t *node_cache, const plugin_info_t *info, int api_version)
 
static int _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, plugin_node_t *node_cache, const plugin_info_t *info)
 
void xine_register_plugins (xine_t *self, plugin_info_t *info)
 
static void collect_plugins (xine_t *this, char *path)
 
static int _plugin_info_equal (const plugin_info_t *a, const plugin_info_t *b)
 
static void _attach_entry_to_node (plugin_node_t *node, char *key)
 
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, 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 void save_plugin_list (xine_t *this, FILE *fp, xine_sarray_t *list)
 
static void load_plugin_list (xine_t *this, FILE *fp, xine_sarray_t *plugins)
 
static char * catalog_filename (xine_t *this, int createdir)
 Returns the complete filename for the plugins' cache file. More...
 
static void save_catalog (xine_t *this)
 
static void load_cached_catalog (xine_t *this)
 
static void push_if_dir (xine_list_t *plugindirs, void *path)
 
int _x_scan_plugins (xine_t *this)
 Load plugins into catalog. More...
 
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)
 
static int probe_mime_type (xine_t *self, plugin_node_t *node, const char *mime_type)
 
static demux_plugin_tprobe_demux (xine_stream_t *stream, int method1, int method2, 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 *demux)
 
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, void *data)
 
vo_driver_t_x_load_video_output_plugin (xine_t *this, const char *id, int visual_type, void *visual)
 
xine_video_port_txine_open_video_driver (xine_t *this, const char *id, int visual_type, 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, 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, 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)
 
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_plugins (xine_t *this, 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, 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 * _x_concatenate_with_string (char const **strings, size_t count, const char *joining, size_t final_length)
 Concantenates an array of strings into a single string separated with a given string. More...
 
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 *self, const char *mime_type)
 
static void _dispose_file_entry (plugin_file_t **pfile)
 
static void 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. More...
 

Variables

static const int plugin_iface_versions []
 

Macro Definition Documentation

◆ CACHE_CATALOG_VERSION

#define CACHE_CATALOG_VERSION   4

Referenced by load_plugin_list(), and save_catalog().

◆ 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; \
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; \
if (!ic) { \
if (_load_plugin_class (this, node, NULL)) \
ic = node->plugin_class; \
else \
return NULL; \
} \
return dgettext(ic->text_domain ? : XINE_TEXTDOMAIN, ic->description); \
} \
} \
return NULL; \
}
#define dgettext(Domain, Message)
Definition: xineintl.h:42
NULL
Definition: xine_plugin.c:91
static int _load_plugin_class(xine_t *this, plugin_node_t *node, void *data)
Definition: load_plugins.c:789
void * xine_sarray_get(xine_sarray_t *sarray, unsigned int position)
Definition: sorted_array.c:80
size_t xine_sarray_size(const xine_sarray_t *sarray)
Definition: sorted_array.c:57
Definition: xine_internal.h:81
#define XINE_TEXTDOMAIN
Definition: configure.h:842

◆ LINE_MAX_LENGTH

#define LINE_MAX_LENGTH   (1024 * 32) /* 32 KiB */

Referenced by load_plugin_list().

◆ LOG_MODULE

#define LOG_MODULE   "load_plugins"

◆ LOG_VERBOSE

#define LOG_VERBOSE

◆ XINE_ENABLE_EXPERIMENTAL_FEATURES

#define XINE_ENABLE_EXPERIMENTAL_FEATURES   1

Function Documentation

◆ _attach_entry_to_node()

static void _attach_entry_to_node ( plugin_node_t node,
char *  key 
)
static

◆ _build_list_typed_plugins()

static void _build_list_typed_plugins ( plugin_catalog_t **  catalog,
xine_sarray_t type 
)
static

◆ _decoder_priority_cb()

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

References map_decoders().

Referenced by _insert_node().

◆ _dispose_file_entry()

static void _dispose_file_entry ( plugin_file_t **  pfile)
static

◆ _dispose_plugin_class()

static void _dispose_plugin_class ( plugin_node_t node)
static

◆ _free_string_list()

static void _free_string_list ( xine_list_t **  plist)
static

◆ _get_cached_node()

static plugin_node_t* _get_cached_node ( xine_t this,
char *  filename,
off_t  filesize,
time_t  filemtime,
plugin_node_t previous_node 
)
static

◆ _insert_file()

static plugin_file_t* _insert_file ( xine_t this,
xine_list_t list,
char *  filename,
struct stat *  statbuffer,
void *  lib 
)
static

◆ _insert_node()

static void _insert_node ( xine_t this,
xine_sarray_t list,
plugin_file_t file,
plugin_node_t node_cache,
const plugin_info_t info,
int  api_version 
)
static

◆ _load_audio_driver()

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

◆ _load_plugin_class()

static int _load_plugin_class ( xine_t this,
plugin_node_t node,
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,
void *  data 
)
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_t::priority.

Referenced by _new_catalog().

◆ _register_plugins_internal()

static void _register_plugins_internal ( xine_t this,
plugin_file_t file,
plugin_node_t node_cache,
const plugin_info_t info 
)
static

◆ _unload_unref_plugins()

static void _unload_unref_plugins ( xine_t this,
xine_sarray_t list 
)
static

◆ _x_concatenate_with_string()

static char* _x_concatenate_with_string ( char const **  strings,
size_t  count,
const char *  joining,
size_t  final_length 
)
static

Concantenates an array of strings into a single string separated with a given string.

Parameters
stringsArray of strings to concatenate.
countNumber of elements in the strings array.
joiningString to use to join the various strings together.
final_lengthThe pre-calculated final length of the string.

Referenced by xine_get_file_extensions(), and xine_get_mime_types().

◆ _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_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 demux 
)

◆ _x_free_input_plugin()

void _x_free_input_plugin ( xine_stream_t stream,
input_plugin_t input 
)

◆ _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,
void *  visual 
)

◆ catalog_filename()

static char* catalog_filename ( xine_t this,
int  createdir 
)
static

Returns the complete filename for the plugins' cache file.

Parameters
thisInstance pointer, used for logging and libxdg-basedir.
createdirIf not zero, create the directory structure in which the file has to reside.
Returns
If createdir was not zero, returns NULL if the directory hasn't been created; otherwise always returns a new string with the name of the cachefile.
See also
XDG Base Directory specification: http://standards.freedesktop.org/basedir-spec/latest/index.html
Todo:
Convert this to use xine's log facility
Todo:
Convert this to use xine's log facility

References _, NULL, PACKAGE, and xine_xmalloc().

Referenced by load_cached_catalog(), and save_catalog().

◆ collect_plugins()

static void collect_plugins ( xine_t this,
char *  path 
)
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 void dispose_plugin_list ( xine_sarray_t list,
int  is_cache 
)
static

◆ get_decoder_priority()

static int get_decoder_priority ( xine_t this,
plugin_node_t node 
)
static

◆ inc_file_ref()

static void inc_file_ref ( plugin_file_t file)
static

References _x_assert, and plugin_file_t::ref.

Referenced by _load_plugin_class().

◆ 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(), load_plugin_list(), and NULL.

Referenced by _x_scan_plugins().

◆ load_plugin_list()

static void load_plugin_list ( xine_t this,
FILE *  fp,
xine_sarray_t plugins 
)
static

◆ 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

◆ probe_demux()

static demux_plugin_t* probe_demux ( xine_stream_t stream,
int  method1,
int  method2,
input_plugin_t input 
)
static

◆ probe_mime_type()

static int probe_mime_type ( xine_t self,
plugin_node_t node,
const char *  mime_type 
)
static

◆ push_if_dir()

static void push_if_dir ( xine_list_t plugindirs,
void *  path 
)
static

References xine_list_push_back().

Referenced by _x_scan_plugins().

◆ 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 
)
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 self,
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)

◆ 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)

◆ 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,
void *  data 
)

◆ xine_open_video_driver()

xine_video_port_t* xine_open_video_driver ( xine_t this,
const char *  id,
int  visual_type,
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,
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,
plugin_info_t info 
)

Variable Documentation

◆ plugin_iface_versions

const int plugin_iface_versions[]
static
Initial value:
= {
}
#define VIDEO_DECODER_IFACE_VERSION
Definition: video_decoder.h:33
#define AUDIO_DECODER_IFACE_VERSION
Definition: audio_decoder.h:33
#define SPU_DECODER_IFACE_VERSION
Definition: spu_decoder.h:34
#define DEMUXER_PLUGIN_IFACE_VERSION
Definition: demux.h:32
#define AUDIO_OUT_IFACE_VERSION
Definition: audio_out.h:36
#define VIDEO_OUT_DRIVER_IFACE_VERSION
Definition: video_out.h:346
#define POST_PLUGIN_IFACE_VERSION
Definition: post.h:38
#define INPUT_PLUGIN_IFACE_VERSION
Definition: input_plugin.h:35

Referenced by _register_plugins_internal().