summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-06-09 20:13:53 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-06-09 20:13:53 +0000
commit2f376d1b39913e8ff4c4499e7cf7148ec331d4db (patch)
tree164fcbb08b0e5f0f1158c3f4872d4afd4524da99 /mplayer.c
parent958626bcf446bc40458fa666a8949c90fcdffac0 (diff)
downloadmpv-2f376d1b39913e8ff4c4499e7cf7148ec331d4db.tar.bz2
mpv-2f376d1b39913e8ff4c4499e7cf7148ec331d4db.tar.xz
Add sub_load and sub_remove slave commands.
Patch by kiriuja [mplayer-patches at en-directo dot net] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15707 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/mplayer.c b/mplayer.c
index 1ee07efc10..aea2df7da2 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -3378,6 +3378,70 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still)
}
#endif
} break;
+ case MP_CMD_SUB_LOAD:
+ {
+#ifdef USE_SUB
+ if (sh_video) {
+ int n = set_of_sub_size;
+ add_subtitles(cmd->args[0].v.s, sh_video->fps, 0);
+ if (n != set_of_sub_size) {
+ if (global_sub_indices[SUB_SOURCE_SUBS] < 0)
+ global_sub_indices[SUB_SOURCE_SUBS] = global_sub_size;
+ ++global_sub_size;
+ }
+ }
+#endif
+ } break;
+ case MP_CMD_SUB_REMOVE:
+ {
+#ifdef USE_SUB
+ if (sh_video) {
+ int v = cmd->args[0].v.i;
+ sub_data *subd;
+ if (v < 0) {
+ for (v = 0; v < set_of_sub_size; ++v) {
+ subd = set_of_subtitles[v];
+ mp_msg(MSGT_CPLAYER, MSGL_STATUS, MSGTR_RemovedSubtitleFile, v + 1, subd->filename);
+ sub_free(subd);
+ set_of_subtitles[v] = NULL;
+ }
+ global_sub_indices[SUB_SOURCE_SUBS] = -1;
+ global_sub_size -= set_of_sub_size;
+ set_of_sub_size = 0;
+ if (set_of_sub_pos >= 0) {
+ global_sub_pos = -2;
+ vo_sub_last = vo_sub = NULL;
+ vo_osd_changed(OSDTYPE_SUBTITLE);
+ vo_update_osd(sh_video->disp_w, sh_video->disp_h);
+ mp_input_queue_cmd(mp_input_parse_cmd("sub_select"));
+ }
+ }
+ else if (v < set_of_sub_size) {
+ subd = set_of_subtitles[v];
+ mp_msg(MSGT_CPLAYER, MSGL_STATUS, MSGTR_RemovedSubtitleFile, v + 1, subd->filename);
+ sub_free(subd);
+ if (set_of_sub_pos == v) {
+ global_sub_pos = -2;
+ vo_sub_last = vo_sub = NULL;
+ vo_osd_changed(OSDTYPE_SUBTITLE);
+ vo_update_osd(sh_video->disp_w, sh_video->disp_h);
+ mp_input_queue_cmd(mp_input_parse_cmd("sub_select"));
+ }
+ else if (set_of_sub_pos > v) {
+ --set_of_sub_pos;
+ --global_sub_pos;
+ }
+ while (++v < set_of_sub_size)
+ set_of_subtitles[v - 1] = set_of_subtitles[v];
+ --set_of_sub_size;
+ --global_sub_size;
+ if (set_of_sub_size <= 0)
+ global_sub_indices[SUB_SOURCE_SUBS] = -1;
+ set_of_subtitles[set_of_sub_size] = NULL;
+ }
+ }
+#endif
+ } break;
case MP_CMD_GET_SUB_VISIBILITY:
{
#ifdef USE_SUB