xine-lib: xine-lib-1.2.12/include/xine/plugin_catalog.h Source File

xine-lib 1.2.12

plugin_catalog.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2000-2018 the xine project
3 *
4 * This file is part of xine, a free video player.
5 *
6 * xine is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * xine is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 *
20 * xine-internal header: Definitions for plugin lists
21 */
22
23#ifndef _PLUGIN_CATALOG_H
24#define _PLUGIN_CATALOG_H
25
26#include <xine/xine_plugin.h>
27#include <xine/xineutils.h>
28
29#define DECODER_MAX 128
30#define PLUGIN_MAX 256
31
32/* the engine takes this many plugins for one stream type */
33#define PLUGINS_PER_TYPE 10
34
35 typedef struct {
36 char *filename;
37 off_t filesize;
38 time_t filemtime;
39 void *lib_handle;
40 int ref; /* count number of classes */
41 int no_unload; /* set if the file can't be unloaded */
42} plugin_file_t ;
43
44 typedef struct plugin_node_s {
45 plugin_file_t *file;
46 plugin_info_t *info;
47 void *plugin_class;
48 xine_list_t *config_entry_list;
49 int ref; /* count intances of plugins */
50 int priority;
51} plugin_node_t ;
52
53 struct plugin_catalog_s {
54 xine_sarray_t *plugin_lists[PLUGIN_TYPE_MAX];
55
56 xine_sarray_t *cache_list;
57 xine_list_t *file_list;
58
59 plugin_node_t *audio_decoder_map[DECODER_MAX][PLUGINS_PER_TYPE];
60 plugin_node_t *video_decoder_map[DECODER_MAX][PLUGINS_PER_TYPE];
61 plugin_node_t *spu_decoder_map[DECODER_MAX][PLUGINS_PER_TYPE];
62
63 const char *ids[PLUGIN_MAX];
64
65 /* memory block for the decoder priority config entry descriptions */
66 char *prio_desc[DECODER_MAX];
67
68 pthread_mutex_t lock; /* recursive mutex */
69
70 int plugin_count;
71 int decoder_count;
72
73 xine_sarray_t *modules_list;
74};
75 typedef struct plugin_catalog_s plugin_catalog_t;
76
77#endif
DECODER_MAX
#define DECODER_MAX
Definition: plugin_catalog.h:29
plugin_node_t
struct plugin_node_s plugin_node_t
PLUGINS_PER_TYPE
#define PLUGINS_PER_TYPE
Definition: plugin_catalog.h:33
PLUGIN_MAX
#define PLUGIN_MAX
Definition: plugin_catalog.h:30
plugin_catalog_s
Definition: plugin_catalog.h:53
plugin_catalog_s::plugin_count
int plugin_count
Definition: plugin_catalog.h:70
plugin_catalog_s::lock
pthread_mutex_t lock
Definition: plugin_catalog.h:68
plugin_catalog_s::modules_list
xine_sarray_t * modules_list
Definition: plugin_catalog.h:73
plugin_catalog_s::ids
const char * ids[256]
Definition: plugin_catalog.h:63
plugin_catalog_s::spu_decoder_map
plugin_node_t * spu_decoder_map[128][10]
Definition: plugin_catalog.h:61
plugin_catalog_s::decoder_count
int decoder_count
Definition: plugin_catalog.h:71
plugin_catalog_s::plugin_lists
xine_sarray_t * plugin_lists[PLUGIN_TYPE_MAX]
Definition: plugin_catalog.h:54
plugin_catalog_s::file_list
xine_list_t * file_list
Definition: plugin_catalog.h:57
plugin_catalog_s::video_decoder_map
plugin_node_t * video_decoder_map[128][10]
Definition: plugin_catalog.h:60
plugin_catalog_s::audio_decoder_map
plugin_node_t * audio_decoder_map[128][10]
Definition: plugin_catalog.h:59
plugin_catalog_s::prio_desc
char * prio_desc[128]
Definition: plugin_catalog.h:66
plugin_catalog_s::cache_list
xine_sarray_t * cache_list
Definition: plugin_catalog.h:56
plugin_file_t
Definition: plugin_catalog.h:35
plugin_file_t::lib_handle
void * lib_handle
Definition: plugin_catalog.h:39
plugin_file_t::filemtime
time_t filemtime
Definition: plugin_catalog.h:38
plugin_file_t::ref
int ref
Definition: plugin_catalog.h:40
plugin_file_t::filesize
off_t filesize
Definition: plugin_catalog.h:37
plugin_file_t::no_unload
int no_unload
Definition: plugin_catalog.h:41
plugin_file_t::filename
char * filename
Definition: plugin_catalog.h:36
plugin_info_t
Definition: xine_plugin.h:55
plugin_node_s
Definition: plugin_catalog.h:44
plugin_node_s::config_entry_list
xine_list_t * config_entry_list
Definition: plugin_catalog.h:48
plugin_node_s::file
plugin_file_t * file
Definition: plugin_catalog.h:45
plugin_node_s::priority
int priority
Definition: plugin_catalog.h:50
plugin_node_s::info
plugin_info_t * info
Definition: plugin_catalog.h:46
plugin_node_s::ref
int ref
Definition: plugin_catalog.h:49
plugin_node_s::plugin_class
void * plugin_class
Definition: plugin_catalog.h:47
xine_list_s
Definition: list.c:51
xine_sarray_s
Definition: sorted_array.c:34
xine_plugin.h
PLUGIN_TYPE_MAX
#define PLUGIN_TYPE_MAX
Definition: xine_plugin.h:39
xineutils.h