Mercurial > mplayer.hg
annotate command.c @ 24970:938e685a263c
ack, can't believe i wrote this crap with void pointer arithmetic
gimme some cola!!!
since the code was disabled and tests had shown it was slower,
i'm just removing it rather than fixing it.
author | rfelker |
---|---|
date | Fri, 09 Nov 2007 12:51:43 +0000 |
parents | e446bad0872c |
children | aad0f4a495ab |
rev | line source |
---|---|
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1 #include <stdlib.h> |
22478 | 2 #include <inttypes.h> |
3 #include <unistd.h> | |
22483 | 4 #include <string.h> |
22478 | 5 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
6 #include "config.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
7 #include "input/input.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
8 #include "stream/stream.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
9 #include "libmpdemux/demuxer.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
10 #include "libmpdemux/stheader.h" |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
11 #include "codec-cfg.h" |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
12 #include "mplayer.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
13 #include "libvo/sub.h" |
22478 | 14 #include "m_option.h" |
15 #include "m_property.h" | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
16 #include "help_mp.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
17 #include "metadata.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
18 #include "libmpcodecs/mp_image.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
19 #include "libmpcodecs/vf.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
20 #include "libmpcodecs/vd.h" |
22478 | 21 #include "libvo/video_out.h" |
23725 | 22 #include "libvo/font_load.h" |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
23 #include "playtree.h" |
22478 | 24 #include "libao2/audio_out.h" |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
25 #include "mpcommon.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
26 #include "mixer.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
27 #include "libmpdemux/matroska.h" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
28 #include "libmpcodecs/dec_video.h" |
22478 | 29 #include "vobsub.h" |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
30 #include "spudec.h" |
24242
76f5d8892c04
Clean up the way get_path is handled: Compile get_path.c to an object to link
diego
parents:
24163
diff
changeset
|
31 #include "get_path.h" |
22478 | 32 #ifdef USE_TV |
33 #include "stream/tv.h" | |
34 #endif | |
35 #ifdef USE_RADIO | |
36 #include "stream/stream_radio.h" | |
37 #endif | |
23244
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
38 #ifdef HAVE_PVR |
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
39 #include "stream/pvr.h" |
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
40 #endif |
22478 | 41 #ifdef HAS_DVBIN_SUPPORT |
42 #include "stream/dvbin.h" | |
43 #endif | |
44 #ifdef USE_DVDREAD | |
45 #include "stream/stream_dvd.h" | |
46 #endif | |
47 #ifdef USE_DVDNAV | |
48 #include "stream/stream_dvdnav.h" | |
49 #endif | |
50 #ifdef USE_ASS | |
51 #include "libass/ass.h" | |
52 #include "libass/ass_mp.h" | |
53 #endif | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
54 #ifdef HAVE_NEW_GUI |
23077 | 55 #include "gui/interface.h" |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
56 #endif |
22478 | 57 |
58 #include "mp_core.h" | |
24162 | 59 #include "mp_fifo.h" |
22478 | 60 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
61 #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
|
62 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
63 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
|
64 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
65 //remove the borders, if any, and rescale to the range [0,1],[0,1] |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
66 if (vo_fs) { //we are in full-screen mode |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
67 if (vo_screenwidth > vo_dwidth) //there are borders along the x axis |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
68 ix -= (vo_screenwidth - vo_dwidth) / 2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
69 if (vo_screenheight > vo_dheight) //there are borders along the y axis (usual way) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
70 iy -= (vo_screenheight - vo_dheight) / 2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
71 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
72 if (ix < 0 || ix > vo_dwidth) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
73 *dx = *dy = -1.0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
74 return; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
75 } //we are on one of the borders |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
76 if (iy < 0 || iy > vo_dheight) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
77 *dx = *dy = -1.0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
78 return; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
79 } //we are on one of the borders |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
80 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
81 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
82 *dx = (double) ix / (double) vo_dwidth; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
83 *dy = (double) iy / (double) vo_dheight; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
84 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
85 mp_msg(MSGT_CPLAYER, MSGL_V, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
86 "\r\nrescaled coordinates: %.3lf, %.3lf, screen (%d x %d), vodisplay: (%d, %d), fullscreen: %d\r\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
87 *dx, *dy, vo_screenwidth, vo_screenheight, vo_dwidth, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
88 vo_dheight, vo_fs); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
89 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
90 |
22478 | 91 static int sub_source(MPContext * mpctx) |
92 { | |
93 int source = -1; | |
94 int top = -1; | |
95 int i; | |
96 for (i = 0; i < SUB_SOURCES; i++) { | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
97 int j = mpctx->global_sub_indices[i]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
98 if ((j >= 0) && (j > top) && (mpctx->global_sub_pos >= j)) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
99 source = i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
100 top = j; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
101 } |
22478 | 102 } |
103 return source; | |
104 } | |
105 | |
106 /** | |
107 * \brief Log the currently displayed subtitle to a file | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
108 * |
22478 | 109 * Logs the current or last displayed subtitle together with filename |
110 * and time information to ~/.mplayer/subtitle_log | |
111 * | |
112 * Intended purpose is to allow convenient marking of bogus subtitles | |
113 * which need to be fixed while watching the movie. | |
114 */ | |
115 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
116 static void log_sub(void) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
117 { |
22478 | 118 char *fname; |
119 FILE *f; | |
120 int i; | |
121 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
122 if (subdata == NULL || vo_sub_last == NULL) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
123 return; |
22478 | 124 fname = get_path("subtitle_log"); |
125 f = fopen(fname, "a"); | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
126 if (!f) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
127 return; |
22478 | 128 fprintf(f, "----------------------------------------------------------\n"); |
129 if (subdata->sub_uses_time) { | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
130 fprintf(f, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
131 "N: %s S: %02ld:%02ld:%02ld.%02ld E: %02ld:%02ld:%02ld.%02ld\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
132 filename, vo_sub_last->start / 360000, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
133 (vo_sub_last->start / 6000) % 60, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
134 (vo_sub_last->start / 100) % 60, vo_sub_last->start % 100, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
135 vo_sub_last->end / 360000, (vo_sub_last->end / 6000) % 60, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
136 (vo_sub_last->end / 100) % 60, vo_sub_last->end % 100); |
22478 | 137 } else { |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
138 fprintf(f, "N: %s S: %ld E: %ld\n", filename, vo_sub_last->start, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
139 vo_sub_last->end); |
22478 | 140 } |
141 for (i = 0; i < vo_sub_last->lines; i++) { | |
142 fprintf(f, "%s\n", vo_sub_last->text[i]); | |
143 } | |
144 fclose(f); | |
145 } | |
146 | |
147 | |
148 /// \defgroup Properties | |
149 ///@{ | |
150 | |
151 /// \defgroup GeneralProperties General properties | |
152 /// \ingroup Properties | |
153 ///@{ | |
154 | |
155 /// OSD level (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
156 static int mp_property_osdlevel(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
157 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
158 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
159 return m_property_choice(prop, action, arg, &osd_level); |
22478 | 160 } |
161 | |
23727 | 162 /// Loop (RW) |
163 static int mp_property_loop(m_option_t * prop, int action, void *arg, | |
164 MPContext * mpctx) | |
165 { | |
166 switch (action) { | |
167 case M_PROPERTY_PRINT: | |
168 if (!arg) return M_PROPERTY_ERROR; | |
169 if (mpctx->loop_times < 0) | |
170 *(char**)arg = strdup("off"); | |
171 else if (mpctx->loop_times == 0) | |
172 *(char**)arg = strdup("inf"); | |
173 else | |
174 break; | |
175 return M_PROPERTY_OK; | |
176 } | |
177 return m_property_int_range(prop, action, arg, &mpctx->loop_times); | |
178 } | |
179 | |
22478 | 180 /// Playback speed (RW) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
181 static int mp_property_playback_speed(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
182 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
183 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
184 switch (action) { |
22478 | 185 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
186 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
187 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
188 M_PROPERTY_CLAMP(prop, *(float *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
189 playback_speed = *(float *) arg; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
190 build_afilter_chain(mpctx->sh_audio, &ao_data); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
191 return M_PROPERTY_OK; |
22478 | 192 case M_PROPERTY_STEP_UP: |
193 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
194 playback_speed += (arg ? *(float *) arg : 0.1) * |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
195 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
196 M_PROPERTY_CLAMP(prop, playback_speed); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
197 build_afilter_chain(mpctx->sh_audio, &ao_data); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
198 return M_PROPERTY_OK; |
22478 | 199 } |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
200 return m_property_float_range(prop, action, arg, &playback_speed); |
22478 | 201 } |
202 | |
203 /// filename with path (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
204 static int mp_property_path(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
205 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
206 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
207 return m_property_string_ro(prop, action, arg, filename); |
22478 | 208 } |
209 | |
210 /// filename without path (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
211 static int mp_property_filename(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
212 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
213 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
214 char *f; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
215 if (!filename) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
216 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
217 if (((f = strrchr(filename, '/')) || (f = strrchr(filename, '\\'))) && f[1]) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
218 f++; |
22478 | 219 else |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
220 f = filename; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
221 return m_property_string_ro(prop, action, arg, f); |
22478 | 222 } |
223 | |
224 /// Demuxer name (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
225 static int mp_property_demuxer(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
226 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
227 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
228 if (!mpctx->demuxer) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
229 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
230 return m_property_string_ro(prop, action, arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
231 (char *) mpctx->demuxer->desc->name); |
22478 | 232 } |
233 | |
234 /// Position in the stream (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
235 static int mp_property_stream_pos(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
236 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
237 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
238 if (!mpctx->demuxer || !mpctx->demuxer->stream) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
239 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
240 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
241 return M_PROPERTY_ERROR; |
22478 | 242 switch (action) { |
243 case M_PROPERTY_GET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
244 *(off_t *) arg = stream_tell(mpctx->demuxer->stream); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
245 return M_PROPERTY_OK; |
22478 | 246 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
247 M_PROPERTY_CLAMP(prop, *(off_t *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
248 stream_seek(mpctx->demuxer->stream, *(off_t *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
249 return M_PROPERTY_OK; |
22478 | 250 } |
251 return M_PROPERTY_NOT_IMPLEMENTED; | |
252 } | |
253 | |
254 /// Stream start offset (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
255 static int mp_property_stream_start(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
256 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
257 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
258 if (!mpctx->demuxer || !mpctx->demuxer->stream) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
259 return M_PROPERTY_UNAVAILABLE; |
22478 | 260 switch (action) { |
261 case M_PROPERTY_GET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
262 *(off_t *) arg = mpctx->demuxer->stream->start_pos; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
263 return M_PROPERTY_OK; |
22478 | 264 } |
265 return M_PROPERTY_NOT_IMPLEMENTED; | |
266 } | |
267 | |
268 /// Stream end offset (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
269 static int mp_property_stream_end(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
270 MPContext * mpctx) |
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 if (!mpctx->demuxer || !mpctx->demuxer->stream) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
273 return M_PROPERTY_UNAVAILABLE; |
22478 | 274 switch (action) { |
275 case M_PROPERTY_GET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
276 *(off_t *) arg = mpctx->demuxer->stream->end_pos; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
277 return M_PROPERTY_OK; |
22478 | 278 } |
279 return M_PROPERTY_NOT_IMPLEMENTED; | |
280 } | |
281 | |
282 /// Stream length (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
283 static int mp_property_stream_length(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
284 void *arg, MPContext * mpctx) |
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 || !mpctx->demuxer->stream) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
287 return M_PROPERTY_UNAVAILABLE; |
22478 | 288 switch (action) { |
289 case M_PROPERTY_GET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
290 *(off_t *) arg = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
291 mpctx->demuxer->stream->end_pos - mpctx->demuxer->stream->start_pos; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
292 return M_PROPERTY_OK; |
22478 | 293 } |
294 return M_PROPERTY_NOT_IMPLEMENTED; | |
295 } | |
296 | |
297 /// Media length in seconds (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
298 static int mp_property_length(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
299 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
300 { |
22478 | 301 double len; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
302 |
22478 | 303 if (!mpctx->demuxer || |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
304 !(int) (len = demuxer_get_time_length(mpctx->demuxer))) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
305 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
306 |
23416
ae4237717601
Move the time printing code out of the length property.
albeu
parents:
23412
diff
changeset
|
307 return m_property_time_ro(prop, action, arg, len); |
22478 | 308 } |
309 | |
23418 | 310 /// Current position in percent (RW) |
311 static int mp_property_percent_pos(m_option_t * prop, int action, | |
312 void *arg, MPContext * mpctx) { | |
313 int pos; | |
314 | |
315 if (!mpctx->demuxer) | |
316 return M_PROPERTY_UNAVAILABLE; | |
317 | |
318 switch(action) { | |
319 case M_PROPERTY_SET: | |
320 if(!arg) return M_PROPERTY_ERROR; | |
321 M_PROPERTY_CLAMP(prop, *(int*)arg); | |
322 pos = *(int*)arg; | |
323 break; | |
324 case M_PROPERTY_STEP_UP: | |
325 case M_PROPERTY_STEP_DOWN: | |
326 pos = demuxer_get_percent_pos(mpctx->demuxer); | |
327 pos += (arg ? *(int*)arg : 10) * | |
328 (action == M_PROPERTY_STEP_UP ? 1 : -1); | |
329 M_PROPERTY_CLAMP(prop, pos); | |
330 break; | |
331 default: | |
332 return m_property_int_ro(prop, action, arg, | |
333 demuxer_get_percent_pos(mpctx->demuxer)); | |
334 } | |
335 | |
336 abs_seek_pos = 3; | |
337 rel_seek_secs = pos / 100.0; | |
338 return M_PROPERTY_OK; | |
339 } | |
340 | |
341 /// Current position in seconds (RW) | |
342 static int mp_property_time_pos(m_option_t * prop, int action, | |
343 void *arg, MPContext * mpctx) { | |
344 if (!(mpctx->sh_video || (mpctx->sh_audio && mpctx->audio_out))) | |
345 return M_PROPERTY_UNAVAILABLE; | |
346 | |
347 switch(action) { | |
348 case M_PROPERTY_SET: | |
349 if(!arg) return M_PROPERTY_ERROR; | |
350 M_PROPERTY_CLAMP(prop, *(double*)arg); | |
351 abs_seek_pos = 1; | |
352 rel_seek_secs = *(double*)arg; | |
353 return M_PROPERTY_OK; | |
354 case M_PROPERTY_STEP_UP: | |
355 case M_PROPERTY_STEP_DOWN: | |
356 rel_seek_secs += (arg ? *(double*)arg : 10.0) * | |
357 (action == M_PROPERTY_STEP_UP ? 1.0 : -1.0); | |
358 return M_PROPERTY_OK; | |
359 } | |
360 return m_property_time_ro(prop, action, arg, | |
361 mpctx->sh_video ? mpctx->sh_video->pts : | |
362 playing_audio_pts(mpctx->sh_audio, | |
363 mpctx->d_audio, | |
364 mpctx->audio_out)); | |
365 } | |
366 | |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
367 /// Demuxer meta data |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
368 static int mp_property_metadata(m_option_t * prop, int action, void *arg, |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
369 MPContext * mpctx) { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
370 m_property_action_t* ka; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
371 char* meta; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
372 static m_option_t key_type = |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
373 { "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
|
374 if (!mpctx->demuxer) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
375 return M_PROPERTY_UNAVAILABLE; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
376 |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
377 switch(action) { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
378 case M_PROPERTY_GET: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
379 if(!arg) return M_PROPERTY_ERROR; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
380 *(char***)arg = mpctx->demuxer->info; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
381 return M_PROPERTY_OK; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
382 case M_PROPERTY_KEY_ACTION: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
383 if(!arg) return M_PROPERTY_ERROR; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
384 ka = arg; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
385 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
|
386 return M_PROPERTY_UNKNOWN; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
387 switch(ka->action) { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
388 case M_PROPERTY_GET: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
389 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
|
390 *(char**)ka->arg = meta; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
391 return M_PROPERTY_OK; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
392 case M_PROPERTY_GET_TYPE: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
393 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
|
394 *(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
|
395 return M_PROPERTY_OK; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
396 } |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
397 } |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
398 return M_PROPERTY_NOT_IMPLEMENTED; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
399 } |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
400 |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
401 |
22478 | 402 ///@} |
403 | |
404 /// \defgroup AudioProperties Audio properties | |
405 /// \ingroup Properties | |
406 ///@{ | |
407 | |
408 /// Volume (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
409 static int mp_property_volume(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
410 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
411 { |
22478 | 412 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
413 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
414 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
415 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
416 switch (action) { |
22478 | 417 case M_PROPERTY_GET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
418 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
419 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
420 mixer_getbothvolume(&mpctx->mixer, arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
421 return M_PROPERTY_OK; |
22478 | 422 case M_PROPERTY_PRINT:{ |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
423 float vol; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
424 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
425 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
426 mixer_getbothvolume(&mpctx->mixer, &vol); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
427 return m_property_float_range(prop, action, arg, &vol); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
428 } |
22478 | 429 case M_PROPERTY_STEP_UP: |
430 case M_PROPERTY_STEP_DOWN: | |
431 case M_PROPERTY_SET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
432 break; |
22478 | 433 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
434 return M_PROPERTY_NOT_IMPLEMENTED; |
22478 | 435 } |
436 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
437 if (mpctx->edl_muted) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
438 return M_PROPERTY_DISABLED; |
22478 | 439 mpctx->user_muted = 0; |
440 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
441 switch (action) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
442 case M_PROPERTY_SET: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
443 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
444 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
445 M_PROPERTY_CLAMP(prop, *(float *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
446 mixer_setvolume(&mpctx->mixer, *(float *) arg, *(float *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
447 return M_PROPERTY_OK; |
22478 | 448 case M_PROPERTY_STEP_UP: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
449 if (arg && *(float *) arg <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
450 mixer_decvolume(&mpctx->mixer); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
451 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
452 mixer_incvolume(&mpctx->mixer); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
453 return M_PROPERTY_OK; |
22478 | 454 case M_PROPERTY_STEP_DOWN: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
455 if (arg && *(float *) arg <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
456 mixer_incvolume(&mpctx->mixer); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
457 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
458 mixer_decvolume(&mpctx->mixer); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
459 return M_PROPERTY_OK; |
22478 | 460 } |
461 return M_PROPERTY_NOT_IMPLEMENTED; | |
462 } | |
463 | |
464 /// Mute (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
465 static int mp_property_mute(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
466 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
467 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
468 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
469 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
470 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
471 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
472 switch (action) { |
22478 | 473 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
474 if (mpctx->edl_muted) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
475 return M_PROPERTY_DISABLED; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
476 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
477 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
478 if ((!!*(int *) arg) != mpctx->mixer.muted) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
479 mixer_mute(&mpctx->mixer); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
480 mpctx->user_muted = mpctx->mixer.muted; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
481 return M_PROPERTY_OK; |
22478 | 482 case M_PROPERTY_STEP_UP: |
483 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
484 if (mpctx->edl_muted) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
485 return M_PROPERTY_DISABLED; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
486 mixer_mute(&mpctx->mixer); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
487 mpctx->user_muted = mpctx->mixer.muted; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
488 return M_PROPERTY_OK; |
22478 | 489 case M_PROPERTY_PRINT: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
490 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
491 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
492 if (mpctx->edl_muted) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
493 *(char **) arg = strdup(MSGTR_EnabledEdl); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
494 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
495 } |
22478 | 496 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
497 return m_property_flag(prop, action, arg, &mpctx->mixer.muted); |
22478 | 498 |
499 } | |
500 } | |
501 | |
502 /// Audio delay (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
503 static int mp_property_audio_delay(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
504 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
505 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
506 if (!(mpctx->sh_audio && mpctx->sh_video)) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
507 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
508 switch (action) { |
22478 | 509 case M_PROPERTY_SET: |
510 case M_PROPERTY_STEP_UP: | |
511 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
512 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
513 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
514 else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
515 float delay = audio_delay; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
516 m_property_delay(prop, action, arg, &audio_delay); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
517 if (mpctx->sh_audio) |
22488 | 518 mpctx->delay -= audio_delay - delay; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
519 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
520 return M_PROPERTY_OK; |
22478 | 521 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
522 return m_property_delay(prop, action, arg, &audio_delay); |
22478 | 523 } |
524 } | |
525 | |
526 /// Audio codec tag (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
527 static int mp_property_audio_format(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
528 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
529 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
530 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
531 return M_PROPERTY_UNAVAILABLE; |
22478 | 532 return m_property_int_ro(prop, action, arg, mpctx->sh_audio->format); |
533 } | |
534 | |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
535 /// Audio codec name (RO) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
536 static int mp_property_audio_codec(m_option_t * prop, int action, |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
537 void *arg, MPContext * mpctx) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
538 { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
539 if (!mpctx->sh_audio || !mpctx->sh_audio->codec) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
540 return M_PROPERTY_UNAVAILABLE; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
541 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
|
542 } |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
543 |
22478 | 544 /// Audio bitrate (RO) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
545 static int mp_property_audio_bitrate(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
546 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
547 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
548 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
549 return M_PROPERTY_UNAVAILABLE; |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
550 return m_property_bitrate(prop, action, arg, mpctx->sh_audio->i_bps); |
22478 | 551 } |
552 | |
553 /// Samplerate (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
554 static int mp_property_samplerate(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
555 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
556 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
557 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
558 return M_PROPERTY_UNAVAILABLE; |
23396 | 559 switch(action) { |
560 case M_PROPERTY_PRINT: | |
561 if(!arg) return M_PROPERTY_ERROR; | |
562 *(char**)arg = malloc(16); | |
563 sprintf(*(char**)arg,"%d kHz",mpctx->sh_audio->samplerate/1000); | |
564 return M_PROPERTY_OK; | |
565 } | |
22478 | 566 return m_property_int_ro(prop, action, arg, mpctx->sh_audio->samplerate); |
567 } | |
568 | |
569 /// Number of channels (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
570 static int mp_property_channels(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
571 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
572 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
573 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
574 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
575 switch (action) { |
22478 | 576 case M_PROPERTY_PRINT: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
577 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
578 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
579 switch (mpctx->sh_audio->channels) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
580 case 1: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
581 *(char **) arg = strdup("mono"); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
582 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
583 case 2: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
584 *(char **) arg = strdup("stereo"); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
585 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
586 default: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
587 *(char **) arg = malloc(32); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
588 sprintf(*(char **) arg, "%d channels", mpctx->sh_audio->channels); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
589 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
590 return M_PROPERTY_OK; |
22478 | 591 } |
592 return m_property_int_ro(prop, action, arg, mpctx->sh_audio->channels); | |
593 } | |
594 | |
23568 | 595 /// Balance (RW) |
596 static int mp_property_balance(m_option_t * prop, int action, void *arg, | |
597 MPContext * mpctx) | |
598 { | |
599 float bal; | |
600 | |
601 if (!mpctx->sh_audio || mpctx->sh_audio->channels < 2) | |
602 return M_PROPERTY_UNAVAILABLE; | |
603 | |
604 switch (action) { | |
605 case M_PROPERTY_GET: | |
606 if (!arg) | |
607 return M_PROPERTY_ERROR; | |
608 mixer_getbalance(&mpctx->mixer, arg); | |
609 return M_PROPERTY_OK; | |
610 case M_PROPERTY_PRINT: { | |
611 char** str = arg; | |
612 if (!arg) | |
613 return M_PROPERTY_ERROR; | |
614 mixer_getbalance(&mpctx->mixer, &bal); | |
615 if (bal == 0.f) | |
616 *str = strdup("center"); | |
617 else if (bal == -1.f) | |
618 *str = strdup("left only"); | |
619 else if (bal == 1.f) | |
620 *str = strdup("right only"); | |
621 else { | |
622 unsigned right = (bal + 1.f) / 2.f * 100.f; | |
623 *str = malloc(sizeof("left xxx%, right xxx%")); | |
624 sprintf(*str, "left %d%%, right %d%%", 100 - right, right); | |
625 } | |
626 return M_PROPERTY_OK; | |
627 } | |
628 case M_PROPERTY_STEP_UP: | |
629 case M_PROPERTY_STEP_DOWN: | |
630 mixer_getbalance(&mpctx->mixer, &bal); | |
631 bal += (arg ? *(float*)arg : .1f) * | |
632 (action == M_PROPERTY_STEP_UP ? 1.f : -1.f); | |
633 M_PROPERTY_CLAMP(prop, bal); | |
634 mixer_setbalance(&mpctx->mixer, bal); | |
635 return M_PROPERTY_OK; | |
636 case M_PROPERTY_SET: | |
637 if (!arg) | |
638 return M_PROPERTY_ERROR; | |
639 M_PROPERTY_CLAMP(prop, *(float*)arg); | |
640 mixer_setbalance(&mpctx->mixer, *(float*)arg); | |
641 return M_PROPERTY_OK; | |
642 } | |
643 return M_PROPERTY_NOT_IMPLEMENTED; | |
644 } | |
645 | |
22478 | 646 /// Selected audio id (RW) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
647 static int mp_property_audio(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
648 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
649 { |
22478 | 650 int current_id = -1, tmp; |
651 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
652 switch (action) { |
22478 | 653 case M_PROPERTY_GET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
654 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
655 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
656 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
657 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
658 *(int *) arg = audio_id; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
659 return M_PROPERTY_OK; |
22478 | 660 case M_PROPERTY_PRINT: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
661 if (!mpctx->sh_audio) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
662 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
663 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
664 return M_PROPERTY_ERROR; |
22478 | 665 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
666 if (audio_id < 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
667 *(char **) arg = strdup(MSGTR_Disabled); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
668 else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
669 char lang[40] = MSGTR_Unknown; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
670 if (mpctx->demuxer->type == DEMUXER_TYPE_MATROSKA) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
671 demux_mkv_get_audio_lang(mpctx->demuxer, audio_id, lang, 9); |
22478 | 672 #ifdef USE_DVDREAD |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
673 else if (mpctx->stream->type == STREAMTYPE_DVD) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
674 int code = dvd_lang_from_aid(mpctx->stream, audio_id); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
675 if (code) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
676 lang[0] = code >> 8; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
677 lang[1] = code; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
678 lang[2] = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
679 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
680 } |
22478 | 681 #endif |
682 | |
683 #ifdef USE_DVDNAV | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
684 else if (mpctx->stream->type == STREAMTYPE_DVDNAV) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
685 dvdnav_lang_from_aid(mpctx->stream, audio_id, lang); |
22478 | 686 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
687 *(char **) arg = malloc(64); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
688 snprintf(*(char **) arg, 64, "(%d) %s", audio_id, lang); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
689 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
690 return M_PROPERTY_OK; |
22478 | 691 |
692 case M_PROPERTY_STEP_UP: | |
693 case M_PROPERTY_SET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
694 if (action == M_PROPERTY_SET && arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
695 tmp = *((int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
696 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
697 tmp = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
698 current_id = mpctx->demuxer->audio->id; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
699 audio_id = demuxer_switch_audio(mpctx->demuxer, tmp); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
700 if (audio_id == -2 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
701 || (audio_id > -1 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
702 && mpctx->demuxer->audio->id != current_id && current_id != -2)) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
703 uninit_player(INITED_AO | INITED_ACODEC); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
704 if (audio_id > -1 && mpctx->demuxer->audio->id != current_id) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
705 sh_audio_t *sh2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
706 sh2 = mpctx->demuxer->a_streams[mpctx->demuxer->audio->id]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
707 if (sh2) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
708 sh2->ds = mpctx->demuxer->audio; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
709 mpctx->sh_audio = sh2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
710 reinit_audio_chain(); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
711 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
712 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
713 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_TRACK=%d\n", audio_id); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
714 return M_PROPERTY_OK; |
22478 | 715 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
716 return M_PROPERTY_NOT_IMPLEMENTED; |
22478 | 717 } |
718 | |
719 } | |
720 | |
721 /// Selected video id (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
722 static int mp_property_video(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
723 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
724 { |
22478 | 725 int current_id = -1, tmp; |
726 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
727 switch (action) { |
22478 | 728 case M_PROPERTY_GET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
729 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
730 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
731 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
732 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
733 *(int *) arg = video_id; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
734 return M_PROPERTY_OK; |
22478 | 735 case M_PROPERTY_PRINT: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
736 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
737 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
738 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
739 return M_PROPERTY_ERROR; |
22478 | 740 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
741 if (video_id < 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
742 *(char **) arg = strdup(MSGTR_Disabled); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
743 else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
744 char lang[40] = MSGTR_Unknown; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
745 *(char **) arg = malloc(64); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
746 snprintf(*(char **) arg, 64, "(%d) %s", video_id, lang); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
747 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
748 return M_PROPERTY_OK; |
22478 | 749 |
750 case M_PROPERTY_STEP_UP: | |
751 case M_PROPERTY_SET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
752 current_id = mpctx->demuxer->video->id; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
753 if (action == M_PROPERTY_SET && arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
754 tmp = *((int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
755 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
756 tmp = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
757 video_id = demuxer_switch_video(mpctx->demuxer, tmp); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
758 if (video_id == -2 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
759 || (video_id > -1 && mpctx->demuxer->video->id != current_id |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
760 && current_id != -2)) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
761 uninit_player(INITED_VCODEC | |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
762 (fixed_vo && video_id != -2 ? 0 : INITED_VO)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
763 if (video_id > -1 && mpctx->demuxer->video->id != current_id) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
764 sh_video_t *sh2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
765 sh2 = mpctx->demuxer->v_streams[mpctx->demuxer->video->id]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
766 if (sh2) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
767 sh2->ds = mpctx->demuxer->video; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
768 mpctx->sh_video = sh2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
769 reinit_video_chain(); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
770 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
771 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
772 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_TRACK=%d\n", video_id); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
773 return M_PROPERTY_OK; |
22478 | 774 |
775 default: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
776 return M_PROPERTY_NOT_IMPLEMENTED; |
22478 | 777 } |
778 } | |
779 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
780 static int mp_property_program(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
781 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
782 { |
22478 | 783 demux_program_t prog; |
784 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
785 switch (action) { |
22478 | 786 case M_PROPERTY_STEP_UP: |
787 case M_PROPERTY_SET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
788 if (action == M_PROPERTY_SET && arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
789 prog.progid = *((int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
790 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
791 prog.progid = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
792 if (demux_control |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
793 (mpctx->demuxer, DEMUXER_CTRL_IDENTIFY_PROGRAM, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
794 &prog) == DEMUXER_CTRL_NOTIMPL) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
795 return M_PROPERTY_ERROR; |
22478 | 796 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
797 mp_property_do("switch_audio", M_PROPERTY_SET, &prog.aid, mpctx); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
798 mp_property_do("switch_video", M_PROPERTY_SET, &prog.vid, mpctx); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
799 return M_PROPERTY_OK; |
22478 | 800 |
801 default: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
802 return M_PROPERTY_NOT_IMPLEMENTED; |
22478 | 803 } |
804 } | |
805 | |
806 ///@} | |
807 | |
808 /// \defgroup VideoProperties Video properties | |
809 /// \ingroup Properties | |
810 ///@{ | |
811 | |
812 /// Fullscreen state (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
813 static int mp_property_fullscreen(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
814 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
815 { |
22478 | 816 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
817 if (!mpctx->video_out) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
818 return M_PROPERTY_UNAVAILABLE; |
22478 | 819 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
820 switch (action) { |
22478 | 821 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
822 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
823 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
824 M_PROPERTY_CLAMP(prop, *(int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
825 if (vo_fs == !!*(int *) arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
826 return M_PROPERTY_OK; |
22478 | 827 case M_PROPERTY_STEP_UP: |
828 case M_PROPERTY_STEP_DOWN: | |
829 #ifdef HAVE_NEW_GUI | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
830 if (use_gui) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
831 guiGetEvent(guiIEvent, (char *) MP_CMD_GUI_FULLSCREEN); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
832 else |
22478 | 833 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
834 if (vo_config_count) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
835 mpctx->video_out->control(VOCTRL_FULLSCREEN, 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
836 return M_PROPERTY_OK; |
22478 | 837 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
838 return m_property_flag(prop, action, arg, &vo_fs); |
22478 | 839 } |
840 } | |
841 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
842 static int mp_property_deinterlace(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
843 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
844 { |
22478 | 845 int deinterlace; |
846 vf_instance_t *vf; | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
847 if (!mpctx->sh_video || !mpctx->sh_video->vfilter) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
848 return M_PROPERTY_UNAVAILABLE; |
22478 | 849 vf = mpctx->sh_video->vfilter; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
850 switch (action) { |
22478 | 851 case M_PROPERTY_GET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
852 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
853 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
854 vf->control(vf, VFCTRL_GET_DEINTERLACE, arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
855 return M_PROPERTY_OK; |
22478 | 856 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
857 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
858 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
859 M_PROPERTY_CLAMP(prop, *(int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
860 vf->control(vf, VFCTRL_SET_DEINTERLACE, arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
861 return M_PROPERTY_OK; |
22478 | 862 case M_PROPERTY_STEP_UP: |
863 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
864 vf->control(vf, VFCTRL_GET_DEINTERLACE, &deinterlace); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
865 deinterlace = !deinterlace; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
866 vf->control(vf, VFCTRL_SET_DEINTERLACE, &deinterlace); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
867 return M_PROPERTY_OK; |
22478 | 868 } |
869 return M_PROPERTY_NOT_IMPLEMENTED; | |
870 } | |
871 | |
872 /// Panscan (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
873 static int mp_property_panscan(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
874 MPContext * mpctx) |
22478 | 875 { |
876 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
877 if (!mpctx->video_out |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
878 || mpctx->video_out->control(VOCTRL_GET_PANSCAN, NULL) != VO_TRUE) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
879 return M_PROPERTY_UNAVAILABLE; |
22478 | 880 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
881 switch (action) { |
22478 | 882 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
883 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
884 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
885 M_PROPERTY_CLAMP(prop, *(float *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
886 vo_panscan = *(float *) arg; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
887 mpctx->video_out->control(VOCTRL_SET_PANSCAN, NULL); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
888 return M_PROPERTY_OK; |
22478 | 889 case M_PROPERTY_STEP_UP: |
890 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
891 vo_panscan += (arg ? *(float *) arg : 0.1) * |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
892 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
893 if (vo_panscan > 1) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
894 vo_panscan = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
895 else if (vo_panscan < 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
896 vo_panscan = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
897 mpctx->video_out->control(VOCTRL_SET_PANSCAN, NULL); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
898 return M_PROPERTY_OK; |
22478 | 899 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
900 return m_property_float_range(prop, action, arg, &vo_panscan); |
22478 | 901 } |
902 } | |
903 | |
904 /// Helper to set vo flags. | |
905 /** \ingroup PropertyImplHelper | |
906 */ | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
907 static int mp_property_vo_flag(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
908 int vo_ctrl, int *vo_var, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
909 { |
22478 | 910 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
911 if (!mpctx->video_out) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
912 return M_PROPERTY_UNAVAILABLE; |
22478 | 913 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
914 switch (action) { |
22478 | 915 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
916 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
917 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
918 M_PROPERTY_CLAMP(prop, *(int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
919 if (*vo_var == !!*(int *) arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
920 return M_PROPERTY_OK; |
22478 | 921 case M_PROPERTY_STEP_UP: |
922 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
923 if (vo_config_count) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
924 mpctx->video_out->control(vo_ctrl, 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
925 return M_PROPERTY_OK; |
22478 | 926 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
927 return m_property_flag(prop, action, arg, vo_var); |
22478 | 928 } |
929 } | |
930 | |
931 /// Window always on top (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
932 static int mp_property_ontop(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
933 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
934 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
935 return mp_property_vo_flag(prop, action, arg, VOCTRL_ONTOP, &vo_ontop, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
936 mpctx); |
22478 | 937 } |
938 | |
939 /// Display in the root window (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
940 static int mp_property_rootwin(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
941 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
942 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
943 return mp_property_vo_flag(prop, action, arg, VOCTRL_ROOTWIN, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
944 &vo_rootwin, mpctx); |
22478 | 945 } |
946 | |
947 /// Show window borders (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
948 static int mp_property_border(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
949 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
950 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
951 return mp_property_vo_flag(prop, action, arg, VOCTRL_BORDER, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
952 &vo_border, mpctx); |
22478 | 953 } |
954 | |
955 /// Framedropping state (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
956 static int mp_property_framedropping(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
957 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
958 { |
22478 | 959 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
960 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
961 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
962 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
963 switch (action) { |
22478 | 964 case M_PROPERTY_PRINT: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
965 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
966 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
967 *(char **) arg = strdup(frame_dropping == 1 ? MSGTR_Enabled : |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
968 (frame_dropping == 2 ? MSGTR_HardFrameDrop : |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
969 MSGTR_Disabled)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
970 return M_PROPERTY_OK; |
22478 | 971 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
972 return m_property_choice(prop, action, arg, &frame_dropping); |
22478 | 973 } |
974 } | |
975 | |
976 /// Color settings, try to use vf/vo then fall back on TV. (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
977 static int mp_property_gamma(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
978 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
979 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
980 int *gamma = prop->priv, r; |
22478 | 981 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
982 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
983 return M_PROPERTY_UNAVAILABLE; |
22478 | 984 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
985 if (gamma[0] == 1000) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
986 gamma[0] = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
987 get_video_colors(mpctx->sh_video, prop->name, gamma); |
22478 | 988 } |
989 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
990 switch (action) { |
22478 | 991 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
992 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
993 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
994 M_PROPERTY_CLAMP(prop, *(int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
995 *gamma = *(int *) arg; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
996 r = set_video_colors(mpctx->sh_video, prop->name, *gamma); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
997 if (r <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
998 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
999 return r; |
22478 | 1000 case M_PROPERTY_GET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1001 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1002 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1003 r = get_video_colors(mpctx->sh_video, prop->name, arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1004 if (r <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1005 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1006 return r; |
22478 | 1007 case M_PROPERTY_STEP_UP: |
1008 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1009 *gamma += (arg ? *(int *) arg : 1) * |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1010 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1011 M_PROPERTY_CLAMP(prop, *gamma); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1012 r = set_video_colors(mpctx->sh_video, prop->name, *gamma); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1013 if (r <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1014 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1015 return r; |
22478 | 1016 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1017 return M_PROPERTY_NOT_IMPLEMENTED; |
22478 | 1018 } |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1019 |
22478 | 1020 #ifdef USE_TV |
1021 if (mpctx->demuxer->type == DEMUXER_TYPE_TV) { | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1022 int l = strlen(prop->name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1023 char tv_prop[3 + l + 1]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1024 sprintf(tv_prop, "tv_%s", prop->name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1025 return mp_property_do(tv_prop, action, arg, mpctx); |
22478 | 1026 } |
1027 #endif | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1028 |
22478 | 1029 return M_PROPERTY_UNAVAILABLE; |
1030 } | |
1031 | |
1032 /// VSync (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1033 static int mp_property_vsync(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1034 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1035 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1036 return m_property_flag(prop, action, arg, &vo_vsync); |
22478 | 1037 } |
1038 | |
1039 /// Video codec tag (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1040 static int mp_property_video_format(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1041 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1042 { |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1043 char* meta; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1044 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1045 return M_PROPERTY_UNAVAILABLE; |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1046 switch(action) { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1047 case M_PROPERTY_PRINT: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1048 if (!arg) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1049 return M_PROPERTY_ERROR; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1050 switch(mpctx->sh_video->format) { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1051 case 0x10000001: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1052 meta = strdup ("mpeg1"); break; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1053 case 0x10000002: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1054 meta = strdup ("mpeg2"); break; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1055 case 0x10000004: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1056 meta = strdup ("mpeg4"); break; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1057 case 0x10000005: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1058 meta = strdup ("h264"); break; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1059 default: |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1060 if(mpctx->sh_video->format >= 0x20202020) { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1061 meta = malloc(5); |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1062 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
|
1063 } else { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1064 meta = malloc(20); |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1065 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
|
1066 } |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1067 } |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1068 *(char**)arg = meta; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1069 return M_PROPERTY_OK; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1070 } |
22478 | 1071 return m_property_int_ro(prop, action, arg, mpctx->sh_video->format); |
1072 } | |
1073 | |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1074 /// Video codec name (RO) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1075 static int mp_property_video_codec(m_option_t * prop, int action, |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1076 void *arg, MPContext * mpctx) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1077 { |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1078 if (!mpctx->sh_video || !mpctx->sh_video->codec) |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1079 return M_PROPERTY_UNAVAILABLE; |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1080 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
|
1081 } |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1082 |
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1083 |
22478 | 1084 /// Video bitrate (RO) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1085 static int mp_property_video_bitrate(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1086 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1087 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1088 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1089 return M_PROPERTY_UNAVAILABLE; |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1090 return m_property_bitrate(prop, action, arg, mpctx->sh_video->i_bps); |
22478 | 1091 } |
1092 | |
1093 /// Video display width (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1094 static int mp_property_width(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1095 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1096 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1097 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1098 return M_PROPERTY_UNAVAILABLE; |
22478 | 1099 return m_property_int_ro(prop, action, arg, mpctx->sh_video->disp_w); |
1100 } | |
1101 | |
1102 /// Video display height (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1103 static int mp_property_height(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1104 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1105 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1106 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1107 return M_PROPERTY_UNAVAILABLE; |
22478 | 1108 return m_property_int_ro(prop, action, arg, mpctx->sh_video->disp_h); |
1109 } | |
1110 | |
1111 /// Video fps (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1112 static int mp_property_fps(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1113 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1114 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1115 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1116 return M_PROPERTY_UNAVAILABLE; |
22478 | 1117 return m_property_float_ro(prop, action, arg, mpctx->sh_video->fps); |
1118 } | |
1119 | |
1120 /// Video aspect (RO) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1121 static int mp_property_aspect(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1122 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1123 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1124 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1125 return M_PROPERTY_UNAVAILABLE; |
22478 | 1126 return m_property_float_ro(prop, action, arg, mpctx->sh_video->aspect); |
1127 } | |
1128 | |
1129 ///@} | |
1130 | |
1131 /// \defgroup SubProprties Subtitles properties | |
1132 /// \ingroup Properties | |
1133 ///@{ | |
1134 | |
1135 /// Text subtitle position (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1136 static int mp_property_sub_pos(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1137 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1138 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1139 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1140 return M_PROPERTY_UNAVAILABLE; |
22478 | 1141 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1142 switch (action) { |
22478 | 1143 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1144 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1145 return M_PROPERTY_ERROR; |
22478 | 1146 case M_PROPERTY_STEP_UP: |
1147 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1148 vo_osd_changed(OSDTYPE_SUBTITLE); |
22478 | 1149 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1150 return m_property_int_range(prop, action, arg, &sub_pos); |
22478 | 1151 } |
1152 } | |
1153 | |
23758 | 1154 char *demux_lavf_sub_lang(demuxer_t *demuxer, int track_num); |
1155 | |
22478 | 1156 /// Selected subtitles (RW) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1157 static int mp_property_sub(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1158 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1159 { |
22478 | 1160 demux_stream_t *const d_sub = mpctx->d_sub; |
1161 const int global_sub_size = mpctx->global_sub_size; | |
1162 int source = -1, reset_spu = 0; | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1163 char *sub_name; |
22478 | 1164 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1165 if (global_sub_size <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1166 return M_PROPERTY_UNAVAILABLE; |
22478 | 1167 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1168 switch (action) { |
22478 | 1169 case M_PROPERTY_GET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1170 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1171 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1172 *(int *) arg = mpctx->global_sub_pos; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1173 return M_PROPERTY_OK; |
22478 | 1174 case M_PROPERTY_PRINT: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1175 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1176 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1177 *(char **) arg = malloc(64); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1178 (*(char **) arg)[63] = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1179 sub_name = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1180 if (subdata) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1181 sub_name = subdata->filename; |
22478 | 1182 #ifdef USE_ASS |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1183 if (ass_track && ass_track->name) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1184 sub_name = ass_track->name; |
22478 | 1185 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1186 if (sub_name) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1187 char *tmp, *tmp2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1188 tmp = sub_name; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1189 if ((tmp2 = strrchr(tmp, '/'))) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1190 tmp = tmp2 + 1; |
22478 | 1191 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1192 snprintf(*(char **) arg, 63, "(%d) %s%s", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1193 mpctx->set_of_sub_pos + 1, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1194 strlen(tmp) < 20 ? "" : "...", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1195 strlen(tmp) < 20 ? tmp : tmp + strlen(tmp) - 19); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1196 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1197 } |
22478 | 1198 #ifdef USE_DVDNAV |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1199 if (mpctx->stream->type == STREAMTYPE_DVDNAV) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1200 if (vo_spudec && dvdsub_id >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1201 unsigned char lang[3]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1202 if (dvdnav_lang_from_sid(mpctx->stream, dvdsub_id, lang)) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1203 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1204 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1205 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1206 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1207 } |
22478 | 1208 #endif |
1209 | |
23758 | 1210 #ifdef USE_LIBAVFORMAT |
1211 if (mpctx->demuxer->type == DEMUXER_TYPE_LAVF && dvdsub_id >= 0) { | |
1212 char *lang = demux_lavf_sub_lang(mpctx->demuxer, dvdsub_id); | |
1213 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); | |
1214 return M_PROPERTY_OK; | |
1215 } | |
1216 #endif | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1217 if (mpctx->demuxer->type == DEMUXER_TYPE_MATROSKA && dvdsub_id >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1218 char lang[40] = MSGTR_Unknown; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1219 demux_mkv_get_sub_lang(mpctx->demuxer, dvdsub_id, lang, 9); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1220 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1221 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1222 } |
22478 | 1223 #ifdef HAVE_OGGVORBIS |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1224 if (mpctx->demuxer->type == DEMUXER_TYPE_OGG && d_sub && dvdsub_id >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1225 char *lang = demux_ogg_sub_lang(mpctx->demuxer, dvdsub_id); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1226 if (!lang) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1227 lang = MSGTR_Unknown; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1228 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1229 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1230 } |
22478 | 1231 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1232 if (vo_vobsub && vobsub_id >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1233 const char *language = MSGTR_Unknown; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1234 language = vobsub_get_id(vo_vobsub, (unsigned int) vobsub_id); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1235 snprintf(*(char **) arg, 63, "(%d) %s", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1236 vobsub_id, language ? language : MSGTR_Unknown); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1237 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1238 } |
22478 | 1239 #ifdef USE_DVDREAD |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1240 if (vo_spudec && mpctx->stream->type == STREAMTYPE_DVD |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1241 && dvdsub_id >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1242 char lang[3]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1243 int code = dvd_lang_from_sid(mpctx->stream, dvdsub_id); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1244 lang[0] = code >> 8; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1245 lang[1] = code; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1246 lang[2] = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1247 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1248 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1249 } |
22478 | 1250 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1251 if (dvdsub_id >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1252 snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, MSGTR_Unknown); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1253 return M_PROPERTY_OK; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1254 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1255 snprintf(*(char **) arg, 63, MSGTR_Disabled); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1256 return M_PROPERTY_OK; |
22478 | 1257 |
1258 case M_PROPERTY_SET: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1259 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1260 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1261 if (*(int *) arg < -1) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1262 *(int *) arg = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1263 else if (*(int *) arg >= global_sub_size) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1264 *(int *) arg = global_sub_size - 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1265 mpctx->global_sub_pos = *(int *) arg; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1266 break; |
22478 | 1267 case M_PROPERTY_STEP_UP: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1268 mpctx->global_sub_pos += 2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1269 mpctx->global_sub_pos = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1270 (mpctx->global_sub_pos % (global_sub_size + 1)) - 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1271 break; |
22478 | 1272 case M_PROPERTY_STEP_DOWN: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1273 mpctx->global_sub_pos += global_sub_size + 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1274 mpctx->global_sub_pos = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1275 (mpctx->global_sub_pos % (global_sub_size + 1)) - 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1276 break; |
22478 | 1277 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1278 return M_PROPERTY_NOT_IMPLEMENTED; |
22478 | 1279 } |
1280 | |
1281 if (mpctx->global_sub_pos >= 0) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1282 source = sub_source(mpctx); |
22478 | 1283 |
1284 mp_msg(MSGT_CPLAYER, MSGL_DBG3, | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1285 "subtitles: %d subs, (v@%d s@%d d@%d), @%d, source @%d\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1286 global_sub_size, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1287 mpctx->global_sub_indices[SUB_SOURCE_VOBSUB], |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1288 mpctx->global_sub_indices[SUB_SOURCE_SUBS], |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1289 mpctx->global_sub_indices[SUB_SOURCE_DEMUX], |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1290 mpctx->global_sub_pos, source); |
22478 | 1291 |
1292 mpctx->set_of_sub_pos = -1; | |
1293 subdata = NULL; | |
1294 | |
1295 vobsub_id = -1; | |
1296 dvdsub_id = -1; | |
1297 if (d_sub) { | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1298 if (d_sub->id > -2) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1299 reset_spu = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1300 d_sub->id = -2; |
22478 | 1301 } |
1302 #ifdef USE_ASS | |
1303 ass_track = 0; | |
1304 #endif | |
1305 | |
1306 if (source == SUB_SOURCE_VOBSUB) { | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1307 vobsub_id = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1308 mpctx->global_sub_pos - |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1309 mpctx->global_sub_indices[SUB_SOURCE_VOBSUB]; |
22478 | 1310 } else if (source == SUB_SOURCE_SUBS) { |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1311 mpctx->set_of_sub_pos = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1312 mpctx->global_sub_pos - mpctx->global_sub_indices[SUB_SOURCE_SUBS]; |
22478 | 1313 #ifdef USE_ASS |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1314 if (ass_enabled && mpctx->set_of_ass_tracks[mpctx->set_of_sub_pos]) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1315 ass_track = mpctx->set_of_ass_tracks[mpctx->set_of_sub_pos]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1316 else |
22478 | 1317 #endif |
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 subdata = mpctx->set_of_subtitles[mpctx->set_of_sub_pos]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1320 vo_osd_changed(OSDTYPE_SUBTITLE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1321 } |
22478 | 1322 } else if (source == SUB_SOURCE_DEMUX) { |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1323 dvdsub_id = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1324 mpctx->global_sub_pos - mpctx->global_sub_indices[SUB_SOURCE_DEMUX]; |
23599
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1325 if (d_sub && dvdsub_id < MAX_S_STREAMS) { |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1326 int i = 0; |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1327 // default: assume 1:1 mapping of sid and stream id |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1328 d_sub->id = dvdsub_id; |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1329 d_sub->sh = mpctx->demuxer->s_streams[d_sub->id]; |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1330 for (i = 0; i < MAX_S_STREAMS; i++) { |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1331 sh_sub_t *sh = mpctx->demuxer->s_streams[i]; |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1332 if (sh && sh->sid == dvdsub_id) { |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1333 d_sub->id = i; |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1334 d_sub->sh = sh; |
88f55dca299b
Simplify and correct subtitle selection, no more special cases for
reimar
parents:
23573
diff
changeset
|
1335 break; |
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 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1338 if (d_sub->sh && d_sub->id >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1339 sh_sub_t *sh = d_sub->sh; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1340 if (sh->type == 'v') |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1341 init_vo_spudec(); |
22478 | 1342 #ifdef USE_ASS |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1343 else if (ass_enabled && sh->type == 'a') |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1344 ass_track = sh->ass_track; |
22478 | 1345 #endif |
23766
f0c2f9de85ba
Make sure that sub->id is -2 and sub->sh is NULL if subtitle doesn't
reimar
parents:
23758
diff
changeset
|
1346 } else { |
f0c2f9de85ba
Make sure that sub->id is -2 and sub->sh is NULL if subtitle doesn't
reimar
parents:
23758
diff
changeset
|
1347 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
|
1348 d_sub->sh = NULL; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1349 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1350 } |
22478 | 1351 } |
1352 #ifdef USE_DVDREAD | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1353 if (vo_spudec |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1354 && (mpctx->stream->type == STREAMTYPE_DVD |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1355 || mpctx->stream->type == STREAMTYPE_DVDNAV) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1356 && dvdsub_id < 0 && reset_spu) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1357 dvdsub_id = -2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1358 d_sub->id = dvdsub_id; |
22478 | 1359 } |
1360 #endif | |
1361 update_subtitles(mpctx->sh_video, d_sub, 1); | |
1362 | |
1363 return M_PROPERTY_OK; | |
1364 } | |
1365 | |
1366 /// Subtitle delay (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1367 static int mp_property_sub_delay(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1368 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1369 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1370 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1371 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1372 return m_property_delay(prop, action, arg, &sub_delay); |
22478 | 1373 } |
1374 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1375 /// Alignment of text subtitles (RW) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1376 static int mp_property_sub_alignment(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1377 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1378 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1379 char *name[] = { MSGTR_Top, MSGTR_Center, MSGTR_Bottom }; |
22478 | 1380 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1381 if (!mpctx->sh_video || mpctx->global_sub_pos < 0 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1382 || sub_source(mpctx) != SUB_SOURCE_SUBS) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1383 return M_PROPERTY_UNAVAILABLE; |
22478 | 1384 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1385 switch (action) { |
22478 | 1386 case M_PROPERTY_PRINT: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1387 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1388 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1389 M_PROPERTY_CLAMP(prop, sub_alignment); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1390 *(char **) arg = strdup(name[sub_alignment]); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1391 return M_PROPERTY_OK; |
22478 | 1392 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1393 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1394 return M_PROPERTY_ERROR; |
22478 | 1395 case M_PROPERTY_STEP_UP: |
1396 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1397 vo_osd_changed(OSDTYPE_SUBTITLE); |
22478 | 1398 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1399 return m_property_choice(prop, action, arg, &sub_alignment); |
22478 | 1400 } |
1401 } | |
1402 | |
1403 /// Subtitle visibility (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1404 static int mp_property_sub_visibility(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1405 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1406 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1407 if (!mpctx->sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1408 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1409 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1410 switch (action) { |
22478 | 1411 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1412 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1413 return M_PROPERTY_ERROR; |
22478 | 1414 case M_PROPERTY_STEP_UP: |
1415 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1416 vo_osd_changed(OSDTYPE_SUBTITLE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1417 if (vo_spudec) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1418 vo_osd_changed(OSDTYPE_SPU); |
22478 | 1419 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1420 return m_property_flag(prop, action, arg, &sub_visibility); |
22478 | 1421 } |
1422 } | |
1423 | |
1424 /// Show only forced subtitles (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1425 static int mp_property_sub_forced_only(m_option_t * prop, int action, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1426 void *arg, MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1427 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1428 if (!vo_spudec) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1429 return M_PROPERTY_UNAVAILABLE; |
22478 | 1430 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1431 switch (action) { |
22478 | 1432 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1433 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1434 return M_PROPERTY_ERROR; |
22478 | 1435 case M_PROPERTY_STEP_UP: |
1436 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1437 m_property_flag(prop, action, arg, &forced_subs_only); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1438 spudec_set_forced_subs_only(vo_spudec, forced_subs_only); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1439 return M_PROPERTY_OK; |
22478 | 1440 default: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1441 return m_property_flag(prop, action, arg, &forced_subs_only); |
22478 | 1442 } |
1443 | |
1444 } | |
1445 | |
23740 | 1446 #ifdef HAVE_FREETYPE |
23725 | 1447 /// Subtitle scale (RW) |
1448 static int mp_property_sub_scale(m_option_t * prop, int action, void *arg, | |
1449 MPContext * mpctx) | |
1450 { | |
1451 | |
1452 switch (action) { | |
1453 case M_PROPERTY_SET: | |
1454 if (!arg) | |
1455 return M_PROPERTY_ERROR; | |
1456 M_PROPERTY_CLAMP(prop, *(float *) arg); | |
1457 text_font_scale_factor = *(float *) arg; | |
1458 force_load_font = 1; | |
1459 return M_PROPERTY_OK; | |
1460 case M_PROPERTY_STEP_UP: | |
1461 case M_PROPERTY_STEP_DOWN: | |
1462 text_font_scale_factor += (arg ? *(float *) arg : 0.1)* | |
1463 (action == M_PROPERTY_STEP_UP ? 1.0 : -1.0); | |
1464 M_PROPERTY_CLAMP(prop, text_font_scale_factor); | |
1465 force_load_font = 1; | |
1466 return M_PROPERTY_OK; | |
1467 default: | |
1468 return m_property_float_ro(prop, action, arg, text_font_scale_factor); | |
1469 } | |
1470 } | |
23740 | 1471 #endif |
23725 | 1472 |
22478 | 1473 ///@} |
1474 | |
1475 /// \defgroup TVProperties TV properties | |
1476 /// \ingroup Properties | |
1477 ///@{ | |
1478 | |
1479 #ifdef USE_TV | |
1480 | |
1481 /// TV color settings (RW) | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1482 static int mp_property_tv_color(m_option_t * prop, int action, void *arg, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1483 MPContext * mpctx) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1484 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1485 int r, val; |
22478 | 1486 tvi_handle_t *tvh = mpctx->demuxer->priv; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1487 if (mpctx->demuxer->type != DEMUXER_TYPE_TV || !tvh) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1488 return M_PROPERTY_UNAVAILABLE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1489 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1490 switch (action) { |
22478 | 1491 case M_PROPERTY_SET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1492 if (!arg) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1493 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1494 M_PROPERTY_CLAMP(prop, *(int *) arg); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1495 return tv_set_color_options(tvh, (int) prop->priv, *(int *) arg); |
22478 | 1496 case M_PROPERTY_GET: |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1497 return tv_get_color_options(tvh, (int) prop->priv, arg); |
22478 | 1498 case M_PROPERTY_STEP_UP: |
1499 case M_PROPERTY_STEP_DOWN: | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1500 if ((r = tv_get_color_options(tvh, (int) prop->priv, &val)) >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1501 if (!r) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1502 return M_PROPERTY_ERROR; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1503 val += (arg ? *(int *) arg : 1) * |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1504 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1505 M_PROPERTY_CLAMP(prop, val); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1506 return tv_set_color_options(tvh, (int) prop->priv, val); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1507 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1508 return M_PROPERTY_ERROR; |
22478 | 1509 } |
1510 return M_PROPERTY_NOT_IMPLEMENTED; | |
1511 } | |
1512 | |
1513 #endif | |
1514 | |
23900 | 1515 #ifdef HAVE_TV_TELETEXT |
1516 static int mp_property_teletext_common(m_option_t * prop, int action, void *arg, | |
1517 MPContext * mpctx) | |
1518 { | |
1519 int val,result; | |
1520 int base_ioctl=(int)prop->priv; | |
1521 /* | |
1522 for teletext's GET,SET,STEP ioctls this is not 0 | |
1523 SET is GET+1 | |
1524 STEP is GET+2 | |
1525 */ | |
1526 tvi_handle_t *tvh = mpctx->demuxer->priv; | |
1527 if (mpctx->demuxer->type != DEMUXER_TYPE_TV || !tvh) | |
1528 return M_PROPERTY_UNAVAILABLE; | |
1529 if(!base_ioctl) | |
1530 return M_PROPERTY_ERROR; | |
1531 | |
1532 switch (action) { | |
1533 case M_PROPERTY_GET: | |
1534 if (!arg) | |
1535 return M_PROPERTY_ERROR; | |
1536 result=tvh->functions->control(tvh->priv, base_ioctl, arg); | |
1537 break; | |
1538 case M_PROPERTY_SET: | |
1539 if (!arg) | |
1540 return M_PROPERTY_ERROR; | |
1541 M_PROPERTY_CLAMP(prop, *(int *) arg); | |
1542 result=tvh->functions->control(tvh->priv, base_ioctl+1, arg); | |
1543 break; | |
1544 case M_PROPERTY_STEP_UP: | |
1545 case M_PROPERTY_STEP_DOWN: | |
1546 result=tvh->functions->control(tvh->priv, base_ioctl, &val); | |
1547 val += (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | |
1548 result=tvh->functions->control(tvh->priv, base_ioctl+1, &val); | |
1549 break; | |
1550 default: | |
1551 return M_PROPERTY_NOT_IMPLEMENTED; | |
1552 } | |
1553 | |
1554 return (result==TVI_CONTROL_TRUE?M_PROPERTY_OK:M_PROPERTY_ERROR); | |
1555 } | |
1556 | |
1557 static int mp_property_teletext_mode(m_option_t * prop, int action, void *arg, | |
1558 MPContext * mpctx) | |
1559 { | |
1560 tvi_handle_t *tvh = mpctx->demuxer->priv; | |
1561 int result; | |
1562 int val; | |
1563 | |
1564 //with tvh==NULL will fail too | |
1565 result=mp_property_teletext_common(prop,action,arg,mpctx); | |
1566 if(result!=M_PROPERTY_OK) | |
1567 return result; | |
1568 | |
1569 if(tvh->functions->control(tvh->priv, prop->priv, &val)==TVI_CONTROL_TRUE && val) | |
1570 mp_input_set_section("teletext"); | |
1571 else | |
1572 mp_input_set_section("tv"); | |
1573 return M_PROPERTY_OK; | |
1574 } | |
1575 | |
1576 static int mp_property_teletext_page(m_option_t * prop, int action, void *arg, | |
1577 MPContext * mpctx) | |
1578 { | |
1579 tvi_handle_t *tvh = mpctx->demuxer->priv; | |
1580 int result; | |
1581 int val; | |
1582 switch(action){ | |
1583 case M_PROPERTY_STEP_UP: | |
1584 case M_PROPERTY_STEP_DOWN: | |
1585 //This should be handled separately | |
1586 val = (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | |
1587 result=tvh->functions->control(tvh->priv, TV_VBI_CONTROL_STEP_PAGE, &val); | |
1588 break; | |
1589 default: | |
1590 result=mp_property_teletext_common(prop,action,arg,mpctx); | |
1591 } | |
1592 return result; | |
1593 } | |
1594 | |
1595 | |
1596 #endif /* HAVE_TV_TELETEXT */ | |
1597 | |
22478 | 1598 ///@} |
1599 | |
1600 /// All properties available in MPlayer. | |
1601 /** \ingroup Properties | |
1602 */ | |
1603 static m_option_t mp_properties[] = { | |
1604 // General | |
1605 { "osdlevel", mp_property_osdlevel, CONF_TYPE_INT, | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1606 M_OPT_RANGE, 0, 3, NULL }, |
23727 | 1607 { "loop", mp_property_loop, CONF_TYPE_INT, |
1608 M_OPT_MIN, -1, 0, NULL }, | |
22478 | 1609 { "speed", mp_property_playback_speed, CONF_TYPE_FLOAT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1610 M_OPT_RANGE, 0.01, 100.0, NULL }, |
22478 | 1611 { "filename", mp_property_filename, CONF_TYPE_STRING, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1612 0, 0, 0, NULL }, |
22478 | 1613 { "path", mp_property_path, CONF_TYPE_STRING, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1614 0, 0, 0, NULL }, |
22478 | 1615 { "demuxer", mp_property_demuxer, CONF_TYPE_STRING, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1616 0, 0, 0, NULL }, |
22478 | 1617 { "stream_pos", mp_property_stream_pos, CONF_TYPE_POSITION, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1618 M_OPT_MIN, 0, 0, NULL }, |
22478 | 1619 { "stream_start", mp_property_stream_start, CONF_TYPE_POSITION, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1620 M_OPT_MIN, 0, 0, NULL }, |
22478 | 1621 { "stream_end", mp_property_stream_end, CONF_TYPE_POSITION, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1622 M_OPT_MIN, 0, 0, NULL }, |
22478 | 1623 { "stream_length", mp_property_stream_length, CONF_TYPE_POSITION, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1624 M_OPT_MIN, 0, 0, NULL }, |
23417 | 1625 { "length", mp_property_length, CONF_TYPE_TIME, |
1626 M_OPT_MIN, 0, 0, NULL }, | |
23418 | 1627 { "percent_pos", mp_property_percent_pos, CONF_TYPE_INT, |
1628 M_OPT_RANGE, 0, 100, NULL }, | |
1629 { "time_pos", mp_property_time_pos, CONF_TYPE_TIME, | |
1630 M_OPT_MIN, 0, 0, NULL }, | |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1631 { "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
|
1632 0, 0, 0, NULL }, |
22478 | 1633 |
1634 // Audio | |
1635 { "volume", mp_property_volume, CONF_TYPE_FLOAT, | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1636 M_OPT_RANGE, 0, 100, NULL }, |
22478 | 1637 { "mute", mp_property_mute, CONF_TYPE_FLAG, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1638 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1639 { "audio_delay", mp_property_audio_delay, CONF_TYPE_FLOAT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1640 M_OPT_RANGE, -100, 100, NULL }, |
22478 | 1641 { "audio_format", mp_property_audio_format, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1642 0, 0, 0, NULL }, |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1643 { "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
|
1644 0, 0, 0, NULL }, |
22478 | 1645 { "audio_bitrate", mp_property_audio_bitrate, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1646 0, 0, 0, NULL }, |
22478 | 1647 { "samplerate", mp_property_samplerate, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1648 0, 0, 0, NULL }, |
22478 | 1649 { "channels", mp_property_channels, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1650 0, 0, 0, NULL }, |
22478 | 1651 { "switch_audio", mp_property_audio, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1652 CONF_RANGE, -2, MAX_A_STREAMS - 1, NULL }, |
23568 | 1653 { "balance", mp_property_balance, CONF_TYPE_FLOAT, |
1654 M_OPT_RANGE, -1, 1, NULL }, | |
22478 | 1655 |
1656 // Video | |
1657 { "fullscreen", mp_property_fullscreen, CONF_TYPE_FLAG, | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1658 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1659 { "deinterlace", mp_property_deinterlace, CONF_TYPE_FLAG, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1660 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1661 { "ontop", mp_property_ontop, CONF_TYPE_FLAG, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1662 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1663 { "rootwin", mp_property_rootwin, CONF_TYPE_FLAG, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1664 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1665 { "border", mp_property_border, CONF_TYPE_FLAG, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1666 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1667 { "framedropping", mp_property_framedropping, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1668 M_OPT_RANGE, 0, 2, NULL }, |
22478 | 1669 { "gamma", mp_property_gamma, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1670 M_OPT_RANGE, -100, 100, &vo_gamma_gamma }, |
22478 | 1671 { "brightness", mp_property_gamma, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1672 M_OPT_RANGE, -100, 100, &vo_gamma_brightness }, |
22478 | 1673 { "contrast", mp_property_gamma, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1674 M_OPT_RANGE, -100, 100, &vo_gamma_contrast }, |
22478 | 1675 { "saturation", mp_property_gamma, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1676 M_OPT_RANGE, -100, 100, &vo_gamma_saturation }, |
22478 | 1677 { "hue", mp_property_gamma, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1678 M_OPT_RANGE, -100, 100, &vo_gamma_hue }, |
22478 | 1679 { "panscan", mp_property_panscan, CONF_TYPE_FLOAT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1680 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1681 { "vsync", mp_property_vsync, CONF_TYPE_FLAG, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1682 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1683 { "video_format", mp_property_video_format, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1684 0, 0, 0, NULL }, |
23394
d4e8613ddc95
Make all the info available via the metadata API available via properties.
albeu
parents:
23393
diff
changeset
|
1685 { "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
|
1686 0, 0, 0, NULL }, |
22478 | 1687 { "video_bitrate", mp_property_video_bitrate, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1688 0, 0, 0, NULL }, |
22478 | 1689 { "width", mp_property_width, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1690 0, 0, 0, NULL }, |
22478 | 1691 { "height", mp_property_height, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1692 0, 0, 0, NULL }, |
22478 | 1693 { "fps", mp_property_fps, CONF_TYPE_FLOAT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1694 0, 0, 0, NULL }, |
22478 | 1695 { "aspect", mp_property_aspect, CONF_TYPE_FLOAT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1696 0, 0, 0, NULL }, |
22478 | 1697 { "switch_video", mp_property_video, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1698 CONF_RANGE, -2, MAX_V_STREAMS - 1, NULL }, |
22478 | 1699 { "switch_program", mp_property_program, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1700 CONF_RANGE, -1, 65535, NULL }, |
22478 | 1701 |
1702 // Subs | |
1703 { "sub", mp_property_sub, CONF_TYPE_INT, | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1704 M_OPT_MIN, -1, 0, NULL }, |
22478 | 1705 { "sub_delay", mp_property_sub_delay, CONF_TYPE_FLOAT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1706 0, 0, 0, NULL }, |
22478 | 1707 { "sub_pos", mp_property_sub_pos, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1708 M_OPT_RANGE, 0, 100, NULL }, |
22478 | 1709 { "sub_alignment", mp_property_sub_alignment, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1710 M_OPT_RANGE, 0, 2, NULL }, |
22478 | 1711 { "sub_visibility", mp_property_sub_visibility, CONF_TYPE_FLAG, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1712 M_OPT_RANGE, 0, 1, NULL }, |
22478 | 1713 { "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
|
1714 M_OPT_RANGE, 0, 1, NULL }, |
23740 | 1715 #ifdef HAVE_FREETYPE |
23725 | 1716 { "sub_scale", mp_property_sub_scale, CONF_TYPE_FLOAT, |
1717 M_OPT_RANGE, 0, 100, NULL }, | |
23740 | 1718 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1719 |
22478 | 1720 #ifdef USE_TV |
1721 { "tv_brightness", mp_property_tv_color, CONF_TYPE_INT, | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1722 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_BRIGHTNESS }, |
22478 | 1723 { "tv_contrast", mp_property_tv_color, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1724 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_CONTRAST }, |
22478 | 1725 { "tv_saturation", mp_property_tv_color, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1726 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_SATURATION }, |
22478 | 1727 { "tv_hue", mp_property_tv_color, CONF_TYPE_INT, |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1728 M_OPT_RANGE, -100, 100, (void *) TV_COLOR_HUE }, |
22478 | 1729 #endif |
1730 | |
23900 | 1731 #ifdef HAVE_TV_TELETEXT |
1732 { "teletext_page", mp_property_teletext_page, CONF_TYPE_INT, | |
1733 M_OPT_RANGE, 100, 899, (void*)TV_VBI_CONTROL_GET_PAGE }, | |
1734 { "teletext_subpage", mp_property_teletext_common, CONF_TYPE_INT, | |
1735 M_OPT_RANGE, 0, 64, (void*)TV_VBI_CONTROL_GET_SUBPAGE }, | |
1736 { "teletext_mode", mp_property_teletext_mode, CONF_TYPE_FLAG, | |
1737 M_OPT_RANGE, 0, 1, (void*)TV_VBI_CONTROL_GET_MODE }, | |
1738 { "teletext_format", mp_property_teletext_common, CONF_TYPE_INT, | |
1739 M_OPT_RANGE, 0, 3, (void*)TV_VBI_CONTROL_GET_FORMAT }, | |
1740 { "teletext_half_page", mp_property_teletext_common, CONF_TYPE_INT, | |
1741 M_OPT_RANGE, 0, 2, (void*)TV_VBI_CONTROL_GET_HALF_PAGE }, | |
1742 #endif | |
1743 | |
22478 | 1744 { NULL, NULL, NULL, 0, 0, 0, NULL } |
1745 }; | |
1746 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1747 |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1748 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
|
1749 { |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1750 return m_property_do(mp_properties, name, action, val, ctx); |
22478 | 1751 } |
1752 | |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1753 char* mp_property_print(const char *name, void* ctx) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1754 { |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1755 char* ret = NULL; |
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1756 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
|
1757 return NULL; |
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1758 return ret; |
22478 | 1759 } |
1760 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1761 char *property_expand_string(MPContext * mpctx, char *str) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1762 { |
22478 | 1763 return m_properties_expand_string(mp_properties, str, mpctx); |
1764 } | |
1765 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1766 void property_print_help(void) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1767 { |
22478 | 1768 m_properties_print_help_list(mp_properties); |
1769 } | |
1770 | |
1771 | |
1772 ///@} | |
1773 // Properties group | |
1774 | |
1775 | |
1776 /** | |
1777 * \defgroup Command2Property Command to property bridge | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1778 * |
22478 | 1779 * It is used to handle most commands that just set a property |
1780 * and optionally display something on the OSD. | |
1781 * Two kinds of commands are handled: adjust or toggle. | |
1782 * | |
1783 * Adjust commands take 1 or 2 parameters: <value> <abs> | |
1784 * If <abs> is non-zero the property is set to the given value | |
1785 * otherwise it is adjusted. | |
1786 * | |
1787 * Toggle commands take 0 or 1 parameters. With no parameter | |
1788 * or a value less than the property minimum it just steps the | |
1789 * property to its next value. Otherwise it sets it to the given | |
1790 * value. | |
1791 * | |
1792 *@{ | |
1793 */ | |
1794 | |
1795 /// 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
|
1796 static struct { |
22478 | 1797 /// property name |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1798 const char *name; |
22478 | 1799 /// cmd id |
1800 int cmd; | |
1801 /// set/adjust or toggle command | |
1802 int toggle; | |
1803 /// progressbar type | |
1804 int osd_progbar; | |
1805 /// osd msg id if it must be shared | |
1806 int osd_id; | |
1807 /// osd msg template | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1808 const char *osd_msg; |
22478 | 1809 } set_prop_cmd[] = { |
23727 | 1810 // general |
1811 { "loop", MP_CMD_LOOP, 0, 0, -1, MSGTR_LoopStatus }, | |
22478 | 1812 // audio |
1813 { "volume", MP_CMD_VOLUME, 0, OSD_VOLUME, -1, MSGTR_Volume }, | |
1814 { "mute", MP_CMD_MUTE, 1, 0, -1, MSGTR_MuteStatus }, | |
1815 { "audio_delay", MP_CMD_AUDIO_DELAY, 0, 0, -1, MSGTR_AVDelayStatus }, | |
1816 { "switch_audio", MP_CMD_SWITCH_AUDIO, 1, 0, -1, MSGTR_OSDAudio }, | |
23568 | 1817 { "balance", MP_CMD_BALANCE, 0, OSD_BALANCE, -1, MSGTR_Balance }, |
22478 | 1818 // video |
1819 { "fullscreen", MP_CMD_VO_FULLSCREEN, 1, 0, -1, NULL }, | |
1820 { "panscan", MP_CMD_PANSCAN, 0, OSD_PANSCAN, -1, MSGTR_Panscan }, | |
1821 { "ontop", MP_CMD_VO_ONTOP, 1, 0, -1, MSGTR_OnTopStatus }, | |
1822 { "rootwin", MP_CMD_VO_ROOTWIN, 1, 0, -1, MSGTR_RootwinStatus }, | |
1823 { "border", MP_CMD_VO_BORDER, 1, 0, -1, MSGTR_BorderStatus }, | |
1824 { "framedropping", MP_CMD_FRAMEDROPPING, 1, 0, -1, MSGTR_FramedroppingStatus }, | |
1825 { "gamma", MP_CMD_GAMMA, 0, OSD_BRIGHTNESS, -1, MSGTR_Gamma }, | |
1826 { "brightness", MP_CMD_BRIGHTNESS, 0, OSD_BRIGHTNESS, -1, MSGTR_Brightness }, | |
1827 { "contrast", MP_CMD_CONTRAST, 0, OSD_CONTRAST, -1, MSGTR_Contrast }, | |
1828 { "saturation", MP_CMD_SATURATION, 0, OSD_SATURATION, -1, MSGTR_Saturation }, | |
1829 { "hue", MP_CMD_HUE, 0, OSD_HUE, -1, MSGTR_Hue }, | |
1830 { "vsync", MP_CMD_SWITCH_VSYNC, 1, 0, -1, MSGTR_VSyncStatus }, | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1831 // subs |
22478 | 1832 { "sub", MP_CMD_SUB_SELECT, 1, 0, -1, MSGTR_SubSelectStatus }, |
1833 { "sub_pos", MP_CMD_SUB_POS, 0, 0, -1, MSGTR_SubPosStatus }, | |
1834 { "sub_alignment", MP_CMD_SUB_ALIGNMENT, 1, 0, -1, MSGTR_SubAlignStatus }, | |
1835 { "sub_delay", MP_CMD_SUB_DELAY, 0, 0, OSD_MSG_SUB_DELAY, MSGTR_SubDelayStatus }, | |
1836 { "sub_visibility", MP_CMD_SUB_VISIBILITY, 1, 0, -1, MSGTR_SubVisibleStatus }, | |
1837 { "sub_forced_only", MP_CMD_SUB_FORCED_ONLY, 1, 0, -1, MSGTR_SubForcedOnlyStatus }, | |
23740 | 1838 #ifdef HAVE_FREETYPE |
23725 | 1839 { "sub_scale", MP_CMD_SUB_SCALE, 0, 0, -1, MSGTR_SubScale}, |
23740 | 1840 #endif |
22478 | 1841 #ifdef USE_TV |
1842 { "tv_brightness", MP_CMD_TV_SET_BRIGHTNESS, 0, OSD_BRIGHTNESS, -1, MSGTR_Brightness }, | |
1843 { "tv_hue", MP_CMD_TV_SET_HUE, 0, OSD_HUE, -1, MSGTR_Hue }, | |
1844 { "tv_saturation", MP_CMD_TV_SET_SATURATION, 0, OSD_SATURATION, -1, MSGTR_Saturation }, | |
1845 { "tv_contrast", MP_CMD_TV_SET_CONTRAST, 0, OSD_CONTRAST, -1, MSGTR_Contrast }, | |
1846 #endif | |
1847 { NULL, 0, 0, 0, -1, NULL } | |
1848 }; | |
1849 | |
1850 | |
1851 /// Handle commands that set a property. | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1852 static int set_property_command(MPContext * mpctx, mp_cmd_t * cmd) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1853 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1854 int i, r; |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1855 m_option_t* prop; |
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1856 const char *pname; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1857 |
22478 | 1858 // look for the command |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1859 for (i = 0; set_prop_cmd[i].name; i++) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1860 if (set_prop_cmd[i].cmd == cmd->id) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1861 break; |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1862 if (!(pname = set_prop_cmd[i].name)) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1863 return 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1864 |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1865 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
|
1866 return 0; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1867 |
22478 | 1868 // toggle command |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1869 if (set_prop_cmd[i].toggle) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1870 // set to value |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1871 if (cmd->nargs > 0 && cmd->args[0].v.i >= prop->min) |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1872 r = mp_property_do(pname, M_PROPERTY_SET, &cmd->args[0].v.i, mpctx); |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1873 else |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1874 r = mp_property_do(pname, M_PROPERTY_STEP_UP, NULL, mpctx); |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1875 } else if (cmd->args[1].v.i) //set |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1876 r = mp_property_do(pname, M_PROPERTY_SET, &cmd->args[0].v, mpctx); |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1877 else // adjust |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1878 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
|
1879 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1880 if (r <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1881 return 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1882 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1883 if (set_prop_cmd[i].osd_progbar) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1884 if (prop->type == CONF_TYPE_INT) { |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1885 if (mp_property_do(pname, M_PROPERTY_GET, &r, mpctx) > 0) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1886 set_osd_bar(set_prop_cmd[i].osd_progbar, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1887 set_prop_cmd[i].osd_msg, prop->min, prop->max, r); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1888 } else if (prop->type == CONF_TYPE_FLOAT) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1889 float f; |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1890 if (mp_property_do(pname, M_PROPERTY_GET, &f, mpctx) > 0) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1891 set_osd_bar(set_prop_cmd[i].osd_progbar, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1892 set_prop_cmd[i].osd_msg, prop->min, prop->max, f); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1893 } else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1894 mp_msg(MSGT_CPLAYER, MSGL_ERR, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1895 "Property use an unsupported type.\n"); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1896 return 1; |
22478 | 1897 } |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1898 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1899 if (set_prop_cmd[i].osd_msg) { |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1900 char *val = mp_property_print(pname, mpctx); |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1901 if (val) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1902 set_osd_msg(set_prop_cmd[i].osd_id >= |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1903 0 ? set_prop_cmd[i].osd_id : OSD_MSG_PROPERTY + i, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1904 1, osd_duration, set_prop_cmd[i].osd_msg, val); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1905 free(val); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1906 } |
22478 | 1907 } |
1908 return 1; | |
1909 } | |
1910 | |
1911 | |
1912 int run_command(MPContext * mpctx, mp_cmd_t * cmd) | |
1913 { | |
1914 sh_audio_t * const sh_audio = mpctx->sh_audio; | |
1915 sh_video_t * const sh_video = mpctx->sh_video; | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1916 int brk_cmd = 0; |
22478 | 1917 if (!set_property_command(mpctx, cmd)) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1918 switch (cmd->id) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1919 case MP_CMD_SEEK:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1920 float v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1921 int abs; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1922 if (sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1923 mpctx->osd_show_percentage = sh_video->fps; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1924 v = cmd->args[0].v.f; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1925 abs = (cmd->nargs > 1) ? cmd->args[1].v.i : 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1926 if (abs == 2) { /* Absolute seek to a specific timestamp in seconds */ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1927 abs_seek_pos = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1928 if (sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1929 mpctx->osd_function = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1930 (v > sh_video->pts) ? OSD_FFW : OSD_REW; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1931 rel_seek_secs = v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1932 } else if (abs) { /* Absolute seek by percentage */ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1933 abs_seek_pos = 3; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1934 if (sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1935 mpctx->osd_function = OSD_FFW; // Direction isn't set correctly |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1936 rel_seek_secs = v / 100.0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1937 } else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1938 rel_seek_secs += v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1939 mpctx->osd_function = (v > 0) ? OSD_FFW : OSD_REW; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1940 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1941 brk_cmd = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1942 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1943 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1944 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1945 case MP_CMD_SET_PROPERTY:{ |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1946 int r = mp_property_do(cmd->args[0].v.s, M_PROPERTY_PARSE, |
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1947 cmd->args[1].v.s, mpctx); |
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1948 if (r == M_PROPERTY_UNKNOWN) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1949 mp_msg(MSGT_CPLAYER, MSGL_WARN, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1950 "Unknown property: '%s'\n", cmd->args[0].v.s); |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1951 else if (r <= 0) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1952 mp_msg(MSGT_CPLAYER, MSGL_WARN, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1953 "Failed to set property '%s' to '%s'.\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1954 cmd->args[0].v.s, cmd->args[1].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1955 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1956 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1957 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1958 case MP_CMD_STEP_PROPERTY:{ |
23411
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1959 void* arg = NULL; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1960 int r,i; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1961 double d; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1962 off_t o; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1963 if (cmd->args[1].v.f) { |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1964 m_option_t* prop; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1965 if((r = mp_property_do(cmd->args[0].v.s, |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1966 M_PROPERTY_GET_TYPE, |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1967 &prop, mpctx)) <= 0) |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1968 goto step_prop_err; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1969 if(prop->type == CONF_TYPE_INT || |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1970 prop->type == CONF_TYPE_FLAG) |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1971 i = cmd->args[1].v.f, arg = &i; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1972 else if(prop->type == CONF_TYPE_FLOAT) |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1973 arg = &cmd->args[1].v.f; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1974 else if(prop->type == CONF_TYPE_DOUBLE || |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1975 prop->type == CONF_TYPE_TIME) |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1976 d = cmd->args[1].v.f, arg = &d; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1977 else if(prop->type == CONF_TYPE_POSITION) |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1978 o = cmd->args[1].v.f, arg = &o; |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1979 else |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1980 mp_msg(MSGT_CPLAYER, MSGL_WARN, |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1981 "Ignoring step size stepping property '%s'.\n", |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1982 cmd->args[0].v.s); |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1983 } |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1984 r = mp_property_do(cmd->args[0].v.s, |
23412
f6c225ffe60d
Allow setting the direction in the step_property command.
albeu
parents:
23411
diff
changeset
|
1985 cmd->args[2].v.i < 0 ? |
f6c225ffe60d
Allow setting the direction in the step_property command.
albeu
parents:
23411
diff
changeset
|
1986 M_PROPERTY_STEP_DOWN : M_PROPERTY_STEP_UP, |
23411
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1987 arg, mpctx); |
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1988 step_prop_err: |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1989 if (r == M_PROPERTY_UNKNOWN) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1990 mp_msg(MSGT_CPLAYER, MSGL_WARN, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1991 "Unknown property: '%s'\n", cmd->args[0].v.s); |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
1992 else if (r <= 0) |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1993 mp_msg(MSGT_CPLAYER, MSGL_WARN, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1994 "Failed to increment property '%s' by %f.\n", |
23411
07741c30e64c
Fix the step_property coammand to correctly handle the step size with
albeu
parents:
23396
diff
changeset
|
1995 cmd->args[0].v.s, cmd->args[1].v.f); |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1996 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1997 break; |
22478 | 1998 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
1999 case MP_CMD_GET_PROPERTY:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2000 char *tmp; |
23393
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
2001 if (mp_property_do(cmd->args[0].v.s, M_PROPERTY_TO_STRING, |
a5e55cb59bbc
Rework the property API to allow sub properties such as
albeu
parents:
23259
diff
changeset
|
2002 &tmp, mpctx) <= 0) { |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2003 mp_msg(MSGT_CPLAYER, MSGL_WARN, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2004 "Failed to get value of property '%s'.\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2005 cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2006 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2007 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2008 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_%s=%s\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2009 cmd->args[0].v.s, tmp); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2010 free(tmp); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2011 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2012 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2013 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2014 case MP_CMD_EDL_MARK: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2015 if (edl_fd) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2016 float v = sh_video ? sh_video->pts : |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2017 playing_audio_pts(sh_audio, mpctx->d_audio, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2018 mpctx->audio_out); |
22478 | 2019 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2020 if (mpctx->begin_skip == MP_NOPTS_VALUE) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2021 mpctx->begin_skip = v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2022 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_EdloutStartSkip); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2023 } else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2024 if (mpctx->begin_skip > v) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2025 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_EdloutBadStop); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2026 else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2027 fprintf(edl_fd, "%f %f %d\n", mpctx->begin_skip, v, 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2028 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_EdloutEndSkip); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2029 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2030 mpctx->begin_skip = MP_NOPTS_VALUE; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2031 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2032 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2033 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2034 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2035 case MP_CMD_SWITCH_RATIO: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2036 if (cmd->nargs == 0 || cmd->args[0].v.f == -1) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2037 movie_aspect = (float) sh_video->disp_w / sh_video->disp_h; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2038 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2039 movie_aspect = cmd->args[0].v.f; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2040 mpcodecs_config_vo(sh_video, sh_video->disp_w, sh_video->disp_h, 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2041 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2042 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2043 case MP_CMD_SPEED_INCR:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2044 float v = cmd->args[0].v.f; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2045 playback_speed += v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2046 build_afilter_chain(sh_audio, &ao_data); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2047 set_osd_msg(OSD_MSG_SPEED, 1, osd_duration, MSGTR_OSDSpeed, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2048 playback_speed); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2049 } break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2050 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2051 case MP_CMD_SPEED_MULT:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2052 float v = cmd->args[0].v.f; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2053 playback_speed *= v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2054 build_afilter_chain(sh_audio, &ao_data); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2055 set_osd_msg(OSD_MSG_SPEED, 1, osd_duration, MSGTR_OSDSpeed, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2056 playback_speed); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2057 } break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2058 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2059 case MP_CMD_SPEED_SET:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2060 float v = cmd->args[0].v.f; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2061 playback_speed = v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2062 build_afilter_chain(sh_audio, &ao_data); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2063 set_osd_msg(OSD_MSG_SPEED, 1, osd_duration, MSGTR_OSDSpeed, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2064 playback_speed); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2065 } break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2066 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2067 case MP_CMD_FRAME_STEP: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2068 case MP_CMD_PAUSE: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2069 cmd->pausing = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2070 brk_cmd = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2071 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2072 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2073 case MP_CMD_FILE_FILTER: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2074 file_filter = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2075 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2076 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2077 case MP_CMD_QUIT: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2078 exit_player_with_rc(MSGTR_Exit_quit, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2079 (cmd->nargs > 0) ? cmd->args[0].v.i : 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2080 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2081 case MP_CMD_PLAY_TREE_STEP:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2082 int n = cmd->args[0].v.i == 0 ? 1 : cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2083 int force = cmd->args[1].v.i; |
22478 | 2084 |
2085 #ifdef HAVE_NEW_GUI | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2086 if (use_gui) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2087 int i = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2088 if (n > 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2089 for (i = 0; i < n; i++) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2090 mplNext(); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2091 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2092 for (i = 0; i < -1 * n; i++) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2093 mplPrev(); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2094 } else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2095 #endif |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2096 { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2097 if (!force && mpctx->playtree_iter) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2098 play_tree_iter_t *i = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2099 play_tree_iter_new_copy(mpctx->playtree_iter); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2100 if (play_tree_iter_step(i, n, 0) == |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2101 PLAY_TREE_ITER_ENTRY) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2102 mpctx->eof = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2103 (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2104 play_tree_iter_free(i); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2105 } else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2106 mpctx->eof = (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2107 if (mpctx->eof) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2108 mpctx->play_tree_step = n; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2109 brk_cmd = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2110 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2111 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2112 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2113 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2114 case MP_CMD_PLAY_TREE_UP_STEP:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2115 int n = cmd->args[0].v.i > 0 ? 1 : -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2116 int force = cmd->args[1].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2117 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2118 if (!force && mpctx->playtree_iter) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2119 play_tree_iter_t *i = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2120 play_tree_iter_new_copy(mpctx->playtree_iter); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2121 if (play_tree_iter_up_step(i, n, 0) == PLAY_TREE_ITER_ENTRY) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2122 mpctx->eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2123 play_tree_iter_free(i); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2124 } else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2125 mpctx->eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2126 brk_cmd = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2127 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2128 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2129 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2130 case MP_CMD_PLAY_ALT_SRC_STEP: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2131 if (mpctx->playtree_iter && mpctx->playtree_iter->num_files > 1) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2132 int v = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2133 if (v > 0 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2134 && mpctx->playtree_iter->file < |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2135 mpctx->playtree_iter->num_files) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2136 mpctx->eof = PT_NEXT_SRC; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2137 else if (v < 0 && mpctx->playtree_iter->file > 1) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2138 mpctx->eof = PT_PREV_SRC; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2139 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2140 brk_cmd = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2141 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2142 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2143 case MP_CMD_SUB_STEP: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2144 if (sh_video) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2145 int movement = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2146 step_sub(subdata, sh_video->pts, movement); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2147 #ifdef USE_ASS |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2148 if (ass_track) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2149 sub_delay += |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2150 ass_step_sub(ass_track, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2151 (sh_video->pts + |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2152 sub_delay) * 1000 + .5, movement) / 1000.; |
22478 | 2153 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2154 set_osd_msg(OSD_MSG_SUB_DELAY, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2155 MSGTR_OSDSubDelay, ROUND(sub_delay * 1000)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2156 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2157 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2158 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2159 case MP_CMD_SUB_LOG: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2160 log_sub(); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2161 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2162 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2163 case MP_CMD_OSD:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2164 int v = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2165 int max = (term_osd |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2166 && !sh_video) ? MAX_TERM_OSD_LEVEL : MAX_OSD_LEVEL; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2167 if (osd_level > max) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2168 osd_level = max; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2169 if (v < 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2170 osd_level = (osd_level + 1) % (max + 1); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2171 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2172 osd_level = v > max ? max : v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2173 /* Show OSD state when disabled, but not when an explicit |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2174 argument is given to the OSD command, i.e. in slave mode. */ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2175 if (v == -1 && osd_level <= 1) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2176 set_osd_msg(OSD_MSG_OSD_STATUS, 0, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2177 MSGTR_OSDosd, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2178 osd_level ? MSGTR_OSDenabled : |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2179 MSGTR_OSDdisabled); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2180 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2181 rm_osd_msg(OSD_MSG_OSD_STATUS); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2182 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2183 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2184 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2185 case MP_CMD_OSD_SHOW_TEXT: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2186 set_osd_msg(OSD_MSG_TEXT, cmd->args[2].v.i, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2187 (cmd->args[1].v.i < |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2188 0 ? osd_duration : cmd->args[1].v.i), |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2189 "%-.63s", cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2190 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2191 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2192 case MP_CMD_OSD_SHOW_PROPERTY_TEXT:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2193 char *txt = m_properties_expand_string(mp_properties, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2194 cmd->args[0].v.s, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2195 mpctx); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2196 /* if no argument supplied take default osd_duration, else <arg> ms. */ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2197 if (txt) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2198 set_osd_msg(OSD_MSG_TEXT, cmd->args[2].v.i, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2199 (cmd->args[1].v.i < |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2200 0 ? osd_duration : cmd->args[1].v.i), |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2201 "%-.63s", txt); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2202 free(txt); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2203 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2204 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2205 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2206 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2207 case MP_CMD_LOADFILE:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2208 play_tree_t *e = play_tree_new(); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2209 play_tree_add_file(e, cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2210 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2211 if (cmd->args[1].v.i) // append |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2212 play_tree_append_entry(mpctx->playtree, e); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2213 else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2214 // Go back to the starting point. |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2215 while (play_tree_iter_up_step |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2216 (mpctx->playtree_iter, 0, 1) != PLAY_TREE_ITER_END) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2217 /* NOP */ ; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2218 play_tree_free_list(mpctx->playtree->child, 1); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2219 play_tree_set_child(mpctx->playtree, e); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2220 play_tree_iter_step(mpctx->playtree_iter, 0, 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2221 mpctx->eof = PT_NEXT_SRC; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2222 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2223 brk_cmd = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2224 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2225 break; |
22478 | 2226 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2227 case MP_CMD_LOADLIST:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2228 play_tree_t *e = parse_playlist_file(cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2229 if (!e) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2230 mp_msg(MSGT_CPLAYER, MSGL_ERR, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2231 MSGTR_PlaylistLoadUnable, cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2232 else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2233 if (cmd->args[1].v.i) // append |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2234 play_tree_append_entry(mpctx->playtree, e); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2235 else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2236 // Go back to the starting point. |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2237 while (play_tree_iter_up_step |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2238 (mpctx->playtree_iter, 0, 1) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2239 != PLAY_TREE_ITER_END) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2240 /* NOP */ ; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2241 play_tree_free_list(mpctx->playtree->child, 1); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2242 play_tree_set_child(mpctx->playtree, e); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2243 play_tree_iter_step(mpctx->playtree_iter, 0, 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2244 mpctx->eof = PT_NEXT_SRC; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2245 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2246 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2247 brk_cmd = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2248 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2249 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2250 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2251 #ifdef USE_RADIO |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2252 case MP_CMD_RADIO_STEP_CHANNEL: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2253 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2254 int v = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2255 if (v > 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2256 radio_step_channel(mpctx->demuxer->stream, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2257 RADIO_CHANNEL_HIGHER); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2258 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2259 radio_step_channel(mpctx->demuxer->stream, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2260 RADIO_CHANNEL_LOWER); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2261 if (radio_get_channel_name(mpctx->demuxer->stream)) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2262 set_osd_msg(OSD_MSG_RADIO_CHANNEL, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2263 MSGTR_OSDChannel, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2264 radio_get_channel_name(mpctx->demuxer->stream)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2265 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2266 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2267 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2268 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2269 case MP_CMD_RADIO_SET_CHANNEL: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2270 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2271 radio_set_channel(mpctx->demuxer->stream, cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2272 if (radio_get_channel_name(mpctx->demuxer->stream)) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2273 set_osd_msg(OSD_MSG_RADIO_CHANNEL, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2274 MSGTR_OSDChannel, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2275 radio_get_channel_name(mpctx->demuxer->stream)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2276 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2277 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2278 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2279 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2280 case MP_CMD_RADIO_SET_FREQ: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2281 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2282 radio_set_freq(mpctx->demuxer->stream, cmd->args[0].v.f); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2283 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2284 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2285 case MP_CMD_RADIO_STEP_FREQ: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2286 if (mpctx->demuxer->stream->type == STREAMTYPE_RADIO) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2287 radio_step_freq(mpctx->demuxer->stream, cmd->args[0].v.f); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2288 break; |
22478 | 2289 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2290 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2291 #ifdef USE_TV |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
2292 case MP_CMD_TV_START_SCAN: |
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
2293 if (mpctx->file_format == DEMUXER_TYPE_TV) |
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
2294 tv_start_scan((tvi_handle_t *) (mpctx->demuxer->priv),1); |
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
2295 break; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2296 case MP_CMD_TV_SET_FREQ: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2297 if (mpctx->file_format == DEMUXER_TYPE_TV) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2298 tv_set_freq((tvi_handle_t *) (mpctx->demuxer->priv), |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2299 cmd->args[0].v.f * 16.0); |
23244
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2300 #ifdef HAVE_PVR |
23258
1d86fb12e4ae
cosmetic: use K&R coding style, as in reste of the file
ben
parents:
23244
diff
changeset
|
2301 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
|
2302 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
|
2303 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
|
2304 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
|
2305 pvr_get_current_stationname (mpctx->stream)); |
23259 | 2306 } |
23244
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2307 #endif /* HAVE_PVR */ |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2308 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2309 |
22667 | 2310 case MP_CMD_TV_STEP_FREQ: |
2311 if (mpctx->file_format == DEMUXER_TYPE_TV) | |
2312 tv_step_freq((tvi_handle_t *) (mpctx->demuxer->priv), | |
2313 cmd->args[0].v.f * 16.0); | |
23244
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2314 #ifdef HAVE_PVR |
23258
1d86fb12e4ae
cosmetic: use K&R coding style, as in reste of the file
ben
parents:
23244
diff
changeset
|
2315 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
|
2316 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
|
2317 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
|
2318 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
|
2319 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
|
2320 } |
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2321 #endif /* HAVE_PVR */ |
22667 | 2322 break; |
2323 | |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2324 case MP_CMD_TV_SET_NORM: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2325 if (mpctx->file_format == DEMUXER_TYPE_TV) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2326 tv_set_norm((tvi_handle_t *) (mpctx->demuxer->priv), |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2327 cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2328 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2329 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2330 case MP_CMD_TV_STEP_CHANNEL:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2331 if (mpctx->file_format == DEMUXER_TYPE_TV) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2332 int v = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2333 if (v > 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2334 tv_step_channel((tvi_handle_t *) (mpctx-> |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2335 demuxer->priv), |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2336 TV_CHANNEL_HIGHER); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2337 } else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2338 tv_step_channel((tvi_handle_t *) (mpctx-> |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2339 demuxer->priv), |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2340 TV_CHANNEL_LOWER); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2341 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2342 if (tv_channel_list) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2343 set_osd_msg(OSD_MSG_TV_CHANNEL, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2344 MSGTR_OSDChannel, tv_channel_current->name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2345 //vo_osd_changed(OSDTYPE_SUBTITLE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2346 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2347 } |
23244
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2348 #ifdef HAVE_PVR |
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2349 else if (mpctx->stream && |
23258
1d86fb12e4ae
cosmetic: use K&R coding style, as in reste of the file
ben
parents:
23244
diff
changeset
|
2350 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
|
2351 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
|
2352 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
|
2353 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
|
2354 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
|
2355 } |
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2356 #endif /* HAVE_PVR */ |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2357 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2358 #ifdef HAS_DVBIN_SUPPORT |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2359 if ((mpctx->stream->type == STREAMTYPE_DVB) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2360 && mpctx->stream->priv) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2361 dvb_priv_t *priv = (dvb_priv_t *) mpctx->stream->priv; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2362 if (priv->is_on) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2363 int dir; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2364 int v = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2365 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2366 mpctx->last_dvb_step = v; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2367 if (v > 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2368 dir = DVB_CHANNEL_HIGHER; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2369 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2370 dir = DVB_CHANNEL_LOWER; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2371 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2372 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2373 if (dvb_step_channel(priv, dir)) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2374 mpctx->eof = mpctx->dvbin_reopen = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2375 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2376 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2377 #endif /* HAS_DVBIN_SUPPORT */ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2378 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2379 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2380 case MP_CMD_TV_SET_CHANNEL: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2381 if (mpctx->file_format == DEMUXER_TYPE_TV) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2382 tv_set_channel((tvi_handle_t *) (mpctx->demuxer->priv), |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2383 cmd->args[0].v.s); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2384 if (tv_channel_list) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2385 set_osd_msg(OSD_MSG_TV_CHANNEL, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2386 MSGTR_OSDChannel, tv_channel_current->name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2387 //vo_osd_changed(OSDTYPE_SUBTITLE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2388 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2389 } |
23244
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2390 #ifdef HAVE_PVR |
23258
1d86fb12e4ae
cosmetic: use K&R coding style, as in reste of the file
ben
parents:
23244
diff
changeset
|
2391 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
|
2392 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
|
2393 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
|
2394 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
|
2395 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
|
2396 } |
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2397 #endif /* HAVE_PVR */ |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2398 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2399 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2400 #ifdef HAS_DVBIN_SUPPORT |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2401 case MP_CMD_DVB_SET_CHANNEL: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2402 if ((mpctx->stream->type == STREAMTYPE_DVB) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2403 && mpctx->stream->priv) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2404 dvb_priv_t *priv = (dvb_priv_t *) mpctx->stream->priv; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2405 if (priv->is_on) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2406 if (priv->list->current <= cmd->args[0].v.i) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2407 mpctx->last_dvb_step = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2408 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2409 mpctx->last_dvb_step = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2410 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2411 if (dvb_set_channel |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2412 (priv, cmd->args[1].v.i, cmd->args[0].v.i)) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2413 mpctx->eof = mpctx->dvbin_reopen = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2414 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2415 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2416 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2417 #endif /* HAS_DVBIN_SUPPORT */ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2418 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2419 case MP_CMD_TV_LAST_CHANNEL: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2420 if (mpctx->file_format == DEMUXER_TYPE_TV) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2421 tv_last_channel((tvi_handle_t *) (mpctx->demuxer->priv)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2422 if (tv_channel_list) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2423 set_osd_msg(OSD_MSG_TV_CHANNEL, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2424 MSGTR_OSDChannel, tv_channel_current->name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2425 //vo_osd_changed(OSDTYPE_SUBTITLE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2426 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2427 } |
23244
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2428 #ifdef HAVE_PVR |
23258
1d86fb12e4ae
cosmetic: use K&R coding style, as in reste of the file
ben
parents:
23244
diff
changeset
|
2429 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
|
2430 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
|
2431 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
|
2432 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
|
2433 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
|
2434 } |
e5e8ac0bd7fc
support for PVR channel navigation (patch by Sven Gothel <sgothel at jausoft dot com>)
ben
parents:
23077
diff
changeset
|
2435 #endif /* HAVE_PVR */ |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2436 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2437 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2438 case MP_CMD_TV_STEP_NORM: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2439 if (mpctx->file_format == DEMUXER_TYPE_TV) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2440 tv_step_norm((tvi_handle_t *) (mpctx->demuxer->priv)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2441 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2442 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2443 case MP_CMD_TV_STEP_CHANNEL_LIST: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2444 if (mpctx->file_format == DEMUXER_TYPE_TV) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2445 tv_step_chanlist((tvi_handle_t *) (mpctx->demuxer->priv)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2446 break; |
23900 | 2447 #ifdef HAVE_TV_TELETEXT |
2448 case MP_CMD_TV_TELETEXT_ADD_DEC: | |
2449 { | |
2450 tvi_handle_t* tvh=(tvi_handle_t *)(mpctx->demuxer->priv); | |
2451 if (mpctx->file_format == DEMUXER_TYPE_TV) | |
2452 tvh->functions->control(tvh->priv,TV_VBI_CONTROL_ADD_DEC,&(cmd->args[0].v.s)); | |
2453 break; | |
2454 } | |
24244 | 2455 case MP_CMD_TV_TELETEXT_GO_LINK: |
2456 { | |
2457 tvi_handle_t* tvh=(tvi_handle_t *)(mpctx->demuxer->priv); | |
2458 if (mpctx->file_format == DEMUXER_TYPE_TV) | |
2459 tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GO_LINK,&(cmd->args[0].v.i)); | |
2460 break; | |
2461 } | |
23900 | 2462 #endif /* HAVE_TV_TELETEXT */ |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2463 #endif /* USE_TV */ |
22478 | 2464 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2465 case MP_CMD_SUB_LOAD: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2466 if (sh_video) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2467 int n = mpctx->set_of_sub_size; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2468 add_subtitles(cmd->args[0].v.s, sh_video->fps, 0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2469 if (n != mpctx->set_of_sub_size) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2470 if (mpctx->global_sub_indices[SUB_SOURCE_SUBS] < 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2471 mpctx->global_sub_indices[SUB_SOURCE_SUBS] = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2472 mpctx->global_sub_size; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2473 ++mpctx->global_sub_size; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2474 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2475 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2476 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2477 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2478 case MP_CMD_SUB_REMOVE: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2479 if (sh_video) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2480 int v = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2481 sub_data *subd; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2482 if (v < 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2483 for (v = 0; v < mpctx->set_of_sub_size; ++v) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2484 subd = mpctx->set_of_subtitles[v]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2485 mp_msg(MSGT_CPLAYER, MSGL_STATUS, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2486 MSGTR_RemovedSubtitleFile, v + 1, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2487 filename_recode(subd->filename)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2488 sub_free(subd); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2489 mpctx->set_of_subtitles[v] = NULL; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2490 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2491 mpctx->global_sub_indices[SUB_SOURCE_SUBS] = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2492 mpctx->global_sub_size -= mpctx->set_of_sub_size; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2493 mpctx->set_of_sub_size = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2494 if (mpctx->set_of_sub_pos >= 0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2495 mpctx->global_sub_pos = -2; |
23838
8287ef1758cb
subdata must be set to NULL when the corresponding data was freed.
reimar
parents:
23837
diff
changeset
|
2496 subdata = NULL; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2497 mp_input_queue_cmd(mp_input_parse_cmd("sub_select")); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2498 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2499 } else if (v < mpctx->set_of_sub_size) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2500 subd = mpctx->set_of_subtitles[v]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2501 mp_msg(MSGT_CPLAYER, MSGL_STATUS, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2502 MSGTR_RemovedSubtitleFile, v + 1, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2503 filename_recode(subd->filename)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2504 sub_free(subd); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2505 if (mpctx->set_of_sub_pos == v) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2506 mpctx->global_sub_pos = -2; |
23838
8287ef1758cb
subdata must be set to NULL when the corresponding data was freed.
reimar
parents:
23837
diff
changeset
|
2507 subdata = NULL; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2508 mp_input_queue_cmd(mp_input_parse_cmd("sub_select")); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2509 } else if (mpctx->set_of_sub_pos > v) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2510 --mpctx->set_of_sub_pos; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2511 --mpctx->global_sub_pos; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2512 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2513 while (++v < mpctx->set_of_sub_size) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2514 mpctx->set_of_subtitles[v - 1] = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2515 mpctx->set_of_subtitles[v]; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2516 --mpctx->set_of_sub_size; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2517 --mpctx->global_sub_size; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2518 if (mpctx->set_of_sub_size <= 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2519 mpctx->global_sub_indices[SUB_SOURCE_SUBS] = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2520 mpctx->set_of_subtitles[mpctx->set_of_sub_size] = NULL; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2521 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2522 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2523 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2524 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2525 case MP_CMD_GET_SUB_VISIBILITY: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2526 if (sh_video) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2527 mp_msg(MSGT_GLOBAL, MSGL_INFO, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2528 "ANS_SUB_VISIBILITY=%d\n", sub_visibility); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2529 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2530 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2531 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2532 case MP_CMD_SCREENSHOT: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2533 if (vo_config_count) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2534 mp_msg(MSGT_CPLAYER, MSGL_INFO, "sending VFCTRL_SCREENSHOT!\n"); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2535 if (CONTROL_OK != |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2536 ((vf_instance_t *) sh_video->vfilter)-> |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2537 control(sh_video->vfilter, VFCTRL_SCREENSHOT, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2538 &cmd->args[0].v.i)) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2539 mpctx->video_out->control(VOCTRL_SCREENSHOT, NULL); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2540 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2541 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2542 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2543 case MP_CMD_VF_CHANGE_RECTANGLE: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2544 set_rectangle(sh_video, cmd->args[0].v.i, cmd->args[1].v.i); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2545 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2546 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2547 case MP_CMD_GET_TIME_LENGTH:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2548 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_LENGTH=%.2lf\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2549 demuxer_get_time_length(mpctx->demuxer)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2550 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2551 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2552 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2553 case MP_CMD_GET_FILENAME:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2554 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_FILENAME='%s'\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2555 get_metadata(META_NAME)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2556 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2557 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2558 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2559 case MP_CMD_GET_VIDEO_CODEC:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2560 char *inf = get_metadata(META_VIDEO_CODEC); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2561 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2562 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2563 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_CODEC='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2564 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2565 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2566 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2567 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2568 case MP_CMD_GET_VIDEO_BITRATE:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2569 char *inf = get_metadata(META_VIDEO_BITRATE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2570 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2571 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2572 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_BITRATE='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2573 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2574 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2575 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2576 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2577 case MP_CMD_GET_VIDEO_RESOLUTION:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2578 char *inf = get_metadata(META_VIDEO_RESOLUTION); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2579 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2580 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2581 mp_msg(MSGT_GLOBAL, MSGL_INFO, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2582 "ANS_VIDEO_RESOLUTION='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2583 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2584 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2585 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2586 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2587 case MP_CMD_GET_AUDIO_CODEC:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2588 char *inf = get_metadata(META_AUDIO_CODEC); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2589 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2590 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2591 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_CODEC='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2592 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2593 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2594 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2595 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2596 case MP_CMD_GET_AUDIO_BITRATE:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2597 char *inf = get_metadata(META_AUDIO_BITRATE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2598 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2599 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2600 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_BITRATE='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2601 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2602 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2603 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2604 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2605 case MP_CMD_GET_AUDIO_SAMPLES:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2606 char *inf = get_metadata(META_AUDIO_SAMPLES); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2607 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2608 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2609 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_SAMPLES='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2610 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2611 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2612 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2613 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2614 case MP_CMD_GET_META_TITLE:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2615 char *inf = get_metadata(META_INFO_TITLE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2616 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2617 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2618 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TITLE='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2619 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2620 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2621 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2622 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2623 case MP_CMD_GET_META_ARTIST:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2624 char *inf = get_metadata(META_INFO_ARTIST); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2625 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2626 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2627 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ARTIST='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2628 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2629 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2630 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2631 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2632 case MP_CMD_GET_META_ALBUM:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2633 char *inf = get_metadata(META_INFO_ALBUM); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2634 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2635 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2636 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ALBUM='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2637 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2638 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2639 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2640 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2641 case MP_CMD_GET_META_YEAR:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2642 char *inf = get_metadata(META_INFO_YEAR); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2643 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2644 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2645 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_YEAR='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2646 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2647 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2648 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2649 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2650 case MP_CMD_GET_META_COMMENT:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2651 char *inf = get_metadata(META_INFO_COMMENT); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2652 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2653 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2654 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_COMMENT='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2655 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2656 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2657 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2658 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2659 case MP_CMD_GET_META_TRACK:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2660 char *inf = get_metadata(META_INFO_TRACK); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2661 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2662 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2663 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TRACK='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2664 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2665 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2666 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2667 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2668 case MP_CMD_GET_META_GENRE:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2669 char *inf = get_metadata(META_INFO_GENRE); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2670 if (!inf) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2671 inf = strdup(""); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2672 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_GENRE='%s'\n", inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2673 free(inf); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2674 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2675 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2676 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2677 case MP_CMD_GET_VO_FULLSCREEN: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2678 if (mpctx->video_out && vo_config_count) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2679 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VO_FULLSCREEN=%d\n", vo_fs); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2680 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2681 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2682 case MP_CMD_GET_PERCENT_POS: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2683 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_PERCENT_POSITION=%d\n", |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2684 demuxer_get_percent_pos(mpctx->demuxer)); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2685 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2686 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2687 case MP_CMD_GET_TIME_POS:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2688 float pos = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2689 if (sh_video) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2690 pos = sh_video->pts; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2691 else if (sh_audio && mpctx->audio_out) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2692 pos = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2693 playing_audio_pts(sh_audio, mpctx->d_audio, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2694 mpctx->audio_out); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2695 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_TIME_POSITION=%.1f\n", pos); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2696 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2697 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2698 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2699 case MP_CMD_RUN: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2700 #ifndef __MINGW32__ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2701 if (!fork()) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2702 execl("/bin/sh", "sh", "-c", cmd->args[0].v.s, NULL); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2703 exit(0); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2704 } |
22478 | 2705 #endif |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2706 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2707 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2708 case MP_CMD_KEYDOWN_EVENTS: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2709 mplayer_put_key(cmd->args[0].v.i); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2710 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2711 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2712 case MP_CMD_SEEK_CHAPTER:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2713 int seek = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2714 int abs = (cmd->nargs > 1) ? cmd->args[1].v.i : 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2715 int chap; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2716 float next_pts = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2717 int num_chapters; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2718 char *chapter_name; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2719 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2720 rel_seek_secs = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2721 abs_seek_pos = 0; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2722 chap = |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2723 demuxer_seek_chapter(mpctx->demuxer, seek, abs, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2724 &next_pts, &num_chapters, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2725 &chapter_name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2726 if (chap != -1) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2727 if (next_pts > -1.0) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2728 abs_seek_pos = 1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2729 rel_seek_secs = next_pts; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2730 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2731 if (chapter_name) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2732 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2733 MSGTR_OSDChapter, chap + 1, chapter_name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2734 free(chapter_name); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2735 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2736 } else { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2737 if (seek > 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2738 rel_seek_secs = 1000000000.; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2739 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2740 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2741 MSGTR_OSDChapter, 0, MSGTR_Unknown); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2742 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2743 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2744 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2745 break; |
22478 | 2746 |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2747 case MP_CMD_SET_MOUSE_POS:{ |
24150
2ae4c179ea25
Fix unused variable warning when USE_DVDNAV is not defined.
diego
parents:
24105
diff
changeset
|
2748 int pointer_x, pointer_y; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2749 double dx, dy; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2750 pointer_x = cmd->args[0].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2751 pointer_y = cmd->args[1].v.i; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2752 rescale_input_coordinates(pointer_x, pointer_y, &dx, &dy); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2753 #ifdef USE_DVDNAV |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2754 if (mpctx->stream->type == STREAMTYPE_DVDNAV |
24163
ca9f239aaeab
Extract a poor int declaration from within the uncouth grip of an if statement
diego
parents:
24162
diff
changeset
|
2755 && dx > 0.0 && dy > 0.0) { |
24154
09006821e9d7
Move button variable into the if () where it is actually used.
diego
parents:
24150
diff
changeset
|
2756 int button = -1; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2757 pointer_x = (int) (dx * (double) sh_video->disp_w); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2758 pointer_y = (int) (dy * (double) sh_video->disp_h); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2759 mp_dvdnav_update_mouse_pos(mpctx->stream, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2760 pointer_x, pointer_y, &button); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2761 if (button > 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2762 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2763 "Selected button number %d", button); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2764 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2765 #endif |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2766 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2767 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2768 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2769 #ifdef USE_DVDNAV |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2770 case MP_CMD_DVDNAV:{ |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2771 int button = -1; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2772 if (mpctx->stream->type != STREAMTYPE_DVDNAV) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2773 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2774 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2775 if (mp_dvdnav_handle_input |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2776 (mpctx->stream, cmd->args[0].v.i, &button)) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2777 uninit_player(INITED_ALL - (INITED_STREAM | INITED_INPUT | |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2778 (fixed_vo ? INITED_VO : 0))); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2779 brk_cmd = 2; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2780 } else if (button > 0) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2781 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2782 "Selected button number %d", button); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2783 } |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2784 break; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2785 #endif |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2786 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2787 default: |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2788 #ifdef HAVE_NEW_GUI |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2789 if ((use_gui) && (cmd->id > MP_CMD_GUI_EVENTS)) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2790 guiGetEvent(guiIEvent, (char *) cmd->id); |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2791 else |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2792 #endif |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2793 mp_msg(MSGT_CPLAYER, MSGL_V, |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2794 "Received unknown cmd %s\n", cmd->name); |
22478 | 2795 } |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2796 |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2797 switch (cmd->pausing) { |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2798 case 1: // "pausing" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2799 mpctx->osd_function = OSD_PAUSE; |
22478 | 2800 break; |
22479
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2801 case 3: // "pausing_toggle" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2802 mpctx->was_paused = !mpctx->was_paused; |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2803 // fall through |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2804 case 2: // "pausing_keep" |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2805 if (mpctx->was_paused) |
a99ddf2ece25
Change to match current command.c (same functionality).
uau
parents:
22478
diff
changeset
|
2806 mpctx->osd_function = OSD_PAUSE; |
22478 | 2807 } |
2808 return brk_cmd; | |
2809 } |