forked from pool/xine-lib
45 lines
1.4 KiB
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);
|
|
|