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