SHA256
1
0
forked from pool/xine-lib
xine-lib/xine-lib-demuxcheckfor_mad_ffmpeg-LOCAL.diff

45 lines
1.4 KiB
Diff

Index: src/xine-engine/load_plugins.c
===================================================================
--- src/xine-engine/load_plugins.c.orig
+++ src/xine-engine/load_plugins.c
@@ -2401,9 +2401,19 @@ char *xine_get_file_extensions (xine_t *
plugin_node_t *node;
char *str;
int list_id, list_size;
+ int havempgdecoder = 0;
+ const char * const * p;
pthread_mutex_lock (&catalog->lock);
+ _build_list_typed_plugins(&catalog, catalog->plugin_lists[PLUGIN_AUDIO_DECODER - 1]);
+ for (p = catalog->ids; p && *p; p++) {
+ if (strcmp (*p, "mad") == 0 || strcmp (*p, "ffmpegaudio") == 0) {
+ havempgdecoder = 1;
+ break;
+ }
+ }
+
/* calc length of output */
len = 0;
@@ -2417,7 +2427,8 @@ char *xine_get_file_extensions (xine_t *
cls = (demux_class_t *)node->plugin_class;
- if((exts = cls->get_extensions(cls)) && *exts)
+ if((exts = cls->get_extensions(cls)) && *exts &&
+ (havempgdecoder || !strstr (exts, "mp3")))
len += strlen(exts) + 1;
}
}
@@ -2437,7 +2448,8 @@ char *xine_get_file_extensions (xine_t *
cls = (demux_class_t *)node->plugin_class;
- if((e = cls->get_extensions (cls)) && *e) {
+ if((e = cls->get_extensions (cls)) && *e &&
+ (havempgdecoder || !strstr (e, "mp3"))) {
l = strlen(e);
memcpy (&str[pos], e, l);