This changes the order of preset file loading slighly to be in line with the documentation, because before the patch codec-prefixed presets were probed before trying the next directory.
Signed-off-by: Marton Balint <c...@passwd.hu> --- fftools/cmdutils.c | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index e516ee6ebd..1de670c2e4 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -920,9 +920,7 @@ int read_yesno(void) return yesno; } -FILE *get_preset_file(AVBPrint *filename, - const char *preset_name, int is_path, - const char *codec_name) +static FILE *get_datadir_file_fmt(AVBPrint *filename, const char *fmt, ...) { FILE *f = NULL; int i; @@ -935,11 +933,6 @@ FILE *get_preset_file(AVBPrint *filename, env_home, /* index=1(HOME) is special: search in a .ffmpeg subfolder */ FFMPEG_DATADIR, }; - if (is_path) { - av_bprintf(filename, "%s", preset_name); - if (av_bprint_is_complete(filename)) - f = fopen_utf8(filename->str, "r"); - } else { #if HAVE_GETMODULEHANDLE && defined(_WIN32) wchar_t *datadir_w = get_module_filename(NULL); base[2] = NULL; @@ -969,21 +962,21 @@ FILE *get_preset_file(AVBPrint *filename, } } #endif + + { + va_list ap; + for (i = 0; i < 3 && !f; i++) { if (!base[i]) continue; av_bprint_clear(filename); - av_bprintf(filename, "%s%s/%s.ffpreset", base[i], - i != 1 ? "" : "/.ffmpeg", preset_name); + av_bprintf(filename, "%s%s/", base[i], i != 1 ? "" : "/.ffmpeg"); + va_start(ap, fmt); + av_vbprintf(filename, fmt, ap); + va_end(ap); + if (!av_bprint_is_complete(filename)) + break; f = fopen_utf8(filename->str, "r"); - if (!f && codec_name) { - av_bprint_clear(filename); - av_bprintf(filename, - "%s%s/%s-%s.ffpreset", - base[i], i != 1 ? "" : "/.ffmpeg", codec_name, - preset_name); - f = fopen_utf8(filename->str, "r"); - } } } @@ -995,6 +988,23 @@ FILE *get_preset_file(AVBPrint *filename, return f; } +FILE *get_preset_file(AVBPrint *filename, + const char *preset_name, int is_path, + const char *codec_name) +{ + FILE *f = NULL; + if (is_path) { + av_bprintf(filename, "%s", preset_name); + if (av_bprint_is_complete(filename)) + f = fopen_utf8(filename->str, "r"); + } else { + f = get_datadir_file_fmt(filename, "%s.ffpreset", preset_name); + if (!f && codec_name) + f = get_datadir_file_fmt(filename, "%s%s/%s-%s.ffpreset", codec_name, preset_name); + } + return f; +} + int cmdutils_isalnum(char c) { return (c >= '0' && c <= '9') || -- 2.43.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".