0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 12:02:23 +02:00

command: remove sub_remove command

This messes deeply with the subtitle bookkeeping data structures, and
would have to be reimplemented anyway.

It's not sure what this was even useful for. Possibly for slave mode.
This commit is contained in:
wm4 2012-08-19 18:06:06 +02:00
parent 330c90cbb8
commit 1fb275b7de
3 changed files with 0 additions and 70 deletions

View File

@ -2486,64 +2486,6 @@ static const char *property_error_string(int error_value)
return "UNKNOWN";
}
static void remove_subtitle_range(MPContext *mpctx, int start, int count)
{
int idx;
int end = start + count;
int after = mpctx->set_of_sub_size - end;
sub_data **subs = mpctx->set_of_subtitles;
#ifdef CONFIG_ASS
struct ass_track **ass_tracks = mpctx->set_of_ass_tracks;
#endif
if (count < 0 || count > mpctx->set_of_sub_size ||
start < 0 || start > mpctx->set_of_sub_size - count) {
mp_msg(MSGT_CPLAYER, MSGL_ERR,
"Cannot remove invalid subtitle range %i +%i\n", start, count);
return;
}
for (idx = start; idx < end; idx++) {
sub_data *subd = subs[idx];
char *filename = "";
if (subd)
filename = subd->filename;
#ifdef CONFIG_ASS
if (!subd)
filename = ass_tracks[idx]->name;
#endif
mp_msg(MSGT_CPLAYER, MSGL_STATUS,
"SUB: Removed subtitle file (%d): %s\n", idx + 1, filename);
sub_free(subd);
subs[idx] = NULL;
#ifdef CONFIG_ASS
if (ass_tracks[idx])
ass_free_track(ass_tracks[idx]);
ass_tracks[idx] = NULL;
#endif
}
mpctx->global_sub_size -= count;
mpctx->set_of_sub_size -= count;
if (mpctx->set_of_sub_size <= 0)
mpctx->sub_counts[SUB_SOURCE_SUBS] = 0;
memmove(subs + start, subs + end, after * sizeof(*subs));
memset(subs + start + after, 0, count * sizeof(*subs));
#ifdef CONFIG_ASS
memmove(ass_tracks + start, ass_tracks + end, after * sizeof(*ass_tracks));
memset(ass_tracks + start + after, 0, count * sizeof(*ass_tracks));
#endif
if (mpctx->set_of_sub_pos >= start && mpctx->set_of_sub_pos < end) {
mpctx->global_sub_pos = -2;
mpctx->subdata = NULL;
mpctx->osd->ass_track = NULL;
mp_input_queue_cmd(mpctx->input, mp_input_parse_cmd("sub_select"));
} else if (mpctx->set_of_sub_pos >= end) {
mpctx->set_of_sub_pos -= count;
mpctx->global_sub_pos -= count;
}
}
static char *format_time(double time)
{
int h, m, s = time;
@ -3145,16 +3087,6 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
}
break;
case MP_CMD_SUB_REMOVE:
if (sh_video) {
int v = cmd->args[0].v.i;
if (v < 0)
remove_subtitle_range(mpctx, 0, mpctx->set_of_sub_size);
else if (v < mpctx->set_of_sub_size)
remove_subtitle_range(mpctx, v, 1);
}
break;
case MP_CMD_GET_SUB_VISIBILITY:
if (sh_video) {
mp_msg(MSGT_GLOBAL, MSGL_INFO,

View File

@ -132,7 +132,6 @@ static const mp_cmd_t mp_cmds[] = {
{ MP_CMD_SUB_ALIGNMENT, "sub_alignment", { OARG_INT(-1) } },
{ MP_CMD_SUB_VISIBILITY, "sub_visibility", { OARG_INT(-1) } },
{ MP_CMD_SUB_LOAD, "sub_load", { ARG_STRING } },
{ MP_CMD_SUB_REMOVE, "sub_remove", { OARG_INT(-1) } },
{ MP_CMD_SUB_SELECT, "vobsub_lang", { OARG_INT(-2) } }, // for compatibility
{ MP_CMD_SUB_SELECT, "sub_select", { OARG_INT(-2) } },
{ MP_CMD_SUB_SOURCE, "sub_source", { OARG_INT(-2) } },

View File

@ -84,7 +84,6 @@ enum mp_command_type {
MP_CMD_SWITCH_AUDIO,
MP_CMD_GET_TIME_POS,
MP_CMD_SUB_LOAD,
MP_CMD_SUB_REMOVE,
MP_CMD_KEYDOWN_EVENTS,
MP_CMD_VO_BORDER,
MP_CMD_SET_PROPERTY,