MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / get_preset_file

Function get_preset_file

fftools/cmdutils.c:924–993  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

922}
923
924FILE *get_preset_file(char *filename, size_t filename_size,
925 const char *preset_name, int is_path,
926 const char *codec_name)
927{
928 FILE *f = NULL;
929 int i;
930#if HAVE_GETMODULEHANDLE && defined(_WIN32)
931 char *datadir = NULL;
932#endif
933 char *env_home = getenv_utf8("HOME");
934 char *env_ffmpeg_datadir = getenv_utf8("FFMPEG_DATADIR");
935 const char *base[3] = { env_ffmpeg_datadir,
936 env_home, /* index=1(HOME) is special: search in a .ffmpeg subfolder */
937 FFMPEG_DATADIR, };
938
939 if (is_path) {
940 av_strlcpy(filename, preset_name, filename_size);
941 f = fopen_utf8(filename, "r");
942 } else {
943#if HAVE_GETMODULEHANDLE && defined(_WIN32)
944 wchar_t *datadir_w = get_module_filename(NULL);
945 base[2] = NULL;
946
947 if (wchartoutf8(datadir_w, &datadir))
948 datadir = NULL;
949 av_free(datadir_w);
950
951 if (datadir)
952 {
953 char *ls;
954 for (ls = datadir; *ls; ls++)
955 if (*ls == '\\') *ls = '/';
956
957 if (ls = strrchr(datadir, '/'))
958 {
959 ptrdiff_t datadir_len = ls - datadir;
960 size_t desired_size = datadir_len + strlen("/ffpresets") + 1;
961 char *new_datadir = av_realloc_array(
962 datadir, desired_size, sizeof *datadir);
963 if (new_datadir) {
964 datadir = new_datadir;
965 strcpy(datadir + datadir_len, "/ffpresets");
966 base[2] = datadir;
967 }
968 }
969 }
970#endif
971 for (i = 0; i < 3 && !f; i++) {
972 if (!base[i])
973 continue;
974 snprintf(filename, filename_size, "%s%s/%s.ffpreset", base[i],
975 i != 1 ? "" : "/.ffmpeg", preset_name);
976 f = fopen_utf8(filename, "r");
977 if (!f && codec_name) {
978 snprintf(filename, filename_size,
979 "%s%s/%s-%s.ffpreset",
980 base[i], i != 1 ? "" : "/.ffmpeg", codec_name,
981 preset_name);

Callers 1

opt_presetFunction · 0.85

Calls 8

getenv_utf8Function · 0.85
av_strlcpyFunction · 0.85
fopen_utf8Function · 0.85
get_module_filenameFunction · 0.85
wchartoutf8Function · 0.85
av_realloc_arrayFunction · 0.85
freeenv_utf8Function · 0.85
av_freeFunction · 0.50

Tested by

no test coverage detected