From 35ead1f281ad589a436613cac0775d3e52a76ac3 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sat, 22 Feb 2014 17:42:20 +0100 Subject: [PATCH 1/2] lavfi/frei0r: search plugins in lib64 dirs on all architectures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As Reimar Döffinger pointed out there are non-x86 64bit architectures as well. Reviewed-by: Michael Niedermayer Signed-off-by: Marton Balint --- libavfilter/vf_frei0r.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index c5922fdaad..54b50b32b6 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -284,7 +284,6 @@ static av_cold int frei0r_init(AVFilterContext *ctx, if (ret < 0) return ret; } -#if ARCH_X86_64 if (!s->dl_handle) { ret = load_path(ctx, &s->dl_handle, "/usr/local/lib64/frei0r-1/", dl_name); if (ret < 0) @@ -295,7 +294,6 @@ static av_cold int frei0r_init(AVFilterContext *ctx, if (ret < 0) return ret; } -#endif if (!s->dl_handle) { av_log(ctx, AV_LOG_ERROR, "Could not find module '%s'\n", dl_name); return AVERROR(EINVAL); From ead0dd3cf6e524743a8cedc61223423ac6d6e784 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sat, 22 Feb 2014 17:46:25 +0100 Subject: [PATCH 2/2] lavfi/frei0r: factorize plugin loading with static path Reviewed-by: Michael Niedermayer Signed-off-by: Marton Balint --- libavfilter/vf_frei0r.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index 54b50b32b6..dbf3398986 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -29,6 +29,7 @@ #include #include "config.h" #include "libavutil/avstring.h" +#include "libavutil/common.h" #include "libavutil/imgutils.h" #include "libavutil/internal.h" #include "libavutil/mathematics.h" @@ -231,6 +232,13 @@ static av_cold int frei0r_init(AVFilterContext *ctx, f0r_plugin_info_t *pi; char *path; int ret = 0; + int i; + static const char* const frei0r_pathlist[] = { + "/usr/local/lib/frei0r-1/", + "/usr/lib/frei0r-1/", + "/usr/local/lib64/frei0r-1/", + "/usr/lib64/frei0r-1/" + }; if (!dl_name) { av_log(ctx, AV_LOG_ERROR, "No filter name provided.\n"); @@ -274,23 +282,8 @@ static av_cold int frei0r_init(AVFilterContext *ctx, if (ret < 0) return ret; } - if (!s->dl_handle) { - ret = load_path(ctx, &s->dl_handle, "/usr/local/lib/frei0r-1/", dl_name); - if (ret < 0) - return ret; - } - if (!s->dl_handle) { - ret = load_path(ctx, &s->dl_handle, "/usr/lib/frei0r-1/", dl_name); - if (ret < 0) - return ret; - } - if (!s->dl_handle) { - ret = load_path(ctx, &s->dl_handle, "/usr/local/lib64/frei0r-1/", dl_name); - if (ret < 0) - return ret; - } - if (!s->dl_handle) { - ret = load_path(ctx, &s->dl_handle, "/usr/lib64/frei0r-1/", dl_name); + for (i = 0; !s->dl_handle && i < FF_ARRAY_ELEMS(frei0r_pathlist); i++) { + ret = load_path(ctx, &s->dl_handle, frei0r_pathlist[i], dl_name); if (ret < 0) return ret; }