annotate command.c @ 31702:74360873ab4d

swscale-test: allocate more memory to prevent scalers from writing out of bounds Some converters (ie. unscaled rgb24 -> argb) may write some bytes out of bounds. Ideally the converters should be fixed, but in the meantime we allocate more memory to prevent heap corruption.
author ramiro
date Thu, 22 Jul 2010 15:30:22 +0000
parents 9666dd193544
children 25820228c2f1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30429
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
1 /*
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
2 * This file is part of MPlayer.
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
3 *
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
5 * it under the terms of the GNU General Public License as published by
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
7 * (at your option) any later version.
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
8 *
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
12 * GNU General Public License for more details.
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
13 *
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
14 * You should have received a copy of the GNU General Public License along
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
17 */
c1a3f1bbba26 Add license header to all top-level files missing them.
diego
parents: 30345
diff changeset
18
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
19 #include <stdlib.h>
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
20 #include <inttypes.h>
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
21 #include <unistd.h>
22483
662e7f56ec7f Include <string.h> explicitly.
uau
parents: 22480
diff changeset
22 #include <string.h>
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
23
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
24 #include "config.h"
26263
65d1238b3631 Include some .h files in corresponding .c files
uau
parents: 26095
diff changeset
25 #include "command.h"
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
26 #include "input/input.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
27 #include "stream/stream.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
28 #include "libmpdemux/demuxer.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
29 #include "libmpdemux/stheader.h"
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
30 #include "codec-cfg.h"
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
31 #include "mplayer.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
32 #include "libvo/sub.h"
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
33 #include "m_option.h"
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
34 #include "m_property.h"
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
35 #include "help_mp.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
36 #include "metadata.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
37 #include "libmpcodecs/vf.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
38 #include "libmpcodecs/vd.h"
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
39 #include "libvo/video_out.h"
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
40 #include "libvo/font_load.h"
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
41 #include "playtree.h"
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
42 #include "libao2/audio_out.h"
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
43 #include "mpcommon.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
44 #include "mixer.h"
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
45 #include "libmpcodecs/dec_video.h"
29759
d287e2785570 Move teletext specific code from stream into libmpcodecs.
cehoyos
parents: 29668
diff changeset
46 #include "libmpcodecs/dec_teletext.h"
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
47 #include "vobsub.h"
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
48 #include "spudec.h"
30901
76a13038105e Rename get_path.[ch] --> path.[ch].
diego
parents: 30429
diff changeset
49 #include "path.h"
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
50 #include "stream/tv.h"
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
51 #include "stream/stream_radio.h"
23244
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
52 #include "stream/pvr.h"
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
53 #ifdef CONFIG_DVBIN
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
54 #include "stream/dvbin.h"
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
55 #endif
29433
3495ccd3aef8 Only #include stream/stream_dvd.h when libdvdread is enabled.
diego
parents: 29429
diff changeset
56 #ifdef CONFIG_DVDREAD
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
57 #include "stream/stream_dvd.h"
29433
3495ccd3aef8 Only #include stream/stream_dvd.h when libdvdread is enabled.
diego
parents: 29429
diff changeset
58 #endif
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
59 #include "stream/stream_dvdnav.h"
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
60 #include "libass/ass_mp.h"
25461
7ef04742572c OSD menu support mouse selection.
ulion
parents: 25402
diff changeset
61 #include "m_struct.h"
7ef04742572c OSD menu support mouse selection.
ulion
parents: 25402
diff changeset
62 #include "libmenu/menu.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents: 22667
diff changeset
63 #include "gui/interface.h"
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
64
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
65 #include "mp_core.h"
24162
05a5af844c69 Fix warnings:
diego
parents: 24154
diff changeset
66 #include "mp_fifo.h"
26095
7470a625bbdd Add missing #include.
eugeni
parents: 26084
diff changeset
67 #include "libavutil/avstring.h"
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
68
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
69 #define ROUND(x) ((int)((x)<0 ? (x)-0.5 : (x)+0.5))
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
70
25461
7ef04742572c OSD menu support mouse selection.
ulion
parents: 25402
diff changeset
71 extern int use_menu;
7ef04742572c OSD menu support mouse selection.
ulion
parents: 25402
diff changeset
72
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
73 static void rescale_input_coordinates(int ix, int iy, double *dx, double *dy)
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
74 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
75 //remove the borders, if any, and rescale to the range [0,1],[0,1]
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
76 if (vo_fs) { //we are in full-screen mode
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
77 if (vo_screenwidth > vo_dwidth) //there are borders along the x axis
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
78 ix -= (vo_screenwidth - vo_dwidth) / 2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
79 if (vo_screenheight > vo_dheight) //there are borders along the y axis (usual way)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
80 iy -= (vo_screenheight - vo_dheight) / 2;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
81
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
82 if (ix < 0 || ix > vo_dwidth) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
83 *dx = *dy = -1.0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
84 return;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
85 } //we are on one of the borders
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
86 if (iy < 0 || iy > vo_dheight) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
87 *dx = *dy = -1.0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
88 return;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
89 } //we are on one of the borders
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
90 }
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
91
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
92 *dx = (double) ix / (double) vo_dwidth;
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
93 *dy = (double) iy / (double) vo_dheight;
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
94
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
95 mp_msg(MSGT_CPLAYER, MSGL_V,
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
96 "\r\nrescaled coordinates: %.3lf, %.3lf, screen (%d x %d), vodisplay: (%d, %d), fullscreen: %d\r\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
97 *dx, *dy, vo_screenwidth, vo_screenheight, vo_dwidth,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
98 vo_dheight, vo_fs);
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
99 }
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
100
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
101 static void update_global_sub_size(MPContext *mpctx)
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
102 {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
103 int i;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
104 int cnt = 0;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
105
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
106 // update number of demuxer sub streams
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
107 for (i = 0; i < MAX_S_STREAMS; i++)
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
108 if (mpctx->demuxer->s_streams[i])
31645
9666dd193544 Fix calculation of global_sub_size.
reimar
parents: 31612
diff changeset
109 cnt++;
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
110 if (cnt > mpctx->sub_counts[SUB_SOURCE_DEMUX])
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
111 mpctx->sub_counts[SUB_SOURCE_DEMUX] = cnt;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
112
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
113 // TODO: possibly adjust global_sub_pos
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
114
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
115 // update global size
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
116 mpctx->global_sub_size = 0;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
117 for (i = 0; i < SUB_SOURCES; i++)
31645
9666dd193544 Fix calculation of global_sub_size.
reimar
parents: 31612
diff changeset
118 mpctx->global_sub_size += mpctx->sub_counts[i];
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
119 }
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
120
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
121 static int sub_pos_by_source(MPContext *mpctx, int src)
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
122 {
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
123 int i, cnt = 0;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
124 if (src >= SUB_SOURCES || mpctx->sub_counts[src] == 0)
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
125 return -1;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
126 for (i = 0; i < src; i++)
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
127 cnt += mpctx->sub_counts[i];
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
128 return cnt;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
129 }
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
130
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
131 static int sub_source_and_index_by_pos(MPContext *mpctx, int *pos)
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
132 {
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
133 int start = 0;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
134 int i;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
135 for (i = 0; i < SUB_SOURCES; i++) {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
136 int cnt = mpctx->sub_counts[i];
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
137 if (*pos >= start && *pos < start + cnt) {
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
138 *pos -= start;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
139 return i;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
140 }
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
141 start += cnt;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
142 }
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
143 *pos = -1;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
144 return -1;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
145 }
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
146
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
147 static int sub_source_by_pos(MPContext *mpctx, int pos)
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
148 {
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
149 return sub_source_and_index_by_pos(mpctx, &pos);
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
150 }
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
151
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
152 static int sub_source_pos(MPContext *mpctx)
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
153 {
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
154 int pos = mpctx->global_sub_pos;
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
155 sub_source_and_index_by_pos(mpctx, &pos);
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
156 return pos;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
157 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
158
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
159 static int sub_source(MPContext *mpctx)
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
160 {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
161 return sub_source_by_pos(mpctx, mpctx->global_sub_pos);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
162 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
163
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
164 /**
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
165 * \brief Log the currently displayed subtitle to a file
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
166 *
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
167 * Logs the current or last displayed subtitle together with filename
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
168 * and time information to ~/.mplayer/subtitle_log
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
169 *
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
170 * Intended purpose is to allow convenient marking of bogus subtitles
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
171 * which need to be fixed while watching the movie.
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
172 */
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
173
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
174 static void log_sub(void)
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
175 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
176 char *fname;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
177 FILE *f;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
178 int i;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
179
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
180 if (subdata == NULL || vo_sub_last == NULL)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
181 return;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
182 fname = get_path("subtitle_log");
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
183 f = fopen(fname, "a");
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
184 if (!f)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
185 return;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
186 fprintf(f, "----------------------------------------------------------\n");
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
187 if (subdata->sub_uses_time) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
188 fprintf(f,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
189 "N: %s S: %02ld:%02ld:%02ld.%02ld E: %02ld:%02ld:%02ld.%02ld\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
190 filename, vo_sub_last->start / 360000,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
191 (vo_sub_last->start / 6000) % 60,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
192 (vo_sub_last->start / 100) % 60, vo_sub_last->start % 100,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
193 vo_sub_last->end / 360000, (vo_sub_last->end / 6000) % 60,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
194 (vo_sub_last->end / 100) % 60, vo_sub_last->end % 100);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
195 } else {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
196 fprintf(f, "N: %s S: %ld E: %ld\n", filename, vo_sub_last->start,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
197 vo_sub_last->end);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
198 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
199 for (i = 0; i < vo_sub_last->lines; i++) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
200 fprintf(f, "%s\n", vo_sub_last->text[i]);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
201 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
202 fclose(f);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
203 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
204
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
205
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
206 /// \defgroup Properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
207 ///@{
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
208
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
209 /// \defgroup GeneralProperties General properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
210 /// \ingroup Properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
211 ///@{
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
212
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
213 /// OSD level (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
214 static int mp_property_osdlevel(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
215 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
216 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
217 return m_property_choice(prop, action, arg, &osd_level);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
218 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
219
23727
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
220 /// Loop (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
221 static int mp_property_loop(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
222 MPContext *mpctx)
23727
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
223 {
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
224 switch (action) {
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
225 case M_PROPERTY_PRINT:
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
226 if (!arg) return M_PROPERTY_ERROR;
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
227 if (mpctx->loop_times < 0)
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
228 *(char**)arg = strdup("off");
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
229 else if (mpctx->loop_times == 0)
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
230 *(char**)arg = strdup("inf");
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
231 else
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
232 break;
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
233 return M_PROPERTY_OK;
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
234 }
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
235 return m_property_int_range(prop, action, arg, &mpctx->loop_times);
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
236 }
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
237
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
238 /// Playback speed (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
239 static int mp_property_playback_speed(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
240 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
241 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
242 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
243 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
244 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
245 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
246 M_PROPERTY_CLAMP(prop, *(float *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
247 playback_speed = *(float *) arg;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
248 build_afilter_chain(mpctx->sh_audio, &ao_data);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
249 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
250 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
251 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
252 playback_speed += (arg ? *(float *) arg : 0.1) *
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
253 (action == M_PROPERTY_STEP_DOWN ? -1 : 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
254 M_PROPERTY_CLAMP(prop, playback_speed);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
255 build_afilter_chain(mpctx->sh_audio, &ao_data);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
256 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
257 }
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
258 return m_property_float_range(prop, action, arg, &playback_speed);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
259 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
260
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
261 /// filename with path (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
262 static int mp_property_path(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
263 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
264 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
265 return m_property_string_ro(prop, action, arg, filename);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
266 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
267
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
268 /// filename without path (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
269 static int mp_property_filename(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
270 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
271 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
272 char *f;
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
273 if (!filename)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
274 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
275 if (((f = strrchr(filename, '/')) || (f = strrchr(filename, '\\'))) && f[1])
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
276 f++;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
277 else
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
278 f = filename;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
279 return m_property_string_ro(prop, action, arg, f);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
280 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
281
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
282 /// Demuxer name (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
283 static int mp_property_demuxer(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
284 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
285 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
286 if (!mpctx->demuxer)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
287 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
288 return m_property_string_ro(prop, action, arg,
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
289 (char *) mpctx->demuxer->desc->name);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
290 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
291
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
292 /// Position in the stream (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
293 static int mp_property_stream_pos(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
294 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
295 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
296 if (!mpctx->demuxer || !mpctx->demuxer->stream)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
297 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
298 if (!arg)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
299 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
300 switch (action) {
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
301 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
302 *(off_t *) arg = stream_tell(mpctx->demuxer->stream);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
303 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
304 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
305 M_PROPERTY_CLAMP(prop, *(off_t *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
306 stream_seek(mpctx->demuxer->stream, *(off_t *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
307 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
308 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
309 return M_PROPERTY_NOT_IMPLEMENTED;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
310 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
311
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
312 /// Stream start offset (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
313 static int mp_property_stream_start(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
314 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
315 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
316 if (!mpctx->demuxer || !mpctx->demuxer->stream)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
317 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
318 switch (action) {
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
319 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
320 *(off_t *) arg = mpctx->demuxer->stream->start_pos;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
321 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
322 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
323 return M_PROPERTY_NOT_IMPLEMENTED;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
324 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
325
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
326 /// Stream end offset (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
327 static int mp_property_stream_end(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
328 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
329 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
330 if (!mpctx->demuxer || !mpctx->demuxer->stream)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
331 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
332 switch (action) {
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
333 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
334 *(off_t *) arg = mpctx->demuxer->stream->end_pos;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
335 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
336 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
337 return M_PROPERTY_NOT_IMPLEMENTED;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
338 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
339
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
340 /// Stream length (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
341 static int mp_property_stream_length(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
342 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
343 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
344 if (!mpctx->demuxer || !mpctx->demuxer->stream)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
345 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
346 switch (action) {
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
347 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
348 *(off_t *) arg =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
349 mpctx->demuxer->stream->end_pos - mpctx->demuxer->stream->start_pos;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
350 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
351 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
352 return M_PROPERTY_NOT_IMPLEMENTED;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
353 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
354
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
355 /// Media length in seconds (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
356 static int mp_property_length(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
357 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
358 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
359 double len;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
360
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
361 if (!mpctx->demuxer ||
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
362 !(int) (len = demuxer_get_time_length(mpctx->demuxer)))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
363 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
364
23416
ae4237717601 Move the time printing code out of the length property.
albeu
parents: 23412
diff changeset
365 return m_property_time_ro(prop, action, arg, len);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
366 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
367
23418
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
368 /// Current position in percent (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
369 static int mp_property_percent_pos(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
370 void *arg, MPContext *mpctx) {
23418
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
371 int pos;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
372
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
373 if (!mpctx->demuxer)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
374 return M_PROPERTY_UNAVAILABLE;
23418
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
375
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
376 switch(action) {
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
377 case M_PROPERTY_SET:
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
378 if(!arg) return M_PROPERTY_ERROR;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
379 M_PROPERTY_CLAMP(prop, *(int*)arg);
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
380 pos = *(int*)arg;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
381 break;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
382 case M_PROPERTY_STEP_UP:
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
383 case M_PROPERTY_STEP_DOWN:
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
384 pos = demuxer_get_percent_pos(mpctx->demuxer);
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
385 pos += (arg ? *(int*)arg : 10) *
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
386 (action == M_PROPERTY_STEP_UP ? 1 : -1);
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
387 M_PROPERTY_CLAMP(prop, pos);
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
388 break;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
389 default:
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
390 return m_property_int_ro(prop, action, arg,
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
391 demuxer_get_percent_pos(mpctx->demuxer));
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
392 }
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
393
25884
f6697d25b040 More places that should use SEEK_ABSOLUTE / SEEK_FACTOR
reimar
parents: 25878
diff changeset
394 abs_seek_pos = SEEK_ABSOLUTE | SEEK_FACTOR;
23418
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
395 rel_seek_secs = pos / 100.0;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
396 return M_PROPERTY_OK;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
397 }
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
398
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
399 /// Current position in seconds (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
400 static int mp_property_time_pos(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
401 void *arg, MPContext *mpctx) {
23418
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
402 if (!(mpctx->sh_video || (mpctx->sh_audio && mpctx->audio_out)))
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
403 return M_PROPERTY_UNAVAILABLE;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
404
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
405 switch(action) {
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
406 case M_PROPERTY_SET:
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
407 if(!arg) return M_PROPERTY_ERROR;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
408 M_PROPERTY_CLAMP(prop, *(double*)arg);
25884
f6697d25b040 More places that should use SEEK_ABSOLUTE / SEEK_FACTOR
reimar
parents: 25878
diff changeset
409 abs_seek_pos = SEEK_ABSOLUTE;
23418
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
410 rel_seek_secs = *(double*)arg;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
411 return M_PROPERTY_OK;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
412 case M_PROPERTY_STEP_UP:
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
413 case M_PROPERTY_STEP_DOWN:
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
414 rel_seek_secs += (arg ? *(double*)arg : 10.0) *
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
415 (action == M_PROPERTY_STEP_UP ? 1.0 : -1.0);
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
416 return M_PROPERTY_OK;
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
417 }
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
418 return m_property_time_ro(prop, action, arg,
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
419 mpctx->sh_video ? mpctx->sh_video->pts :
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
420 playing_audio_pts(mpctx->sh_audio,
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
421 mpctx->d_audio,
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
422 mpctx->audio_out));
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
423 }
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
424
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
425 /// Current chapter (RW)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
426 static int mp_property_chapter(m_option_t *prop, int action, void *arg,
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
427 MPContext *mpctx)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
428 {
27382
aff29422c652 Fixes unsafe 'chapter' command with get_property() call.
ben
parents: 27381
diff changeset
429 int chapter = -1;
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
430 float next_pts = 0;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
431 int chapter_num;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
432 int step_all;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
433 char *chapter_name = NULL;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
434
27382
aff29422c652 Fixes unsafe 'chapter' command with get_property() call.
ben
parents: 27381
diff changeset
435 if (mpctx->demuxer)
27383
cc16875b72dd cosmetic: reindent after r27414
ben
parents: 27382
diff changeset
436 chapter = demuxer_get_current_chapter(mpctx->demuxer);
25462
3e033aabc9d2 Combine common code for check whether chapter is available.
ulion
parents: 25461
diff changeset
437 if (chapter < 0)
3e033aabc9d2 Combine common code for check whether chapter is available.
ulion
parents: 25461
diff changeset
438 return M_PROPERTY_UNAVAILABLE;
3e033aabc9d2 Combine common code for check whether chapter is available.
ulion
parents: 25461
diff changeset
439
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
440 switch (action) {
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
441 case M_PROPERTY_GET:
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
442 if (!arg)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
443 return M_PROPERTY_ERROR;
25402
f8f596bad3bd Modified for using chapter property for $(NAME:TEXT) or ?(NAME:TEXT).
ulion
parents: 25377
diff changeset
444 *(int *) arg = chapter;
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
445 return M_PROPERTY_OK;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
446 case M_PROPERTY_PRINT: {
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
447 if (!arg)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
448 return M_PROPERTY_ERROR;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
449 chapter_name = demuxer_chapter_display_name(mpctx->demuxer, chapter);
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
450 if (!chapter_name)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
451 return M_PROPERTY_UNAVAILABLE;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
452 *(char **) arg = chapter_name;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
453 return M_PROPERTY_OK;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
454 }
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
455 case M_PROPERTY_SET:
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
456 if (!arg)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
457 return M_PROPERTY_ERROR;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
458 M_PROPERTY_CLAMP(prop, *(int*)arg);
29365
794a26e68c2c Make set_property chapter 0-based like all other chapter-related
reimar
parents: 29333
diff changeset
459 step_all = *(int *)arg - chapter;
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
460 chapter += step_all;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
461 break;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
462 case M_PROPERTY_STEP_UP:
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
463 case M_PROPERTY_STEP_DOWN: {
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
464 step_all = (arg && *(int*)arg != 0 ? *(int*)arg : 1)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
465 * (action == M_PROPERTY_STEP_UP ? 1 : -1);
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
466 chapter += step_all;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
467 if (chapter < 0)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
468 chapter = 0;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
469 break;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
470 }
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
471 default:
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
472 return M_PROPERTY_NOT_IMPLEMENTED;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
473 }
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
474 rel_seek_secs = 0;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
475 abs_seek_pos = 0;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
476 chapter = demuxer_seek_chapter(mpctx->demuxer, chapter, 1,
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
477 &next_pts, &chapter_num, &chapter_name);
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
478 if (chapter >= 0) {
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
479 if (next_pts > -1.0) {
25884
f6697d25b040 More places that should use SEEK_ABSOLUTE / SEEK_FACTOR
reimar
parents: 25878
diff changeset
480 abs_seek_pos = SEEK_ABSOLUTE;
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
481 rel_seek_secs = next_pts;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
482 }
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
483 if (chapter_name)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
484 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
485 MSGTR_OSDChapter, chapter + 1, chapter_name);
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
486 }
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
487 else if (step_all > 0)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
488 rel_seek_secs = 1000000000.;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
489 else
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
490 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
491 MSGTR_OSDChapter, 0, MSGTR_Unknown);
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
492 if (chapter_name)
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
493 free(chapter_name);
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
494 return M_PROPERTY_OK;
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
495 }
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
496
27635
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
497 /// Number of chapters in file
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
498 static int mp_property_chapters(m_option_t *prop, int action, void *arg,
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
499 MPContext *mpctx)
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
500 {
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
501 if (!mpctx->demuxer)
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
502 return M_PROPERTY_UNAVAILABLE;
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
503 if (mpctx->demuxer->num_chapters == 0)
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
504 stream_control(mpctx->demuxer->stream, STREAM_CTRL_GET_NUM_CHAPTERS, &mpctx->demuxer->num_chapters);
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
505 return m_property_int_ro(prop, action, arg, mpctx->demuxer->num_chapters);
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
506 }
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
507
25577
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
508 /// Current dvd angle (RW)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
509 static int mp_property_angle(m_option_t *prop, int action, void *arg,
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
510 MPContext *mpctx)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
511 {
27380
843db879a6b2 Fixes unsafe 'angle' command with get_property() call.
ben
parents: 27379
diff changeset
512 int angle = -1;
25577
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
513 int angles;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
514 char *angle_name = NULL;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
515
27380
843db879a6b2 Fixes unsafe 'angle' command with get_property() call.
ben
parents: 27379
diff changeset
516 if (mpctx->demuxer)
27381
03f861e679a8 cosmetic: reindent after r27412
ben
parents: 27380
diff changeset
517 angle = demuxer_get_current_angle(mpctx->demuxer);
25577
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
518 if (angle < 0)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
519 return M_PROPERTY_UNAVAILABLE;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
520 angles = demuxer_angles_count(mpctx->demuxer);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
521 if (angles <= 1)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
522 return M_PROPERTY_UNAVAILABLE;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
523
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
524 switch (action) {
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
525 case M_PROPERTY_GET:
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
526 if (!arg)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
527 return M_PROPERTY_ERROR;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
528 *(int *) arg = angle;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
529 return M_PROPERTY_OK;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
530 case M_PROPERTY_PRINT: {
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
531 if (!arg)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
532 return M_PROPERTY_ERROR;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
533 angle_name = calloc(1, 64);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
534 if (!angle_name)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
535 return M_PROPERTY_UNAVAILABLE;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
536 snprintf(angle_name, 64, "%d/%d", angle, angles);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
537 *(char **) arg = angle_name;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
538 return M_PROPERTY_OK;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
539 }
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
540 case M_PROPERTY_SET:
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
541 if (!arg)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
542 return M_PROPERTY_ERROR;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
543 angle = *(int *)arg;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
544 M_PROPERTY_CLAMP(prop, angle);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
545 break;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
546 case M_PROPERTY_STEP_UP:
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
547 case M_PROPERTY_STEP_DOWN: {
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
548 int step = 0;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
549 if(arg)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
550 step = *(int*)arg;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
551 if(!step)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
552 step = 1;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
553 step *= (action == M_PROPERTY_STEP_UP ? 1 : -1);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
554 angle += step;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
555 if (angle < 1) //cycle
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
556 angle = angles;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
557 break;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
558 }
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
559 default:
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
560 return M_PROPERTY_NOT_IMPLEMENTED;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
561 }
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
562 angle = demuxer_set_angle(mpctx->demuxer, angle);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
563 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
564 MSGTR_OSDAngle, angle, angles);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
565 if (angle_name)
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
566 free(angle_name);
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
567 return M_PROPERTY_OK;
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
568 }
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
569
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
570 /// Demuxer meta data
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
571 static int mp_property_metadata(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
572 MPContext *mpctx) {
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
573 m_property_action_t* ka;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
574 char* meta;
31200
01540ca7037d Mark key_type structure as const.
diego
parents: 31156
diff changeset
575 static const m_option_t key_type =
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
576 { "metadata", NULL, CONF_TYPE_STRING, 0, 0, 0, NULL };
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
577 if (!mpctx->demuxer)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
578 return M_PROPERTY_UNAVAILABLE;
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
579
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
580 switch(action) {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
581 case M_PROPERTY_GET:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
582 if(!arg) return M_PROPERTY_ERROR;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
583 *(char***)arg = mpctx->demuxer->info;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
584 return M_PROPERTY_OK;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
585 case M_PROPERTY_KEY_ACTION:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
586 if(!arg) return M_PROPERTY_ERROR;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
587 ka = arg;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
588 if(!(meta = demux_info_get(mpctx->demuxer,ka->key)))
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
589 return M_PROPERTY_UNKNOWN;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
590 switch(ka->action) {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
591 case M_PROPERTY_GET:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
592 if(!ka->arg) return M_PROPERTY_ERROR;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
593 *(char**)ka->arg = meta;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
594 return M_PROPERTY_OK;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
595 case M_PROPERTY_GET_TYPE:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
596 if(!ka->arg) return M_PROPERTY_ERROR;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
597 *(m_option_t**)ka->arg = &key_type;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
598 return M_PROPERTY_OK;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
599 }
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
600 }
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
601 return M_PROPERTY_NOT_IMPLEMENTED;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
602 }
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
603
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
604 static int mp_property_pause(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
605 MPContext *mpctx)
27648
427fec163870 Add a "pause" property to allow checking if MPlayer is paused.
reimar
parents: 27635
diff changeset
606 {
427fec163870 Add a "pause" property to allow checking if MPlayer is paused.
reimar
parents: 27635
diff changeset
607 return m_property_flag_ro(prop, action, arg, mpctx->osd_function == OSD_PAUSE);
427fec163870 Add a "pause" property to allow checking if MPlayer is paused.
reimar
parents: 27635
diff changeset
608 }
427fec163870 Add a "pause" property to allow checking if MPlayer is paused.
reimar
parents: 27635
diff changeset
609
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
610
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
611 ///@}
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
612
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
613 /// \defgroup AudioProperties Audio properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
614 /// \ingroup Properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
615 ///@{
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
616
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
617 /// Volume (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
618 static int mp_property_volume(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
619 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
620 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
621
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
622 if (!mpctx->sh_audio)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
623 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
624
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
625 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
626 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
627 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
628 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
629 mixer_getbothvolume(&mpctx->mixer, arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
630 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
631 case M_PROPERTY_PRINT:{
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
632 float vol;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
633 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
634 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
635 mixer_getbothvolume(&mpctx->mixer, &vol);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
636 return m_property_float_range(prop, action, arg, &vol);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
637 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
638 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
639 case M_PROPERTY_STEP_DOWN:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
640 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
641 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
642 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
643 return M_PROPERTY_NOT_IMPLEMENTED;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
644 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
645
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
646 if (mpctx->edl_muted)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
647 return M_PROPERTY_DISABLED;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
648 mpctx->user_muted = 0;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
649
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
650 switch (action) {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
651 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
652 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
653 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
654 M_PROPERTY_CLAMP(prop, *(float *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
655 mixer_setvolume(&mpctx->mixer, *(float *) arg, *(float *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
656 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
657 case M_PROPERTY_STEP_UP:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
658 if (arg && *(float *) arg <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
659 mixer_decvolume(&mpctx->mixer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
660 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
661 mixer_incvolume(&mpctx->mixer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
662 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
663 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
664 if (arg && *(float *) arg <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
665 mixer_incvolume(&mpctx->mixer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
666 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
667 mixer_decvolume(&mpctx->mixer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
668 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
669 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
670 return M_PROPERTY_NOT_IMPLEMENTED;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
671 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
672
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
673 /// Mute (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
674 static int mp_property_mute(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
675 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
676 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
677
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
678 if (!mpctx->sh_audio)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
679 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
680
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
681 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
682 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
683 if (mpctx->edl_muted)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
684 return M_PROPERTY_DISABLED;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
685 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
686 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
687 if ((!!*(int *) arg) != mpctx->mixer.muted)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
688 mixer_mute(&mpctx->mixer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
689 mpctx->user_muted = mpctx->mixer.muted;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
690 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
691 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
692 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
693 if (mpctx->edl_muted)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
694 return M_PROPERTY_DISABLED;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
695 mixer_mute(&mpctx->mixer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
696 mpctx->user_muted = mpctx->mixer.muted;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
697 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
698 case M_PROPERTY_PRINT:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
699 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
700 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
701 if (mpctx->edl_muted) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
702 *(char **) arg = strdup(MSGTR_EnabledEdl);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
703 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
704 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
705 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
706 return m_property_flag(prop, action, arg, &mpctx->mixer.muted);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
707
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
708 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
709 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
710
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
711 /// Audio delay (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
712 static int mp_property_audio_delay(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
713 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
714 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
715 if (!(mpctx->sh_audio && mpctx->sh_video))
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
716 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
717 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
718 case M_PROPERTY_SET:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
719 case M_PROPERTY_STEP_UP:
25567
ca62d466a9fc Fix property audio_delay bug when step up/down with arg value NULL.
ulion
parents: 25495
diff changeset
720 case M_PROPERTY_STEP_DOWN: {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
721 int ret;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
722 float delay = audio_delay;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
723 ret = m_property_delay(prop, action, arg, &audio_delay);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
724 if (ret != M_PROPERTY_OK)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
725 return ret;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
726 if (mpctx->sh_audio)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
727 mpctx->delay -= audio_delay - delay;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
728 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
729 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
730 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
731 return m_property_delay(prop, action, arg, &audio_delay);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
732 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
733 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
734
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
735 /// Audio codec tag (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
736 static int mp_property_audio_format(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
737 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
738 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
739 if (!mpctx->sh_audio)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
740 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
741 return m_property_int_ro(prop, action, arg, mpctx->sh_audio->format);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
742 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
743
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
744 /// Audio codec name (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
745 static int mp_property_audio_codec(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
746 void *arg, MPContext *mpctx)
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
747 {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
748 if (!mpctx->sh_audio || !mpctx->sh_audio->codec)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
749 return M_PROPERTY_UNAVAILABLE;
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
750 return m_property_string_ro(prop, action, arg, mpctx->sh_audio->codec->name);
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
751 }
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
752
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
753 /// Audio bitrate (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
754 static int mp_property_audio_bitrate(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
755 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
756 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
757 if (!mpctx->sh_audio)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
758 return M_PROPERTY_UNAVAILABLE;
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
759 return m_property_bitrate(prop, action, arg, mpctx->sh_audio->i_bps);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
760 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
761
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
762 /// Samplerate (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
763 static int mp_property_samplerate(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
764 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
765 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
766 if (!mpctx->sh_audio)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
767 return M_PROPERTY_UNAVAILABLE;
23396
8412921b363c Add PRINT to the samplerate property.
albeu
parents: 23394
diff changeset
768 switch(action) {
8412921b363c Add PRINT to the samplerate property.
albeu
parents: 23394
diff changeset
769 case M_PROPERTY_PRINT:
8412921b363c Add PRINT to the samplerate property.
albeu
parents: 23394
diff changeset
770 if(!arg) return M_PROPERTY_ERROR;
8412921b363c Add PRINT to the samplerate property.
albeu
parents: 23394
diff changeset
771 *(char**)arg = malloc(16);
8412921b363c Add PRINT to the samplerate property.
albeu
parents: 23394
diff changeset
772 sprintf(*(char**)arg,"%d kHz",mpctx->sh_audio->samplerate/1000);
8412921b363c Add PRINT to the samplerate property.
albeu
parents: 23394
diff changeset
773 return M_PROPERTY_OK;
8412921b363c Add PRINT to the samplerate property.
albeu
parents: 23394
diff changeset
774 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
775 return m_property_int_ro(prop, action, arg, mpctx->sh_audio->samplerate);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
776 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
777
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
778 /// Number of channels (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
779 static int mp_property_channels(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
780 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
781 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
782 if (!mpctx->sh_audio)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
783 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
784 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
785 case M_PROPERTY_PRINT:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
786 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
787 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
788 switch (mpctx->sh_audio->channels) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
789 case 1:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
790 *(char **) arg = strdup("mono");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
791 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
792 case 2:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
793 *(char **) arg = strdup("stereo");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
794 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
795 default:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
796 *(char **) arg = malloc(32);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
797 sprintf(*(char **) arg, "%d channels", mpctx->sh_audio->channels);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
798 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
799 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
800 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
801 return m_property_int_ro(prop, action, arg, mpctx->sh_audio->channels);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
802 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
803
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
804 /// Balance (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
805 static int mp_property_balance(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
806 MPContext *mpctx)
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
807 {
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
808 float bal;
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
809
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
810 if (!mpctx->sh_audio || mpctx->sh_audio->channels < 2)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
811 return M_PROPERTY_UNAVAILABLE;
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
812
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
813 switch (action) {
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
814 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
815 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
816 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
817 mixer_getbalance(&mpctx->mixer, arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
818 return M_PROPERTY_OK;
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
819 case M_PROPERTY_PRINT: {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
820 char** str = arg;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
821 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
822 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
823 mixer_getbalance(&mpctx->mixer, &bal);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
824 if (bal == 0.f)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
825 *str = strdup("center");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
826 else if (bal == -1.f)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
827 *str = strdup("left only");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
828 else if (bal == 1.f)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
829 *str = strdup("right only");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
830 else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
831 unsigned right = (bal + 1.f) / 2.f * 100.f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
832 *str = malloc(sizeof("left xxx%, right xxx%"));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
833 sprintf(*str, "left %d%%, right %d%%", 100 - right, right);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
834 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
835 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
836 }
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
837 case M_PROPERTY_STEP_UP:
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
838 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
839 mixer_getbalance(&mpctx->mixer, &bal);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
840 bal += (arg ? *(float*)arg : .1f) *
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
841 (action == M_PROPERTY_STEP_UP ? 1.f : -1.f);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
842 M_PROPERTY_CLAMP(prop, bal);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
843 mixer_setbalance(&mpctx->mixer, bal);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
844 return M_PROPERTY_OK;
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
845 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
846 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
847 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
848 M_PROPERTY_CLAMP(prop, *(float*)arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
849 mixer_setbalance(&mpctx->mixer, *(float*)arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
850 return M_PROPERTY_OK;
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
851 }
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
852 return M_PROPERTY_NOT_IMPLEMENTED;
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
853 }
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
854
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
855 /// Selected audio id (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
856 static int mp_property_audio(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
857 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
858 {
30082
446f2ea148a4 Return the actually playing audio/video id for get_property, not the one
reimar
parents: 30080
diff changeset
859 int current_id, tmp;
30079
4bd9b89b2b85 Use the same condition to decide if the audio/video id property is
reimar
parents: 30078
diff changeset
860 if (!mpctx->demuxer || !mpctx->demuxer->audio)
4bd9b89b2b85 Use the same condition to decide if the audio/video id property is
reimar
parents: 30078
diff changeset
861 return M_PROPERTY_UNAVAILABLE;
30082
446f2ea148a4 Return the actually playing audio/video id for get_property, not the one
reimar
parents: 30080
diff changeset
862 current_id = mpctx->demuxer->audio->id;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
863
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
864 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
865 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
866 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
867 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
868 *(int *) arg = current_id;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
869 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
870 case M_PROPERTY_PRINT:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
871 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
872 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
873
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
874 if (current_id < 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
875 *(char **) arg = strdup(MSGTR_Disabled);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
876 else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
877 char lang[40] = MSGTR_Unknown;
26083
19fa7a56ed04 Fill sh_audio_t.lang in lavf and mkv demuxers. Use it for printing audio track
eugeni
parents: 25962
diff changeset
878 sh_audio_t* sh = mpctx->sh_audio;
19fa7a56ed04 Fill sh_audio_t.lang in lavf and mkv demuxers. Use it for printing audio track
eugeni
parents: 25962
diff changeset
879 if (sh && sh->lang)
19fa7a56ed04 Fill sh_audio_t.lang in lavf and mkv demuxers. Use it for printing audio track
eugeni
parents: 25962
diff changeset
880 av_strlcpy(lang, sh->lang, 40);
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
881 #ifdef CONFIG_DVDREAD
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
882 else if (mpctx->stream->type == STREAMTYPE_DVD) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
883 int code = dvd_lang_from_aid(mpctx->stream, current_id);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
884 if (code) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
885 lang[0] = code >> 8;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
886 lang[1] = code;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
887 lang[2] = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
888 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
889 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
890 #endif
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
891
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
892 #ifdef CONFIG_DVDNAV
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
893 else if (mpctx->stream->type == STREAMTYPE_DVDNAV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
894 mp_dvdnav_lang_from_aid(mpctx->stream, current_id, lang);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
895 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
896 *(char **) arg = malloc(64);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
897 snprintf(*(char **) arg, 64, "(%d) %s", current_id, lang);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
898 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
899 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
900
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
901 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
902 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
903 if (action == M_PROPERTY_SET && arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
904 tmp = *((int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
905 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
906 tmp = -1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
907 audio_id = demuxer_switch_audio(mpctx->demuxer, tmp);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
908 if (audio_id == -2
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
909 || (audio_id > -1
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
910 && mpctx->demuxer->audio->id != current_id && current_id != -2))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
911 uninit_player(INITIALIZED_AO | INITIALIZED_ACODEC);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
912 if (audio_id > -1 && mpctx->demuxer->audio->id != current_id) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
913 sh_audio_t *sh2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
914 sh2 = mpctx->demuxer->a_streams[mpctx->demuxer->audio->id];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
915 if (sh2) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
916 sh2->ds = mpctx->demuxer->audio;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
917 mpctx->sh_audio = sh2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
918 reinit_audio_chain();
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
919 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
920 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
921 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_TRACK=%d\n", audio_id);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
922 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
923 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
924 return M_PROPERTY_NOT_IMPLEMENTED;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
925 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
926
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
927 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
928
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
929 /// Selected video id (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
930 static int mp_property_video(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
931 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
932 {
30082
446f2ea148a4 Return the actually playing audio/video id for get_property, not the one
reimar
parents: 30080
diff changeset
933 int current_id, tmp;
30079
4bd9b89b2b85 Use the same condition to decide if the audio/video id property is
reimar
parents: 30078
diff changeset
934 if (!mpctx->demuxer || !mpctx->demuxer->video)
4bd9b89b2b85 Use the same condition to decide if the audio/video id property is
reimar
parents: 30078
diff changeset
935 return M_PROPERTY_UNAVAILABLE;
30082
446f2ea148a4 Return the actually playing audio/video id for get_property, not the one
reimar
parents: 30080
diff changeset
936 current_id = mpctx->demuxer->video->id;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
937
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
938 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
939 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
940 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
941 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
942 *(int *) arg = current_id;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
943 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
944 case M_PROPERTY_PRINT:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
945 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
946 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
947
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
948 if (current_id < 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
949 *(char **) arg = strdup(MSGTR_Disabled);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
950 else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
951 char lang[40] = MSGTR_Unknown;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
952 *(char **) arg = malloc(64);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
953 snprintf(*(char **) arg, 64, "(%d) %s", current_id, lang);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
954 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
955 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
956
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
957 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
958 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
959 if (action == M_PROPERTY_SET && arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
960 tmp = *((int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
961 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
962 tmp = -1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
963 video_id = demuxer_switch_video(mpctx->demuxer, tmp);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
964 if (video_id == -2
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
965 || (video_id > -1 && mpctx->demuxer->video->id != current_id
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
966 && current_id != -2))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
967 uninit_player(INITIALIZED_VCODEC |
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
968 (fixed_vo && video_id != -2 ? 0 : INITIALIZED_VO));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
969 if (video_id > -1 && mpctx->demuxer->video->id != current_id) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
970 sh_video_t *sh2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
971 sh2 = mpctx->demuxer->v_streams[mpctx->demuxer->video->id];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
972 if (sh2) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
973 sh2->ds = mpctx->demuxer->video;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
974 mpctx->sh_video = sh2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
975 reinit_video_chain();
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
976 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
977 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
978 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_TRACK=%d\n", video_id);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
979 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
980
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
981 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
982 return M_PROPERTY_NOT_IMPLEMENTED;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
983 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
984 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
985
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
986 static int mp_property_program(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
987 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
988 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
989 demux_program_t prog;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
990
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
991 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
992 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
993 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
994 if (action == M_PROPERTY_SET && arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
995 prog.progid = *((int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
996 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
997 prog.progid = -1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
998 if (demux_control
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
999 (mpctx->demuxer, DEMUXER_CTRL_IDENTIFY_PROGRAM,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1000 &prog) == DEMUXER_CTRL_NOTIMPL)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1001 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1002
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1003 if (prog.aid < 0 && prog.vid < 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1004 mp_msg(MSGT_CPLAYER, MSGL_ERR, "Selected program contains no audio or video streams!\n");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1005 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1006 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1007 mp_property_do("switch_audio", M_PROPERTY_SET, &prog.aid, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1008 mp_property_do("switch_video", M_PROPERTY_SET, &prog.vid, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1009 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1010
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1011 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1012 return M_PROPERTY_NOT_IMPLEMENTED;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1013 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1014 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1015
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1016 ///@}
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1017
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1018 /// \defgroup VideoProperties Video properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1019 /// \ingroup Properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1020 ///@{
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1021
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1022 /// Fullscreen state (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1023 static int mp_property_fullscreen(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1024 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1025 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1026
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1027 if (!mpctx->video_out)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1028 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1029
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1030 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1031 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1032 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1033 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1034 M_PROPERTY_CLAMP(prop, *(int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1035 if (vo_fs == !!*(int *) arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1036 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1037 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1038 case M_PROPERTY_STEP_DOWN:
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 27341
diff changeset
1039 #ifdef CONFIG_GUI
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1040 if (use_gui)
31312
0b7792622c88 Remove Gui-specific slave commands and associated key-bindings and other code.
reimar
parents: 31200
diff changeset
1041 guiGetEvent(guiIEvent, (char *) MP_CMD_VO_FULLSCREEN);
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1042 else
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1043 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1044 if (vo_config_count)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1045 mpctx->video_out->control(VOCTRL_FULLSCREEN, 0);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1046 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1047 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1048 return m_property_flag(prop, action, arg, &vo_fs);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1049 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1050 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1051
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1052 static int mp_property_deinterlace(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1053 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1054 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1055 int deinterlace;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1056 vf_instance_t *vf;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1057 if (!mpctx->sh_video || !mpctx->sh_video->vfilter)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1058 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1059 vf = mpctx->sh_video->vfilter;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1060 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1061 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1062 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1063 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1064 vf->control(vf, VFCTRL_GET_DEINTERLACE, arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1065 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1066 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1067 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1068 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1069 M_PROPERTY_CLAMP(prop, *(int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1070 vf->control(vf, VFCTRL_SET_DEINTERLACE, arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1071 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1072 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1073 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1074 vf->control(vf, VFCTRL_GET_DEINTERLACE, &deinterlace);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1075 deinterlace = !deinterlace;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1076 vf->control(vf, VFCTRL_SET_DEINTERLACE, &deinterlace);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1077 set_osd_msg(OSD_MSG_SPEED, 1, osd_duration, MSGTR_OSDDeinterlace,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1078 deinterlace ? MSGTR_Enabled : MSGTR_Disabled);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1079 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1080 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1081 return M_PROPERTY_NOT_IMPLEMENTED;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1082 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1083
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1084 /// Panscan (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1085 static int mp_property_panscan(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1086 MPContext *mpctx)
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1087 {
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1088
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1089 if (!mpctx->video_out
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1090 || mpctx->video_out->control(VOCTRL_GET_PANSCAN, NULL) != VO_TRUE)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1091 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1092
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1093 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1094 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1095 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1096 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1097 M_PROPERTY_CLAMP(prop, *(float *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1098 vo_panscan = *(float *) arg;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1099 mpctx->video_out->control(VOCTRL_SET_PANSCAN, NULL);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1100 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1101 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1102 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1103 vo_panscan += (arg ? *(float *) arg : 0.1) *
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1104 (action == M_PROPERTY_STEP_DOWN ? -1 : 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1105 if (vo_panscan > 1)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1106 vo_panscan = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1107 else if (vo_panscan < 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1108 vo_panscan = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1109 mpctx->video_out->control(VOCTRL_SET_PANSCAN, NULL);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1110 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1111 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1112 return m_property_float_range(prop, action, arg, &vo_panscan);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1113 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1114 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1115
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1116 /// Helper to set vo flags.
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1117 /** \ingroup PropertyImplHelper
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1118 */
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1119 static int mp_property_vo_flag(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1120 int vo_ctrl, int *vo_var, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1121 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1122
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1123 if (!mpctx->video_out)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1124 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1125
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1126 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1127 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1128 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1129 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1130 M_PROPERTY_CLAMP(prop, *(int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1131 if (*vo_var == !!*(int *) arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1132 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1133 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1134 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1135 if (vo_config_count)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1136 mpctx->video_out->control(vo_ctrl, 0);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1137 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1138 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1139 return m_property_flag(prop, action, arg, vo_var);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1140 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1141 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1142
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1143 /// Window always on top (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1144 static int mp_property_ontop(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1145 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1146 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1147 return mp_property_vo_flag(prop, action, arg, VOCTRL_ONTOP, &vo_ontop,
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1148 mpctx);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1149 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1150
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1151 /// Display in the root window (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1152 static int mp_property_rootwin(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1153 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1154 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1155 return mp_property_vo_flag(prop, action, arg, VOCTRL_ROOTWIN,
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1156 &vo_rootwin, mpctx);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1157 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1158
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1159 /// Show window borders (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1160 static int mp_property_border(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1161 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1162 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1163 return mp_property_vo_flag(prop, action, arg, VOCTRL_BORDER,
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1164 &vo_border, mpctx);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1165 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1166
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1167 /// Framedropping state (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1168 static int mp_property_framedropping(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1169 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1170 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1171
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1172 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1173 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1174
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1175 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1176 case M_PROPERTY_PRINT:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1177 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1178 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1179 *(char **) arg = strdup(frame_dropping == 1 ? MSGTR_Enabled :
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1180 (frame_dropping == 2 ? MSGTR_HardFrameDrop :
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1181 MSGTR_Disabled));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1182 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1183 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1184 return m_property_choice(prop, action, arg, &frame_dropping);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1185 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1186 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1187
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1188 /// Color settings, try to use vf/vo then fall back on TV. (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1189 static int mp_property_gamma(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1190 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1191 {
25465
6b9447dc7590 Check availability before check argument for getting gamma properties.
ulion
parents: 25464
diff changeset
1192 int *gamma = prop->priv, r, val;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1193
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1194 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1195 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1196
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1197 if (gamma[0] == 1000) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1198 gamma[0] = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1199 get_video_colors(mpctx->sh_video, prop->name, gamma);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1200 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1201
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1202 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1203 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1204 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1205 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1206 M_PROPERTY_CLAMP(prop, *(int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1207 *gamma = *(int *) arg;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1208 r = set_video_colors(mpctx->sh_video, prop->name, *gamma);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1209 if (r <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1210 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1211 return r;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1212 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1213 if (get_video_colors(mpctx->sh_video, prop->name, &val) > 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1214 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1215 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1216 *(int *)arg = val;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1217 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1218 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1219 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1220 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1221 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1222 *gamma += (arg ? *(int *) arg : 1) *
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1223 (action == M_PROPERTY_STEP_DOWN ? -1 : 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1224 M_PROPERTY_CLAMP(prop, *gamma);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1225 r = set_video_colors(mpctx->sh_video, prop->name, *gamma);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1226 if (r <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1227 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1228 return r;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1229 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1230 return M_PROPERTY_NOT_IMPLEMENTED;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1231 }
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1232
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1233 #ifdef CONFIG_TV
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1234 if (mpctx->demuxer->type == DEMUXER_TYPE_TV) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1235 int l = strlen(prop->name);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1236 char tv_prop[3 + l + 1];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1237 sprintf(tv_prop, "tv_%s", prop->name);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1238 return mp_property_do(tv_prop, action, arg, mpctx);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1239 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1240 #endif
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1241
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1242 return M_PROPERTY_UNAVAILABLE;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1243 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1244
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1245 /// VSync (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1246 static int mp_property_vsync(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1247 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1248 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1249 return m_property_flag(prop, action, arg, &vo_vsync);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1250 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1251
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1252 /// Video codec tag (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1253 static int mp_property_video_format(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1254 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1255 {
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1256 char* meta;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1257 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1258 return M_PROPERTY_UNAVAILABLE;
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1259 switch(action) {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1260 case M_PROPERTY_PRINT:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1261 if (!arg)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1262 return M_PROPERTY_ERROR;
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1263 switch(mpctx->sh_video->format) {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1264 case 0x10000001:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1265 meta = strdup ("mpeg1"); break;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1266 case 0x10000002:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1267 meta = strdup ("mpeg2"); break;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1268 case 0x10000004:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1269 meta = strdup ("mpeg4"); break;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1270 case 0x10000005:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1271 meta = strdup ("h264"); break;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1272 default:
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1273 if(mpctx->sh_video->format >= 0x20202020) {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1274 meta = malloc(5);
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1275 sprintf (meta, "%.4s", (char *) &mpctx->sh_video->format);
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1276 } else {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1277 meta = malloc(20);
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1278 sprintf (meta, "0x%08X", mpctx->sh_video->format);
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1279 }
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1280 }
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1281 *(char**)arg = meta;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1282 return M_PROPERTY_OK;
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1283 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1284 return m_property_int_ro(prop, action, arg, mpctx->sh_video->format);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1285 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1286
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1287 /// Video codec name (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1288 static int mp_property_video_codec(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1289 void *arg, MPContext *mpctx)
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1290 {
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1291 if (!mpctx->sh_video || !mpctx->sh_video->codec)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1292 return M_PROPERTY_UNAVAILABLE;
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1293 return m_property_string_ro(prop, action, arg, mpctx->sh_video->codec->name);
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1294 }
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1295
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1296
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1297 /// Video bitrate (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1298 static int mp_property_video_bitrate(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1299 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1300 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1301 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1302 return M_PROPERTY_UNAVAILABLE;
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
1303 return m_property_bitrate(prop, action, arg, mpctx->sh_video->i_bps);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1304 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1305
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1306 /// Video display width (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1307 static int mp_property_width(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1308 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1309 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1310 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1311 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1312 return m_property_int_ro(prop, action, arg, mpctx->sh_video->disp_w);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1313 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1314
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1315 /// Video display height (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1316 static int mp_property_height(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1317 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1318 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1319 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1320 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1321 return m_property_int_ro(prop, action, arg, mpctx->sh_video->disp_h);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1322 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1323
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1324 /// Video fps (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1325 static int mp_property_fps(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1326 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1327 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1328 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1329 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1330 return m_property_float_ro(prop, action, arg, mpctx->sh_video->fps);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1331 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1332
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1333 /// Video aspect (RO)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1334 static int mp_property_aspect(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1335 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1336 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1337 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1338 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1339 return m_property_float_ro(prop, action, arg, mpctx->sh_video->aspect);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1340 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1341
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1342 ///@}
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1343
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1344 /// \defgroup SubProprties Subtitles properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1345 /// \ingroup Properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1346 ///@{
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1347
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1348 /// Text subtitle position (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1349 static int mp_property_sub_pos(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1350 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1351 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1352 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1353 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1354 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1355 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1356 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1357 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1358 vo_osd_changed(OSDTYPE_SUBTITLE);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1359 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1360 return m_property_int_range(prop, action, arg, &sub_pos);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1361 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1362 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1363
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1364 /// Selected subtitles (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1365 static int mp_property_sub(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1366 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1367 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1368 demux_stream_t *const d_sub = mpctx->d_sub;
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1369 int global_sub_size;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1370 int source = -1, reset_spu = 0;
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1371 int source_pos = -1;
29668
ecc719c6d7a9 Make update_subtitles work without sh_video for text subtitles.
reimar
parents: 29617
diff changeset
1372 double pts = 0;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1373 char *sub_name;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1374
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1375 update_global_sub_size(mpctx);
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1376 global_sub_size = mpctx->global_sub_size;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1377 if (global_sub_size <= 0)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1378 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1379
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1380 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1381 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1382 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1383 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1384 *(int *) arg = mpctx->global_sub_pos;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1385 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1386 case M_PROPERTY_PRINT:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1387 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1388 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1389 *(char **) arg = malloc(64);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1390 (*(char **) arg)[63] = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1391 sub_name = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1392 if (subdata)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1393 sub_name = subdata->filename;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1394 #ifdef CONFIG_ASS
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1395 if (ass_track && ass_track->name)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1396 sub_name = ass_track->name;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1397 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1398 if (sub_name) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1399 char *tmp, *tmp2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1400 tmp = sub_name;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1401 if ((tmp2 = strrchr(tmp, '/')))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1402 tmp = tmp2 + 1;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1403
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1404 snprintf(*(char **) arg, 63, "(%d) %s%s",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1405 mpctx->set_of_sub_pos + 1,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1406 strlen(tmp) < 20 ? "" : "...",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1407 strlen(tmp) < 20 ? tmp : tmp + strlen(tmp) - 19);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1408 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1409 }
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1410 #ifdef CONFIG_DVDNAV
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1411 if (mpctx->stream->type == STREAMTYPE_DVDNAV) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1412 if (vo_spudec && dvdsub_id >= 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1413 unsigned char lang[3];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1414 if (mp_dvdnav_lang_from_sid(mpctx->stream, dvdsub_id, lang)) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1415 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1416 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1417 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1418 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1419 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1420 #endif
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1421
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1422 if ((mpctx->demuxer->type == DEMUXER_TYPE_MATROSKA
26084
ec5749eb6f5f Fill sh_sub_t.lang in lavf, mkv and ogg demuxers. Use it for printing subtitle
eugeni
parents: 26083
diff changeset
1423 || mpctx->demuxer->type == DEMUXER_TYPE_LAVF
27457
16a2329e8776 handle the lavfpref demuxer in the same way as the lavf one
aurel
parents: 27393
diff changeset
1424 || mpctx->demuxer->type == DEMUXER_TYPE_LAVF_PREFERRED
26084
ec5749eb6f5f Fill sh_sub_t.lang in lavf, mkv and ogg demuxers. Use it for printing subtitle
eugeni
parents: 26083
diff changeset
1425 || mpctx->demuxer->type == DEMUXER_TYPE_OGG)
ec5749eb6f5f Fill sh_sub_t.lang in lavf, mkv and ogg demuxers. Use it for printing subtitle
eugeni
parents: 26083
diff changeset
1426 && d_sub && d_sub->sh && dvdsub_id >= 0) {
ec5749eb6f5f Fill sh_sub_t.lang in lavf, mkv and ogg demuxers. Use it for printing subtitle
eugeni
parents: 26083
diff changeset
1427 const char* lang = ((sh_sub_t*)d_sub->sh)->lang;
ec5749eb6f5f Fill sh_sub_t.lang in lavf, mkv and ogg demuxers. Use it for printing subtitle
eugeni
parents: 26083
diff changeset
1428 if (!lang) lang = MSGTR_Unknown;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1429 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1430 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1431 }
26084
ec5749eb6f5f Fill sh_sub_t.lang in lavf, mkv and ogg demuxers. Use it for printing subtitle
eugeni
parents: 26083
diff changeset
1432
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1433 if (vo_vobsub && vobsub_id >= 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1434 const char *language = MSGTR_Unknown;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1435 language = vobsub_get_id(vo_vobsub, (unsigned int) vobsub_id);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1436 snprintf(*(char **) arg, 63, "(%d) %s",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1437 vobsub_id, language ? language : MSGTR_Unknown);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1438 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1439 }
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1440 #ifdef CONFIG_DVDREAD
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1441 if (vo_spudec && mpctx->stream->type == STREAMTYPE_DVD
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1442 && dvdsub_id >= 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1443 char lang[3];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1444 int code = dvd_lang_from_sid(mpctx->stream, dvdsub_id);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1445 lang[0] = code >> 8;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1446 lang[1] = code;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1447 lang[2] = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1448 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1449 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1450 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1451 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1452 if (dvdsub_id >= 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1453 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, MSGTR_Unknown);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1454 return M_PROPERTY_OK;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1455 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1456 snprintf(*(char **) arg, 63, MSGTR_Disabled);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1457 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1458
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1459 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1460 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1461 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1462 if (*(int *) arg < -1)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1463 *(int *) arg = -1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1464 else if (*(int *) arg >= global_sub_size)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1465 *(int *) arg = global_sub_size - 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1466 mpctx->global_sub_pos = *(int *) arg;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1467 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1468 case M_PROPERTY_STEP_UP:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1469 mpctx->global_sub_pos += 2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1470 mpctx->global_sub_pos =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1471 (mpctx->global_sub_pos % (global_sub_size + 1)) - 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1472 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1473 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1474 mpctx->global_sub_pos += global_sub_size + 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1475 mpctx->global_sub_pos =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1476 (mpctx->global_sub_pos % (global_sub_size + 1)) - 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1477 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1478 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1479 return M_PROPERTY_NOT_IMPLEMENTED;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1480 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1481
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1482 if (mpctx->global_sub_pos >= 0) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1483 source = sub_source(mpctx);
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1484 source_pos = sub_source_pos(mpctx);
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1485 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1486
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1487 mp_msg(MSGT_CPLAYER, MSGL_DBG3,
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1488 "subtitles: %d subs, (v@%d s@%d d@%d), @%d, source @%d\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1489 global_sub_size,
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1490 mpctx->sub_counts[SUB_SOURCE_VOBSUB],
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1491 mpctx->sub_counts[SUB_SOURCE_SUBS],
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1492 mpctx->sub_counts[SUB_SOURCE_DEMUX],
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1493 mpctx->global_sub_pos, source);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1494
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1495 mpctx->set_of_sub_pos = -1;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1496 subdata = NULL;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1497
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1498 vobsub_id = -1;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1499 dvdsub_id = -1;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1500 if (d_sub) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1501 if (d_sub->id > -2)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1502 reset_spu = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1503 d_sub->id = -2;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1504 }
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1505 #ifdef CONFIG_ASS
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1506 ass_track = 0;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1507 #endif
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1508
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1509 if (source == SUB_SOURCE_VOBSUB) {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1510 vobsub_id = source_pos;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1511 } else if (source == SUB_SOURCE_SUBS) {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1512 mpctx->set_of_sub_pos = source_pos;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1513 #ifdef CONFIG_ASS
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1514 if (ass_enabled && mpctx->set_of_ass_tracks[mpctx->set_of_sub_pos])
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1515 ass_track = mpctx->set_of_ass_tracks[mpctx->set_of_sub_pos];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1516 else
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1517 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1518 {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1519 subdata = mpctx->set_of_subtitles[mpctx->set_of_sub_pos];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1520 vo_osd_changed(OSDTYPE_SUBTITLE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1521 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1522 } else if (source == SUB_SOURCE_DEMUX) {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1523 dvdsub_id = source_pos;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1524 if (d_sub && dvdsub_id < MAX_S_STREAMS) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1525 int i = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1526 // default: assume 1:1 mapping of sid and stream id
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1527 d_sub->id = dvdsub_id;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1528 d_sub->sh = mpctx->demuxer->s_streams[d_sub->id];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1529 ds_free_packs(d_sub);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1530 for (i = 0; i < MAX_S_STREAMS; i++) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1531 sh_sub_t *sh = mpctx->demuxer->s_streams[i];
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1532 if (sh && sh->sid == dvdsub_id) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1533 d_sub->id = i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1534 d_sub->sh = sh;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1535 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1536 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1537 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1538 if (d_sub->sh && d_sub->id >= 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1539 sh_sub_t *sh = d_sub->sh;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1540 if (sh->type == 'v')
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1541 init_vo_spudec();
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1542 #ifdef CONFIG_ASS
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1543 else if (ass_enabled)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1544 ass_track = sh->ass_track;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1545 #endif
23766
f0c2f9de85ba Make sure that sub->id is -2 and sub->sh is NULL if subtitle doesn't
reimar
parents: 23758
diff changeset
1546 } else {
f0c2f9de85ba Make sure that sub->id is -2 and sub->sh is NULL if subtitle doesn't
reimar
parents: 23758
diff changeset
1547 d_sub->id = -2;
f0c2f9de85ba Make sure that sub->id is -2 and sub->sh is NULL if subtitle doesn't
reimar
parents: 23758
diff changeset
1548 d_sub->sh = NULL;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1549 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1550 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1551 }
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1552 #ifdef CONFIG_DVDREAD
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1553 if (vo_spudec
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1554 && (mpctx->stream->type == STREAMTYPE_DVD
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1555 || mpctx->stream->type == STREAMTYPE_DVDNAV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1556 && dvdsub_id < 0 && reset_spu) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1557 d_sub->id = -2;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1558 d_sub->sh = NULL;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1559 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1560 #endif
29668
ecc719c6d7a9 Make update_subtitles work without sh_video for text subtitles.
reimar
parents: 29617
diff changeset
1561 if (mpctx->sh_audio)
ecc719c6d7a9 Make update_subtitles work without sh_video for text subtitles.
reimar
parents: 29617
diff changeset
1562 pts = mpctx->sh_audio->pts;
ecc719c6d7a9 Make update_subtitles work without sh_video for text subtitles.
reimar
parents: 29617
diff changeset
1563 if (mpctx->sh_video)
ecc719c6d7a9 Make update_subtitles work without sh_video for text subtitles.
reimar
parents: 29617
diff changeset
1564 pts = mpctx->sh_video->pts;
ecc719c6d7a9 Make update_subtitles work without sh_video for text subtitles.
reimar
parents: 29617
diff changeset
1565 update_subtitles(mpctx->sh_video, pts, d_sub, 1);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1566
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1567 return M_PROPERTY_OK;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1568 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1569
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1570 /// Selected sub source (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1571 static int mp_property_sub_source(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1572 MPContext *mpctx)
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1573 {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1574 int source;
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1575 update_global_sub_size(mpctx);
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1576 if (!mpctx->sh_video || mpctx->global_sub_size <= 0)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1577 return M_PROPERTY_UNAVAILABLE;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1578
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1579 switch (action) {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1580 case M_PROPERTY_GET:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1581 if (!arg)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1582 return M_PROPERTY_ERROR;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1583 *(int *) arg = sub_source(mpctx);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1584 return M_PROPERTY_OK;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1585 case M_PROPERTY_PRINT:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1586 if (!arg)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1587 return M_PROPERTY_ERROR;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1588 *(char **) arg = malloc(64);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1589 (*(char **) arg)[63] = 0;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1590 switch (sub_source(mpctx))
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1591 {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1592 case SUB_SOURCE_SUBS:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1593 snprintf(*(char **) arg, 63, MSGTR_SubSourceFile);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1594 break;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1595 case SUB_SOURCE_VOBSUB:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1596 snprintf(*(char **) arg, 63, MSGTR_SubSourceVobsub);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1597 break;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1598 case SUB_SOURCE_DEMUX:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1599 snprintf(*(char **) arg, 63, MSGTR_SubSourceDemux);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1600 break;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1601 default:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1602 snprintf(*(char **) arg, 63, MSGTR_Disabled);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1603 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1604 return M_PROPERTY_OK;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1605 case M_PROPERTY_SET:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1606 if (!arg)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1607 return M_PROPERTY_ERROR;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1608 M_PROPERTY_CLAMP(prop, *(int*)arg);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1609 if (*(int *) arg < 0)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1610 mpctx->global_sub_pos = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1611 else if (*(int *) arg != sub_source(mpctx)) {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1612 int new_pos = sub_pos_by_source(mpctx, *(int *)arg);
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1613 if (new_pos == -1)
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1614 return M_PROPERTY_UNAVAILABLE;
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1615 mpctx->global_sub_pos = new_pos;
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1616 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1617 break;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1618 case M_PROPERTY_STEP_UP:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1619 case M_PROPERTY_STEP_DOWN: {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1620 int step_all = (arg && *(int*)arg != 0 ? *(int*)arg : 1)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1621 * (action == M_PROPERTY_STEP_UP ? 1 : -1);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1622 int step = (step_all > 0) ? 1 : -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1623 int cur_source = sub_source(mpctx);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1624 source = cur_source;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1625 while (step_all) {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1626 source += step;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1627 if (source >= SUB_SOURCES)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1628 source = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1629 else if (source < -1)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1630 source = SUB_SOURCES - 1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1631 if (source == cur_source || source == -1 ||
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1632 mpctx->sub_counts[source])
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1633 step_all -= step;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1634 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1635 if (source == cur_source)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1636 return M_PROPERTY_OK;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1637 if (source == -1)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1638 mpctx->global_sub_pos = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1639 else
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1640 mpctx->global_sub_pos = sub_pos_by_source(mpctx, source);
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1641 break;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1642 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1643 default:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1644 return M_PROPERTY_NOT_IMPLEMENTED;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1645 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1646 --mpctx->global_sub_pos;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1647 return mp_property_sub(prop, M_PROPERTY_STEP_UP, NULL, mpctx);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1648 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1649
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1650 /// Selected subtitles from specific source (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1651 static int mp_property_sub_by_type(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1652 MPContext *mpctx)
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1653 {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1654 int source, is_cur_source, offset;
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1655 update_global_sub_size(mpctx);
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1656 if (!mpctx->sh_video || mpctx->global_sub_size <= 0)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1657 return M_PROPERTY_UNAVAILABLE;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1658
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1659 if (!strcmp(prop->name, "sub_file"))
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1660 source = SUB_SOURCE_SUBS;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1661 else if (!strcmp(prop->name, "sub_vob"))
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1662 source = SUB_SOURCE_VOBSUB;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1663 else if (!strcmp(prop->name, "sub_demux"))
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1664 source = SUB_SOURCE_DEMUX;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1665 else
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1666 return M_PROPERTY_ERROR;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1667
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1668 offset = sub_pos_by_source(mpctx, source);
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1669 if (offset < 0)
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1670 return M_PROPERTY_UNAVAILABLE;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1671
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1672 is_cur_source = sub_source(mpctx) == source;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1673 switch (action) {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1674 case M_PROPERTY_GET:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1675 if (!arg)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1676 return M_PROPERTY_ERROR;
25251
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1677 if (is_cur_source) {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1678 *(int *) arg = sub_source_pos(mpctx);
25251
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1679 if (source == SUB_SOURCE_VOBSUB)
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1680 *(int *) arg = vobsub_get_id_by_index(vo_vobsub, *(int *) arg);
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1681 }
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1682 else
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1683 *(int *) arg = -1;
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1684 return M_PROPERTY_OK;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1685 case M_PROPERTY_PRINT:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1686 if (!arg)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1687 return M_PROPERTY_ERROR;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1688 if (is_cur_source)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1689 return mp_property_sub(prop, M_PROPERTY_PRINT, arg, mpctx);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1690 *(char **) arg = malloc(64);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1691 (*(char **) arg)[63] = 0;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1692 snprintf(*(char **) arg, 63, MSGTR_Disabled);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1693 return M_PROPERTY_OK;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1694 case M_PROPERTY_SET:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1695 if (!arg)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1696 return M_PROPERTY_ERROR;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1697 if (*(int *) arg >= 0) {
25251
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1698 int index = *(int *)arg;
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1699 if (source == SUB_SOURCE_VOBSUB)
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1700 index = vobsub_get_index_by_id(vo_vobsub, index);
80804f0631f4 Skip empty vobsub streams when selecting subtitles.
ulion
parents: 25215
diff changeset
1701 mpctx->global_sub_pos = offset + index;
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
1702 if (index < 0 || index > mpctx->sub_counts[source]) {
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1703 mpctx->global_sub_pos = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1704 *(int *) arg = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1705 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1706 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1707 else
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1708 mpctx->global_sub_pos = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1709 break;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1710 case M_PROPERTY_STEP_UP:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1711 case M_PROPERTY_STEP_DOWN: {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1712 int step_all = (arg && *(int*)arg != 0 ? *(int*)arg : 1)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1713 * (action == M_PROPERTY_STEP_UP ? 1 : -1);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1714 int step = (step_all > 0) ? 1 : -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1715 int max_sub_pos_for_source = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1716 if (!is_cur_source)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1717 mpctx->global_sub_pos = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1718 while (step_all) {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1719 if (mpctx->global_sub_pos == -1) {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1720 if (step > 0)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1721 mpctx->global_sub_pos = offset;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1722 else if (max_sub_pos_for_source == -1) {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1723 // Find max pos for specific source
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1724 mpctx->global_sub_pos = mpctx->global_sub_size - 1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1725 while (mpctx->global_sub_pos >= 0
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1726 && sub_source(mpctx) != source)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1727 --mpctx->global_sub_pos;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1728 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1729 else
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1730 mpctx->global_sub_pos = max_sub_pos_for_source;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1731 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1732 else {
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1733 mpctx->global_sub_pos += step;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1734 if (mpctx->global_sub_pos < offset ||
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1735 mpctx->global_sub_pos >= mpctx->global_sub_size ||
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1736 sub_source(mpctx) != source)
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1737 mpctx->global_sub_pos = -1;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1738 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1739 step_all -= step;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1740 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1741 break;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1742 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1743 default:
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1744 return M_PROPERTY_NOT_IMPLEMENTED;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1745 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1746 --mpctx->global_sub_pos;
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1747 return mp_property_sub(prop, M_PROPERTY_STEP_UP, NULL, mpctx);
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1748 }
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
1749
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1750 /// Subtitle delay (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1751 static int mp_property_sub_delay(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1752 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1753 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1754 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1755 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1756 return m_property_delay(prop, action, arg, &sub_delay);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1757 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1758
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1759 /// Alignment of text subtitles (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1760 static int mp_property_sub_alignment(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1761 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1762 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1763 char *name[] = { MSGTR_Top, MSGTR_Center, MSGTR_Bottom };
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1764
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1765 if (!mpctx->sh_video || mpctx->global_sub_pos < 0
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1766 || sub_source(mpctx) != SUB_SOURCE_SUBS)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1767 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1768
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1769 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1770 case M_PROPERTY_PRINT:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1771 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1772 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1773 M_PROPERTY_CLAMP(prop, sub_alignment);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1774 *(char **) arg = strdup(name[sub_alignment]);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1775 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1776 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1777 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1778 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1779 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1780 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1781 vo_osd_changed(OSDTYPE_SUBTITLE);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1782 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1783 return m_property_choice(prop, action, arg, &sub_alignment);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1784 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1785 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1786
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1787 /// Subtitle visibility (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1788 static int mp_property_sub_visibility(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1789 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1790 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1791 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1792 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1793
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1794 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1795 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1796 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1797 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1798 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1799 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1800 vo_osd_changed(OSDTYPE_SUBTITLE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1801 if (vo_spudec)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1802 vo_osd_changed(OSDTYPE_SPU);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1803 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1804 return m_property_flag(prop, action, arg, &sub_visibility);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1805 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1806 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1807
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1808 #ifdef CONFIG_ASS
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1809 /// Use margins for libass subtitles (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1810 static int mp_property_ass_use_margins(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1811 void *arg, MPContext *mpctx)
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1812 {
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1813 if (!mpctx->sh_video)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1814 return M_PROPERTY_UNAVAILABLE;
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1815
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1816 switch (action) {
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1817 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1818 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1819 return M_PROPERTY_ERROR;
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1820 case M_PROPERTY_STEP_UP:
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1821 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1822 ass_force_reload = 1;
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1823 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1824 return m_property_flag(prop, action, arg, &ass_use_margins);
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1825 }
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1826 }
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1827 #endif
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
1828
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1829 /// Show only forced subtitles (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1830 static int mp_property_sub_forced_only(m_option_t *prop, int action,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1831 void *arg, MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1832 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1833 if (!vo_spudec)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1834 return M_PROPERTY_UNAVAILABLE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1835
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1836 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1837 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1838 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1839 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1840 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1841 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1842 m_property_flag(prop, action, arg, &forced_subs_only);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1843 spudec_set_forced_subs_only(vo_spudec, forced_subs_only);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1844 return M_PROPERTY_OK;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1845 default:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1846 return m_property_flag(prop, action, arg, &forced_subs_only);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1847 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1848
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1849 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1850
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27392
diff changeset
1851 #ifdef CONFIG_FREETYPE
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1852 /// Subtitle scale (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1853 static int mp_property_sub_scale(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1854 MPContext *mpctx)
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1855 {
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1856
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1857 switch (action) {
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1858 case M_PROPERTY_SET:
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1859 if (!arg)
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1860 return M_PROPERTY_ERROR;
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1861 M_PROPERTY_CLAMP(prop, *(float *) arg);
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1862 #ifdef CONFIG_ASS
25815
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1863 if (ass_enabled) {
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1864 ass_font_scale = *(float *) arg;
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1865 ass_force_reload = 1;
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1866 }
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1867 #endif
25854
beed202262fa reindent after r25881
ben
parents: 25853
diff changeset
1868 text_font_scale_factor = *(float *) arg;
beed202262fa reindent after r25881
ben
parents: 25853
diff changeset
1869 force_load_font = 1;
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1870 return M_PROPERTY_OK;
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1871 case M_PROPERTY_STEP_UP:
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1872 case M_PROPERTY_STEP_DOWN:
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1873 #ifdef CONFIG_ASS
25815
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1874 if (ass_enabled) {
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1875 ass_font_scale += (arg ? *(float *) arg : 0.1)*
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1876 (action == M_PROPERTY_STEP_UP ? 1.0 : -1.0);
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1877 M_PROPERTY_CLAMP(prop, ass_font_scale);
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1878 ass_force_reload = 1;
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1879 }
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1880 #endif
25854
beed202262fa reindent after r25881
ben
parents: 25853
diff changeset
1881 text_font_scale_factor += (arg ? *(float *) arg : 0.1)*
beed202262fa reindent after r25881
ben
parents: 25853
diff changeset
1882 (action == M_PROPERTY_STEP_UP ? 1.0 : -1.0);
beed202262fa reindent after r25881
ben
parents: 25853
diff changeset
1883 M_PROPERTY_CLAMP(prop, text_font_scale_factor);
beed202262fa reindent after r25881
ben
parents: 25853
diff changeset
1884 force_load_font = 1;
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1885 return M_PROPERTY_OK;
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1886 default:
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1887 #ifdef CONFIG_ASS
25815
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1888 if (ass_enabled)
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1889 return m_property_float_ro(prop, action, arg, ass_font_scale);
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1890 else
8920f8a26c05 sub_scale command now works with ass subtitles renderer
ben
parents: 25814
diff changeset
1891 #endif
25816
7ccdc98df1a0 cosmetic: reindent code after r25843
ben
parents: 25815
diff changeset
1892 return m_property_float_ro(prop, action, arg, text_font_scale_factor);
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1893 }
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1894 }
23740
4313ad18d816 10L, sub_scale need freetype, add the #ifdef.
albeu
parents: 23727
diff changeset
1895 #endif
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
1896
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1897 ///@}
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1898
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1899 /// \defgroup TVProperties TV properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1900 /// \ingroup Properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1901 ///@{
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1902
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
1903 #ifdef CONFIG_TV
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1904
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1905 /// TV color settings (RW)
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1906 static int mp_property_tv_color(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1907 MPContext *mpctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1908 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1909 int r, val;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1910 tvi_handle_t *tvh = mpctx->demuxer->priv;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1911 if (mpctx->demuxer->type != DEMUXER_TYPE_TV || !tvh)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1912 return M_PROPERTY_UNAVAILABLE;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1913
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
1914 switch (action) {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1915 case M_PROPERTY_SET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1916 if (!arg)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1917 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1918 M_PROPERTY_CLAMP(prop, *(int *) arg);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1919 return tv_set_color_options(tvh, (int) prop->priv, *(int *) arg);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1920 case M_PROPERTY_GET:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1921 return tv_get_color_options(tvh, (int) prop->priv, arg);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1922 case M_PROPERTY_STEP_UP:
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1923 case M_PROPERTY_STEP_DOWN:
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1924 if ((r = tv_get_color_options(tvh, (int) prop->priv, &val)) >= 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1925 if (!r)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1926 return M_PROPERTY_ERROR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1927 val += (arg ? *(int *) arg : 1) *
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1928 (action == M_PROPERTY_STEP_DOWN ? -1 : 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1929 M_PROPERTY_CLAMP(prop, val);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1930 return tv_set_color_options(tvh, (int) prop->priv, val);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1931 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
1932 return M_PROPERTY_ERROR;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1933 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1934 return M_PROPERTY_NOT_IMPLEMENTED;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1935 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1936
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1937 #endif
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
1938
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1939 static int mp_property_teletext_common(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1940 MPContext *mpctx)
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1941 {
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1942 int val,result;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1943 int base_ioctl=(int)prop->priv;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28368
diff changeset
1944 /*
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1945 for teletext's GET,SET,STEP ioctls this is not 0
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1946 SET is GET+1
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1947 STEP is GET+2
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1948 */
29820
b33846197f5c Make sure the teletext property stuff does not crash if no demuxer is available.
reimar
parents: 29809
diff changeset
1949 if (!mpctx->demuxer || !mpctx->demuxer->teletext)
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1950 return M_PROPERTY_UNAVAILABLE;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1951 if(!base_ioctl)
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1952 return M_PROPERTY_ERROR;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1953
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1954 switch (action) {
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1955 case M_PROPERTY_GET:
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1956 if (!arg)
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1957 return M_PROPERTY_ERROR;
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
1958 result=teletext_control(mpctx->demuxer->teletext, base_ioctl, arg);
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1959 break;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1960 case M_PROPERTY_SET:
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1961 if (!arg)
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1962 return M_PROPERTY_ERROR;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1963 M_PROPERTY_CLAMP(prop, *(int *) arg);
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
1964 result=teletext_control(mpctx->demuxer->teletext, base_ioctl+1, arg);
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1965 break;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1966 case M_PROPERTY_STEP_UP:
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1967 case M_PROPERTY_STEP_DOWN:
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
1968 result=teletext_control(mpctx->demuxer->teletext, base_ioctl, &val);
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1969 val += (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1);
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
1970 result=teletext_control(mpctx->demuxer->teletext, base_ioctl+1, &val);
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1971 break;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1972 default:
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1973 return M_PROPERTY_NOT_IMPLEMENTED;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1974 }
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1975
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
1976 return result == VBI_CONTROL_TRUE ? M_PROPERTY_OK : M_PROPERTY_ERROR;
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1977 }
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1978
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1979 static int mp_property_teletext_mode(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1980 MPContext *mpctx)
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1981 {
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1982 int result;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1983 int val;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1984
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1985 //with tvh==NULL will fail too
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1986 result=mp_property_teletext_common(prop,action,arg,mpctx);
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1987 if(result!=M_PROPERTY_OK)
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1988 return result;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1989
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
1990 if(teletext_control(mpctx->demuxer->teletext,
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
1991 (int)prop->priv, &val)==VBI_CONTROL_TRUE && val)
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1992 mp_input_set_section("teletext");
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1993 else
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1994 mp_input_set_section("tv");
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1995 return M_PROPERTY_OK;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1996 }
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
1997
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1998 static int mp_property_teletext_page(m_option_t *prop, int action, void *arg,
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
1999 MPContext *mpctx)
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2000 {
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2001 int result;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2002 int val;
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
2003 if (!mpctx->demuxer->teletext)
27806
26c27a80b8af Disallow the modification of teletext properties when the tv demuxer is
faust3
parents: 27650
diff changeset
2004 return M_PROPERTY_UNAVAILABLE;
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2005 switch(action){
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2006 case M_PROPERTY_STEP_UP:
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2007 case M_PROPERTY_STEP_DOWN:
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2008 //This should be handled separately
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2009 val = (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1);
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
2010 result=teletext_control(mpctx->demuxer->teletext,
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
2011 TV_VBI_CONTROL_STEP_PAGE, &val);
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2012 break;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2013 default:
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2014 result=mp_property_teletext_common(prop,action,arg,mpctx);
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2015 }
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2016 return result;
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2017 }
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2018
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2019 ///@}
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2020
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2021 /// All properties available in MPlayer.
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2022 /** \ingroup Properties
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2023 */
25717
4eac26c41059 Make mp_properties const
reimar
parents: 25656
diff changeset
2024 static const m_option_t mp_properties[] = {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2025 // General
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2026 { "osdlevel", mp_property_osdlevel, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2027 M_OPT_RANGE, 0, 3, NULL },
23727
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
2028 { "loop", mp_property_loop, CONF_TYPE_INT,
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
2029 M_OPT_MIN, -1, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2030 { "speed", mp_property_playback_speed, CONF_TYPE_FLOAT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2031 M_OPT_RANGE, 0.01, 100.0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2032 { "filename", mp_property_filename, CONF_TYPE_STRING,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2033 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2034 { "path", mp_property_path, CONF_TYPE_STRING,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2035 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2036 { "demuxer", mp_property_demuxer, CONF_TYPE_STRING,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2037 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2038 { "stream_pos", mp_property_stream_pos, CONF_TYPE_POSITION,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2039 M_OPT_MIN, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2040 { "stream_start", mp_property_stream_start, CONF_TYPE_POSITION,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2041 M_OPT_MIN, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2042 { "stream_end", mp_property_stream_end, CONF_TYPE_POSITION,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2043 M_OPT_MIN, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2044 { "stream_length", mp_property_stream_length, CONF_TYPE_POSITION,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2045 M_OPT_MIN, 0, 0, NULL },
23417
a829005cbcd5 Make the length property use the time type.
albeu
parents: 23416
diff changeset
2046 { "length", mp_property_length, CONF_TYPE_TIME,
a829005cbcd5 Make the length property use the time type.
albeu
parents: 23416
diff changeset
2047 M_OPT_MIN, 0, 0, NULL },
23418
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
2048 { "percent_pos", mp_property_percent_pos, CONF_TYPE_INT,
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
2049 M_OPT_RANGE, 0, 100, NULL },
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
2050 { "time_pos", mp_property_time_pos, CONF_TYPE_TIME,
f6055798121d Add new properties percent_pos and time_pos.
albeu
parents: 23417
diff changeset
2051 M_OPT_MIN, 0, 0, NULL },
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
2052 { "chapter", mp_property_chapter, CONF_TYPE_INT,
29365
794a26e68c2c Make set_property chapter 0-based like all other chapter-related
reimar
parents: 29333
diff changeset
2053 M_OPT_MIN, 0, 0, NULL },
27635
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
2054 { "chapters", mp_property_chapters, CONF_TYPE_INT,
22bdd7ba8892 slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
nicodvb
parents: 27457
diff changeset
2055 0, 0, 0, NULL },
25577
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
2056 { "angle", mp_property_angle, CONF_TYPE_INT,
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
2057 CONF_RANGE, -2, 10, NULL },
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
2058 { "metadata", mp_property_metadata, CONF_TYPE_STRING_LIST,
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
2059 0, 0, 0, NULL },
27648
427fec163870 Add a "pause" property to allow checking if MPlayer is paused.
reimar
parents: 27635
diff changeset
2060 { "pause", mp_property_pause, CONF_TYPE_FLAG,
427fec163870 Add a "pause" property to allow checking if MPlayer is paused.
reimar
parents: 27635
diff changeset
2061 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2062
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2063 // Audio
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2064 { "volume", mp_property_volume, CONF_TYPE_FLOAT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2065 M_OPT_RANGE, 0, 100, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2066 { "mute", mp_property_mute, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2067 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2068 { "audio_delay", mp_property_audio_delay, CONF_TYPE_FLOAT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2069 M_OPT_RANGE, -100, 100, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2070 { "audio_format", mp_property_audio_format, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2071 0, 0, 0, NULL },
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
2072 { "audio_codec", mp_property_audio_codec, CONF_TYPE_STRING,
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
2073 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2074 { "audio_bitrate", mp_property_audio_bitrate, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2075 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2076 { "samplerate", mp_property_samplerate, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2077 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2078 { "channels", mp_property_channels, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2079 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2080 { "switch_audio", mp_property_audio, CONF_TYPE_INT,
29333
09938ba82991 Do not use MAX_A/V_STREAMS as upper limit for switch_audio/switch_video
reimar
parents: 29263
diff changeset
2081 CONF_RANGE, -2, 65535, NULL },
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
2082 { "balance", mp_property_balance, CONF_TYPE_FLOAT,
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
2083 M_OPT_RANGE, -1, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2084
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2085 // Video
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2086 { "fullscreen", mp_property_fullscreen, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2087 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2088 { "deinterlace", mp_property_deinterlace, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2089 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2090 { "ontop", mp_property_ontop, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2091 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2092 { "rootwin", mp_property_rootwin, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2093 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2094 { "border", mp_property_border, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2095 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2096 { "framedropping", mp_property_framedropping, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2097 M_OPT_RANGE, 0, 2, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2098 { "gamma", mp_property_gamma, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2099 M_OPT_RANGE, -100, 100, &vo_gamma_gamma },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2100 { "brightness", mp_property_gamma, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2101 M_OPT_RANGE, -100, 100, &vo_gamma_brightness },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2102 { "contrast", mp_property_gamma, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2103 M_OPT_RANGE, -100, 100, &vo_gamma_contrast },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2104 { "saturation", mp_property_gamma, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2105 M_OPT_RANGE, -100, 100, &vo_gamma_saturation },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2106 { "hue", mp_property_gamma, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2107 M_OPT_RANGE, -100, 100, &vo_gamma_hue },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2108 { "panscan", mp_property_panscan, CONF_TYPE_FLOAT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2109 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2110 { "vsync", mp_property_vsync, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2111 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2112 { "video_format", mp_property_video_format, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2113 0, 0, 0, NULL },
23394
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
2114 { "video_codec", mp_property_video_codec, CONF_TYPE_STRING,
d4e8613ddc95 Make all the info available via the metadata API available via properties.
albeu
parents: 23393
diff changeset
2115 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2116 { "video_bitrate", mp_property_video_bitrate, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2117 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2118 { "width", mp_property_width, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2119 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2120 { "height", mp_property_height, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2121 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2122 { "fps", mp_property_fps, CONF_TYPE_FLOAT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2123 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2124 { "aspect", mp_property_aspect, CONF_TYPE_FLOAT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2125 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2126 { "switch_video", mp_property_video, CONF_TYPE_INT,
29333
09938ba82991 Do not use MAX_A/V_STREAMS as upper limit for switch_audio/switch_video
reimar
parents: 29263
diff changeset
2127 CONF_RANGE, -2, 65535, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2128 { "switch_program", mp_property_program, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2129 CONF_RANGE, -1, 65535, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2130
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2131 // Subs
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2132 { "sub", mp_property_sub, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2133 M_OPT_MIN, -1, 0, NULL },
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2134 { "sub_source", mp_property_sub_source, CONF_TYPE_INT,
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2135 M_OPT_RANGE, -1, SUB_SOURCES - 1, NULL },
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2136 { "sub_vob", mp_property_sub_by_type, CONF_TYPE_INT,
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2137 M_OPT_MIN, -1, 0, NULL },
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2138 { "sub_demux", mp_property_sub_by_type, CONF_TYPE_INT,
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2139 M_OPT_MIN, -1, 0, NULL },
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2140 { "sub_file", mp_property_sub_by_type, CONF_TYPE_INT,
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2141 M_OPT_MIN, -1, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2142 { "sub_delay", mp_property_sub_delay, CONF_TYPE_FLOAT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2143 0, 0, 0, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2144 { "sub_pos", mp_property_sub_pos, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2145 M_OPT_RANGE, 0, 100, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2146 { "sub_alignment", mp_property_sub_alignment, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2147 M_OPT_RANGE, 0, 2, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2148 { "sub_visibility", mp_property_sub_visibility, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2149 M_OPT_RANGE, 0, 1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2150 { "sub_forced_only", mp_property_sub_forced_only, CONF_TYPE_FLAG,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2151 M_OPT_RANGE, 0, 1, NULL },
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27392
diff changeset
2152 #ifdef CONFIG_FREETYPE
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
2153 { "sub_scale", mp_property_sub_scale, CONF_TYPE_FLOAT,
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
2154 M_OPT_RANGE, 0, 100, NULL },
23740
4313ad18d816 10L, sub_scale need freetype, add the #ifdef.
albeu
parents: 23727
diff changeset
2155 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2156 #ifdef CONFIG_ASS
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
2157 { "ass_use_margins", mp_property_ass_use_margins, CONF_TYPE_FLAG,
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
2158 M_OPT_RANGE, 0, 1, NULL },
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
2159 #endif
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2160
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2161 #ifdef CONFIG_TV
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2162 { "tv_brightness", mp_property_tv_color, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2163 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_BRIGHTNESS },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2164 { "tv_contrast", mp_property_tv_color, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2165 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_CONTRAST },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2166 { "tv_saturation", mp_property_tv_color, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2167 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_SATURATION },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2168 { "tv_hue", mp_property_tv_color, CONF_TYPE_INT,
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2169 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_HUE },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2170 #endif
23900
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2171 { "teletext_page", mp_property_teletext_page, CONF_TYPE_INT,
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2172 M_OPT_RANGE, 100, 899, (void*)TV_VBI_CONTROL_GET_PAGE },
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2173 { "teletext_subpage", mp_property_teletext_common, CONF_TYPE_INT,
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2174 M_OPT_RANGE, 0, 64, (void*)TV_VBI_CONTROL_GET_SUBPAGE },
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2175 { "teletext_mode", mp_property_teletext_mode, CONF_TYPE_FLAG,
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2176 M_OPT_RANGE, 0, 1, (void*)TV_VBI_CONTROL_GET_MODE },
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2177 { "teletext_format", mp_property_teletext_common, CONF_TYPE_INT,
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2178 M_OPT_RANGE, 0, 3, (void*)TV_VBI_CONTROL_GET_FORMAT },
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2179 { "teletext_half_page", mp_property_teletext_common, CONF_TYPE_INT,
b5cc28c45d73 Teletext support.
voroshil
parents: 23838
diff changeset
2180 M_OPT_RANGE, 0, 2, (void*)TV_VBI_CONTROL_GET_HALF_PAGE },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2181 { NULL, NULL, NULL, 0, 0, 0, NULL }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2182 };
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2183
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2184
23393
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2185 int mp_property_do(const char *name, int action, void *val, void *ctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2186 {
23393
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2187 return m_property_do(mp_properties, name, action, val, ctx);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2188 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2189
23393
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2190 char* mp_property_print(const char *name, void* ctx)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2191 {
23393
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2192 char* ret = NULL;
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2193 if(mp_property_do(name,M_PROPERTY_PRINT,&ret,ctx) <= 0)
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2194 return NULL;
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2195 return ret;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2196 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2197
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
2198 char *property_expand_string(MPContext *mpctx, char *str)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2199 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2200 return m_properties_expand_string(mp_properties, str, mpctx);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2201 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2202
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2203 void property_print_help(void)
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2204 {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2205 m_properties_print_help_list(mp_properties);
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2206 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2207
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2208
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2209 ///@}
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2210 // Properties group
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2211
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2212
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2213 /**
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2214 * \defgroup Command2Property Command to property bridge
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2215 *
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2216 * It is used to handle most commands that just set a property
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2217 * and optionally display something on the OSD.
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2218 * Two kinds of commands are handled: adjust or toggle.
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2219 *
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2220 * Adjust commands take 1 or 2 parameters: <value> <abs>
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2221 * If <abs> is non-zero the property is set to the given value
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2222 * otherwise it is adjusted.
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2223 *
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2224 * Toggle commands take 0 or 1 parameters. With no parameter
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2225 * or a value less than the property minimum it just steps the
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2226 * property to its next value. Otherwise it sets it to the given
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2227 * value.
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2228 *
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2229 *@{
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2230 */
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2231
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2232 /// List of the commands that can be handled by setting a property.
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2233 static struct {
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2234 /// property name
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2235 const char *name;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2236 /// cmd id
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2237 int cmd;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2238 /// set/adjust or toggle command
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2239 int toggle;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2240 /// progressbar type
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2241 int osd_progbar;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2242 /// osd msg id if it must be shared
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2243 int osd_id;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2244 /// osd msg template
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2245 const char *osd_msg;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2246 } set_prop_cmd[] = {
23727
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
2247 // general
2de8f66b3570 Add a loop command and property.
albeu
parents: 23725
diff changeset
2248 { "loop", MP_CMD_LOOP, 0, 0, -1, MSGTR_LoopStatus },
25363
fa776bd7ebc4 Support chapter as a property.
ulion
parents: 25251
diff changeset
2249 { "chapter", MP_CMD_SEEK_CHAPTER, 0, 0, -1, NULL },
25577
f1ea96323643 properties to get and set angle; patch by oattila chello hu
nicodvb
parents: 25567
diff changeset
2250 { "angle", MP_CMD_SWITCH_ANGLE, 0, 0, -1, NULL },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2251 // audio
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2252 { "volume", MP_CMD_VOLUME, 0, OSD_VOLUME, -1, MSGTR_Volume },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2253 { "mute", MP_CMD_MUTE, 1, 0, -1, MSGTR_MuteStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2254 { "audio_delay", MP_CMD_AUDIO_DELAY, 0, 0, -1, MSGTR_AVDelayStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2255 { "switch_audio", MP_CMD_SWITCH_AUDIO, 1, 0, -1, MSGTR_OSDAudio },
23568
519e42b716aa The audio balance feature implemented with af_pan.
zuxy
parents: 23549
diff changeset
2256 { "balance", MP_CMD_BALANCE, 0, OSD_BALANCE, -1, MSGTR_Balance },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2257 // video
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2258 { "fullscreen", MP_CMD_VO_FULLSCREEN, 1, 0, -1, NULL },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2259 { "panscan", MP_CMD_PANSCAN, 0, OSD_PANSCAN, -1, MSGTR_Panscan },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2260 { "ontop", MP_CMD_VO_ONTOP, 1, 0, -1, MSGTR_OnTopStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2261 { "rootwin", MP_CMD_VO_ROOTWIN, 1, 0, -1, MSGTR_RootwinStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2262 { "border", MP_CMD_VO_BORDER, 1, 0, -1, MSGTR_BorderStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2263 { "framedropping", MP_CMD_FRAMEDROPPING, 1, 0, -1, MSGTR_FramedroppingStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2264 { "gamma", MP_CMD_GAMMA, 0, OSD_BRIGHTNESS, -1, MSGTR_Gamma },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2265 { "brightness", MP_CMD_BRIGHTNESS, 0, OSD_BRIGHTNESS, -1, MSGTR_Brightness },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2266 { "contrast", MP_CMD_CONTRAST, 0, OSD_CONTRAST, -1, MSGTR_Contrast },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2267 { "saturation", MP_CMD_SATURATION, 0, OSD_SATURATION, -1, MSGTR_Saturation },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2268 { "hue", MP_CMD_HUE, 0, OSD_HUE, -1, MSGTR_Hue },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2269 { "vsync", MP_CMD_SWITCH_VSYNC, 1, 0, -1, MSGTR_VSyncStatus },
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2270 // subs
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2271 { "sub", MP_CMD_SUB_SELECT, 1, 0, -1, MSGTR_SubSelectStatus },
25129
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2272 { "sub_source", MP_CMD_SUB_SOURCE, 1, 0, -1, MSGTR_SubSourceStatus },
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2273 { "sub_vob", MP_CMD_SUB_VOB, 1, 0, -1, MSGTR_SubSelectStatus },
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2274 { "sub_demux", MP_CMD_SUB_DEMUX, 1, 0, -1, MSGTR_SubSelectStatus },
c04b64054255 Support select subtitle by source, add 4 properties:
ulion
parents: 25032
diff changeset
2275 { "sub_file", MP_CMD_SUB_FILE, 1, 0, -1, MSGTR_SubSelectStatus },
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2276 { "sub_pos", MP_CMD_SUB_POS, 0, 0, -1, MSGTR_SubPosStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2277 { "sub_alignment", MP_CMD_SUB_ALIGNMENT, 1, 0, -1, MSGTR_SubAlignStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2278 { "sub_delay", MP_CMD_SUB_DELAY, 0, 0, OSD_MSG_SUB_DELAY, MSGTR_SubDelayStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2279 { "sub_visibility", MP_CMD_SUB_VISIBILITY, 1, 0, -1, MSGTR_SubVisibleStatus },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2280 { "sub_forced_only", MP_CMD_SUB_FORCED_ONLY, 1, 0, -1, MSGTR_SubForcedOnlyStatus },
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27392
diff changeset
2281 #ifdef CONFIG_FREETYPE
23725
a0432f65040e Add the sub_scale property and command.
albeu
parents: 23599
diff changeset
2282 { "sub_scale", MP_CMD_SUB_SCALE, 0, 0, -1, MSGTR_SubScale},
23740
4313ad18d816 10L, sub_scale need freetype, add the #ifdef.
albeu
parents: 23727
diff changeset
2283 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2284 #ifdef CONFIG_ASS
25814
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
2285 { "ass_use_margins", MP_CMD_ASS_USE_MARGINS, 1, 0, -1, NULL },
4ba9b9bdf123 Add ass_use_margins command and property to shift subtitles to margins and back
eugeni
parents: 25717
diff changeset
2286 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2287 #ifdef CONFIG_TV
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2288 { "tv_brightness", MP_CMD_TV_SET_BRIGHTNESS, 0, OSD_BRIGHTNESS, -1, MSGTR_Brightness },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2289 { "tv_hue", MP_CMD_TV_SET_HUE, 0, OSD_HUE, -1, MSGTR_Hue },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2290 { "tv_saturation", MP_CMD_TV_SET_SATURATION, 0, OSD_SATURATION, -1, MSGTR_Saturation },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2291 { "tv_contrast", MP_CMD_TV_SET_CONTRAST, 0, OSD_CONTRAST, -1, MSGTR_Contrast },
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2292 #endif
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2293 { NULL, 0, 0, 0, -1, NULL }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2294 };
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2295
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2296
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2297 /// Handle commands that set a property.
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
2298 static int set_property_command(MPContext *mpctx, mp_cmd_t *cmd)
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2299 {
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2300 int i, r;
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
2301 m_option_t *prop;
23393
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2302 const char *pname;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2303
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2304 // look for the command
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2305 for (i = 0; set_prop_cmd[i].name; i++)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2306 if (set_prop_cmd[i].cmd == cmd->id)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2307 break;
23393
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2308 if (!(pname = set_prop_cmd[i].name))
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2309 return 0;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2310
23393
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2311 if (mp_property_do(pname,M_PROPERTY_GET_TYPE,&prop,mpctx) <= 0 || !prop)
a5e55cb59bbc Rework the property API to allow sub properties such as
albeu
parents: 23259
diff changeset
2312 return 0;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2313
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2314 // toggle command
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2315 if (set_prop_cmd[i].toggle) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2316 // set to value
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2317 if (cmd->nargs > 0 && cmd->args[0].v.i >= prop->min)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2318 r = mp_property_do(pname, M_PROPERTY_SET, &cmd->args[0].v.i, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2319 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2320 r = mp_property_do(pname, M_PROPERTY_STEP_UP, NULL, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2321 } else if (cmd->args[1].v.i) //set
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2322 r = mp_property_do(pname, M_PROPERTY_SET, &cmd->args[0].v, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2323 else // adjust
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2324 r = mp_property_do(pname, M_PROPERTY_STEP_UP, &cmd->args[0].v, mpctx);
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2325
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2326 if (r <= 0)
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2327 return 1;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2328
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2329 if (set_prop_cmd[i].osd_progbar) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2330 if (prop->type == CONF_TYPE_INT) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2331 if (mp_property_do(pname, M_PROPERTY_GET, &r, mpctx) > 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2332 set_osd_bar(set_prop_cmd[i].osd_progbar,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2333 set_prop_cmd[i].osd_msg, prop->min, prop->max, r);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2334 } else if (prop->type == CONF_TYPE_FLOAT) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2335 float f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2336 if (mp_property_do(pname, M_PROPERTY_GET, &f, mpctx) > 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2337 set_osd_bar(set_prop_cmd[i].osd_progbar,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2338 set_prop_cmd[i].osd_msg, prop->min, prop->max, f);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2339 } else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2340 mp_msg(MSGT_CPLAYER, MSGL_ERR,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2341 "Property use an unsupported type.\n");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2342 return 1;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2343 }
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2344
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2345 if (set_prop_cmd[i].osd_msg) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2346 char *val = mp_property_print(pname, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2347 if (val) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2348 set_osd_msg(set_prop_cmd[i].osd_id >=
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2349 0 ? set_prop_cmd[i].osd_id : OSD_MSG_PROPERTY + i,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2350 1, osd_duration, set_prop_cmd[i].osd_msg, val);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2351 free(val);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2352 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2353 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2354 return 1;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2355 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2356
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2357 #ifdef CONFIG_DVDNAV
27068
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2358 static const struct {
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2359 const char *name;
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2360 const mp_command_type cmd;
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2361 } mp_dvdnav_bindings[] = {
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2362 { "up", MP_CMD_DVDNAV_UP },
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2363 { "down", MP_CMD_DVDNAV_DOWN },
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2364 { "left", MP_CMD_DVDNAV_LEFT },
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2365 { "right", MP_CMD_DVDNAV_RIGHT },
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2366 { "menu", MP_CMD_DVDNAV_MENU },
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2367 { "select", MP_CMD_DVDNAV_SELECT },
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2368 { "prev", MP_CMD_DVDNAV_PREVMENU },
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2369 { "mouse", MP_CMD_DVDNAV_MOUSECLICK },
27069
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2370
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2371 /*
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2372 * keep old dvdnav sub-command options for a while in order not to
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2373 * break slave-mode API too suddenly.
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2374 */
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2375 { "1", MP_CMD_DVDNAV_UP },
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2376 { "2", MP_CMD_DVDNAV_DOWN },
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2377 { "3", MP_CMD_DVDNAV_LEFT },
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2378 { "4", MP_CMD_DVDNAV_RIGHT },
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2379 { "5", MP_CMD_DVDNAV_MENU },
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2380 { "6", MP_CMD_DVDNAV_SELECT },
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2381 { "7", MP_CMD_DVDNAV_PREVMENU },
1a6930933140 Keep old dvdnav sub-command options for a while in order
ben
parents: 27068
diff changeset
2382 { "8", MP_CMD_DVDNAV_MOUSECLICK },
27068
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2383 { NULL, 0 }
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2384 };
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
2385 #endif
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2386
30077
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2387 static const char *property_error_string(int error_value)
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2388 {
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2389 switch (error_value) {
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2390 case M_PROPERTY_ERROR:
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2391 return "ERROR";
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2392 case M_PROPERTY_UNAVAILABLE:
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2393 return "PROPERTY_UNAVAILABLE";
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2394 case M_PROPERTY_NOT_IMPLEMENTED:
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2395 return "NOT_IMPLEMENTED";
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2396 case M_PROPERTY_UNKNOWN:
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2397 return "PROPERTY_UNKNOWN";
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2398 case M_PROPERTY_DISABLED:
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2399 return "DISABLED";
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2400 }
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2401 return "UNKNOWN";
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2402 }
72e4567e7a0a Print a ANS_ERROR reply if one of the *_property slave command fails.
reimar
parents: 30025
diff changeset
2403
30344
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2404 static void remove_subtitle_range(MPContext *mpctx, int start, int count)
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2405 {
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2406 int idx;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2407 int end = start + count;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2408 int after = mpctx->set_of_sub_size - end;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2409 sub_data **subs = mpctx->set_of_subtitles;
30345
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2410 #ifdef CONFIG_ASS
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2411 ass_track_t **ass_tracks = mpctx->set_of_ass_tracks;
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2412 #endif
30344
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2413 if (count < 0 || count > mpctx->set_of_sub_size ||
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2414 start < 0 || start > mpctx->set_of_sub_size - count) {
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2415 mp_msg(MSGT_CPLAYER, MSGL_ERR,
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2416 "Cannot remove invalid subtitle range %i +%i\n", start, count);
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2417 return;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2418 }
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2419 for (idx = start; idx < end; idx++) {
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2420 sub_data *subd = subs[idx];
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2421 mp_msg(MSGT_CPLAYER, MSGL_STATUS,
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2422 MSGTR_RemovedSubtitleFile, idx + 1,
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2423 filename_recode(subd->filename));
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2424 sub_free(subd);
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2425 subs[idx] = NULL;
30345
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2426 #ifdef CONFIG_ASS
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2427 if (ass_tracks[idx])
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2428 ass_free_track(ass_tracks[idx]);
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2429 ass_tracks[idx] = NULL;
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2430 #endif
30344
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2431 }
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2432
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2433 mpctx->global_sub_size -= count;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2434 mpctx->set_of_sub_size -= count;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2435 if (mpctx->set_of_sub_size <= 0)
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
2436 mpctx->sub_counts[SUB_SOURCE_SUBS] = 0;
30344
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2437
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2438 memmove(subs + start, subs + end, after * sizeof(*subs));
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2439 memset(subs + start + after, 0, count * sizeof(*subs));
30345
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2440 #ifdef CONFIG_ASS
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2441 memmove(ass_tracks + start, ass_tracks + end, after * sizeof(*ass_tracks));
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2442 memset(ass_tracks + start + after, 0, count * sizeof(*ass_tracks));
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2443 #endif
30344
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2444
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2445 if (mpctx->set_of_sub_pos >= start && mpctx->set_of_sub_pos < end) {
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2446 mpctx->global_sub_pos = -2;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2447 subdata = NULL;
30345
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2448 #ifdef CONFIG_ASS
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2449 ass_track = NULL;
ea015e0ab0c6 Also handle ASS subtitles when removing subtitles via sub_remove slave command.
reimar
parents: 30344
diff changeset
2450 #endif
30344
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2451 mp_input_queue_cmd(mp_input_parse_cmd("sub_select"));
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2452 } else if (mpctx->set_of_sub_pos >= end) {
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2453 mpctx->set_of_sub_pos -= count;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2454 mpctx->global_sub_pos -= count;
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2455 }
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2456 }
4752e3cbe7be Avoid duplicating code to remove subtitles (sub_remove slave command).
reimar
parents: 30082
diff changeset
2457
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
2458 int run_command(MPContext *mpctx, mp_cmd_t *cmd)
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2459 {
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2460 sh_audio_t * const sh_audio = mpctx->sh_audio;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2461 sh_video_t * const sh_video = mpctx->sh_video;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2462 int brk_cmd = 0;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2463 if (!set_property_command(mpctx, cmd))
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2464 switch (cmd->id) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2465 case MP_CMD_SEEK:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2466 float v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2467 int abs;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2468 if (sh_video)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2469 mpctx->osd_show_percentage = sh_video->fps;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2470 v = cmd->args[0].v.f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2471 abs = (cmd->nargs > 1) ? cmd->args[1].v.i : 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2472 if (abs == 2) { /* Absolute seek to a specific timestamp in seconds */
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2473 abs_seek_pos = SEEK_ABSOLUTE;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2474 if (sh_video)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2475 mpctx->osd_function =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2476 (v > sh_video->pts) ? OSD_FFW : OSD_REW;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2477 rel_seek_secs = v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2478 } else if (abs) { /* Absolute seek by percentage */
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2479 abs_seek_pos = SEEK_ABSOLUTE | SEEK_FACTOR;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2480 if (sh_video)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2481 mpctx->osd_function = OSD_FFW; // Direction isn't set correctly
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2482 rel_seek_secs = v / 100.0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2483 } else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2484 rel_seek_secs += v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2485 mpctx->osd_function = (v > 0) ? OSD_FFW : OSD_REW;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2486 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2487 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2488 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2489 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2490
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2491 case MP_CMD_SET_PROPERTY:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2492 int r = mp_property_do(cmd->args[0].v.s, M_PROPERTY_PARSE,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2493 cmd->args[1].v.s, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2494 if (r == M_PROPERTY_UNKNOWN)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2495 mp_msg(MSGT_CPLAYER, MSGL_WARN,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2496 "Unknown property: '%s'\n", cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2497 else if (r <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2498 mp_msg(MSGT_CPLAYER, MSGL_WARN,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2499 "Failed to set property '%s' to '%s'.\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2500 cmd->args[0].v.s, cmd->args[1].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2501 if (r <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2502 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_ERROR=%s\n", property_error_string(r));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2503 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2504 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2505
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2506 case MP_CMD_STEP_PROPERTY:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2507 void* arg = NULL;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2508 int r,i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2509 double d;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2510 off_t o;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2511 if (cmd->args[1].v.f) {
31156
69d662752608 K&R cosmetics: Fix '*' placement.
diego
parents: 31077
diff changeset
2512 m_option_t *prop;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2513 if((r = mp_property_do(cmd->args[0].v.s,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2514 M_PROPERTY_GET_TYPE,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2515 &prop, mpctx)) <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2516 goto step_prop_err;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2517 if(prop->type == CONF_TYPE_INT ||
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2518 prop->type == CONF_TYPE_FLAG)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2519 i = cmd->args[1].v.f, arg = &i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2520 else if(prop->type == CONF_TYPE_FLOAT)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2521 arg = &cmd->args[1].v.f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2522 else if(prop->type == CONF_TYPE_DOUBLE ||
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2523 prop->type == CONF_TYPE_TIME)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2524 d = cmd->args[1].v.f, arg = &d;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2525 else if(prop->type == CONF_TYPE_POSITION)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2526 o = cmd->args[1].v.f, arg = &o;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2527 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2528 mp_msg(MSGT_CPLAYER, MSGL_WARN,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2529 "Ignoring step size stepping property '%s'.\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2530 cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2531 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2532 r = mp_property_do(cmd->args[0].v.s,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2533 cmd->args[2].v.i < 0 ?
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2534 M_PROPERTY_STEP_DOWN : M_PROPERTY_STEP_UP,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2535 arg, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2536 step_prop_err:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2537 if (r == M_PROPERTY_UNKNOWN)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2538 mp_msg(MSGT_CPLAYER, MSGL_WARN,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2539 "Unknown property: '%s'\n", cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2540 else if (r <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2541 mp_msg(MSGT_CPLAYER, MSGL_WARN,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2542 "Failed to increment property '%s' by %f.\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2543 cmd->args[0].v.s, cmd->args[1].v.f);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2544 if (r <= 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2545 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_ERROR=%s\n", property_error_string(r));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2546 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2547 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2548
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2549 case MP_CMD_GET_PROPERTY:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2550 char *tmp;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2551 int r = mp_property_do(cmd->args[0].v.s, M_PROPERTY_TO_STRING,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2552 &tmp, mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2553 if (r <= 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2554 mp_msg(MSGT_CPLAYER, MSGL_WARN,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2555 "Failed to get value of property '%s'.\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2556 cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2557 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_ERROR=%s\n", property_error_string(r));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2558 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2559 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2560 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_%s=%s\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2561 cmd->args[0].v.s, tmp);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2562 free(tmp);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2563 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2564 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2565
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2566 case MP_CMD_EDL_MARK:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2567 if (edl_fd) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2568 float v = sh_video ? sh_video->pts :
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2569 playing_audio_pts(sh_audio, mpctx->d_audio,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2570 mpctx->audio_out);
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2571
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2572 if (mpctx->begin_skip == MP_NOPTS_VALUE) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2573 mpctx->begin_skip = v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2574 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_EdloutStartSkip);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2575 } else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2576 if (mpctx->begin_skip > v)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2577 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_EdloutBadStop);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2578 else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2579 fprintf(edl_fd, "%f %f %d\n", mpctx->begin_skip, v, 0);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2580 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_EdloutEndSkip);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2581 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2582 mpctx->begin_skip = MP_NOPTS_VALUE;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2583 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2584 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2585 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2586
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2587 case MP_CMD_SWITCH_RATIO:
28368
c616bf5d520b command.c: Fix some commands crashing during audio-only playback
uau
parents: 28032
diff changeset
2588 if (!sh_video)
c616bf5d520b command.c: Fix some commands crashing during audio-only playback
uau
parents: 28032
diff changeset
2589 break;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2590 if (cmd->nargs == 0 || cmd->args[0].v.f == -1)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2591 movie_aspect = (float) sh_video->disp_w / sh_video->disp_h;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2592 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2593 movie_aspect = cmd->args[0].v.f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2594 mpcodecs_config_vo(sh_video, sh_video->disp_w, sh_video->disp_h, 0);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2595 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2596
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2597 case MP_CMD_SPEED_INCR:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2598 float v = cmd->args[0].v.f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2599 playback_speed += v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2600 build_afilter_chain(sh_audio, &ao_data);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2601 set_osd_msg(OSD_MSG_SPEED, 1, osd_duration, MSGTR_OSDSpeed,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2602 playback_speed);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2603 } break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2604
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2605 case MP_CMD_SPEED_MULT:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2606 float v = cmd->args[0].v.f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2607 playback_speed *= v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2608 build_afilter_chain(sh_audio, &ao_data);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2609 set_osd_msg(OSD_MSG_SPEED, 1, osd_duration, MSGTR_OSDSpeed,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2610 playback_speed);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2611 } break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2612
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2613 case MP_CMD_SPEED_SET:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2614 float v = cmd->args[0].v.f;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2615 playback_speed = v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2616 build_afilter_chain(sh_audio, &ao_data);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2617 set_osd_msg(OSD_MSG_SPEED, 1, osd_duration, MSGTR_OSDSpeed,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2618 playback_speed);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2619 } break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2620
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2621 case MP_CMD_FRAME_STEP:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2622 case MP_CMD_PAUSE:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2623 cmd->pausing = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2624 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2625 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2626
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2627 case MP_CMD_FILE_FILTER:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2628 file_filter = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2629 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2630
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2631 case MP_CMD_QUIT:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2632 exit_player_with_rc(EXIT_QUIT,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2633 (cmd->nargs > 0) ? cmd->args[0].v.i : 0);
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2634
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2635 case MP_CMD_PLAY_TREE_STEP:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2636 int n = cmd->args[0].v.i == 0 ? 1 : cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2637 int force = cmd->args[1].v.i;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2638
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 27341
diff changeset
2639 #ifdef CONFIG_GUI
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2640 if (use_gui) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2641 int i = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2642 if (n > 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2643 for (i = 0; i < n; i++)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2644 mplNext();
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2645 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2646 for (i = 0; i < -1 * n; i++)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2647 mplPrev();
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2648 } else
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2649 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2650 {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2651 if (!force && mpctx->playtree_iter) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2652 play_tree_iter_t *i =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2653 play_tree_iter_new_copy(mpctx->playtree_iter);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2654 if (play_tree_iter_step(i, n, 0) ==
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2655 PLAY_TREE_ITER_ENTRY)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2656 mpctx->eof =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2657 (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2658 play_tree_iter_free(i);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2659 } else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2660 mpctx->eof = (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2661 if (mpctx->eof)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2662 mpctx->play_tree_step = n;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2663 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2664 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2665 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2666 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2667
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2668 case MP_CMD_PLAY_TREE_UP_STEP:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2669 int n = cmd->args[0].v.i > 0 ? 1 : -1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2670 int force = cmd->args[1].v.i;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2671
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2672 if (!force && mpctx->playtree_iter) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2673 play_tree_iter_t *i =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2674 play_tree_iter_new_copy(mpctx->playtree_iter);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2675 if (play_tree_iter_up_step(i, n, 0) == PLAY_TREE_ITER_ENTRY)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2676 mpctx->eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2677 play_tree_iter_free(i);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2678 } else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2679 mpctx->eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2680 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2681 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2682 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2683
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2684 case MP_CMD_PLAY_ALT_SRC_STEP:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2685 if (mpctx->playtree_iter && mpctx->playtree_iter->num_files > 1) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2686 int v = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2687 if (v > 0
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2688 && mpctx->playtree_iter->file <
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2689 mpctx->playtree_iter->num_files)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2690 mpctx->eof = PT_NEXT_SRC;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2691 else if (v < 0 && mpctx->playtree_iter->file > 1)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2692 mpctx->eof = PT_PREV_SRC;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2693 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2694 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2695 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2696
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2697 case MP_CMD_SUB_STEP:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2698 if (sh_video) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2699 int movement = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2700 step_sub(subdata, sh_video->pts, movement);
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2701 #ifdef CONFIG_ASS
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2702 if (ass_track)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2703 sub_delay +=
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2704 ass_step_sub(ass_track,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2705 (sh_video->pts +
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2706 sub_delay) * 1000 + .5, movement) / 1000.;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2707 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2708 set_osd_msg(OSD_MSG_SUB_DELAY, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2709 MSGTR_OSDSubDelay, ROUND(sub_delay * 1000));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2710 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2711 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2712
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2713 case MP_CMD_SUB_LOG:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2714 log_sub();
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2715 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2716
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2717 case MP_CMD_OSD:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2718 int v = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2719 int max = (term_osd
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2720 && !sh_video) ? MAX_TERM_OSD_LEVEL : MAX_OSD_LEVEL;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2721 if (osd_level > max)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2722 osd_level = max;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2723 if (v < 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2724 osd_level = (osd_level + 1) % (max + 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2725 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2726 osd_level = v > max ? max : v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2727 /* Show OSD state when disabled, but not when an explicit
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2728 argument is given to the OSD command, i.e. in slave mode. */
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2729 if (v == -1 && osd_level <= 1)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2730 set_osd_msg(OSD_MSG_OSD_STATUS, 0, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2731 MSGTR_OSDosd,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2732 osd_level ? MSGTR_OSDenabled :
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2733 MSGTR_OSDdisabled);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2734 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2735 rm_osd_msg(OSD_MSG_OSD_STATUS);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2736 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2737 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2738
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2739 case MP_CMD_OSD_SHOW_TEXT:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2740 set_osd_msg(OSD_MSG_TEXT, cmd->args[2].v.i,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2741 (cmd->args[1].v.i <
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2742 0 ? osd_duration : cmd->args[1].v.i),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2743 "%-.63s", cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2744 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2745
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2746 case MP_CMD_OSD_SHOW_PROPERTY_TEXT:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2747 char *txt = m_properties_expand_string(mp_properties,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2748 cmd->args[0].v.s,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2749 mpctx);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2750 /* if no argument supplied take default osd_duration, else <arg> ms. */
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2751 if (txt) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2752 set_osd_msg(OSD_MSG_TEXT, cmd->args[2].v.i,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2753 (cmd->args[1].v.i <
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2754 0 ? osd_duration : cmd->args[1].v.i),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2755 "%-.63s", txt);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2756 free(txt);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2757 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2758 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2759 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2760
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2761 case MP_CMD_LOADFILE:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2762 play_tree_t *e = play_tree_new();
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2763 play_tree_add_file(e, cmd->args[0].v.s);
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2764
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2765 if (cmd->args[1].v.i) // append
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2766 play_tree_append_entry(mpctx->playtree->child, e);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2767 else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2768 // Go back to the starting point.
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2769 while (play_tree_iter_up_step
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2770 (mpctx->playtree_iter, 0, 1) != PLAY_TREE_ITER_END)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2771 /* NOP */ ;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2772 play_tree_free_list(mpctx->playtree->child, 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2773 play_tree_set_child(mpctx->playtree, e);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2774 pt_iter_goto_head(mpctx->playtree_iter);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2775 mpctx->eof = PT_NEXT_SRC;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2776 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2777 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2778 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2779 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2780
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2781 case MP_CMD_LOADLIST:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2782 play_tree_t *e = parse_playlist_file(cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2783 if (!e)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2784 mp_msg(MSGT_CPLAYER, MSGL_ERR,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2785 MSGTR_PlaylistLoadUnable, cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2786 else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2787 if (cmd->args[1].v.i) // append
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2788 play_tree_append_entry(mpctx->playtree->child, e);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2789 else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2790 // Go back to the starting point.
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2791 while (play_tree_iter_up_step
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2792 (mpctx->playtree_iter, 0, 1)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2793 != PLAY_TREE_ITER_END)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2794 /* NOP */ ;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2795 play_tree_free_list(mpctx->playtree->child, 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2796 play_tree_set_child(mpctx->playtree, e);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2797 pt_iter_goto_head(mpctx->playtree_iter);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2798 mpctx->eof = PT_NEXT_SRC;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2799 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2800 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2801 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2802 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2803 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2804
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2805 case MP_CMD_STOP:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2806 // Go back to the starting point.
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2807 while (play_tree_iter_up_step
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2808 (mpctx->playtree_iter, 0, 1) != PLAY_TREE_ITER_END)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2809 /* NOP */ ;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2810 mpctx->eof = PT_STOP;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2811 brk_cmd = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2812 break;
26877
4ab1cfcee430 Add a slave command to stop stream playback.
ben
parents: 26759
diff changeset
2813
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2814 case MP_CMD_OSD_SHOW_PROGRESSION:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2815 int len = demuxer_get_time_length(mpctx->demuxer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2816 int pts = demuxer_get_current_time(mpctx->demuxer);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2817 set_osd_bar(0, "Position", 0, 100, demuxer_get_percent_pos(mpctx->demuxer));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2818 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2819 "%c %02d:%02d:%02d / %02d:%02d:%02d",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2820 mpctx->osd_function, pts/3600, (pts/60)%60, pts%60,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2821 len/3600, (len/60)%60, len%60);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2822 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2823 break;
30986
2186c040f9e0 Add osd_show_progression: Show progress bar and elapsed/total time.
cehoyos
parents: 30901
diff changeset
2824
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2825 #ifdef CONFIG_RADIO
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2826 case MP_CMD_RADIO_STEP_CHANNEL:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2827 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2828 int v = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2829 if (v > 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2830 radio_step_channel(mpctx->demuxer->stream,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2831 RADIO_CHANNEL_HIGHER);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2832 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2833 radio_step_channel(mpctx->demuxer->stream,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2834 RADIO_CHANNEL_LOWER);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2835 if (radio_get_channel_name(mpctx->demuxer->stream)) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2836 set_osd_msg(OSD_MSG_RADIO_CHANNEL, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2837 MSGTR_OSDChannel,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2838 radio_get_channel_name(mpctx->demuxer->stream));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2839 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2840 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2841 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2842
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2843 case MP_CMD_RADIO_SET_CHANNEL:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2844 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2845 radio_set_channel(mpctx->demuxer->stream, cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2846 if (radio_get_channel_name(mpctx->demuxer->stream)) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2847 set_osd_msg(OSD_MSG_RADIO_CHANNEL, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2848 MSGTR_OSDChannel,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2849 radio_get_channel_name(mpctx->demuxer->stream));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2850 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2851 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2852 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2853
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2854 case MP_CMD_RADIO_SET_FREQ:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2855 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2856 radio_set_freq(mpctx->demuxer->stream, cmd->args[0].v.f);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2857 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2858
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2859 case MP_CMD_RADIO_STEP_FREQ:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2860 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2861 radio_step_freq(mpctx->demuxer->stream, cmd->args[0].v.f);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2862 break;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
2863 #endif
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2864
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
2865 #ifdef CONFIG_TV
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2866 case MP_CMD_TV_START_SCAN:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2867 if (mpctx->file_format == DEMUXER_TYPE_TV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2868 tv_start_scan((tvi_handle_t *) (mpctx->demuxer->priv),1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2869 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2870 case MP_CMD_TV_SET_FREQ:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2871 if (mpctx->file_format == DEMUXER_TYPE_TV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2872 tv_set_freq((tvi_handle_t *) (mpctx->demuxer->priv),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2873 cmd->args[0].v.f * 16.0);
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2874 #ifdef CONFIG_PVR
23258
1d86fb12e4ae cosmetic: use K&R coding style, as in reste of the file
ben
parents: 23244
diff changeset
2875 else if (mpctx->stream && mpctx->stream->type == STREAMTYPE_PVR) {
23244
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2876 pvr_set_freq (mpctx->stream, ROUND (cmd->args[0].v.f));
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2877 set_osd_msg (OSD_MSG_TV_CHANNEL, 1, osd_duration, "%s: %s",
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2878 pvr_get_current_channelname (mpctx->stream),
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2879 pvr_get_current_stationname (mpctx->stream));
23259
07ff903a59f5 cosmetic: indent
ben
parents: 23258
diff changeset
2880 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2881 #endif /* CONFIG_PVR */
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2882 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2883
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2884 case MP_CMD_TV_STEP_FREQ:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2885 if (mpctx->file_format == DEMUXER_TYPE_TV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2886 tv_step_freq((tvi_handle_t *) (mpctx->demuxer->priv),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2887 cmd->args[0].v.f * 16.0);
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2888 #ifdef CONFIG_PVR
23258
1d86fb12e4ae cosmetic: use K&R coding style, as in reste of the file
ben
parents: 23244
diff changeset
2889 else if (mpctx->stream && mpctx->stream->type == STREAMTYPE_PVR) {
23244
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2890 pvr_force_freq_step (mpctx->stream, ROUND (cmd->args[0].v.f));
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2891 set_osd_msg (OSD_MSG_TV_CHANNEL, 1, osd_duration, "%s: f %d",
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2892 pvr_get_current_channelname (mpctx->stream),
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2893 pvr_get_current_frequency (mpctx->stream));
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2894 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2895 #endif /* CONFIG_PVR */
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2896 break;
22667
e1859558b37d New slave command: tv_step_freq <offset in MHz>
voroshil
parents: 22488
diff changeset
2897
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2898 case MP_CMD_TV_SET_NORM:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2899 if (mpctx->file_format == DEMUXER_TYPE_TV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2900 tv_set_norm((tvi_handle_t *) (mpctx->demuxer->priv),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2901 cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2902 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2903
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2904 case MP_CMD_TV_STEP_CHANNEL:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2905 if (mpctx->file_format == DEMUXER_TYPE_TV) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2906 int v = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2907 if (v > 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2908 tv_step_channel((tvi_handle_t *) (mpctx->
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2909 demuxer->priv),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2910 TV_CHANNEL_HIGHER);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2911 } else {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2912 tv_step_channel((tvi_handle_t *) (mpctx->
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2913 demuxer->priv),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2914 TV_CHANNEL_LOWER);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2915 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2916 if (tv_channel_list) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2917 set_osd_msg(OSD_MSG_TV_CHANNEL, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2918 MSGTR_OSDChannel, tv_channel_current->name);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2919 //vo_osd_changed(OSDTYPE_SUBTITLE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2920 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2921 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2922 #ifdef CONFIG_PVR
23244
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2923 else if (mpctx->stream &&
23258
1d86fb12e4ae cosmetic: use K&R coding style, as in reste of the file
ben
parents: 23244
diff changeset
2924 mpctx->stream->type == STREAMTYPE_PVR) {
23244
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2925 pvr_set_channel_step (mpctx->stream, cmd->args[0].v.i);
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2926 set_osd_msg (OSD_MSG_TV_CHANNEL, 1, osd_duration, "%s: %s",
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2927 pvr_get_current_channelname (mpctx->stream),
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2928 pvr_get_current_stationname (mpctx->stream));
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2929 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2930 #endif /* CONFIG_PVR */
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2931 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2932 #ifdef CONFIG_DVBIN
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2933 if (mpctx->stream->type == STREAMTYPE_DVB) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2934 int dir;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2935 int v = cmd->args[0].v.i;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2936
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2937 mpctx->last_dvb_step = v;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2938 if (v > 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2939 dir = DVB_CHANNEL_HIGHER;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2940 else
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2941 dir = DVB_CHANNEL_LOWER;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2942
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2943
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2944 if (dvb_step_channel(mpctx->stream, dir))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2945 mpctx->eof = mpctx->dvbin_reopen = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2946 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2947 #endif /* CONFIG_DVBIN */
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2948 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2949
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2950 case MP_CMD_TV_SET_CHANNEL:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2951 if (mpctx->file_format == DEMUXER_TYPE_TV) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2952 tv_set_channel((tvi_handle_t *) (mpctx->demuxer->priv),
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2953 cmd->args[0].v.s);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2954 if (tv_channel_list) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2955 set_osd_msg(OSD_MSG_TV_CHANNEL, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2956 MSGTR_OSDChannel, tv_channel_current->name);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2957 //vo_osd_changed(OSDTYPE_SUBTITLE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2958 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2959 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2960 #ifdef CONFIG_PVR
23258
1d86fb12e4ae cosmetic: use K&R coding style, as in reste of the file
ben
parents: 23244
diff changeset
2961 else if (mpctx->stream && mpctx->stream->type == STREAMTYPE_PVR) {
23244
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2962 pvr_set_channel (mpctx->stream, cmd->args[0].v.s);
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2963 set_osd_msg (OSD_MSG_TV_CHANNEL, 1, osd_duration, "%s: %s",
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2964 pvr_get_current_channelname (mpctx->stream),
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2965 pvr_get_current_stationname (mpctx->stream));
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2966 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2967 #endif /* CONFIG_PVR */
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2968 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2969
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2970 #ifdef CONFIG_DVBIN
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2971 case MP_CMD_DVB_SET_CHANNEL:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2972 if (mpctx->stream->type == STREAMTYPE_DVB) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2973 mpctx->last_dvb_step = 1;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2974
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2975 if (dvb_set_channel
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2976 (mpctx->stream, cmd->args[1].v.i, cmd->args[0].v.i))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2977 mpctx->eof = mpctx->dvbin_reopen = 1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2978 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2979 break;
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2980 #endif /* CONFIG_DVBIN */
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
2981
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2982 case MP_CMD_TV_LAST_CHANNEL:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2983 if (mpctx->file_format == DEMUXER_TYPE_TV) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2984 tv_last_channel((tvi_handle_t *) (mpctx->demuxer->priv));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2985 if (tv_channel_list) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2986 set_osd_msg(OSD_MSG_TV_CHANNEL, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2987 MSGTR_OSDChannel, tv_channel_current->name);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2988 //vo_osd_changed(OSDTYPE_SUBTITLE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2989 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2990 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2991 #ifdef CONFIG_PVR
23258
1d86fb12e4ae cosmetic: use K&R coding style, as in reste of the file
ben
parents: 23244
diff changeset
2992 else if (mpctx->stream && mpctx->stream->type == STREAMTYPE_PVR) {
23244
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2993 pvr_set_lastchannel (mpctx->stream);
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2994 set_osd_msg (OSD_MSG_TV_CHANNEL, 1, osd_duration, "%s: %s",
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2995 pvr_get_current_channelname (mpctx->stream),
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2996 pvr_get_current_stationname (mpctx->stream));
e5e8ac0bd7fc support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents: 23077
diff changeset
2997 }
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27345
diff changeset
2998 #endif /* CONFIG_PVR */
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
2999 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3000
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3001 case MP_CMD_TV_STEP_NORM:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3002 if (mpctx->file_format == DEMUXER_TYPE_TV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3003 tv_step_norm((tvi_handle_t *) (mpctx->demuxer->priv));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3004 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3005
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3006 case MP_CMD_TV_STEP_CHANNEL_LIST:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3007 if (mpctx->file_format == DEMUXER_TYPE_TV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3008 tv_step_chanlist((tvi_handle_t *) (mpctx->demuxer->priv));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3009 break;
29806
a5e7590ffdbd Separate teletext from tv support.
cehoyos
parents: 29759
diff changeset
3010 #endif /* CONFIG_TV */
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3011 case MP_CMD_TV_TELETEXT_ADD_DEC:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3012 {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3013 if (mpctx->demuxer->teletext)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3014 teletext_control(mpctx->demuxer->teletext,TV_VBI_CONTROL_ADD_DEC,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3015 &(cmd->args[0].v.s));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3016 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3017 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3018 case MP_CMD_TV_TELETEXT_GO_LINK:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3019 {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3020 if (mpctx->demuxer->teletext)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3021 teletext_control(mpctx->demuxer->teletext,TV_VBI_CONTROL_GO_LINK,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3022 &(cmd->args[0].v.i));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3023 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3024 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
3025
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3026 case MP_CMD_SUB_LOAD:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3027 if (sh_video) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3028 int n = mpctx->set_of_sub_size;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3029 add_subtitles(cmd->args[0].v.s, sh_video->fps, 0);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3030 if (n != mpctx->set_of_sub_size) {
31612
7fc1f051a19f Change global subtitle numbering scheme so that demuxers can "asynchronously"
reimar
parents: 31312
diff changeset
3031 mpctx->sub_counts[SUB_SOURCE_SUBS]++;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3032 ++mpctx->global_sub_size;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3033 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3034 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3035 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3036
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3037 case MP_CMD_SUB_REMOVE:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3038 if (sh_video) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3039 int v = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3040 if (v < 0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3041 remove_subtitle_range(mpctx, 0, mpctx->set_of_sub_size);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3042 } else if (v < mpctx->set_of_sub_size) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3043 remove_subtitle_range(mpctx, v, 1);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3044 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3045 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3046 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3047
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3048 case MP_CMD_GET_SUB_VISIBILITY:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3049 if (sh_video) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3050 mp_msg(MSGT_GLOBAL, MSGL_INFO,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3051 "ANS_SUB_VISIBILITY=%d\n", sub_visibility);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3052 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3053 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3054
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3055 case MP_CMD_SCREENSHOT:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3056 if (vo_config_count) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3057 mp_msg(MSGT_CPLAYER, MSGL_INFO, "sending VFCTRL_SCREENSHOT!\n");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3058 if (CONTROL_OK !=
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3059 ((vf_instance_t *) sh_video->vfilter)->
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3060 control(sh_video->vfilter, VFCTRL_SCREENSHOT,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3061 &cmd->args[0].v.i))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3062 mp_msg(MSGT_CPLAYER, MSGL_INFO, "failed (forgot -vf screenshot?)\n");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3063 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3064 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3065
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3066 case MP_CMD_VF_CHANGE_RECTANGLE:
28368
c616bf5d520b command.c: Fix some commands crashing during audio-only playback
uau
parents: 28032
diff changeset
3067 if (!sh_video)
c616bf5d520b command.c: Fix some commands crashing during audio-only playback
uau
parents: 28032
diff changeset
3068 break;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3069 set_rectangle(sh_video, cmd->args[0].v.i, cmd->args[1].v.i);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3070 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3071
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3072 case MP_CMD_GET_TIME_LENGTH:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3073 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_LENGTH=%.2lf\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3074 demuxer_get_time_length(mpctx->demuxer));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3075 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3076 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3077
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3078 case MP_CMD_GET_FILENAME:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3079 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_FILENAME='%s'\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3080 get_metadata(META_NAME));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3081 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3082 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3083
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3084 case MP_CMD_GET_VIDEO_CODEC:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3085 char *inf = get_metadata(META_VIDEO_CODEC);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3086 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3087 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3088 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_CODEC='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3089 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3090 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3091 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3092
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3093 case MP_CMD_GET_VIDEO_BITRATE:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3094 char *inf = get_metadata(META_VIDEO_BITRATE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3095 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3096 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3097 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_BITRATE='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3098 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3099 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3100 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3101
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3102 case MP_CMD_GET_VIDEO_RESOLUTION:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3103 char *inf = get_metadata(META_VIDEO_RESOLUTION);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3104 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3105 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3106 mp_msg(MSGT_GLOBAL, MSGL_INFO,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3107 "ANS_VIDEO_RESOLUTION='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3108 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3109 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3110 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3111
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3112 case MP_CMD_GET_AUDIO_CODEC:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3113 char *inf = get_metadata(META_AUDIO_CODEC);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3114 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3115 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3116 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_CODEC='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3117 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3118 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3119 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3120
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3121 case MP_CMD_GET_AUDIO_BITRATE:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3122 char *inf = get_metadata(META_AUDIO_BITRATE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3123 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3124 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3125 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_BITRATE='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3126 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3127 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3128 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3129
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3130 case MP_CMD_GET_AUDIO_SAMPLES:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3131 char *inf = get_metadata(META_AUDIO_SAMPLES);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3132 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3133 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3134 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_SAMPLES='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3135 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3136 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3137 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3138
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3139 case MP_CMD_GET_META_TITLE:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3140 char *inf = get_metadata(META_INFO_TITLE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3141 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3142 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3143 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TITLE='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3144 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3145 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3146 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3147
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3148 case MP_CMD_GET_META_ARTIST:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3149 char *inf = get_metadata(META_INFO_ARTIST);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3150 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3151 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3152 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ARTIST='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3153 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3154 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3155 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3156
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3157 case MP_CMD_GET_META_ALBUM:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3158 char *inf = get_metadata(META_INFO_ALBUM);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3159 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3160 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3161 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ALBUM='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3162 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3163 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3164 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3165
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3166 case MP_CMD_GET_META_YEAR:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3167 char *inf = get_metadata(META_INFO_YEAR);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3168 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3169 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3170 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_YEAR='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3171 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3172 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3173 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3174
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3175 case MP_CMD_GET_META_COMMENT:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3176 char *inf = get_metadata(META_INFO_COMMENT);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3177 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3178 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3179 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_COMMENT='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3180 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3181 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3182 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3183
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3184 case MP_CMD_GET_META_TRACK:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3185 char *inf = get_metadata(META_INFO_TRACK);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3186 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3187 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3188 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TRACK='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3189 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3190 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3191 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3192
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3193 case MP_CMD_GET_META_GENRE:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3194 char *inf = get_metadata(META_INFO_GENRE);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3195 if (!inf)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3196 inf = strdup("");
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3197 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_GENRE='%s'\n", inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3198 free(inf);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3199 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3200 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3201
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3202 case MP_CMD_GET_VO_FULLSCREEN:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3203 if (mpctx->video_out && vo_config_count)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3204 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VO_FULLSCREEN=%d\n", vo_fs);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3205 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3206
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3207 case MP_CMD_GET_PERCENT_POS:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3208 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_PERCENT_POSITION=%d\n",
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3209 demuxer_get_percent_pos(mpctx->demuxer));
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3210 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3211
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3212 case MP_CMD_GET_TIME_POS:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3213 float pos = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3214 if (sh_video)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3215 pos = sh_video->pts;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3216 else if (sh_audio && mpctx->audio_out)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3217 pos =
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3218 playing_audio_pts(sh_audio, mpctx->d_audio,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3219 mpctx->audio_out);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3220 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_TIME_POSITION=%.1f\n", pos);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3221 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3222 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3223
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3224 case MP_CMD_RUN:
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3225 #ifndef __MINGW32__
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3226 if (!fork()) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3227 execl("/bin/sh", "sh", "-c", cmd->args[0].v.s, NULL);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3228 exit(0);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3229 }
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
3230 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3231 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3232
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3233 case MP_CMD_KEYDOWN_EVENTS:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3234 mplayer_put_key(cmd->args[0].v.i);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3235 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3236
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3237 case MP_CMD_SET_MOUSE_POS:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3238 int pointer_x, pointer_y;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3239 double dx, dy;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3240 pointer_x = cmd->args[0].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3241 pointer_y = cmd->args[1].v.i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3242 rescale_input_coordinates(pointer_x, pointer_y, &dx, &dy);
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
3243 #ifdef CONFIG_DVDNAV
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3244 if (mpctx->stream->type == STREAMTYPE_DVDNAV
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3245 && dx > 0.0 && dy > 0.0) {
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3246 int button = -1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3247 pointer_x = (int) (dx * (double) sh_video->disp_w);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3248 pointer_y = (int) (dy * (double) sh_video->disp_h);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3249 mp_dvdnav_update_mouse_pos(mpctx->stream,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3250 pointer_x, pointer_y, &button);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3251 if (osd_level > 1 && button > 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3252 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3253 "Selected button number %d", button);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3254 }
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3255 #endif
27345
b597fd2924b4 Rename preprocessor directive HAVE_MENU --> CONFIG_MENU.
diego
parents: 27343
diff changeset
3256 #ifdef CONFIG_MENU
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3257 if (use_menu && dx >= 0.0 && dy >= 0.0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3258 menu_update_mouse_pos(dx, dy);
25461
7ef04742572c OSD menu support mouse selection.
ulion
parents: 25402
diff changeset
3259 #endif
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3260 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3261 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3262
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 27069
diff changeset
3263 #ifdef CONFIG_DVDNAV
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3264 case MP_CMD_DVDNAV:{
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3265 int button = -1;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3266 int i;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3267 mp_command_type command = 0;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3268 if (mpctx->stream->type != STREAMTYPE_DVDNAV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3269 break;
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3270
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3271 for (i = 0; mp_dvdnav_bindings[i].name; i++)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3272 if (cmd->args[0].v.s &&
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3273 !strcasecmp (cmd->args[0].v.s,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3274 mp_dvdnav_bindings[i].name))
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3275 command = mp_dvdnav_bindings[i].cmd;
27068
d7e0e33c546f Change DVDNAV command key names.
ben
parents: 26986
diff changeset
3276
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3277 mp_dvdnav_handle_input(mpctx->stream,command,&button);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3278 if (osd_level > 1 && button > 0)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3279 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3280 "Selected button number %d", button);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3281 }
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3282 break;
25817
883c6c3ae041 Add new command to switch between dvdnav titles
ben
parents: 25816
diff changeset
3283
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3284 case MP_CMD_SWITCH_TITLE:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3285 if (mpctx->stream->type == STREAMTYPE_DVDNAV)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3286 mp_dvdnav_switch_title(mpctx->stream, cmd->args[0].v.i);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3287 break;
25817
883c6c3ae041 Add new command to switch between dvdnav titles
ben
parents: 25816
diff changeset
3288
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3289 #endif
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3290
30988
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3291 case MP_CMD_AF_SWITCH:
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3292 if (sh_audio)
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3293 {
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3294 af_uninit(mpctx->mixer.afilter);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3295 af_init(mpctx->mixer.afilter);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3296 }
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3297 case MP_CMD_AF_ADD:
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3298 case MP_CMD_AF_DEL:
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3299 if (!sh_audio)
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3300 break;
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3301 {
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3302 char* af_args = strdup(cmd->args[0].v.s);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3303 char* af_commands = af_args;
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3304 char* af_command;
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3305 af_instance_t* af;
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3306 while ((af_command = strsep(&af_commands, ",")) != NULL)
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3307 {
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3308 if (cmd->id == MP_CMD_AF_DEL)
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3309 {
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3310 af = af_get(mpctx->mixer.afilter, af_command);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3311 if (af != NULL)
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3312 af_remove(mpctx->mixer.afilter, af);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3313 }
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3314 else
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3315 af_add(mpctx->mixer.afilter, af_command);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3316 }
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3317 build_afilter_chain(sh_audio, &ao_data);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3318 free(af_args);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3319 }
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3320 break;
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3321 case MP_CMD_AF_CLR:
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3322 if (!sh_audio)
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3323 break;
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3324 af_uninit(mpctx->mixer.afilter);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3325 af_init(mpctx->mixer.afilter);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3326 build_afilter_chain(sh_audio, &ao_data);
8d840754a921 Add slave commands for loading and unloading audio filters at runtime.
cehoyos
parents: 30986
diff changeset
3327 break;
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3328 default:
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3329 mp_msg(MSGT_CPLAYER, MSGL_V,
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3330 "Received unknown cmd %s\n", cmd->name);
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3331 }
22479
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3332
a99ddf2ece25 Change to match current command.c (same functionality).
uau
parents: 22478
diff changeset
3333 switch (cmd->pausing) {
31077
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3334 case 1: // "pausing"
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3335 mpctx->osd_function = OSD_PAUSE;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3336 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3337 case 3: // "pausing_toggle"
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3338 mpctx->was_paused = !mpctx->was_paused;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3339 if (mpctx->was_paused)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3340 mpctx->osd_function = OSD_PAUSE;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3341 else if (mpctx->osd_function == OSD_PAUSE)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3342 mpctx->osd_function = OSD_PLAY;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3343 break;
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3344 case 2: // "pausing_keep"
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3345 if (mpctx->was_paused)
dd7f15a3fb1b the great MPlayer tab removal: part II
diego
parents: 30988
diff changeset
3346 mpctx->osd_function = OSD_PAUSE;
22478
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
3347 }
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
3348 return brk_cmd;
3501ae650b23 Add alternative way to create command.c to svn history,
uau
parents:
diff changeset
3349 }