summaryrefslogtreecommitdiff
path: root/src/xine-engine/load_plugins.c
diff options
context:
space:
mode:
authorDaniel Caujolle-Bert <f1rmb@users.sourceforge.net>2001-04-21 00:14:39 +0000
committerDaniel Caujolle-Bert <f1rmb@users.sourceforge.net>2001-04-21 00:14:39 +0000
commit8e7dc911d41be3013198436848492efbce679c9a (patch)
treee26bc7209baa161d7a790c4f3f2917db201fa7a1 /src/xine-engine/load_plugins.c
parent9906645c4669be8476c683b7dfcf321b99ac15a1 (diff)
downloadxine-lib-8e7dc911d41be3013198436848492efbce679c9a.tar.gz
xine-lib-8e7dc911d41be3013198436848492efbce679c9a.tar.bz2
Turned demuxers into plugins. Change plugins naming scheme (see
xine_internal.h). Fixed load_plugins* to new API. Add iface version into demux_plugin_t, add version checking into init_demux_plugin. Fixed get_identifier from demuxers (void param). Turned libw32dll into codec plugin (only compiling side yet). CVS patchset: 11 CVS date: 2001/04/21 00:14:39
Diffstat (limited to 'src/xine-engine/load_plugins.c')
-rw-r--r--src/xine-engine/load_plugins.c100
1 files changed, 54 insertions, 46 deletions
diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c
index ebd94bec2..29d18bf44 100644
--- a/src/xine-engine/load_plugins.c
+++ b/src/xine-engine/load_plugins.c
@@ -17,10 +17,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: load_plugins.c,v 1.2 2001/04/19 09:46:57 f1rmb Exp $
+ * $Id: load_plugins.c,v 1.3 2001/04/21 00:14:41 f1rmb Exp $
*
*
- * Load input/demux/audio_out/video_out plugins
+ * Load input/demux/audio_out/video_out/codec plugins
*
*/
@@ -33,6 +33,7 @@
#include <sys/stat.h>
#include <dirent.h>
#include <dlfcn.h>
+#include <string.h>
#include "xine_internal.h"
#include "demuxers/demux.h"
@@ -41,23 +42,16 @@
#include "configfile.h"
#include "monitor.h"
-/* debugging purposes only */
-extern uint32_t xine_debug;
-
/*
*
*/
-void xine_load_demux_plugins (xine_t *this) {
+void load_demux_plugins (xine_t *this,
+ config_values_t *config, int iface_version) {
DIR *dir;
- this->demuxer_plugins[0] = *(init_demux_mpeg (xine_debug));
- this->demuxer_plugins[1] = *(init_demux_mpeg_block (xine_debug));
- this->demuxer_plugins[2] = *(init_demux_avi (xine_debug));
- this->demuxer_plugins[3] = *(init_demux_mpeg_audio (xine_debug));
- this->demuxer_plugins[4] = *(init_demux_mpeg_elem (xine_debug));
- this->num_demuxer_plugins = 5;
+ this->num_demuxer_plugins = 0;
- dir = opendir (XINE_DEMUXDIR) ;
+ dir = opendir (XINE_PLUGINDIR) ;
if (dir) {
struct dirent *pEntry;
@@ -68,7 +62,9 @@ void xine_load_demux_plugins (xine_t *this) {
int nLen = strlen (pEntry->d_name);
- if ((strncasecmp(pEntry->d_name, "demux_", 6) == 0) &&
+ if ((strncasecmp(pEntry->d_name,
+ XINE_DEMUXER_PLUGIN_PREFIXNAME,
+ XINE_DEMUXER_PLUGIN_PREFIXNAME_LENGTH) == 0) &&
((pEntry->d_name[nLen-3]=='.')
&& (pEntry->d_name[nLen-2]=='s')
&& (pEntry->d_name[nLen-1]=='o'))) {
@@ -77,7 +73,7 @@ void xine_load_demux_plugins (xine_t *this) {
* demux plugin found => load it
*/
- sprintf (str, "%s/%s", XINE_DEMUXDIR, pEntry->d_name);
+ sprintf (str, "%s/%s", XINE_PLUGINDIR, pEntry->d_name);
if(!(plugin = dlopen (str, RTLD_LAZY))) {
fprintf(stderr, "%s(%d): %s doesn't seem to be installed (%s)\n",
@@ -85,21 +81,19 @@ void xine_load_demux_plugins (xine_t *this) {
exit(1);
}
else {
- void *(*getinfo) (fifobuf_functions_t *, uint32_t);
+ void *(*initplug) (int, config_values_t *);
- if((getinfo = dlsym(plugin, "demux_plugin_getinfo")) != NULL) {
- demux_functions_t *dxp;
+ if((initplug = dlsym(plugin, "init_demuxer_plugin")) != NULL) {
+ demux_plugin_t *dxp;
- dxp = (demux_functions_t *) getinfo(this->fifo_funcs, xine_debug);
- dxp->handle = plugin;
- dxp->filename = str;
+ dxp = (demux_plugin_t *) initplug(iface_version, config);
this->demuxer_plugins[this->num_demuxer_plugins] = *dxp;
-
- printf("demux plugin found : %s(%s)\n",
- this->demuxer_plugins[this->num_demuxer_plugins].filename,
- pEntry->d_name);
-
+ printf("demux plugin found : %s(ID: %s, iface: %d)\n",
+ str,
+ this->demuxer_plugins[this->num_demuxer_plugins].get_identifier(),
+ this->demuxer_plugins[this->num_demuxer_plugins].interface_version);
+
this->num_demuxer_plugins++;
}
@@ -113,9 +107,6 @@ void xine_load_demux_plugins (xine_t *this) {
}
}
- if (this->num_demuxer_plugins == 5)
- printf ("No extra demux plugins found in %s\n", XINE_DEMUXDIR);
-
/*
* init demuxer
*/
@@ -126,7 +117,8 @@ void xine_load_demux_plugins (xine_t *this) {
/*
*
*/
-void xine_load_input_plugins (xine_t *this) {
+void load_input_plugins (xine_t *this,
+ config_values_t *config, int iface_version) {
DIR *dir;
this->num_input_plugins = 0;
@@ -143,7 +135,9 @@ void xine_load_input_plugins (xine_t *this) {
int nLen = strlen (pEntry->d_name);
- if ((strncasecmp(pEntry->d_name, "input_", 6) == 0) &&
+ if ((strncasecmp(pEntry->d_name,
+ XINE_INPUT_PLUGIN_PREFIXNAME,
+ XINE_INPUT_PLUGIN_PREFIXNAME_LENGTH) == 0) &&
((pEntry->d_name[nLen-3]=='.')
&& (pEntry->d_name[nLen-2]=='s')
&& (pEntry->d_name[nLen-1]=='o'))) {
@@ -160,24 +154,20 @@ void xine_load_input_plugins (xine_t *this) {
exit(1);
}
else {
- void *(*getinfo) (uint32_t);
+ void *(*initplug) (int, config_values_t *);
- if((getinfo = dlsym(plugin, "input_plugin_getinfo")) != NULL) {
- input_plugin_t *ipp;
-
- ipp = (input_plugin_t *) getinfo(xine_debug);
- ipp->handle = plugin;
- ipp->filename = str;
- this->input_plugins[this->num_input_plugins] = *ipp;
-
- this->input_plugins[this->num_input_plugins].init();
-
- printf("input plugin found : %s(%s)\n",
- this->input_plugins[this->num_input_plugins].filename,
- pEntry->d_name);
+ if((initplug = dlsym(plugin, "init_demuxer_plugin")) != NULL) {
+ input_plugin_t *ip;
+
+ ip = (input_plugin_t *) initplug(iface_version, config);
+ this->input_plugins[this->num_input_plugins] = *ip;
+ printf("input plugin found : %s(ID: %s, iface: %d)\n",
+ str,
+ this->input_plugins[this->num_input_plugins].get_identifier(),
+ this->input_plugins[this->num_input_plugins].interface_version);
+
this->num_input_plugins++;
-
}
if(this->num_input_plugins > INPUT_PLUGIN_MAX) {
@@ -197,3 +187,21 @@ void xine_load_input_plugins (xine_t *this) {
}
}
+
+void load_video_out_plugins (xine_t *this,
+ config_values_t *config, int iface_version) {
+
+ // Not implemented yet.
+}
+
+void load_audio_out_plugins (xine_t *this,
+ config_values_t *config, int iface_version) {
+
+ // Not implemented yet.
+}
+
+void load_codec_plugins (xine_t *this,
+ config_values_t *config, int iface_version) {
+
+ // Not implemented yet.
+}