annotate command.c @ 25375:e1884244ba98

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