diff --git a/input/input.c b/input/input.c index 8267227a63..580b23a302 100644 --- a/input/input.c +++ b/input/input.c @@ -68,6 +68,8 @@ static mp_cmd_t mp_cmds[] = { { MP_CMD_VO_FULLSCREEN, "vo_fullscreen", 0, { {-1,{0}} } }, { MP_CMD_SCREENSHOT, "screenshot", 0, { {-1,{0}} } }, { MP_CMD_PANSCAN, "panscan",1, { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, + { MP_CMD_LOADFILE, "loadfile", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, + { MP_CMD_LOADLIST, "loadlist", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, #ifdef HAVE_NEW_GUI { MP_CMD_GUI_LOADFILE, "gui_loadfile", 0, { {-1,{0}} } }, diff --git a/input/input.h b/input/input.h index c989c8f585..ee77376b38 100644 --- a/input/input.h +++ b/input/input.h @@ -28,6 +28,8 @@ #define MP_CMD_SCREENSHOT 23 #define MP_CMD_PANSCAN 24 #define MP_CMD_MUTE 25 +#define MP_CMD_LOADFILE 26 +#define MP_CMD_LOADLIST 27 #define MP_CMD_GUI_EVENTS 5000 #define MP_CMD_GUI_LOADFILE 5001 diff --git a/mplayer.c b/mplayer.c index 5db9dae8a4..facc870833 100644 --- a/mplayer.c +++ b/mplayer.c @@ -2393,7 +2393,31 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still) case MP_CMD_MUTE: { mixer_mute(); } - case MP_CMD_MIXER_USEMASTER : { + case MP_CMD_LOADFILE : { + play_tree_t* e = play_tree_new(); + play_tree_add_file(e,cmd->args[0].v.s); + + // Go back to the start point + while(play_tree_iter_up_step(playtree_iter,0,1) != PLAY_TREE_ITER_END) + /* NOP */; + play_tree_free_list(playtree->child,1); + play_tree_set_child(playtree,e); + play_tree_iter_step(playtree_iter,0,0); + eof = PT_NEXT_SRC; + } break; + case MP_CMD_LOADLIST : { + play_tree_t* e = parse_playlist_file(cmd->args[0].v.s); + if(!e) + mp_msg(MSGT_CPLAYER,MSGL_ERR,"\nUnable to load playlist %s\n",cmd->args[0].v.s); + else { + // Go back to the start point + while(play_tree_iter_up_step(playtree_iter,0,1) != PLAY_TREE_ITER_END) + /* NOP */; + play_tree_free_list(playtree->child,1); + play_tree_set_child(playtree,e); + play_tree_iter_step(playtree_iter,0,0); + eof = PT_NEXT_SRC; + } } break; case MP_CMD_BRIGHTNESS : { int v = cmd->args[0].v.i, abs = cmd->args[1].v.i;