summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpv/client.h24
-rw-r--r--player/client.c15
2 files changed, 39 insertions, 0 deletions
diff --git a/libmpv/client.h b/libmpv/client.h
index 3b43c2f383..673586e169 100644
--- a/libmpv/client.h
+++ b/libmpv/client.h
@@ -312,6 +312,30 @@ int mpv_initialize(mpv_handle *ctx);
void mpv_destroy(mpv_handle *ctx);
/**
+ * Load a config file. This loads and parses the file, and sets every entry in
+ * the config file's default section as if mpv_set_option_string() is called.
+ *
+ * The filename should be an absolute path. If it isn't, the actual path used
+ * is unspecified. (Note: an absolute path starts with '/' on UNIX.) If the
+ * file wasn't found, MPV_ERROR_INVALID_PARAMETER is returned.
+ *
+ * If a fatal error happens when parsing a config file, MPV_ERROR_OPTION_ERROR
+ * is returned. Errors when setting options as well as other types or errors
+ * are ignored (even if options do not exist). You can still try to capture
+ * the resulting error messages with mpv_request_log_messages(). Note that it's
+ * possible that some options were successfully set even if any of these errors
+ * happen.
+ *
+ * The same restrictions as with mpv_set_option() apply: some options can't
+ * be set outside of idle or uninitialized state, and many options don't
+ * take effect immediately.
+ *
+ * @param filename absolute path to the config file on the local filesystem
+ * @return error code
+ */
+int mpv_load_config_file(mpv_handle *ctx, const char *filename);
+
+/**
* Stop the playback thread. Normally, the client API stops the playback thread
* automatically in order to process requests. However, the playback thread is
* restarted again after the request was processed. Then the playback thread
diff --git a/player/client.c b/player/client.c
index 580eebaddb..85a9b0fa9a 100644
--- a/player/client.c
+++ b/player/client.c
@@ -27,6 +27,8 @@
#include "options/m_config.h"
#include "options/m_option.h"
#include "options/m_property.h"
+#include "options/path.h"
+#include "options/parse_configfile.h"
#include "osdep/threads.h"
#include "osdep/timer.h"
#include "osdep/io.h"
@@ -1221,6 +1223,19 @@ static bool gen_property_change_event(struct mpv_handle *ctx)
return false;
}
+int mpv_load_config_file(mpv_handle *ctx, const char *filename)
+{
+ int flags = ctx->mpctx->initialized ? M_SETOPT_RUNTIME : 0;
+ lock_core(ctx);
+ int r = m_config_parse_config_file(ctx->mpctx->mconfig, filename, NULL, flags);
+ unlock_core(ctx);
+ if (r == 0)
+ return MPV_ERROR_INVALID_PARAMETER;
+ if (r < 0)
+ return MPV_ERROR_OPTION_ERROR;
+ return 0;
+}
+
int mpv_request_log_messages(mpv_handle *ctx, const char *min_level)
{
int level = -1;