2013-12-26 16:10:35 +00:00
|
|
|
/*
|
|
|
|
* This file is part of MPlayer.
|
|
|
|
*
|
|
|
|
* MPlayer is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* MPlayer is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef MP_COMMAND_LIST_H
|
|
|
|
#define MP_COMMAND_LIST_H
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "options/m_option.h"
|
|
|
|
|
|
|
|
#define MP_CMD_MAX_ARGS 10
|
|
|
|
|
2014-02-24 22:02:20 +00:00
|
|
|
#define MP_CMD_OPT_ARG 0x1000
|
|
|
|
|
2013-12-26 16:10:35 +00:00
|
|
|
struct mp_cmd_def {
|
|
|
|
int id; // one of MP_CMD_...
|
|
|
|
const char *name; // user-visible name (as used in input.conf)
|
|
|
|
const struct m_option args[MP_CMD_MAX_ARGS];
|
|
|
|
bool allow_auto_repeat; // react to repeated key events
|
|
|
|
bool vararg; // last argument can be given 0 to multiple times
|
|
|
|
};
|
|
|
|
|
|
|
|
extern const struct mp_cmd_def mp_cmds[];
|
|
|
|
|
|
|
|
// All command IDs
|
|
|
|
enum mp_command_type {
|
|
|
|
MP_CMD_IGNORE,
|
|
|
|
MP_CMD_SEEK,
|
|
|
|
MP_CMD_REVERT_SEEK,
|
|
|
|
MP_CMD_QUIT,
|
|
|
|
MP_CMD_QUIT_WATCH_LATER,
|
|
|
|
MP_CMD_PLAYLIST_NEXT,
|
|
|
|
MP_CMD_PLAYLIST_PREV,
|
|
|
|
MP_CMD_OSD,
|
|
|
|
MP_CMD_SCREENSHOT,
|
|
|
|
MP_CMD_SCREENSHOT_TO_FILE,
|
|
|
|
MP_CMD_LOADFILE,
|
|
|
|
MP_CMD_LOADLIST,
|
|
|
|
MP_CMD_PLAYLIST_CLEAR,
|
|
|
|
MP_CMD_PLAYLIST_REMOVE,
|
|
|
|
MP_CMD_PLAYLIST_MOVE,
|
|
|
|
MP_CMD_SUB_STEP,
|
|
|
|
MP_CMD_SUB_SEEK,
|
|
|
|
MP_CMD_TV_LAST_CHANNEL,
|
|
|
|
MP_CMD_FRAME_STEP,
|
|
|
|
MP_CMD_FRAME_BACK_STEP,
|
|
|
|
MP_CMD_RUN,
|
|
|
|
MP_CMD_SUB_ADD,
|
|
|
|
MP_CMD_SUB_REMOVE,
|
|
|
|
MP_CMD_SUB_RELOAD,
|
|
|
|
MP_CMD_SET,
|
|
|
|
MP_CMD_GET_PROPERTY,
|
|
|
|
MP_CMD_PRINT_TEXT,
|
|
|
|
MP_CMD_SHOW_TEXT,
|
|
|
|
MP_CMD_SHOW_PROGRESS,
|
|
|
|
MP_CMD_ADD,
|
|
|
|
MP_CMD_CYCLE,
|
|
|
|
MP_CMD_MULTIPLY,
|
|
|
|
MP_CMD_CYCLE_VALUES,
|
|
|
|
MP_CMD_STOP,
|
|
|
|
|
|
|
|
MP_CMD_ENABLE_INPUT_SECTION,
|
|
|
|
MP_CMD_DISABLE_INPUT_SECTION,
|
|
|
|
|
2014-03-30 02:42:49 +00:00
|
|
|
MP_CMD_DISCNAV,
|
2013-12-26 16:10:35 +00:00
|
|
|
|
|
|
|
/// Audio Filter commands
|
|
|
|
MP_CMD_AF,
|
2014-10-27 10:52:42 +00:00
|
|
|
MP_CMD_AO_RELOAD,
|
2013-12-26 16:10:35 +00:00
|
|
|
|
|
|
|
/// Video filter commands
|
|
|
|
MP_CMD_VF,
|
|
|
|
|
|
|
|
/// Video output commands
|
|
|
|
MP_CMD_VO_CMDLINE,
|
|
|
|
|
|
|
|
/// Internal for Lua scripts
|
|
|
|
MP_CMD_SCRIPT_DISPATCH,
|
2014-02-17 01:33:47 +00:00
|
|
|
MP_CMD_SCRIPT_MESSAGE,
|
2014-03-17 17:26:56 +00:00
|
|
|
MP_CMD_SCRIPT_MESSAGE_TO,
|
2013-12-26 16:10:35 +00:00
|
|
|
|
|
|
|
MP_CMD_OVERLAY_ADD,
|
|
|
|
MP_CMD_OVERLAY_REMOVE,
|
|
|
|
|
2014-05-26 16:11:02 +00:00
|
|
|
MP_CMD_WRITE_WATCH_LATER_CONFIG,
|
|
|
|
|
command: add a mechanism to allow scripts to intercept file loads
A vague idea to get something similar what libquvi did.
Undocumented because it might change a lot, or even be removed. To give
an idea what it does, a Lua script could do the following:
-- type ID priority
mp.commandv("hook_add", "on_load", 0, 0)
mp.register_script_message("hook_run", function(param, param2)
-- param is "0", the user-chosen ID from the hook_add command
-- param2 is the magic value that has to be passed to finish
-- the hook
mp.resume_all()
-- do something, maybe set options that are reset on end:
mp.set_property("file-local-options/name", "value")
-- or change the URL that's being opened:
local url = mp.get_property("stream-open-filename")
mp.set_property("stream-open-filename", url .. ".png")
-- let the player (or the next script) continue
mp.commandv("hook_ack", param2)
end)
2014-10-15 21:09:53 +00:00
|
|
|
MP_CMD_HOOK_ADD,
|
|
|
|
MP_CMD_HOOK_ACK,
|
|
|
|
|
2013-12-26 16:10:35 +00:00
|
|
|
// Internal
|
|
|
|
MP_CMD_COMMAND_LIST, // list of sub-commands in args[0].v.p
|
|
|
|
};
|
|
|
|
|
2014-09-13 14:47:30 +00:00
|
|
|
// Executing this command will maybe abort playback (play something else, or quit).
|
2014-02-20 12:38:39 +00:00
|
|
|
struct mp_cmd;
|
2014-09-13 14:47:30 +00:00
|
|
|
bool mp_input_is_maybe_abort_cmd(struct mp_cmd *cmd);
|
|
|
|
// This command will definitely abort playback.
|
2014-02-20 12:38:39 +00:00
|
|
|
bool mp_input_is_abort_cmd(struct mp_cmd *cmd);
|
2013-12-26 16:10:35 +00:00
|
|
|
|
2014-05-26 19:49:14 +00:00
|
|
|
bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd);
|
|
|
|
|
2013-12-26 16:10:35 +00:00
|
|
|
struct bstr;
|
|
|
|
bool mp_replace_legacy_cmd(void *talloc_ctx, struct bstr *s);
|
|
|
|
|
|
|
|
struct mp_log;
|
|
|
|
void mp_print_cmd_list(struct mp_log *out);
|
|
|
|
|
|
|
|
#endif
|