Mercurial > mplayer.hg
annotate mplayer.c @ 20168:0ba2a57c95a6
modifications pointed out by reimar doffinger
author | ptt |
---|---|
date | Thu, 12 Oct 2006 14:11:39 +0000 |
parents | 42b46a42f83b |
children | ce9587982eb5 |
rev | line source |
---|---|
18261 | 1 |
2 /// \file | |
3 /// \ingroup Properties Command2Property OSDMsgStack | |
4 | |
1430 | 5 #include <stdio.h> |
6 #include <stdlib.h> | |
12360 | 7 #include "config.h" |
8 | |
12358
133e0ebde74d
Make it compile on mingw again. Now it is finally possible to include windows.h in mplayer.c
faust3
parents:
12332
diff
changeset
|
9 #ifdef WIN32 |
133e0ebde74d
Make it compile on mingw again. Now it is finally possible to include windows.h in mplayer.c
faust3
parents:
12332
diff
changeset
|
10 #define _UWIN 1 /*disable Non-underscored versions of non-ANSI functions as otherwise int eof would conflict with eof()*/ |
133e0ebde74d
Make it compile on mingw again. Now it is finally possible to include windows.h in mplayer.c
faust3
parents:
12332
diff
changeset
|
11 #include <windows.h> |
133e0ebde74d
Make it compile on mingw again. Now it is finally possible to include windows.h in mplayer.c
faust3
parents:
12332
diff
changeset
|
12 #endif |
1430 | 13 #include <string.h> |
14 #include <unistd.h> | |
1428
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
15 |
5288
370d13663229
we don't use mmap() in mplayer.c, so why should we include mman.h...
arpi
parents:
5221
diff
changeset
|
16 // #include <sys/mman.h> |
1428
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
17 #include <sys/types.h> |
9831 | 18 #ifndef __MINGW32__ |
19 #include <sys/ioctl.h> | |
1428
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
20 #include <sys/wait.h> |
9831 | 21 #else |
22 #define SIGHUP 1 /* hangup */ | |
23 #define SIGQUIT 3 /* quit */ | |
24 #define SIGKILL 9 /* kill (cannot be caught or ignored) */ | |
25 #define SIGBUS 10 /* bus error */ | |
16049
0ccf19820216
define SIGHUP and SIGPIPE for MinGW and catch SIGPIPE also in mplayer
reimar
parents:
16036
diff
changeset
|
26 #define SIGPIPE 13 /* broken pipe */ |
10928 | 27 extern int mp_input_win32_slave_cmd_func(int fd,char* dest,int size); |
9831 | 28 #endif |
29 | |
1428
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
30 #include <sys/time.h> |
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
31 #include <sys/stat.h> |
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
32 |
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
33 #include <signal.h> |
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
34 #include <time.h> |
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
35 #include <fcntl.h> |
9318
51a9af80d874
PATH_MAX should be more portable, and we even include limits.h to be sure
arpi
parents:
9317
diff
changeset
|
36 #include <limits.h> |
1428
a90d889eb649
largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents:
1422
diff
changeset
|
37 |
5112 | 38 #include <errno.h> |
39 | |
1430 | 40 #include "version.h" |
1584 | 41 |
1564 | 42 #include "mp_msg.h" |
1 | 43 |
1584 | 44 #define HELP_MP_DEFINE_STATIC |
45 #include "help_mp.h" | |
46 | |
8164
487cfc28525d
New config system + cleanup of header inter dependency
albeu
parents:
8123
diff
changeset
|
47 #include "m_option.h" |
487cfc28525d
New config system + cleanup of header inter dependency
albeu
parents:
8123
diff
changeset
|
48 #include "m_config.h" |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
49 #include "m_property.h" |
9752 | 50 |
151 | 51 #include "cfg-mplayer-def.h" |
147 | 52 |
1422 | 53 #ifdef USE_SUB |
258 | 54 #include "subreader.h" |
1422 | 55 #endif |
258 | 56 |
36 | 57 #include "libvo/video_out.h" |
1422 | 58 |
5293
fd992ece4367
include font_load.h directly, instead of via video_out.h
arpi
parents:
5288
diff
changeset
|
59 #include "libvo/font_load.h" |
220 | 60 #include "libvo/sub.h" |
36 | 61 |
10211
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
62 #ifdef HAVE_X11 |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
63 #include "libvo/x11_common.h" |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
64 #endif |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
65 |
955 | 66 #include "libao2/audio_out.h" |
67 | |
303 | 68 #include "codec-cfg.h" |
175 | 69 |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
70 #include "edl.h" |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
71 |
560
28ae99036574
Separated dvdsub code to be able to work with it easier
lgb
parents:
557
diff
changeset
|
72 #include "spudec.h" |
4079 | 73 #include "vobsub.h" |
492 | 74 |
9380 | 75 #include "osdep/getch2.h" |
76 #include "osdep/timer.h" | |
1 | 77 |
2272 | 78 #include "cpudetect.h" |
79 | |
2036 | 80 #ifdef HAVE_NEW_GUI |
4798 | 81 #include "Gui/interface.h" |
2036 | 82 #endif |
83 | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
84 #include "input/input.h" |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
85 |
3322
cdd3f5ac06b2
-slave patch by Kilian A. Foth <foth@informatik.uni-hamburg.de>
arpi
parents:
3302
diff
changeset
|
86 int slave_mode=0; |
16347
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
87 int player_idle_mode=0; |
11875
6b28eb95c08b
* changes mencoder's exit code on explicit kill to 2
attila
parents:
11778
diff
changeset
|
88 int quiet=0; |
19850
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
89 int enable_mouse_movements=0; |
1 | 90 |
15042
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
91 #ifdef WIN32 |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
92 char * proc_priority=NULL; |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
93 #endif |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
94 |
398 | 95 #define ABS(x) (((x)>=0)?(x):(-(x))) |
8606
d80edba39db9
This patch makes subtitle and A-V delays display correctly rounded
arpi
parents:
8593
diff
changeset
|
96 #define ROUND(x) ((int)((x)<0 ? (x)-0.5 : (x)+0.5)) |
398 | 97 |
3015 | 98 #ifdef HAVE_RTC |
14381
dc7b86065e3c
RTC support on FreeBSD, inspired by a patch from Michael Johnson
diego
parents:
14296
diff
changeset
|
99 #ifdef __linux__ |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
100 #include <linux/rtc.h> |
14381
dc7b86065e3c
RTC support on FreeBSD, inspired by a patch from Michael Johnson
diego
parents:
14296
diff
changeset
|
101 #else |
dc7b86065e3c
RTC support on FreeBSD, inspired by a patch from Michael Johnson
diego
parents:
14296
diff
changeset
|
102 #include <rtc.h> |
dc7b86065e3c
RTC support on FreeBSD, inspired by a patch from Michael Johnson
diego
parents:
14296
diff
changeset
|
103 #define RTC_IRQP_SET RTCIO_IRQP_SET |
dc7b86065e3c
RTC support on FreeBSD, inspired by a patch from Michael Johnson
diego
parents:
14296
diff
changeset
|
104 #define RTC_PIE_ON RTCIO_PIE_ON |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
105 #endif /* __linux__ */ |
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
106 #endif /* HAVE_RTC */ |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
107 |
2941
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2897
diff
changeset
|
108 #ifdef USE_TV |
19271
64d82a45a05d
introduce new 'stream' directory for all stream layer related components and split them from libmpdemux
ben
parents:
19227
diff
changeset
|
109 #include "stream/tv.h" |
2941
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2897
diff
changeset
|
110 #endif |
19568
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
111 #ifdef USE_RADIO |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
112 #include "stream/stream_radio.h" |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
113 #endif |
2941
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2897
diff
changeset
|
114 |
9610 | 115 #ifdef HAS_DVBIN_SUPPORT |
19271
64d82a45a05d
introduce new 'stream' directory for all stream layer related components and split them from libmpdemux
ben
parents:
19227
diff
changeset
|
116 #include "stream/dvbin.h" |
10708 | 117 static int last_dvb_step = 1; |
18286 | 118 static int dvbin_reopen = 0; |
19808
5385740067a1
* remove extern definitions of functions in .c files
attila
parents:
19774
diff
changeset
|
119 #include "stream/cache2.h" |
9610 | 120 #endif |
121 | |
258 | 122 //**************************************************************************// |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
123 // Playtree |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
124 //**************************************************************************// |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
125 #include "playtree.h" |
10211
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
126 #include "playtreeparser.h" |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
127 |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
128 #ifdef HAVE_NEW_GUI |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
129 extern int import_playtree_playlist_into_gui(play_tree_t* my_playtree, m_config_t* config); |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
130 extern int import_initial_playtree_into_gui(play_tree_t* my_playtree, m_config_t* config, int enqueue); |
4bc481804519
warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents:
10167
diff
changeset
|
131 #endif |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
132 |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
133 play_tree_t* playtree; |
8198 | 134 play_tree_iter_t* playtree_iter = NULL; |
17979
392c7c1b8ccc
Fix stepping in the playtree when interupting libmpdemux.
albeu
parents:
17938
diff
changeset
|
135 static int play_tree_step = 1; |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
136 |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
137 #define PT_NEXT_ENTRY 1 |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
138 #define PT_PREV_ENTRY -1 |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
139 #define PT_NEXT_SRC 2 |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
140 #define PT_PREV_SRC -2 |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
141 #define PT_UP_NEXT 3 |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
142 #define PT_UP_PREV -3 |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
143 |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
144 //**************************************************************************// |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
145 // Config |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
146 //**************************************************************************// |
19808
5385740067a1
* remove extern definitions of functions in .c files
attila
parents:
19774
diff
changeset
|
147 #include "parser-cfg.h" |
5385740067a1
* remove extern definitions of functions in .c files
attila
parents:
19774
diff
changeset
|
148 #include "parser-mpcmd.h" |
5385740067a1
* remove extern definitions of functions in .c files
attila
parents:
19774
diff
changeset
|
149 |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
150 m_config_t* mconfig; |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
151 |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
152 //**************************************************************************// |
258 | 153 // Config file |
154 //**************************************************************************// | |
155 | |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10580
diff
changeset
|
156 static int cfg_inc_verbose(m_option_t *conf){ ++verbose; return 0;} |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10580
diff
changeset
|
157 |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10580
diff
changeset
|
158 static int cfg_include(m_option_t *conf, char *filename){ |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
159 return m_config_parse_config_file(mconfig, filename); |
162 | 160 } |
161 | |
2557 | 162 #include "get_path.c" |
178 | 163 |
1 | 164 //**************************************************************************// |
9695 | 165 // XScreensaver |
166 //**************************************************************************// | |
167 | |
10661
49d7d02f4485
X11_FULLSCREEN vs HAVE_X11 definitions and some warning fixes
alex
parents:
10646
diff
changeset
|
168 #ifdef HAVE_X11 |
11999 | 169 void xscreensaver_heartbeat(void); |
10661
49d7d02f4485
X11_FULLSCREEN vs HAVE_X11 definitions and some warning fixes
alex
parents:
10646
diff
changeset
|
170 #endif |
9695 | 171 |
172 //**************************************************************************// | |
442 | 173 //**************************************************************************// |
174 // Input media streaming & demultiplexer: | |
175 //**************************************************************************// | |
176 | |
1289 | 177 static int max_framesize=0; |
178 | |
19271
64d82a45a05d
introduce new 'stream' directory for all stream layer related components and split them from libmpdemux
ben
parents:
19227
diff
changeset
|
179 #include "stream/stream.h" |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
180 #include "libmpdemux/demuxer.h" |
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
181 #include "libmpdemux/stheader.h" |
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
182 //#include "parse_es.h" |
13132 | 183 #include "libmpdemux/matroska.h" |
1 | 184 |
18682
bee3186a06f7
include stream_dvd's interface from libmpdemux/stream_dvd.h
nicodvb
parents:
18679
diff
changeset
|
185 #ifdef USE_DVDREAD |
19271
64d82a45a05d
introduce new 'stream' directory for all stream layer related components and split them from libmpdemux
ben
parents:
19227
diff
changeset
|
186 #include "stream/stream_dvd.h" |
18682
bee3186a06f7
include stream_dvd's interface from libmpdemux/stream_dvd.h
nicodvb
parents:
18679
diff
changeset
|
187 #endif |
bee3186a06f7
include stream_dvd's interface from libmpdemux/stream_dvd.h
nicodvb
parents:
18679
diff
changeset
|
188 |
5607 | 189 #include "libmpcodecs/dec_audio.h" |
190 #include "libmpcodecs/dec_video.h" | |
8198 | 191 #include "libmpcodecs/mp_image.h" |
192 #include "libmpcodecs/vf.h" | |
17088
f067a9de373c
mplayer.c:1928: warning: implicit declaration of function 'cache_uninit'
rathann
parents:
17057
diff
changeset
|
193 #include "libmpcodecs/vd.h" |
2563 | 194 |
111 | 195 //**************************************************************************// |
20156 | 196 |
197 static void reinit_audio_chain(void); | |
198 | |
199 //**************************************************************************// | |
1 | 200 //**************************************************************************// |
201 | |
112 | 202 // Common FIFO functions, and keyboard/event FIFO code |
203 #include "fifo.c" | |
12816 | 204 int noconsolecontrols=0; |
1 | 205 //**************************************************************************// |
206 | |
6755 | 207 vo_functions_t *video_out=NULL; |
4788
d678ce495a75
Moved HW dependent mixer stuff to libao and removed master switch
anders
parents:
4787
diff
changeset
|
208 ao_functions_t *audio_out=NULL; |
1 | 209 |
7677
33562a65e9e8
_EXPERIMENTAL_ option: -fixed-vo for libvo spec compliance testing
arpi
parents:
7628
diff
changeset
|
210 int fixed_vo=0; |
12332
6f5ae9f4eeb9
play the audio buffer in case of normal eof (i know the change is rude, but mplayer.c is hopelessly obfuscated)
alex
parents:
12306
diff
changeset
|
211 int eof=0; |
7677
33562a65e9e8
_EXPERIMENTAL_ option: -fixed-vo for libvo spec compliance testing
arpi
parents:
7628
diff
changeset
|
212 |
2557 | 213 // benchmark: |
1291 | 214 double video_time_usage=0; |
215 double vout_time_usage=0; | |
1289 | 216 static double audio_time_usage=0; |
217 static int total_time_usage_start=0; | |
5621 | 218 static int total_frame_cnt=0; |
219 static int drop_frame_cnt=0; // total number of dropped frames | |
4844
76acf5bbda78
exclude benchmark stuff execution from normal playback
nick
parents:
4843
diff
changeset
|
220 int benchmark=0; |
1124
0e95f30ffd4c
-frames and -benchmark options to make chl & gabucino happy
arpi_esp
parents:
1059
diff
changeset
|
221 |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
222 // options: |
6796 | 223 int auto_quality=0; |
1496 | 224 static int output_quality=0; |
1439 | 225 |
7605
c3bbe602aff3
new option -speed, to set playback speed rate (examples: -speed 1:3 or -speed 5)
arpi
parents:
7604
diff
changeset
|
226 float playback_speed=1.0; |
c3bbe602aff3
new option -speed, to set playback speed rate (examples: -speed 1:3 or -speed 5)
arpi
parents:
7604
diff
changeset
|
227 |
1709 | 228 int use_gui=0; |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
229 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
230 #ifdef HAVE_NEW_GUI |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
231 int enqueue=0; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
232 #endif |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
233 |
17914
f9cb6fc1608a
Add an option to list the properties: -list-properties
albeu
parents:
17911
diff
changeset
|
234 static int list_properties = 0; |
f9cb6fc1608a
Add an option to list the properties: -list-properties
albeu
parents:
17911
diff
changeset
|
235 |
8612
a61d1b326beb
It shows not just the progressbar, but progressbar /and/ percentage
arpi
parents:
8606
diff
changeset
|
236 #define MAX_OSD_LEVEL 3 |
17021
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
237 #define MAX_TERM_OSD_LEVEL 1 |
1709 | 238 |
6921 | 239 int osd_level=1; |
7516
657041b7236b
when working through a mixed play tree with audi-only files and video files
arpi
parents:
7506
diff
changeset
|
240 int osd_level_saved=-1; |
18287
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
241 // if nonzero, hide current OSD contents when GetTimerMS() reaches this |
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
242 unsigned int osd_visible; |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
243 static int osd_function=OSD_PLAY; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
244 static int osd_show_percentage = 0; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
245 static int osd_duration = 1000; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
246 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
247 static int term_osd = 1; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
248 static char* term_osd_esc = "\x1b[A\r\x1b[K"; |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
249 static char* playing_msg = NULL; |
2557 | 250 // seek: |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
251 static char *seek_to_sec=NULL; |
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
252 static off_t seek_to_byte=0; |
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
253 static off_t step_sec=0; |
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
254 static int loop_times=-1; |
8784 | 255 static int loop_seek=0; |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
256 |
19973
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
257 static m_time_size_t end_at = { .type = END_AT_NONE, .pos = 0 }; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
258 |
7576
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
259 // A/V sync: |
8311 | 260 int autosync=0; // 30 might be a good default value. |
7576
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
261 |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
262 // may be changed by GUI: (FIXME!) |
2557 | 263 float rel_seek_secs=0; |
264 int abs_seek_pos=0; | |
265 | |
266 // codecs: | |
7529
c276bfb414fb
removed obsolete/unused audio|video_fm|codec, has_audio|video
arpi
parents:
7526
diff
changeset
|
267 char **audio_codec_list=NULL; // override audio codec |
7506
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
268 char **video_codec_list=NULL; // override video codec |
7529
c276bfb414fb
removed obsolete/unused audio|video_fm|codec, has_audio|video
arpi
parents:
7526
diff
changeset
|
269 char **audio_fm_list=NULL; // override audio codec family |
7506
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
270 char **video_fm_list=NULL; // override video codec family |
1285
202d9e2dc202
-vcodec option (maybe some other name would be better though) to select between driver types without editing codecs.conf. mplayer will default to normal codec search loop if it does not find codec for the specified driver type. config range checking for the parameter (an integer) should be cleaned, IMHO
lgb
parents:
1255
diff
changeset
|
271 |
16175 | 272 // demuxer: |
273 extern char *demuxer_name; // override demuxer | |
274 extern char *audio_demuxer_name; // override audio demuxer | |
275 extern char *sub_demuxer_name; // override sub demuxer | |
276 | |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
277 // streaming: |
3532 | 278 int audio_id=-1; |
279 int video_id=-1; | |
17379
9d99333ce6ab
dvd subtitles should be disabled by default, and enabled specifying -sid or -slang; this fix also restores the display of other subtitles types when dvd subs are present
nicodvb
parents:
17366
diff
changeset
|
280 int dvdsub_id=-2; |
4079 | 281 int vobsub_id=-1; |
10167
531b00ad6f2d
Support for selecting the audio track in Matroska files via -alang.
mosu
parents:
10116
diff
changeset
|
282 char* audio_lang=NULL; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
283 char* dvdsub_lang=NULL; |
5388
3af2729c5c87
* New command line switch for mplayer & mencoder:
kmkaplan
parents:
5380
diff
changeset
|
284 static char* spudec_ifo=NULL; |
6627 | 285 char* filename=NULL; //"MI2-Trailer.avi"; |
10917
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
286 int forced_subs_only=0; |
19491
10d8f2cae948
added new filter option to menu file browser to only display some files according to extension
ben
parents:
19485
diff
changeset
|
287 int file_filter=1; |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
288 |
2353 | 289 // cache2: |
7881
aba9301ed3c4
allow cache to be disabled (-nocache should override cachesize autodetection
arpi
parents:
7867
diff
changeset
|
290 int stream_cache_size=-1; |
2353 | 291 #ifdef USE_STREAM_CACHE |
292 extern int cache_fill_status; | |
12835
4235ae5a2d60
cache min fill adjustment, based on patch by Jeremy Huddleston
iive
parents:
12816
diff
changeset
|
293 |
4235ae5a2d60
cache min fill adjustment, based on patch by Jeremy Huddleston
iive
parents:
12816
diff
changeset
|
294 float stream_cache_min_percent=20.0; |
16152
10a69a812eff
remove unused cache-prefill and create cache-seek-min that controls when seek_long is prefered over waiting for cache to fill
iive
parents:
16079
diff
changeset
|
295 float stream_cache_seek_min_percent=50.0; |
2353 | 296 #else |
297 #define cache_fill_status 0 | |
298 #endif | |
299 | |
2557 | 300 // dump: |
3257 | 301 static char *stream_dump_name="stream.dump"; |
6796 | 302 int stream_dump_type=0; |
2557 | 303 |
304 // A-V sync: | |
1498 | 305 static float default_max_pts_correction=-1;//0.01f; |
306 static float max_pts_correction=0;//default_max_pts_correction; | |
2557 | 307 static float c_total=0; |
6796 | 308 float audio_delay=0; |
17654 | 309 static int ignore_start=0; |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
310 |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
311 static int softsleep=0; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
312 |
9055 | 313 float force_fps=0; |
2557 | 314 static int force_srate=0; |
7614 | 315 static int audio_output_format=0; |
6796 | 316 int frame_dropping=0; // option 0=no drop 1= drop vo 2= drop decode |
2557 | 317 static int play_n_frames=-1; |
6590 | 318 static int play_n_frames_mf=-1; |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
319 |
1 | 320 // screen info: |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7559
diff
changeset
|
321 char** video_driver_list=NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7559
diff
changeset
|
322 char** audio_driver_list=NULL; |
5075 | 323 |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
324 extern char *vo_subdevice; |
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
325 extern char *ao_subdevice; |
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
326 |
7451
8669e56d2d98
some mpcodecs option declaration moved to cfg-*, as aren;t used by
arpi
parents:
7450
diff
changeset
|
327 // codec outfmt flags (defined in libmpcodecs/vd.c) |
5075 | 328 extern int vo_flags; |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
329 |
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
330 // sub: |
212 | 331 char *font_name=NULL; |
11580
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
332 #ifdef HAVE_FONTCONFIG |
11584 | 333 extern int font_fontconfig; |
11580
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
334 #endif |
215 | 335 float font_factor=0.75; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
336 char **sub_name=NULL; |
258 | 337 float sub_delay=0; |
338 float sub_fps=0; | |
510 | 339 int sub_auto = 1; |
4079 | 340 char *vobsub_name=NULL; |
1255
94f2853ec6f4
-dsp option removed, displaying help text (-ao oss:dsp_path)
alex
parents:
1250
diff
changeset
|
341 /*DSP!!char *dsp=NULL;*/ |
6784
b38e38b6f88f
DVD Closed Captioning support, patch by Matteo Giani <matgiani@ctonet.it>, small changes by me.
atmos4
parents:
6781
diff
changeset
|
342 int subcc_enabled=0; |
8361
2202c00001e3
overlapping subtitles support is now optional, can be disabled (-nooverlapsub)
arpi
parents:
8360
diff
changeset
|
343 int suboverlap_enabled = 1; |
7150 | 344 #ifdef USE_SUB |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
345 sub_data* set_of_subtitles[MAX_SUBTITLE_FILES]; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
346 int set_of_sub_size = 0; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
347 int set_of_sub_pos = -1; |
7150 | 348 float sub_last_pts = -303; |
349 #endif | |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
350 int global_sub_size = 0; // this encompasses all subtitle sources |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
351 int global_sub_pos = -1; // this encompasses all subtitle sources |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
352 #define SUB_SOURCE_SUBS 0 |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
353 #define SUB_SOURCE_VOBSUB 1 |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
354 #define SUB_SOURCE_DEMUX 2 |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
355 #define SUB_SOURCES 3 |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
356 int global_sub_indices[SUB_SOURCES]; |
723 | 357 |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
358 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
359 #include "libass/ass.h" |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
360 #include "libass/ass_mp.h" |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
361 |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
362 // set_of_ass_tracks[i] contains subtitles from set_of_subtitles[i] parsed by libass |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
363 // or NULL if format unsupported |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
364 ass_track_t* set_of_ass_tracks[MAX_SUBTITLE_FILES]; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
365 ass_track_t* ass_track = 0; // current track to render |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
366 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
367 |
17120
637a2f4ff216
Some more cola for msglevel, codec-cfg can't even call mp_msg_init or it'll
ods15
parents:
17109
diff
changeset
|
368 extern int mp_msg_levels[MSGT_MAX]; |
637a2f4ff216
Some more cola for msglevel, codec-cfg can't even call mp_msg_init or it'll
ods15
parents:
17109
diff
changeset
|
369 extern int mp_msg_level_all; |
17106
05af35012e4f
new -msglevel option, constrols msg level for every msg module
ods15
parents:
17088
diff
changeset
|
370 |
2321 | 371 static stream_t* stream=NULL; |
7058
2e5c07262861
new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents:
7055
diff
changeset
|
372 static demuxer_t *demuxer=NULL; |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
373 static sh_audio_t *sh_audio=NULL; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
374 static sh_video_t *sh_video=NULL; |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
375 static demux_stream_t *d_audio=NULL; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
376 static demux_stream_t *d_video=NULL; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
377 static demux_stream_t *d_dvdsub=NULL; |
7058
2e5c07262861
new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents:
7055
diff
changeset
|
378 |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4807
diff
changeset
|
379 char* current_module=NULL; // for debugging |
1856 | 380 |
13341
0c41c3728568
fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents:
13339
diff
changeset
|
381 extern int vo_gamma_gamma; |
0c41c3728568
fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents:
13339
diff
changeset
|
382 extern int vo_gamma_brightness; |
0c41c3728568
fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents:
13339
diff
changeset
|
383 extern int vo_gamma_contrast; |
0c41c3728568
fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents:
13339
diff
changeset
|
384 extern int vo_gamma_saturation; |
0c41c3728568
fix ineffectual video equalizer command line options, patch by kiriuja <mplayer-bugs at en-directo.net>, closes #37, some more variable docu by me
faust3
parents:
13339
diff
changeset
|
385 extern int vo_gamma_hue; |
6781 | 386 |
6755 | 387 // --- |
388 | |
8198 | 389 #ifdef HAVE_MENU |
390 #include "m_struct.h" | |
391 #include "libmenu/menu.h" | |
392 extern void vf_menu_pause_update(struct vf_instance_s* vf); | |
393 extern vf_info_t vf_info_menu; | |
394 static vf_info_t* libmenu_vfs[] = { | |
395 &vf_info_menu, | |
396 NULL | |
397 }; | |
398 static vf_instance_t* vf_menu = NULL; | |
399 static int use_menu = 0; | |
400 static char* menu_cfg = NULL; | |
401 static char* menu_root = "main"; | |
402 #endif | |
403 | |
404 | |
5055 | 405 #ifdef HAVE_RTC |
19756 | 406 static int nortc = 1; |
12681 | 407 static char* rtc_device; |
5055 | 408 #endif |
409 | |
13858
4178a4eee72c
fixed some doxygen comments, patch by Oded Shimon
reynaldo
parents:
13857
diff
changeset
|
410 edl_record_ptr edl_records = NULL; ///< EDL entries memory area |
4178a4eee72c
fixed some doxygen comments, patch by Oded Shimon
reynaldo
parents:
13857
diff
changeset
|
411 edl_record_ptr next_edl_record = NULL; ///< only for traversing edl_records |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
412 short user_muted = 0; ///< Stores whether user wanted muted mode. |
13882
8a928d5b42b8
Replaces edl_mute_count with togle making code more understandable, other trivial list suggested changes too, Patch by Oded Shimon
reynaldo
parents:
13868
diff
changeset
|
413 short edl_muted = 0; ///< Stores whether EDL is currently in muted mode. |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
414 short edl_decision = 0; ///< 1 when an EDL operation has been made. |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
415 FILE* edl_fd = NULL; ///< fd to write to when in -edlout mode. |
18911 | 416 float begin_skip = MP_NOPTS_VALUE; ///< start time of the current skip while on edlout mode |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
417 |
1856 | 418 static unsigned int inited_flags=0; |
419 #define INITED_VO 1 | |
420 #define INITED_AO 2 | |
421 #define INITED_GUI 4 | |
422 #define INITED_GETCH2 8 | |
3034
24d3dca4e813
DVD sub patch by Kim Minh Kaplan <kmkaplan@selfoffice.com>
arpi
parents:
3015
diff
changeset
|
423 #define INITED_SPUDEC 32 |
2321 | 424 #define INITED_STREAM 64 |
4431 | 425 #define INITED_INPUT 128 |
6110 | 426 #define INITED_VOBSUB 256 |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
427 #define INITED_DEMUXER 512 |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
428 #define INITED_ACODEC 1024 |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
429 #define INITED_VCODEC 2048 |
1856 | 430 #define INITED_ALL 0xFFFF |
431 | |
19532
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
432 #include "metadata.h" |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
433 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
434 #define mp_basename2(s) (strrchr(s,'/')==NULL?(char*)s:(strrchr(s,'/')+1)) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
435 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
436 static int is_valid_metadata_type (metadata_t type) { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
437 switch (type) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
438 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
439 /* check for valid video stream */ |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
440 case META_VIDEO_CODEC: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
441 case META_VIDEO_BITRATE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
442 case META_VIDEO_RESOLUTION: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
443 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
444 if (!sh_video) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
445 return 0; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
446 break; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
447 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
448 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
449 /* check for valid audio stream */ |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
450 case META_AUDIO_CODEC: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
451 case META_AUDIO_BITRATE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
452 case META_AUDIO_SAMPLES: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
453 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
454 if (!sh_audio) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
455 return 0; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
456 break; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
457 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
458 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
459 /* check for valid demuxer */ |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
460 case META_INFO_TITLE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
461 case META_INFO_ARTIST: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
462 case META_INFO_ALBUM: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
463 case META_INFO_YEAR: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
464 case META_INFO_COMMENT: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
465 case META_INFO_TRACK: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
466 case META_INFO_GENRE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
467 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
468 if (!demuxer) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
469 return 0; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
470 break; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
471 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
472 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
473 default: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
474 break; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
475 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
476 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
477 return 1; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
478 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
479 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
480 static char *get_demuxer_info (char *tag) { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
481 char **info = demuxer->info; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
482 int n; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
483 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
484 if (!info || !tag) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
485 return NULL; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
486 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
487 for (n = 0; info[2*n] != NULL ; n++) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
488 if (!strcmp (info[2*n], tag)) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
489 break; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
490 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
491 return info[2*n+1] ? strdup (info[2*n+1]) : NULL; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
492 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
493 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
494 char *get_metadata (metadata_t type) { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
495 char *meta = NULL; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
496 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
497 if (!is_valid_metadata_type (type)) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
498 return NULL; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
499 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
500 switch (type) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
501 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
502 case META_NAME: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
503 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
504 return strdup (mp_basename2 (filename)); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
505 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
506 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
507 case META_VIDEO_CODEC: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
508 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
509 if (sh_video->format == 0x10000001) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
510 meta = strdup ("mpeg1"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
511 else if (sh_video->format == 0x10000002) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
512 meta = strdup ("mpeg2"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
513 else if (sh_video->format == 0x10000004) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
514 meta = strdup ("mpeg4"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
515 else if (sh_video->format == 0x10000005) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
516 meta = strdup ("h264"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
517 else if (sh_video->format >= 0x20202020) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
518 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
519 meta = (char *) malloc (8); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
520 sprintf (meta, "%.4s", (char *) &sh_video->format); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
521 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
522 else |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
523 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
524 meta = (char *) malloc (8); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
525 sprintf (meta, "0x%08X", sh_video->format); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
526 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
527 return meta; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
528 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
529 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
530 case META_VIDEO_BITRATE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
531 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
532 meta = (char *) malloc (16); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
533 sprintf (meta, "%d kbps", (int) (sh_video->i_bps * 8 / 1024)); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
534 return meta; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
535 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
536 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
537 case META_VIDEO_RESOLUTION: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
538 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
539 meta = (char *) malloc (16); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
540 sprintf (meta, "%d x %d", sh_video->disp_w, sh_video->disp_h); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
541 return meta; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
542 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
543 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
544 case META_AUDIO_CODEC: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
545 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
546 if (sh_audio->codec && sh_audio->codec->name) |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
547 meta = strdup (sh_audio->codec->name); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
548 return meta; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
549 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
550 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
551 case META_AUDIO_BITRATE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
552 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
553 meta = (char *) malloc (16); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
554 sprintf (meta, "%d kbps", (int) (sh_audio->i_bps * 8/1000)); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
555 return meta; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
556 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
557 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
558 case META_AUDIO_SAMPLES: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
559 { |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
560 meta = (char *) malloc (16); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
561 sprintf (meta, "%d Hz, %d ch.", sh_audio->samplerate, sh_audio->channels); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
562 return meta; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
563 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
564 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
565 /* check for valid demuxer */ |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
566 case META_INFO_TITLE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
567 return get_demuxer_info ("Title"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
568 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
569 case META_INFO_ARTIST: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
570 return get_demuxer_info ("Artist"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
571 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
572 case META_INFO_ALBUM: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
573 return get_demuxer_info ("Album"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
574 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
575 case META_INFO_YEAR: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
576 return get_demuxer_info ("Year"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
577 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
578 case META_INFO_COMMENT: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
579 return get_demuxer_info ("Comment"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
580 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
581 case META_INFO_TRACK: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
582 return get_demuxer_info ("Track"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
583 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
584 case META_INFO_GENRE: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
585 return get_demuxer_info ("Genre"); |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
586 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
587 default: |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
588 break; |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
589 } |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
590 |
13599373bb02
added new helpers to allow easy metadata retrieval and make libmenu use them
ben
parents:
19529
diff
changeset
|
591 return meta; |
19529
9a59c33bee29
new option for libmenu that allow display of properties and metadata of currently played stream
ben
parents:
19521
diff
changeset
|
592 } |
9a59c33bee29
new option for libmenu that allow display of properties and metadata of currently played stream
ben
parents:
19521
diff
changeset
|
593 |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
594 static void uninit_player(unsigned int mask){ |
1856 | 595 mask=inited_flags&mask; |
5154 | 596 |
597 mp_msg(MSGT_CPLAYER,MSGL_DBG2,"\n*** uninit(0x%X)\n",mask); | |
598 | |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
599 if(mask&INITED_ACODEC){ |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
600 inited_flags&=~INITED_ACODEC; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
601 current_module="uninit_acodec"; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
602 if(sh_audio) uninit_audio(sh_audio); |
14254 | 603 #ifdef HAVE_NEW_GUI |
604 guiGetEvent(guiSetAfilter, (char *)NULL); | |
605 #endif | |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
606 sh_audio=NULL; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
607 } |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
608 |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
609 if(mask&INITED_VCODEC){ |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
610 inited_flags&=~INITED_VCODEC; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
611 current_module="uninit_vcodec"; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
612 if(sh_video) uninit_video(sh_video); |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
613 sh_video=NULL; |
8198 | 614 #ifdef HAVE_MENU |
615 vf_menu=NULL; | |
616 #endif | |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
617 } |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
618 |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
619 if(mask&INITED_DEMUXER){ |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
620 inited_flags&=~INITED_DEMUXER; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
621 current_module="free_demuxer"; |
8023 | 622 if(demuxer){ |
623 stream=demuxer->stream; | |
624 free_demuxer(demuxer); | |
625 } | |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
626 demuxer=NULL; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
627 } |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
628 |
5830
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
629 // kill the cache process: |
5154 | 630 if(mask&INITED_STREAM){ |
631 inited_flags&=~INITED_STREAM; | |
632 current_module="uninit_stream"; | |
633 if(stream) free_stream(stream); | |
634 stream=NULL; | |
635 } | |
636 | |
5830
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
637 if(mask&INITED_VO){ |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
638 inited_flags&=~INITED_VO; |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
639 current_module="uninit_vo"; |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
640 video_out->uninit(); |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
641 video_out=NULL; |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
642 } |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
643 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
644 // Must be after libvo uninit, as few vo drivers (svgalib) have tty code. |
5154 | 645 if(mask&INITED_GETCH2){ |
646 inited_flags&=~INITED_GETCH2; | |
647 current_module="uninit_getch2"; | |
648 mp_msg(MSGT_CPLAYER,MSGL_DBG2,"\n[[[uninit getch2]]]\n"); | |
649 // restore terminal: | |
650 getch2_disable(); | |
651 } | |
652 | |
6110 | 653 if(mask&INITED_VOBSUB){ |
654 inited_flags&=~INITED_VOBSUB; | |
655 current_module="uninit_vobsub"; | |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
656 if(vo_vobsub) vobsub_close(vo_vobsub); |
6110 | 657 vo_vobsub=NULL; |
658 } | |
659 | |
3034
24d3dca4e813
DVD sub patch by Kim Minh Kaplan <kmkaplan@selfoffice.com>
arpi
parents:
3015
diff
changeset
|
660 if (mask&INITED_SPUDEC){ |
24d3dca4e813
DVD sub patch by Kim Minh Kaplan <kmkaplan@selfoffice.com>
arpi
parents:
3015
diff
changeset
|
661 inited_flags&=~INITED_SPUDEC; |
24d3dca4e813
DVD sub patch by Kim Minh Kaplan <kmkaplan@selfoffice.com>
arpi
parents:
3015
diff
changeset
|
662 current_module="uninit_spudec"; |
24d3dca4e813
DVD sub patch by Kim Minh Kaplan <kmkaplan@selfoffice.com>
arpi
parents:
3015
diff
changeset
|
663 spudec_free(vo_spudec); |
5411 | 664 vo_spudec=NULL; |
3034
24d3dca4e813
DVD sub patch by Kim Minh Kaplan <kmkaplan@selfoffice.com>
arpi
parents:
3015
diff
changeset
|
665 } |
5488
3f183ca22747
fixed SPU pts, it's 1024/90000 based instead of 1/100
arpi
parents:
5463
diff
changeset
|
666 |
1856 | 667 if(mask&INITED_AO){ |
668 inited_flags&=~INITED_AO; | |
669 current_module="uninit_ao"; | |
12332
6f5ae9f4eeb9
play the audio buffer in case of normal eof (i know the change is rude, but mplayer.c is hopelessly obfuscated)
alex
parents:
12306
diff
changeset
|
670 audio_out->uninit(eof?0:1); audio_out=NULL; |
1856 | 671 } |
672 | |
673 #ifdef HAVE_NEW_GUI | |
674 if(mask&INITED_GUI){ | |
675 inited_flags&=~INITED_GUI; | |
676 current_module="uninit_gui"; | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4807
diff
changeset
|
677 guiDone(); |
1856 | 678 } |
679 #endif | |
680 | |
5830
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
681 if(mask&INITED_INPUT){ |
6429 | 682 inited_flags&=~INITED_INPUT; |
5830
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
683 current_module="uninit_input"; |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
684 mp_input_uninit(); |
4c17a92220fc
uninit libvo before getch2 - requires for clean svgalib uninit
arpi
parents:
5798
diff
changeset
|
685 } |
4431 | 686 |
1863 | 687 current_module=NULL; |
1856 | 688 } |
689 | |
19104
2ec2301183cd
marks several read-only string parameters which aren't modified inside the called function as const. Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
19053
diff
changeset
|
690 static void exit_player_with_rc(const char* how, int rc){ |
1156 | 691 |
1856 | 692 uninit_player(INITED_ALL); |
10661
49d7d02f4485
X11_FULLSCREEN vs HAVE_X11 definitions and some warning fixes
alex
parents:
10646
diff
changeset
|
693 #ifdef HAVE_X11 |
6016 | 694 #ifdef HAVE_NEW_GUI |
695 if ( !use_gui ) | |
696 #endif | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
697 vo_uninit(); // Close the X11 connection (if any is open). |
6015 | 698 #endif |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
699 |
13956
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
700 #ifdef HAVE_FREETYPE |
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
701 current_module="uninit_font"; |
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
702 if (vo_font) free_font_desc(vo_font); |
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
703 vo_font = NULL; |
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
704 done_freetype(); |
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
705 #endif |
16036 | 706 free_osd_list(); |
13956
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
707 |
1856 | 708 current_module="exit_player"; |
1156 | 709 |
13956
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
710 // free mplayer config |
16036 | 711 if(mconfig) |
712 m_config_free(mconfig); | |
713 | |
714 if(playtree) | |
715 play_tree_free(playtree, 1); | |
716 | |
13956
5d8f11a627ae
free freetype descriptor and library and mconfig data right before exit
iive
parents:
13946
diff
changeset
|
717 |
13358
567875b88aab
Hardcoded EDL messages moved to help_mp-en.h, Doxygen comments added, patch
diego
parents:
13353
diff
changeset
|
718 if(edl_records != NULL) free(edl_records); // free mem allocated for EDL |
18002 | 719 if(how) mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_ExitingHow,how); |
4733
5bad0d74f6ea
standard key support for video out runtime fullscreen switching
alex
parents:
4693
diff
changeset
|
720 mp_msg(MSGT_CPLAYER,MSGL_DBG2,"max framesize was %d bytes\n",max_framesize); |
1639 | 721 |
8644
0bfd73828e33
This patch fixes so that the exit code (or return code if you like) is set
arpi
parents:
8635
diff
changeset
|
722 exit(rc); |
0bfd73828e33
This patch fixes so that the exit code (or return code if you like) is set
arpi
parents:
8635
diff
changeset
|
723 } |
0bfd73828e33
This patch fixes so that the exit code (or return code if you like) is set
arpi
parents:
8635
diff
changeset
|
724 |
19104
2ec2301183cd
marks several read-only string parameters which aren't modified inside the called function as const. Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
19053
diff
changeset
|
725 void exit_player(const char* how){ |
8644
0bfd73828e33
This patch fixes so that the exit code (or return code if you like) is set
arpi
parents:
8635
diff
changeset
|
726 exit_player_with_rc(how, 1); |
1156 | 727 } |
728 | |
13391 | 729 #ifndef __MINGW32__ |
730 static void child_sighandler(int x){ | |
731 pid_t pid; | |
732 while((pid=waitpid(-1,NULL,WNOHANG)) > 0); | |
733 } | |
734 #endif | |
735 | |
13794 | 736 #ifdef CRASH_DEBUG |
737 static char *prog_path; | |
738 static int crash_debug = 0; | |
739 #endif | |
740 | |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
741 static void exit_sighandler(int x){ |
1156 | 742 static int sig_count=0; |
13794 | 743 #ifdef CRASH_DEBUG |
744 if (!crash_debug || x != SIGTRAP) | |
745 #endif | |
1156 | 746 ++sig_count; |
13298 | 747 if(inited_flags==0 && sig_count>1) exit(1); |
748 if(sig_count==5) | |
749 { | |
750 /* We're crashing bad and can't uninit cleanly :( | |
751 * by popular request, we make one last (dirty) | |
752 * effort to restore the user's | |
753 * terminal. */ | |
754 getch2_disable(); | |
755 exit(1); | |
756 } | |
757 if(sig_count==6) exit(1); | |
758 if(sig_count>6){ | |
1156 | 759 // can't stop :( |
9831 | 760 #ifndef __MINGW32__ |
1156 | 761 kill(getpid(),SIGKILL); |
9831 | 762 #endif |
1156 | 763 } |
5127 | 764 mp_msg(MSGT_CPLAYER,MSGL_FATAL,"\n" MSGTR_IntBySignal,x, |
18003 | 765 current_module?current_module:"unknown" |
1156 | 766 ); |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
767 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SIGNAL=%d\n", x); |
13794 | 768 if(sig_count<=1) |
5127 | 769 switch(x){ |
770 case SIGINT: | |
771 case SIGQUIT: | |
772 case SIGTERM: | |
773 case SIGKILL: | |
774 break; // killed from keyboard (^C) or killed [-9] | |
775 case SIGILL: | |
5129 | 776 #ifdef RUNTIME_CPUDETECT |
8913
f01a53c8de14
Signal handler messages moved to help_mp, so they can be translated
rtognimp
parents:
8819
diff
changeset
|
777 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_Exit_SIGILL_RTCpuSel); |
5129 | 778 #else |
8913
f01a53c8de14
Signal handler messages moved to help_mp, so they can be translated
rtognimp
parents:
8819
diff
changeset
|
779 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_Exit_SIGILL); |
5129 | 780 #endif |
5127 | 781 case SIGFPE: |
782 case SIGSEGV: | |
8913
f01a53c8de14
Signal handler messages moved to help_mp, so they can be translated
rtognimp
parents:
8819
diff
changeset
|
783 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_Exit_SIGSEGV_SIGFPE); |
5127 | 784 default: |
8913
f01a53c8de14
Signal handler messages moved to help_mp, so they can be translated
rtognimp
parents:
8819
diff
changeset
|
785 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_Exit_SIGCRASH); |
13794 | 786 #ifdef CRASH_DEBUG |
787 if (crash_debug) { | |
788 int gdb_pid; | |
789 char spid[20]; | |
790 snprintf(spid, 19, "%i", getpid()); | |
791 spid[19] = 0; | |
792 mp_msg(MSGT_CPLAYER, MSGL_INFO, "Forking...\n"); | |
793 gdb_pid = fork(); | |
794 mp_msg(MSGT_CPLAYER, MSGL_INFO, "Forked...\n"); | |
795 if (gdb_pid == 0) { // We are the child | |
796 if (execlp("gdb", "gdb", prog_path, spid, NULL) == -1) | |
797 mp_msg(MSGT_CPLAYER, MSGL_ERR, "Couldn't start gdb\n"); | |
798 } else if (gdb_pid < 0) | |
799 mp_msg(MSGT_CPLAYER, MSGL_ERR, "Couldn't fork\n"); | |
800 else { | |
801 waitpid(gdb_pid, NULL, 0); | |
802 } | |
803 if (x == SIGTRAP) return; | |
804 } | |
805 #endif | |
5127 | 806 } |
1156 | 807 exit_player(NULL); |
808 } | |
809 | |
7867 | 810 extern void mp_input_register_options(m_config_t* cfg); |
4659 | 811 |
459 | 812 #include "mixer.h" |
12691
0230544f52a1
Fix GUI compilation, patch by Reimar D«Óffinger and Alexander Strasser.
diego
parents:
12681
diff
changeset
|
813 mixer_t mixer; |
13098
907fe1fdfc6c
Make the stepsize of volume changes, changeable by a commandline paarameter
attila
parents:
13094
diff
changeset
|
814 /// step size of mixer changes |
907fe1fdfc6c
Make the stepsize of volume changes, changeable by a commandline paarameter
attila
parents:
13094
diff
changeset
|
815 int volstep = 3; |
12672
9709ce101949
New 'Mixer API' with ability to change volume through libaf (this part was written by Reimar Doffinger) and lesser global variables
alex
parents:
12550
diff
changeset
|
816 |
147 | 817 #include "cfg-mplayer.h" |
1 | 818 |
18888
ab29b3c4f94e
parse_cfgfiles as static in mplayer.c/mencoder.c, patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
18857
diff
changeset
|
819 static void parse_cfgfiles( m_config_t* conf ) |
723 | 820 { |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
821 char *conffile; |
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
822 int conffile_fd; |
10272
7b0bc557987b
renames: DATADIR->MPLAYER_DATADIR, CONFDIR->MPLAYER_CONFDIR, LIBDIR->MPLAYER_LIBDIR
arpi
parents:
10240
diff
changeset
|
823 if (m_config_parse_config_file(conf, MPLAYER_CONFDIR "/mplayer.conf") < 0) |
13500 | 824 exit_player(NULL); |
178 | 825 if ((conffile = get_path("")) == NULL) { |
1583 | 826 mp_msg(MSGT_CPLAYER,MSGL_WARN,MSGTR_NoHomeDir); |
147 | 827 } else { |
9831 | 828 #ifdef __MINGW32__ |
829 mkdir(conffile); | |
830 #else | |
178 | 831 mkdir(conffile, 0777); |
9831 | 832 #endif |
178 | 833 free(conffile); |
834 if ((conffile = get_path("config")) == NULL) { | |
1583 | 835 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_GetpathProblem); |
178 | 836 } else { |
837 if ((conffile_fd = open(conffile, O_CREAT | O_EXCL | O_WRONLY, 0666)) != -1) { | |
1582 | 838 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_CreatingCfgFile, conffile); |
178 | 839 write(conffile_fd, default_config, strlen(default_config)); |
840 close(conffile_fd); | |
841 } | |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
842 if (m_config_parse_config_file(conf, conffile) < 0) |
13500 | 843 exit_player(NULL); |
178 | 844 free(conffile); |
151 | 845 } |
1 | 846 } |
847 } | |
848 | |
8614
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
849 void load_per_file_config (m_config_t* conf, const char *const file) |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
850 { |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
851 char *confpath; |
8634 | 852 char cfg[strlen(file)+10]; |
8614
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
853 struct stat st; |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
854 char *name; |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
855 |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
856 sprintf (cfg, "%s.conf", file); |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
857 |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
858 if (!stat (cfg, &st)) |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
859 { |
13577 | 860 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_LoadingConfig, cfg); |
8614
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
861 m_config_parse_config_file (conf, cfg); |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
862 return; |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
863 } |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
864 |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
865 if ((name = strrchr (cfg, '/')) == NULL) |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
866 name = cfg; |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
867 else |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
868 name++; |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
869 |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
870 if ((confpath = get_path (name)) != NULL) |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
871 { |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
872 if (!stat (confpath, &st)) |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
873 { |
13577 | 874 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_LoadingConfig, confpath); |
8614
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
875 m_config_parse_config_file (conf, confpath); |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
876 } |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
877 |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
878 free (confpath); |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
879 } |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
880 } |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
881 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
882 /* When libmpdemux performs a blocking operation (network connection or |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
883 * cache filling) if the operation fails we use this function to check |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
884 * if it was interrupted by the user. |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
885 * The function returns a new value for eof. */ |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
886 static int libmpdemux_was_interrupted(int eof) { |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
887 mp_cmd_t* cmd; |
13603 | 888 if((cmd = mp_input_get_cmd(0,0,0)) != NULL) { |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
889 switch(cmd->id) { |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
890 case MP_CMD_QUIT: |
13338
1820ef597cdb
quit slave mode command now accepts an exit value, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13298
diff
changeset
|
891 exit_player_with_rc(MSGTR_Exit_quit, (cmd->nargs > 0)? cmd->args[0].v.i : 0); |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
892 case MP_CMD_PLAY_TREE_STEP: { |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
893 eof = (cmd->args[0].v.i > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY; |
17979
392c7c1b8ccc
Fix stepping in the playtree when interupting libmpdemux.
albeu
parents:
17938
diff
changeset
|
894 play_tree_step = (cmd->args[0].v.i == 0) ? 1 : cmd->args[0].v.i; |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
895 } break; |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
896 case MP_CMD_PLAY_TREE_UP_STEP: { |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
897 eof = (cmd->args[0].v.i > 0) ? PT_UP_NEXT : PT_UP_PREV; |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
898 } break; |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
899 case MP_CMD_PLAY_ALT_SRC_STEP: { |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
900 eof = (cmd->args[0].v.i > 0) ? PT_NEXT_SRC : PT_PREV_SRC; |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
901 } break; |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
902 } |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
903 mp_cmd_free(cmd); |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
904 } |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
905 return eof; |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
906 } |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
907 |
13010 | 908 #define mp_basename(s) (strrchr(s,'\\')==NULL?(mp_basename2(s)):(strrchr(s,'\\')+1)) |
8937 | 909 |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
910 int playtree_add_playlist(play_tree_t* entry) |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
911 { |
9301
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
912 play_tree_add_bpf(entry,filename); |
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
913 |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
914 #ifdef HAVE_NEW_GUI |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
915 if (use_gui) { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
916 if (entry) { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
917 import_playtree_playlist_into_gui(entry, mconfig); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
918 play_tree_free_list(entry,1); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
919 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
920 } else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
921 #endif |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
922 { |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
923 if(!entry) { |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
924 entry = playtree_iter->tree; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
925 if(play_tree_iter_step(playtree_iter,1,0) != PLAY_TREE_ITER_ENTRY) { |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
926 return PT_NEXT_ENTRY; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
927 } |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
928 if(playtree_iter->tree == entry ) { // Loop with a single file |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
929 if(play_tree_iter_up_step(playtree_iter,1,0) != PLAY_TREE_ITER_ENTRY) { |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
930 return PT_NEXT_ENTRY; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
931 } |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
932 } |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
933 play_tree_remove(entry,1,1); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
934 return PT_NEXT_SRC; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
935 } |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
936 play_tree_insert_entry(playtree_iter->tree,entry); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
937 play_tree_set_params_from(entry,playtree_iter->tree); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
938 entry = playtree_iter->tree; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
939 if(play_tree_iter_step(playtree_iter,1,0) != PLAY_TREE_ITER_ENTRY) { |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
940 return PT_NEXT_ENTRY; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
941 } |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
942 play_tree_remove(entry,1,1); |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
943 } |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
944 return PT_NEXT_SRC; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
945 } |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
946 |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
17553
diff
changeset
|
947 int sub_source(void) |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
948 { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
949 int source = -1; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
950 int top = -1; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
951 int i; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
952 for (i = 0; i < SUB_SOURCES; i++) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
953 int j = global_sub_indices[i]; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
954 if ((j >= 0) && (j > top) && (global_sub_pos >= j)) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
955 source = i; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
956 top = j; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
957 } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
958 } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
959 return source; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
960 } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
961 |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
962 #ifdef USE_SUB |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
963 |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
964 sub_data* subdata = NULL; |
14684 | 965 static subtitle* vo_sub_last = NULL; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
966 |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
967 void add_subtitles(char *filename, float fps, int silent) |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
968 { |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
969 sub_data *subd; |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
970 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
971 ass_track_t *asst = 0; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
972 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
973 |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
974 if (filename == NULL || set_of_sub_size >= MAX_SUBTITLE_FILES) { |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
975 return; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
976 } |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
977 |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
978 subd = sub_read_file(filename, fps); |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
979 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
980 if (ass_enabled) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
981 asst = ass_read_file(filename); |
19468 | 982 if (ass_enabled && subd && !asst) |
19401
c0c3a2f8bb32
Add subdata to ass_track conversion for external subtitles.
eugeni
parents:
19380
diff
changeset
|
983 asst = ass_read_subdata(subd, fps); |
c0c3a2f8bb32
Add subdata to ass_track conversion for external subtitles.
eugeni
parents:
19380
diff
changeset
|
984 |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
985 if (!asst && !subd && !silent) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
986 #else |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
987 if(!subd && !silent) |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
988 #endif |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
989 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_CantLoadSub, filename); |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
990 |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
991 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
992 if (!asst && !subd) return; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
993 set_of_ass_tracks[set_of_sub_size] = asst; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
994 #else |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
995 if (!subd) return; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
996 #endif |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
997 set_of_subtitles[set_of_sub_size] = subd; |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
998 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_FILE_SUB_ID=%d\n", set_of_sub_size); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
999 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_FILE_SUB_FILENAME=%s\n", filename); |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1000 ++set_of_sub_size; |
14241
ad4dd100472e
Set message level of the added subtitle message to INFO, fixes bug #139
reimar
parents:
14197
diff
changeset
|
1001 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_AddedSubtitleFile, set_of_sub_size, filename); |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1002 } |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1003 |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
1004 // FIXME: if/when the GUI calls this, global sub numbering gets (potentially) broken. |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
17553
diff
changeset
|
1005 void update_set_of_subtitles(void) |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1006 // subdata was changed, set_of_sub... have to be updated. |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1007 { |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1008 int i; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1009 if (set_of_sub_size > 0 && subdata == NULL) { // *subdata was deleted |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1010 for (i = set_of_sub_pos + 1; i < set_of_sub_size; ++i) |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1011 set_of_subtitles[i-1] = set_of_subtitles[i]; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1012 set_of_subtitles[set_of_sub_size-1] = NULL; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1013 --set_of_sub_size; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1014 if (set_of_sub_size > 0) subdata = set_of_subtitles[set_of_sub_pos=0]; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1015 } |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1016 else if (set_of_sub_size > 0 && subdata != NULL) { // *subdata was changed |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1017 set_of_subtitles[set_of_sub_pos] = subdata; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1018 } |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1019 else if (set_of_sub_size <= 0 && subdata != NULL) { // *subdata was added |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1020 set_of_subtitles[set_of_sub_pos=set_of_sub_size] = subdata; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1021 ++set_of_sub_size; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1022 } |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1023 } |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
1024 #endif /* USE_SUB */ |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
1025 |
7201
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1026 /* |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1027 * In Mac OS X the SDL-lib is built upon Cocoa. The easiest way to |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1028 * make it all work is to use the builtin SDL-bootstrap code, which |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1029 * will be done automatically by replacing our main() if we include SDL.h. |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1030 */ |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1031 #if defined(SYS_DARWIN) && defined(HAVE_SDL) |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1032 #include <SDL.h> |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1033 #endif |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
1034 |
13710 | 1035 /** |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1036 * \brief append a formatted string |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1037 * \param buf buffer to print into |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1038 * \param pos position of terminating 0 in buf |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1039 * \param len maximum number of characters in buf, not including terminating 0 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1040 * \param format printf format string |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1041 */ |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1042 static void saddf(char *buf, unsigned *pos, int len, const char *format, ...) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1043 { |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1044 va_list va; |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1045 va_start(va, format); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1046 *pos += vsnprintf(&buf[*pos], len - *pos, format, va); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1047 va_end(va); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1048 if (*pos >= len ) { |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1049 buf[len] = 0; |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1050 *pos = len; |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1051 } |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1052 } |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1053 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1054 /** |
16654 | 1055 * \brief append time in the hh:mm:ss.f format |
1056 * \param buf buffer to print into | |
1057 * \param pos position of terminating 0 in buf | |
1058 * \param len maximum number of characters in buf, not including terminating 0 | |
1059 * \param time time value to convert/append | |
1060 */ | |
1061 static void sadd_hhmmssf(char *buf, unsigned *pos, int len, float time) { | |
1062 long tenths = 10 * time; | |
1063 int f1 = tenths % 10; | |
1064 int ss = (tenths / 10) % 60; | |
1065 int mm = (tenths / 600) % 60; | |
1066 int hh = tenths / 36000; | |
1067 if (time <= 0) { | |
1068 saddf(buf, pos, len, "unknown"); | |
1069 return; | |
1070 } | |
1071 if (hh > 0) | |
1072 saddf(buf, pos, len, "%2d:", hh); | |
1073 if (hh > 0 || mm > 0) | |
1074 saddf(buf, pos, len, "%02d:", mm); | |
1075 saddf(buf, pos, len, "%02d.%1d", ss, f1); | |
1076 } | |
1077 | |
1078 /** | |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1079 * \brief print the status line |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1080 * \param a_pos audio position |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1081 * \param a_v A-V desynchronization |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1082 * \param corr amount out A-V synchronization |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1083 */ |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1084 static void print_status(float a_pos, float a_v, float corr) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1085 { |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1086 int width; |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1087 char *line; |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1088 unsigned pos = 0; |
13906
db2f1e657dfe
use get_screen_size from getch2.c instead of ioctl, fixes bug #131.
reimar
parents:
13893
diff
changeset
|
1089 get_screen_size(); |
db2f1e657dfe
use get_screen_size from getch2.c instead of ioctl, fixes bug #131.
reimar
parents:
13893
diff
changeset
|
1090 if (screen_width > 0) |
db2f1e657dfe
use get_screen_size from getch2.c instead of ioctl, fixes bug #131.
reimar
parents:
13893
diff
changeset
|
1091 width = screen_width; |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1092 else |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1093 width = 80; |
13928 | 1094 #ifdef WIN32 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1095 /* Windows command line is broken (MinGW's rxvt works, but we |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1096 * should not depend on that). */ |
13928 | 1097 width--; |
1098 #endif | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1099 line = malloc(width + 1); // one additional char for the terminating null |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1100 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1101 // Audio time |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1102 if (sh_audio) { |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1103 saddf(line, &pos, width, "A:%6.1f ", a_pos); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1104 if (!sh_video) { |
16654 | 1105 float len = demuxer_get_time_length(demuxer); |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1106 saddf(line, &pos, width, "("); |
16654 | 1107 sadd_hhmmssf(line, &pos, width, a_pos); |
1108 saddf(line, &pos, width, ") of %.1f (", len); | |
1109 sadd_hhmmssf(line, &pos, width, len); | |
16742 | 1110 saddf(line, &pos, width, ") "); |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1111 } |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1112 } |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1113 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1114 // Video time |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1115 if (sh_video) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1116 saddf(line, &pos, width, "V:%6.1f ", sh_video->pts); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1117 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1118 // A-V sync |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1119 if (sh_audio && sh_video) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1120 saddf(line, &pos, width, "A-V:%7.3f ct:%7.3f ", a_v, corr); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1121 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1122 // Video stats |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1123 if (sh_video) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1124 saddf(line, &pos, width, "%3d/%3d ", |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1125 (int)sh_video->num_frames, |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1126 (int)sh_video->num_frames_decoded); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1127 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1128 // CPU usage |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1129 if (sh_video) { |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1130 if (sh_video->timer > 0.5) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1131 saddf(line, &pos, width, "%2d%% %2d%% %4.1f%% ", |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1132 (int)(100.0*video_time_usage*playback_speed/(double)sh_video->timer), |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1133 (int)(100.0*vout_time_usage*playback_speed/(double)sh_video->timer), |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1134 (100.0*audio_time_usage*playback_speed/(double)sh_video->timer)); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1135 else |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1136 saddf(line, &pos, width, "??%% ??%% ??,?%% "); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1137 } else if (sh_audio) { |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1138 if (sh_audio->delay > 0.5) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1139 saddf(line, &pos, width, "%4.1f%% ", |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1140 100.0*audio_time_usage/(double)sh_audio->delay); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1141 else |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1142 saddf(line, &pos, width, "??,?%% "); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1143 } |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1144 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1145 // VO stats |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1146 if (sh_video) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1147 saddf(line, &pos, width, "%d %d ", drop_frame_cnt, output_quality); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1148 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1149 #ifdef USE_STREAM_CACHE |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1150 // cache stats |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1151 if (stream_cache_size > 0) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1152 saddf(line, &pos, width, "%d%% ", cache_fill_status); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1153 #endif |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1154 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1155 // other |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1156 if (playback_speed != 1) |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1157 saddf(line, &pos, width, "%4.2fx ", playback_speed); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1158 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1159 // end |
17258
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1160 if (erase_to_end_of_line) { |
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1161 line[pos] = 0; |
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1162 mp_msg(MSGT_AVSYNC, MSGL_STATUS, "%s%s\r", line, erase_to_end_of_line); |
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1163 } else { |
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1164 memset(&line[pos], ' ', width - pos); |
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1165 line[width] = 0; |
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1166 mp_msg(MSGT_AVSYNC, MSGL_STATUS, "%s\r", line); |
3d02f6e2a432
change erase to end of line, fall back to old behavior if no termcap found
ods15
parents:
17251
diff
changeset
|
1167 } |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1168 free(line); |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1169 } |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1170 |
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
1171 /** |
13710 | 1172 * \brief build a chain of audio filters that converts the input format |
1173 * to the ao's format, taking into account the current playback_speed. | |
1174 * \param sh_audio describes the requested input format of the chain. | |
1175 * \param ao_data describes the requested output format of the chain. | |
1176 */ | |
1177 static int build_afilter_chain(sh_audio_t *sh_audio, ao_data_t *ao_data) | |
1178 { | |
14140
337aa26e20b5
10l, should check for != NULL before using not after...
reimar
parents:
14087
diff
changeset
|
1179 int new_srate; |
14172 | 1180 int result; |
13710 | 1181 if (!sh_audio) |
14172 | 1182 { |
14254 | 1183 #ifdef HAVE_NEW_GUI |
1184 guiGetEvent(guiSetAfilter, (char *)NULL); | |
1185 #endif | |
14172 | 1186 mixer.afilter = NULL; |
13710 | 1187 return 0; |
14172 | 1188 } |
14140
337aa26e20b5
10l, should check for != NULL before using not after...
reimar
parents:
14087
diff
changeset
|
1189 new_srate = sh_audio->samplerate * playback_speed; |
13710 | 1190 if (new_srate != ao_data->samplerate) { |
1191 // limits are taken from libaf/af_resample.c | |
1192 if (new_srate < 8000) | |
1193 new_srate = 8000; | |
1194 if (new_srate > 192000) | |
1195 new_srate = 192000; | |
1196 playback_speed = (float)new_srate / (float)sh_audio->samplerate; | |
1197 } | |
14172 | 1198 result = init_audio_filters(sh_audio, new_srate, |
14818
663c1ea5f595
finally remove the refences to bps outside libaf. also simplification of some messages and removed redundants
alex
parents:
14807
diff
changeset
|
1199 sh_audio->channels, sh_audio->sample_format, |
15811
9b4bbb6098f6
make -srate work again, unify audio filter init and preinit.
reimar
parents:
15789
diff
changeset
|
1200 &ao_data->samplerate, &ao_data->channels, &ao_data->format, |
13710 | 1201 ao_data->outburst * 4, ao_data->buffersize); |
14172 | 1202 mixer.afilter = sh_audio->afilter; |
14254 | 1203 #ifdef HAVE_NEW_GUI |
1204 guiGetEvent(guiSetAfilter, (char *)sh_audio->afilter); | |
1205 #endif | |
14172 | 1206 return result; |
13710 | 1207 } |
8800 | 1208 |
14684 | 1209 #ifdef USE_SUB |
1210 /** | |
1211 * \brief Log the currently displayed subtitle to a file | |
1212 * | |
1213 * Logs the current or last displayed subtitle together with filename | |
1214 * and time information to ~/.mplayer/subtitle_log | |
1215 * | |
1216 * Intended purpose is to allow convenient marking of bogus subtitles | |
1217 * which need to be fixed while watching the movie. | |
1218 */ | |
1219 | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
17553
diff
changeset
|
1220 static void log_sub(void){ |
14684 | 1221 char *fname; |
1222 FILE *f; | |
1223 int i; | |
1224 | |
1225 if (subdata == NULL || vo_sub_last == NULL) return; | |
1226 fname = get_path("subtitle_log"); | |
1227 f = fopen(fname, "a"); | |
1228 if (!f) return; | |
1229 fprintf(f, "----------------------------------------------------------\n"); | |
1230 if (subdata->sub_uses_time) { | |
17366 | 1231 fprintf(f, "N: %s S: %02ld:%02ld:%02ld.%02ld E: %02ld:%02ld:%02ld.%02ld\n", filename, |
14684 | 1232 vo_sub_last->start/360000, (vo_sub_last->start/6000)%60, |
1233 (vo_sub_last->start/100)%60, vo_sub_last->start%100, | |
1234 vo_sub_last->end/360000, (vo_sub_last->end/6000)%60, | |
1235 (vo_sub_last->end/100)%60, vo_sub_last->end%100); | |
1236 } else { | |
17366 | 1237 fprintf(f, "N: %s S: %ld E: %ld\n", filename, vo_sub_last->start, vo_sub_last->end); |
14684 | 1238 } |
1239 for (i = 0; i < vo_sub_last->lines; i++) { | |
1240 fprintf(f, "%s\n", vo_sub_last->text[i]); | |
1241 } | |
1242 fclose(f); | |
1243 } | |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
1244 #endif /* USE_SUB */ |
14684 | 1245 |
18261 | 1246 /// \defgroup OSDMsgStack OSD message stack |
1247 /// | |
1248 ///@{ | |
1249 | |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1250 #define OSD_MSG_TV_CHANNEL 0 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1251 #define OSD_MSG_TEXT 1 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1252 #define OSD_MSG_SUB_DELAY 2 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1253 #define OSD_MSG_SPEED 3 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1254 #define OSD_MSG_OSD_STATUS 4 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1255 #define OSD_MSG_BAR 5 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1256 #define OSD_MSG_PAUSE 6 |
19568
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
1257 #define OSD_MSG_RADIO_CHANNEL 7 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1258 /// Base id for messages generated from the commmand to property bridge. |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1259 #define OSD_MSG_PROPERTY 0x100 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1260 |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1261 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1262 typedef struct mp_osd_msg mp_osd_msg_t; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1263 struct mp_osd_msg { |
18261 | 1264 /// Previous message on the stack. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1265 mp_osd_msg_t* prev; |
18261 | 1266 /// Message text. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1267 char msg[64]; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1268 int id,level,started; |
18261 | 1269 /// Display duration in ms. |
1270 unsigned time; | |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1271 }; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1272 |
18261 | 1273 /// OSD message stack. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1274 static mp_osd_msg_t* osd_msg_stack = NULL; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1275 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1276 /** |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1277 * \brief Add a message on the OSD message stack |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1278 * |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1279 * If a message with the same id is already present in the stack |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1280 * it is pulled on top of the stack, otherwise a new message is created. |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1281 * |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1282 */ |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1283 |
19053
75327b24e06f
marks several string parameters as const, as they are not modified inside the function, Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
19017
diff
changeset
|
1284 static void set_osd_msg(int id, int level, int time, const char* fmt, ...) { |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1285 mp_osd_msg_t *msg,*last=NULL; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1286 va_list va; |
17929
6fe95ee39422
Fix osd_show_msg alignment and make sure msg strings
albeu
parents:
17928
diff
changeset
|
1287 int r; |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1288 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1289 // look if the id is already in the stack |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1290 for(msg = osd_msg_stack ; msg && msg->id != id ; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1291 last = msg, msg = msg->prev); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1292 // not found: alloc it |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1293 if(!msg) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1294 msg = calloc(1,sizeof(mp_osd_msg_t)); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1295 msg->prev = osd_msg_stack; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1296 osd_msg_stack = msg; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1297 } else if(last) { // found, but it's not on top of the stack |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1298 last->prev = msg->prev; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1299 msg->prev = osd_msg_stack; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1300 osd_msg_stack = msg; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1301 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1302 // write the msg |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1303 va_start(va,fmt); |
17929
6fe95ee39422
Fix osd_show_msg alignment and make sure msg strings
albeu
parents:
17928
diff
changeset
|
1304 r = vsnprintf(msg->msg, 64, fmt, va); |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1305 va_end(va); |
17929
6fe95ee39422
Fix osd_show_msg alignment and make sure msg strings
albeu
parents:
17928
diff
changeset
|
1306 if(r >= 64) msg->msg[63] = 0; |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1307 // set id and time |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1308 msg->id = id; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1309 msg->level = level; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1310 msg->time = time; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1311 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1312 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1313 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1314 /** |
17057
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1315 * \brief Remove a message from the OSD stack |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1316 * |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1317 * This function can be used to get rid of a message right away. |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1318 * |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1319 */ |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1320 |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1321 static void rm_osd_msg(int id) { |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1322 mp_osd_msg_t *msg,*last=NULL; |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1323 |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1324 // Search for the msg |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1325 for(msg = osd_msg_stack ; msg && msg->id != id ; |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1326 last = msg, msg = msg->prev); |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1327 if(!msg) return; |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1328 |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1329 // Detach it from the stack and free it |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1330 if(last) |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1331 last->prev = msg->prev; |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1332 else |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1333 osd_msg_stack = msg->prev; |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1334 free(msg); |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1335 } |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1336 |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
1337 /** |
17938 | 1338 * \brief Remove all messages from the OSD stack |
1339 * | |
1340 */ | |
1341 | |
1342 static void clear_osd_msgs(void) { | |
1343 mp_osd_msg_t* msg = osd_msg_stack, *prev = NULL; | |
1344 while(msg) { | |
1345 prev = msg->prev; | |
1346 free(msg); | |
1347 msg = prev; | |
1348 } | |
1349 osd_msg_stack = NULL; | |
1350 } | |
1351 | |
1352 /** | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1353 * \brief Get the current message from the OSD stack. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1354 * |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1355 * This function decrements the message timer and destroys the old ones. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1356 * The message that should be displayed is returned (if any). |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1357 * |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1358 */ |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1359 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1360 static mp_osd_msg_t* get_osd_msg(void) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1361 mp_osd_msg_t *msg,*prev,*last = NULL; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1362 static unsigned last_update = 0; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1363 unsigned now = GetTimerMS(); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1364 unsigned diff; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1365 char hidden_dec_done = 0; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1366 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1367 if(!last_update) last_update = now; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1368 diff = now >= last_update ? now - last_update : 0; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1369 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1370 last_update = now; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1371 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1372 // Look for the first message in the stack with high enough level. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1373 for(msg = osd_msg_stack ; msg ; last = msg, msg = prev) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1374 prev = msg->prev; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1375 if(msg->level > osd_level && hidden_dec_done) continue; |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1376 // The message has a high enough level or it is the first hidden one |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1377 // in both cases we decrement the timer or kill it. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1378 if(!msg->started || msg->time > diff) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1379 if(msg->started) msg->time -= diff; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1380 else msg->started = 1; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1381 // display it |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1382 if(msg->level <= osd_level) return msg; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1383 hidden_dec_done = 1; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1384 continue; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1385 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1386 // kill the message |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1387 free(msg); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1388 if(last) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1389 last->prev = prev; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1390 msg = last; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1391 } else { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1392 osd_msg_stack = prev; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1393 msg = NULL; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1394 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1395 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1396 // Nothing found |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1397 return NULL; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1398 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1399 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1400 // Make a define to test if we are using the term OSD without having |
17021
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
1401 // to #ifdef USE_OSD all the time. |
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
1402 #ifdef USE_OSD |
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
1403 #define use_term_osd (term_osd && !sh_video) |
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
1404 #else |
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
1405 #define use_term_osd (term_osd) |
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
1406 #endif |
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
1407 |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1408 /** |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1409 * \brief Display the OSD bar. |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1410 * |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1411 * Display the OSD bar or fall back on a simple message. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1412 * |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1413 */ |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1414 |
19053
75327b24e06f
marks several string parameters as const, as they are not modified inside the function, Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
19017
diff
changeset
|
1415 void set_osd_bar(int type,const char* name,double min,double max,double val) { |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1416 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1417 if(osd_level < 1) return; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1418 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1419 #ifdef USE_OSD |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1420 if(sh_video) { |
18287
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
1421 osd_visible = (GetTimerMS() + 1000) | 1; |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1422 vo_osd_progbar_type = type; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1423 vo_osd_progbar_value = 256*(val-min)/(max-min); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1424 vo_osd_changed(OSDTYPE_PROGBAR); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1425 return; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1426 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1427 #endif |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1428 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1429 set_osd_msg(OSD_MSG_BAR,1,osd_duration,"%s: %d %%", |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1430 name,ROUND(100*(val-min)/(max-min))); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1431 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1432 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1433 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1434 /** |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1435 * \brief Update the OSD message line. |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1436 * |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1437 * This function displays the current message on the vo OSD or on the term. |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1438 * If the stack is empty and the OSD level is high enough the timer |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1439 * is displayed (only on the vo OSD). |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1440 * |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1441 */ |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1442 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1443 static void update_osd_msg(void) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1444 mp_osd_msg_t *msg; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1445 static char osd_text[64] = ""; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1446 static char osd_text_timer[64]; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1447 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1448 #ifdef USE_OSD |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1449 // we need some mem for vo_osd_text |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1450 vo_osd_text = (unsigned char*)osd_text; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1451 #endif |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1452 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1453 // Look if we have a msg |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1454 if((msg = get_osd_msg())) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1455 if(strcmp(osd_text,msg->msg)) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1456 strncpy((char*)osd_text, msg->msg, 63); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1457 #ifdef USE_OSD |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1458 if(sh_video) vo_osd_changed(OSDTYPE_OSD); else |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1459 #endif |
19760 | 1460 if(term_osd) mp_msg(MSGT_CPLAYER,MSGL_STATUS,"%s%s\n",term_osd_esc,msg->msg); |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1461 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1462 return; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1463 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1464 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1465 #ifdef USE_OSD |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1466 if(sh_video) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1467 // fallback on the timer |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1468 if(osd_level>=2) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1469 int len = demuxer_get_time_length(demuxer); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1470 int percentage = -1; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1471 char percentage_text[10]; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1472 int pts = sh_video->pts; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1473 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1474 if (osd_show_percentage) |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1475 percentage = demuxer_get_percent_pos(demuxer); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1476 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1477 if (percentage >= 0) |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1478 snprintf(percentage_text, 9, " (%d%%)", percentage); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1479 else |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1480 percentage_text[0] = 0; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1481 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1482 if (osd_level == 3) |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1483 snprintf(osd_text_timer, 63, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1484 "%c %02d:%02d:%02d / %02d:%02d:%02d%s", |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1485 osd_function,pts/3600,(pts/60)%60,pts%60, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1486 len/3600,(len/60)%60,len%60,percentage_text); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1487 else |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1488 snprintf(osd_text_timer, 63, "%c %02d:%02d:%02d%s", |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1489 osd_function,pts/3600,(pts/60)%60, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1490 pts%60,percentage_text); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1491 } else |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1492 osd_text_timer[0]=0; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1493 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1494 // always decrement the percentage timer |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1495 if(osd_show_percentage) |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1496 osd_show_percentage--; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1497 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1498 if(strcmp(osd_text,osd_text_timer)) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1499 strncpy(osd_text, osd_text_timer, 63); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1500 vo_osd_changed(OSDTYPE_OSD); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1501 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1502 return; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1503 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1504 #endif |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1505 |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1506 // Clear the term osd line |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1507 if(term_osd && osd_text[0]) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1508 osd_text[0] = 0; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1509 printf("%s\n",term_osd_esc); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1510 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1511 } |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
1512 |
18261 | 1513 ///@} |
1514 // OSDMsgStack | |
1515 | |
1516 /// \defgroup Properties | |
1517 ///@{ | |
1518 | |
1519 /// \defgroup GeneralProperties General properties | |
1520 /// \ingroup Properties | |
1521 ///@{ | |
1522 | |
1523 /// OSD level (RW) | |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1524 static int mp_property_osdlevel(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1525 return m_property_choice(prop,action,arg,&osd_level); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1526 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1527 |
18261 | 1528 /// Playback speed (RW) |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1529 static int mp_property_playback_speed(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1530 switch(action) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1531 case M_PROPERTY_SET: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1532 if(!arg) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1533 M_PROPERTY_CLAMP(prop,*(float*)arg); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1534 playback_speed = *(float*)arg; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1535 build_afilter_chain(sh_audio, &ao_data); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1536 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1537 case M_PROPERTY_STEP_UP: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1538 case M_PROPERTY_STEP_DOWN: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1539 playback_speed += (arg ? *(float*)arg : 0.1) * |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1540 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1541 M_PROPERTY_CLAMP(prop,playback_speed); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1542 build_afilter_chain(sh_audio, &ao_data); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1543 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1544 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1545 return m_property_float_range(prop,action,arg,&playback_speed); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1546 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1547 |
18261 | 1548 /// filename with path (RO) |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1549 static int mp_property_path(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1550 return m_property_string_ro(prop,action,arg,filename); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1551 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1552 |
18261 | 1553 /// filename without path (RO) |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1554 static int mp_property_filename(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1555 char* f; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1556 if(!filename) return M_PROPERTY_UNAVAILABLE; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1557 if(((f = strrchr(filename,'/')) || (f = strrchr(filename,'\\'))) && f[1]) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1558 f++; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1559 else |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1560 f = filename; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1561 return m_property_string_ro(prop,action,arg,f); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1562 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1563 |
18261 | 1564 /// Demuxer name (RO) |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1565 static int mp_property_demuxer(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1566 if(!demuxer) return M_PROPERTY_UNAVAILABLE; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1567 return m_property_string_ro(prop,action,arg,(char*)demuxer->desc->name); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1568 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1569 |
18261 | 1570 /// Position in the stream (RW) |
18226
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1571 static int mp_property_stream_pos(m_option_t* prop,int action,void* arg) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1572 if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1573 if (!arg) return M_PROPERTY_ERROR; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1574 switch (action) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1575 case M_PROPERTY_GET: |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1576 *(off_t*)arg = stream_tell(demuxer->stream); |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1577 return M_PROPERTY_OK; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1578 case M_PROPERTY_SET: |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1579 M_PROPERTY_CLAMP(prop,*(off_t*)arg); |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1580 stream_seek(demuxer->stream, *(off_t*)arg); |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1581 return M_PROPERTY_OK; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1582 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1583 return M_PROPERTY_NOT_IMPLEMENTED; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1584 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1585 |
18261 | 1586 /// Stream start offset (RO) |
18226
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1587 static int mp_property_stream_start(m_option_t* prop,int action,void* arg) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1588 if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1589 switch (action) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1590 case M_PROPERTY_GET: |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1591 *(off_t*)arg = demuxer->stream->start_pos; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1592 return M_PROPERTY_OK; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1593 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1594 return M_PROPERTY_NOT_IMPLEMENTED; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1595 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1596 |
18261 | 1597 /// Stream end offset (RO) |
18226
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1598 static int mp_property_stream_end(m_option_t* prop,int action,void* arg) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1599 if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1600 switch (action) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1601 case M_PROPERTY_GET: |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1602 *(off_t*)arg = demuxer->stream->end_pos; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1603 return M_PROPERTY_OK; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1604 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1605 return M_PROPERTY_NOT_IMPLEMENTED; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1606 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1607 |
18261 | 1608 /// Stream length (RO) |
18226
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1609 static int mp_property_stream_length(m_option_t* prop,int action,void* arg) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1610 if (!demuxer || !demuxer->stream) return M_PROPERTY_UNAVAILABLE; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1611 switch (action) { |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1612 case M_PROPERTY_GET: |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1613 *(off_t*)arg = demuxer->stream->end_pos - demuxer->stream->start_pos; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1614 return M_PROPERTY_OK; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1615 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1616 return M_PROPERTY_NOT_IMPLEMENTED; |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1617 } |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
1618 |
18261 | 1619 /// Media length in seconds (RO) |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1620 static int mp_property_length(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1621 double len; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1622 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1623 if(!demuxer || |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1624 !(int)(len = demuxer_get_time_length(demuxer))) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1625 return M_PROPERTY_UNAVAILABLE; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1626 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1627 switch(action) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1628 case M_PROPERTY_PRINT: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1629 if(!arg) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1630 else { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1631 int h, m, s = len; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1632 h = s/3600; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1633 s -= h*3600; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1634 m = s/60; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1635 s -= m*60; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1636 *(char**)arg = malloc(20); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1637 if(h > 0) sprintf(*(char**)arg,"%d:%02d:%02d",h,m,s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1638 else if(m > 0) sprintf(*(char**)arg,"%d:%02d",m,s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1639 else sprintf(*(char**)arg,"%d",s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1640 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1641 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1642 break; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1643 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1644 return m_property_double_ro(prop,action,arg,len); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1645 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1646 |
18261 | 1647 ///@} |
1648 | |
1649 /// \defgroup AudioProperties Audio properties | |
1650 /// \ingroup Properties | |
1651 ///@{ | |
1652 | |
1653 /// Volume (RW) | |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1654 static int mp_property_volume(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1655 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1656 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1657 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1658 switch(action) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1659 case M_PROPERTY_GET: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1660 if(!arg) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1661 mixer_getbothvolume(&mixer,arg); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1662 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1663 case M_PROPERTY_PRINT:{ |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1664 float vol; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1665 if(!arg) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1666 mixer_getbothvolume(&mixer,&vol); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1667 return m_property_float_range(prop,action,arg,&vol); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1668 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1669 case M_PROPERTY_STEP_UP: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1670 case M_PROPERTY_STEP_DOWN: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1671 case M_PROPERTY_SET: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1672 break; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1673 default: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1674 return M_PROPERTY_NOT_IMPLEMENTED; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1675 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1676 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1677 if (edl_muted) return M_PROPERTY_DISABLED; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1678 user_muted = 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1679 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1680 switch(action) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1681 case M_PROPERTY_SET: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1682 if(!arg) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1683 M_PROPERTY_CLAMP(prop,*(float*)arg); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1684 mixer_setvolume(&mixer,*(float*)arg,*(float*)arg); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1685 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1686 case M_PROPERTY_STEP_UP: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1687 if(arg && *(float*)arg <= 0) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1688 mixer_decvolume(&mixer); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1689 else |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1690 mixer_incvolume(&mixer); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1691 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1692 case M_PROPERTY_STEP_DOWN: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1693 if(arg && *(float*)arg <= 0) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1694 mixer_incvolume(&mixer); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1695 else |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1696 mixer_decvolume(&mixer); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1697 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1698 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1699 return M_PROPERTY_NOT_IMPLEMENTED; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1700 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1701 |
18261 | 1702 /// Mute (RW) |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1703 static int mp_property_mute(m_option_t* prop,int action,void* arg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1704 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1705 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1706 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1707 switch(action) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1708 case M_PROPERTY_SET: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1709 if(edl_muted) return M_PROPERTY_DISABLED; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1710 if(!arg) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1711 if((!!*(int*)arg) != mixer.muted) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1712 mixer_mute(&mixer); |
19227
af80fca5c998
Set user_muted in mp_property_mute(). Fixes mute turning off when
uau
parents:
19216
diff
changeset
|
1713 user_muted = mixer.muted; |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1714 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1715 case M_PROPERTY_STEP_UP: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1716 case M_PROPERTY_STEP_DOWN: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1717 if(edl_muted) return M_PROPERTY_DISABLED; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1718 mixer_mute(&mixer); |
19227
af80fca5c998
Set user_muted in mp_property_mute(). Fixes mute turning off when
uau
parents:
19216
diff
changeset
|
1719 user_muted = mixer.muted; |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1720 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1721 case M_PROPERTY_PRINT: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1722 if(!arg) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1723 if(edl_muted) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1724 *(char**)arg = strdup(MSGTR_EnabledEdl); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1725 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1726 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1727 default: |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1728 return m_property_flag(prop,action,arg,&mixer.muted); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1729 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1730 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1731 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
1732 |
18261 | 1733 /// Audio delay (RW) |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1734 static int mp_property_audio_delay(m_option_t* prop,int action,void* arg) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1735 if(!(sh_audio && sh_video)) return M_PROPERTY_UNAVAILABLE; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1736 switch(action) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1737 case M_PROPERTY_SET: |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1738 case M_PROPERTY_STEP_UP: |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1739 case M_PROPERTY_STEP_DOWN: |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1740 if(!arg) return 0; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1741 else { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1742 float delay = audio_delay; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1743 m_property_delay(prop,action,arg,&audio_delay); |
18047
a597ca1c0adc
sh_audio->delay is adjusted in the wrong direction when changing audio_delay
reimar
parents:
18003
diff
changeset
|
1744 if(sh_audio) sh_audio->delay -= audio_delay-delay; |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1745 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1746 return 1; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1747 default: |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1748 return m_property_delay(prop,action,arg,&audio_delay); |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1749 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1750 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1751 |
18261 | 1752 /// Audio codec tag (RO) |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1753 static int mp_property_audio_format(m_option_t* prop,int action,void* arg) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1754 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1755 return m_property_int_ro(prop,action,arg,sh_audio->format); |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1756 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1757 |
18261 | 1758 /// Audio bitrate (RO) |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1759 static int mp_property_audio_bitrate(m_option_t* prop,int action,void* arg) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1760 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1761 return m_property_int_ro(prop,action,arg,sh_audio->i_bps); |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1762 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1763 |
18261 | 1764 /// Samplerate (RO) |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1765 static int mp_property_samplerate(m_option_t* prop,int action,void* arg) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1766 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1767 return m_property_int_ro(prop,action,arg,sh_audio->samplerate); |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1768 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1769 |
18261 | 1770 /// Number of channels (RO) |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1771 static int mp_property_channels(m_option_t* prop,int action,void* arg) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1772 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1773 switch(action) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1774 case M_PROPERTY_PRINT: |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1775 if(!arg) return 0; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1776 switch(sh_audio->channels) { |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1777 case 1: *(char**)arg = strdup("mono"); break; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1778 case 2: *(char**)arg = strdup("stereo"); break; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1779 default: |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1780 *(char**)arg = malloc(32); |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1781 sprintf(*(char**)arg,"%d channels",sh_audio->channels); |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1782 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1783 return 1; |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1784 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1785 return m_property_int_ro(prop,action,arg,sh_audio->channels); |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1786 } |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
1787 |
20156 | 1788 /// Selected audio id (RW) |
1789 static int mp_property_audio(m_option_t* prop,int action,void* arg) { | |
1790 int current_id = -1; | |
1791 | |
1792 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; | |
1793 | |
1794 switch(action) { | |
1795 case M_PROPERTY_GET: | |
1796 if(!arg) return 0; | |
1797 *(int*)arg = audio_id; | |
1798 return 1; | |
1799 case M_PROPERTY_PRINT: | |
1800 if(!arg) return 0; | |
1801 *(char**)arg = malloc(64); | |
1802 (*(char**)arg)[63] = 0; | |
1803 | |
1804 if (demuxer->type == DEMUXER_TYPE_MATROSKA && audio_id >= 0) { | |
1805 char lang[40] = MSGTR_Unknown; | |
1806 demux_mkv_get_audio_lang(demuxer, audio_id, lang, 9); | |
1807 lang[39] = 0; | |
1808 snprintf(*(char**)arg, 63, "(%d) %s", audio_id, lang); | |
1809 return 1; | |
1810 } | |
1811 #ifdef USE_DVDREAD | |
1812 if (audio_id >= 0) { | |
1813 char lang[3] = "\0\0\0"; | |
1814 int code = 0; | |
1815 code = dvd_lang_from_aid(stream, audio_id); | |
1816 if (code) { | |
1817 lang[0] = code >> 8; | |
1818 lang[1] = code; | |
20168 | 1819 lang[2] = 0; |
20156 | 1820 } |
1821 snprintf(*(char**)arg, 63, "(%d) %s", audio_id, code ? lang : MSGTR_Unknown); | |
1822 return 1; | |
1823 } | |
1824 #endif | |
1825 snprintf(*(char**)arg, 63, MSGTR_Disabled); | |
1826 return 1; | |
1827 | |
1828 case M_PROPERTY_STEP_UP: | |
1829 current_id = demuxer->audio->id; | |
1830 audio_id = demuxer_switch_audio(demuxer, -1); | |
1831 if(audio_id > -1 && demuxer->audio->id != current_id) { | |
1832 sh_audio_t *sh2; | |
1833 uninit_player(INITED_AO | INITED_ACODEC); | |
1834 sh2 = demuxer->a_streams[demuxer->audio->id]; | |
1835 if(sh2) { | |
1836 sh2->ds = demuxer->audio; | |
1837 sh_audio = sh2; | |
1838 reinit_audio_chain(); | |
1839 } | |
1840 } | |
1841 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_TRACK=%d\n", audio_id); | |
1842 | |
1843 break; | |
1844 default: | |
1845 return M_PROPERTY_NOT_IMPLEMENTED; | |
1846 } | |
1847 | |
1848 return 1; | |
1849 } | |
1850 | |
18261 | 1851 ///@} |
1852 | |
1853 /// \defgroup VideoProperties Video properties | |
1854 /// \ingroup Properties | |
1855 ///@{ | |
1856 | |
1857 /// Fullscreen state (RW) | |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1858 static int mp_property_fullscreen(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1859 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1860 if(!video_out) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1861 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1862 switch(action) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1863 case M_PROPERTY_SET: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1864 if(!arg) return 0; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1865 M_PROPERTY_CLAMP(prop,*(int*)arg); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1866 if(vo_fs == !!*(int*)arg) return 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1867 case M_PROPERTY_STEP_UP: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1868 case M_PROPERTY_STEP_DOWN: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1869 #ifdef HAVE_NEW_GUI |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1870 if(use_gui) guiGetEvent(guiIEvent,(char*)MP_CMD_GUI_FULLSCREEN); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1871 else |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1872 #endif |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1873 if(vo_config_count) video_out->control(VOCTRL_FULLSCREEN, 0); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1874 return 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1875 default: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1876 return m_property_flag(prop,action,arg,&vo_fs); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1877 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1878 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1879 |
18261 | 1880 /// Panscan (RW) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1881 static int mp_property_panscan(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1882 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1883 if(!video_out || video_out->control(VOCTRL_GET_PANSCAN,NULL ) != VO_TRUE) |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1884 return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1885 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1886 switch(action) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1887 case M_PROPERTY_SET: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1888 if(!arg) return 0; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1889 M_PROPERTY_CLAMP(prop,*(float*)arg); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1890 vo_panscan = *(float*)arg; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1891 video_out->control(VOCTRL_SET_PANSCAN,NULL); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1892 return 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1893 case M_PROPERTY_STEP_UP: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1894 case M_PROPERTY_STEP_DOWN: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1895 vo_panscan += (arg ? *(float*)arg : 0.1) * |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1896 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1897 if(vo_panscan > 1) vo_panscan = 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1898 else if(vo_panscan < 0) vo_panscan = 0; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1899 video_out->control(VOCTRL_SET_PANSCAN,NULL); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1900 return 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1901 default: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1902 return m_property_float_range(prop,action,arg,&vo_panscan); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1903 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1904 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1905 |
18261 | 1906 /// Helper to set vo flags. |
1907 /** \ingroup PropertyImplHelper | |
1908 */ | |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1909 static int mp_property_vo_flag(m_option_t* prop,int action,void* arg, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1910 int vo_ctrl,int* vo_var) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1911 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1912 if(!video_out) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1913 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1914 switch(action) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1915 case M_PROPERTY_SET: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1916 if(!arg) return 0; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1917 M_PROPERTY_CLAMP(prop,*(int*)arg); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1918 if(*vo_var == !!*(int*)arg) return 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1919 case M_PROPERTY_STEP_UP: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1920 case M_PROPERTY_STEP_DOWN: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1921 if(vo_config_count) video_out->control(vo_ctrl, 0); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1922 return 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1923 default: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1924 return m_property_flag(prop,action,arg,vo_var); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1925 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1926 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1927 |
18261 | 1928 /// Window always on top (RW) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1929 static int mp_property_ontop(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1930 return mp_property_vo_flag(prop,action,arg,VOCTRL_ONTOP,&vo_ontop); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1931 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1932 |
18261 | 1933 /// Display in the root window (RW) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1934 static int mp_property_rootwin(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1935 return mp_property_vo_flag(prop,action,arg,VOCTRL_ROOTWIN,&vo_rootwin); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1936 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1937 |
18261 | 1938 /// Show window borders (RW) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1939 static int mp_property_border(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1940 return mp_property_vo_flag(prop,action,arg,VOCTRL_BORDER,&vo_border); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1941 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1942 |
18261 | 1943 /// Framedropping state (RW) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1944 static int mp_property_framedropping(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1945 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1946 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1947 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1948 switch(action) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1949 case M_PROPERTY_PRINT: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1950 if(!arg) return 0; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1951 *(char**)arg = strdup(frame_dropping == 1 ? MSGTR_Enabled : |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1952 (frame_dropping == 2 ? MSGTR_HardFrameDrop : MSGTR_Disabled)); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1953 return 1; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1954 default: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1955 return m_property_choice(prop,action,arg,&frame_dropping); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1956 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1957 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1958 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
1959 /// Color settings, try to use vf/vo then fall back on TV. (RW) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1960 static int mp_property_gamma(m_option_t* prop,int action,void* arg) { |
18190 | 1961 int* gamma = prop->priv, r; |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1962 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1963 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1964 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1965 if(gamma[0] == 1000) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1966 gamma[0] = 0; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1967 get_video_colors (sh_video, prop->name, gamma); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1968 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1969 |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1970 switch(action) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1971 case M_PROPERTY_SET: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1972 if(!arg) return 0; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1973 M_PROPERTY_CLAMP(prop,*(int*)arg); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1974 *gamma = *(int*)arg; |
18190 | 1975 r = set_video_colors(sh_video, prop->name, *gamma); |
1976 if(r <= 0) break; | |
1977 return r; | |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1978 case M_PROPERTY_GET: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1979 if(!arg) return 0; |
18190 | 1980 r = get_video_colors (sh_video, prop->name, arg); |
1981 if(r <= 0) break; | |
1982 return r; | |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1983 case M_PROPERTY_STEP_UP: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1984 case M_PROPERTY_STEP_DOWN: |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1985 *gamma += (arg ? *(int*)arg : 1) * |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1986 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1987 M_PROPERTY_CLAMP(prop,*gamma); |
18190 | 1988 r = set_video_colors(sh_video, prop->name, *gamma); |
1989 if(r <= 0) break; | |
1990 return r; | |
1991 default: | |
1992 return M_PROPERTY_NOT_IMPLEMENTED; | |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
1993 } |
18190 | 1994 |
1995 #ifdef USE_TV | |
1996 if(demuxer->type == DEMUXER_TYPE_TV) { | |
1997 int l = strlen(prop->name); | |
1998 char tv_prop[3+l+1]; | |
1999 sprintf(tv_prop,"tv_%s",prop->name); | |
2000 return mp_property_do(tv_prop,action,arg); | |
2001 } | |
2002 #endif | |
2003 | |
2004 return M_PROPERTY_UNAVAILABLE; | |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2005 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2006 |
18261 | 2007 /// VSync (RW) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2008 static int mp_property_vsync(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2009 return m_property_flag(prop,action,arg,&vo_vsync); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2010 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2011 |
18261 | 2012 /// Video codec tag (RO) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2013 static int mp_property_video_format(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2014 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2015 return m_property_int_ro(prop,action,arg,sh_video->format); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2016 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2017 |
18261 | 2018 /// Video bitrate (RO) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2019 static int mp_property_video_bitrate(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2020 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2021 return m_property_int_ro(prop,action,arg,sh_video->i_bps); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2022 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2023 |
18261 | 2024 /// Video display width (RO) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2025 static int mp_property_width(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2026 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2027 return m_property_int_ro(prop,action,arg,sh_video->disp_w); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2028 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2029 |
18261 | 2030 /// Video display height (RO) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2031 static int mp_property_height(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2032 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2033 return m_property_int_ro(prop,action,arg,sh_video->disp_h); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2034 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2035 |
18261 | 2036 /// Video fps (RO) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2037 static int mp_property_fps(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2038 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2039 return m_property_float_ro(prop,action,arg,sh_video->fps); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2040 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2041 |
18261 | 2042 /// Video aspect (RO) |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2043 static int mp_property_aspect(m_option_t* prop,int action,void* arg) { |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2044 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2045 return m_property_float_ro(prop,action,arg,sh_video->aspect); |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2046 } |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2047 |
18261 | 2048 ///@} |
2049 | |
2050 /// \defgroup SubProprties Subtitles properties | |
2051 /// \ingroup Properties | |
2052 ///@{ | |
2053 | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2054 /// Text subtitle position (RW) |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2055 static int mp_property_sub_pos(m_option_t* prop,int action,void* arg) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2056 #ifdef USE_SUB |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2057 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2058 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2059 switch(action) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2060 case M_PROPERTY_SET: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2061 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2062 case M_PROPERTY_STEP_UP: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2063 case M_PROPERTY_STEP_DOWN: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2064 vo_osd_changed(OSDTYPE_SUBTITLE); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2065 default: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2066 return m_property_int_range(prop,action,arg,&sub_pos); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2067 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2068 #else |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2069 return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2070 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2071 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2072 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2073 /// Selected subtitles (RW) |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2074 static int mp_property_sub(m_option_t* prop,int action,void* arg) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2075 int source = -1, reset_spu = 0; |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2076 char* sub_name; |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2077 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2078 if(global_sub_size <= 0) return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2079 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2080 switch(action) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2081 case M_PROPERTY_GET: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2082 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2083 *(int*)arg = global_sub_pos; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2084 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2085 case M_PROPERTY_PRINT: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2086 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2087 *(char**)arg = malloc(64); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2088 (*(char**)arg)[63] = 0; |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2089 sub_name = 0; |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2090 #ifdef USE_SUB |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2091 if(subdata) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2092 sub_name = subdata->filename; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2093 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2094 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2095 if (ass_track && ass_track->name) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2096 sub_name = ass_track->name; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2097 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2098 #if defined(USE_SUB) || defined(USE_ASS) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2099 if(sub_name) { |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2100 char *tmp,*tmp2; |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2101 tmp = sub_name; |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2102 if ((tmp2 = strrchr(tmp, '/'))) |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2103 tmp = tmp2+1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2104 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2105 snprintf(*(char**)arg, 63, "(%d) %s%s", |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2106 set_of_sub_pos + 1, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2107 strlen(tmp) < 20 ? "" : "...", |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2108 strlen(tmp) < 20 ? tmp : tmp+strlen(tmp)-19); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2109 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2110 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2111 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2112 if (demuxer->type == DEMUXER_TYPE_MATROSKA && dvdsub_id >= 0) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2113 char lang[40] = MSGTR_Unknown; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2114 demux_mkv_get_sub_lang(demuxer, dvdsub_id, lang, 9); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2115 lang[39] = 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2116 snprintf(*(char**)arg, 63, "(%d) %s", dvdsub_id, lang); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2117 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2118 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2119 #ifdef HAVE_OGGVORBIS |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2120 if (demuxer->type == DEMUXER_TYPE_OGG && d_dvdsub && dvdsub_id >= 0) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2121 char *lang = demux_ogg_sub_lang(demuxer, dvdsub_id); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2122 if (!lang) lang = MSGTR_Unknown; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2123 snprintf(*(char**)arg, 63, "(%d) %s", |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2124 dvdsub_id, lang); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2125 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2126 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2127 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2128 if (vo_vobsub && vobsub_id >= 0) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2129 const char *language = MSGTR_Unknown; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2130 language = vobsub_get_id(vo_vobsub, (unsigned int) vobsub_id); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2131 snprintf(*(char**)arg, 63, "(%d) %s", |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2132 vobsub_id, language ? language : MSGTR_Unknown); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2133 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2134 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2135 #ifdef USE_DVDREAD |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2136 if (vo_spudec && dvdsub_id >= 0) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2137 char lang[3] = "\0\0\0"; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2138 int code = 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2139 code = dvd_lang_from_sid(stream, dvdsub_id); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2140 if (code) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2141 lang[0] = code >> 8; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2142 lang[1] = code; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2143 lang[2] = 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2144 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2145 snprintf(*(char**)arg, 63, "(%d) %s", |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2146 dvdsub_id, lang); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2147 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2148 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2149 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2150 snprintf(*(char**)arg, 63, MSGTR_Disabled); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2151 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2152 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2153 case M_PROPERTY_SET: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2154 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2155 if(*(int*)arg < -1) *(int*)arg = -1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2156 else if(*(int*)arg >= global_sub_size) *(int*)arg = global_sub_size-1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2157 global_sub_pos = *(int*)arg; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2158 break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2159 case M_PROPERTY_STEP_UP: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2160 global_sub_pos += 2; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2161 global_sub_pos = (global_sub_pos % (global_sub_size+1)) - 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2162 break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2163 case M_PROPERTY_STEP_DOWN: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2164 global_sub_pos += global_sub_size+1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2165 global_sub_pos = (global_sub_pos % (global_sub_size+1)) - 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2166 break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2167 default: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2168 return M_PROPERTY_NOT_IMPLEMENTED; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2169 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2170 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2171 if (global_sub_pos >= 0) |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2172 source = sub_source(); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2173 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2174 mp_msg(MSGT_CPLAYER, MSGL_DBG3, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2175 "subtitles: %d subs, (v@%d s@%d d@%d), @%d, source @%d\n", |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2176 global_sub_size, global_sub_indices[SUB_SOURCE_VOBSUB], |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2177 global_sub_indices[SUB_SOURCE_SUBS], |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2178 global_sub_indices[SUB_SOURCE_DEMUX], |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2179 global_sub_pos, source); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2180 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2181 #ifdef USE_SUB |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2182 set_of_sub_pos = -1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2183 subdata = NULL; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2184 vo_sub_last = vo_sub = NULL; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2185 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2186 vobsub_id = -1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2187 dvdsub_id = -1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2188 if (d_dvdsub) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2189 if(d_dvdsub->id > -2) reset_spu = 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2190 d_dvdsub->id = -2; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2191 } |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2192 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2193 ass_track = 0; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2194 #endif |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2195 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2196 if (source == SUB_SOURCE_VOBSUB) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2197 vobsub_id = global_sub_pos - global_sub_indices[SUB_SOURCE_VOBSUB]; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2198 #ifdef USE_SUB |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2199 } else if (source == SUB_SOURCE_SUBS) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2200 set_of_sub_pos = global_sub_pos - global_sub_indices[SUB_SOURCE_SUBS]; |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2201 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2202 if (ass_enabled && set_of_ass_tracks[set_of_sub_pos]) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2203 ass_track = set_of_ass_tracks[set_of_sub_pos]; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2204 else |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2205 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2206 { |
18938 | 2207 subdata = set_of_subtitles[set_of_sub_pos]; |
2208 vo_osd_changed(OSDTYPE_SUBTITLE); | |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2209 } |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2210 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2211 } else if (source == SUB_SOURCE_DEMUX) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2212 dvdsub_id = global_sub_pos - global_sub_indices[SUB_SOURCE_DEMUX]; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2213 if (d_dvdsub) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2214 #ifdef USE_DVDREAD |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2215 if (vo_spudec && stream->type == STREAMTYPE_DVD) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2216 d_dvdsub->id = dvdsub_id; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2217 spudec_reset(vo_spudec); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2218 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2219 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2220 #ifdef HAVE_OGGVORBIS |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2221 if (demuxer->type == DEMUXER_TYPE_OGG) |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2222 d_dvdsub->id = demux_ogg_sub_id(demuxer, dvdsub_id); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2223 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2224 if (demuxer->type == DEMUXER_TYPE_MATROSKA) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2225 d_dvdsub->id = demux_mkv_change_subs(demuxer, dvdsub_id); |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2226 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2227 if (ass_enabled && (d_dvdsub->id >= 0) && |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2228 (((sh_sub_t *)d_dvdsub->sh)->type == 'a')) { |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2229 ass_track = ((sh_sub_t *)d_dvdsub->sh)->ass_track; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2230 } |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
2231 #endif |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2232 if (d_dvdsub->id >= 0 && |
18934
a3788ff5d0b6
Rename mkv_sh_sub_t to sh_sub_t, move it to demuxer.h.
eugeni
parents:
18929
diff
changeset
|
2233 ((sh_sub_t *)d_dvdsub->sh)->type == 'v') { |
a3788ff5d0b6
Rename mkv_sh_sub_t to sh_sub_t, move it to demuxer.h.
eugeni
parents:
18929
diff
changeset
|
2234 sh_sub_t *mkv_sh_sub = (sh_sub_t *)d_dvdsub->sh; |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2235 if (vo_spudec != NULL) |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2236 spudec_free(vo_spudec); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2237 vo_spudec = |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2238 spudec_new_scaled_vobsub(mkv_sh_sub->has_palette ? |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2239 mkv_sh_sub->palette : |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2240 NULL, mkv_sh_sub->colors, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2241 mkv_sh_sub->custom_colors, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2242 mkv_sh_sub->width, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2243 mkv_sh_sub->height); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2244 if (!forced_subs_only) |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2245 forced_subs_only = mkv_sh_sub->forced_subs_only; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2246 if (vo_spudec) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2247 spudec_set_forced_subs_only(vo_spudec, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2248 forced_subs_only); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2249 inited_flags |= INITED_SPUDEC; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2250 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2251 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2252 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2253 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2254 } else { // off |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2255 #ifdef USE_SUB |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2256 vo_osd_changed(OSDTYPE_SUBTITLE); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2257 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2258 if(vo_spudec) vo_osd_changed(OSDTYPE_SPU); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2259 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2260 #ifdef USE_DVDREAD |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2261 if (vo_spudec && stream->type == STREAMTYPE_DVD && dvdsub_id < 0 && reset_spu) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2262 dvdsub_id = -2; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2263 d_dvdsub->id = dvdsub_id; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2264 spudec_reset(vo_spudec); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2265 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2266 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2267 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2268 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2269 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2270 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2271 /// Subtitle delay (RW) |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2272 static int mp_property_sub_delay(m_option_t* prop,int action,void* arg) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2273 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2274 return m_property_delay(prop,action,arg,&sub_delay); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2275 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2276 |
18261 | 2277 /// Alignment of text subtitles (RW) |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2278 static int mp_property_sub_alignment(m_option_t* prop,int action,void* arg) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2279 #ifdef USE_SUB |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2280 char* name[] = { MSGTR_Top, MSGTR_Center, MSGTR_Bottom }; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2281 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2282 if(!sh_video || global_sub_pos < 0 || sub_source() != SUB_SOURCE_SUBS) |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2283 return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2284 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2285 switch(action) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2286 case M_PROPERTY_PRINT: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2287 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2288 M_PROPERTY_CLAMP(prop,sub_alignment); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2289 *(char**)arg = strdup(name[sub_alignment]); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2290 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2291 case M_PROPERTY_SET: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2292 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2293 case M_PROPERTY_STEP_UP: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2294 case M_PROPERTY_STEP_DOWN: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2295 vo_osd_changed(OSDTYPE_SUBTITLE); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2296 default: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2297 return m_property_choice(prop,action,arg,&sub_alignment); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2298 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2299 #else |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2300 return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2301 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2302 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2303 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2304 /// Subtitle visibility (RW) |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2305 static int mp_property_sub_visibility(m_option_t* prop,int action,void* arg) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2306 #ifdef USE_SUB |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2307 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2308 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2309 switch(action) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2310 case M_PROPERTY_SET: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2311 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2312 case M_PROPERTY_STEP_UP: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2313 case M_PROPERTY_STEP_DOWN: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2314 vo_osd_changed(OSDTYPE_SUBTITLE); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2315 if(vo_spudec) vo_osd_changed(OSDTYPE_SPU); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2316 default: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2317 return m_property_flag(prop,action,arg,&sub_visibility); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2318 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2319 #else |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2320 return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2321 #endif |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2322 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2323 |
18261 | 2324 /// Show only forced subtitles (RW) |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2325 static int mp_property_sub_forced_only(m_option_t* prop,int action,void* arg) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2326 if(!vo_spudec) return M_PROPERTY_UNAVAILABLE; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2327 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2328 switch(action) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2329 case M_PROPERTY_SET: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2330 if(!arg) return 0; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2331 case M_PROPERTY_STEP_UP: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2332 case M_PROPERTY_STEP_DOWN: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2333 m_property_flag(prop,action,arg,&forced_subs_only); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2334 spudec_set_forced_subs_only(vo_spudec,forced_subs_only); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2335 return 1; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2336 default: |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2337 return m_property_flag(prop,action,arg,&forced_subs_only); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2338 } |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2339 |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2340 } |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2341 |
18261 | 2342 ///@} |
2343 | |
2344 /// \defgroup TVProperties TV properties | |
2345 /// \ingroup Properties | |
2346 ///@{ | |
18190 | 2347 |
2348 #ifdef USE_TV | |
2349 | |
18261 | 2350 /// TV color settings (RW) |
18190 | 2351 static int mp_property_tv_color(m_option_t* prop,int action,void* arg) { |
2352 int r,val; | |
2353 tvi_handle_t* tvh = demuxer->priv; | |
2354 if(demuxer->type != DEMUXER_TYPE_TV || !tvh) return M_PROPERTY_UNAVAILABLE; | |
2355 | |
2356 switch(action) { | |
2357 case M_PROPERTY_SET: | |
2358 if(!arg) return 0; | |
2359 M_PROPERTY_CLAMP(prop,*(int*)arg); | |
2360 return tv_set_color_options(tvh,(int)prop->priv,*(int*)arg); | |
2361 case M_PROPERTY_GET: | |
2362 return tv_get_color_options(tvh,(int)prop->priv,arg); | |
2363 case M_PROPERTY_STEP_UP: | |
2364 case M_PROPERTY_STEP_DOWN: | |
2365 if((r = tv_get_color_options(tvh,(int)prop->priv,&val)) >= 0) { | |
2366 if(!r) return 0; | |
2367 val += (arg ? *(int*)arg : 1) * | |
2368 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | |
2369 M_PROPERTY_CLAMP(prop,val); | |
2370 return tv_set_color_options(tvh,(int)prop->priv,val); | |
2371 } | |
2372 return 0; | |
2373 } | |
2374 return M_PROPERTY_NOT_IMPLEMENTED; | |
2375 } | |
2376 | |
2377 #endif | |
2378 | |
18261 | 2379 ///@} |
2380 | |
2381 /// All properties available in MPlayer. | |
2382 /** \ingroup Properties | |
2383 */ | |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2384 static m_option_t mp_properties[] = { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2385 // General |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2386 { "osdlevel", mp_property_osdlevel, CONF_TYPE_INT, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2387 M_OPT_RANGE, 0, 3, NULL }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2388 { "speed", mp_property_playback_speed, CONF_TYPE_FLOAT, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2389 M_OPT_RANGE, 0.01, 100.0, NULL }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2390 { "filename", mp_property_filename, CONF_TYPE_STRING, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2391 0, 0, 0, NULL }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2392 { "path", mp_property_path, CONF_TYPE_STRING, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2393 0, 0, 0, NULL }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2394 { "demuxer", mp_property_demuxer, CONF_TYPE_STRING, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2395 0, 0, 0, NULL }, |
18226
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2396 { "stream_pos", mp_property_stream_pos, CONF_TYPE_POSITION, |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2397 M_OPT_MIN, 0, 0, NULL }, |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2398 { "stream_start", mp_property_stream_start, CONF_TYPE_POSITION, |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2399 M_OPT_MIN, 0, 0, NULL }, |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2400 { "stream_end", mp_property_stream_end, CONF_TYPE_POSITION, |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2401 M_OPT_MIN, 0, 0, NULL }, |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2402 { "stream_length", mp_property_stream_length, CONF_TYPE_POSITION, |
fcf90803a951
Add properties to get/set the stream position and get the stream
albeu
parents:
18223
diff
changeset
|
2403 M_OPT_MIN, 0, 0, NULL }, |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2404 { "length", mp_property_length, CONF_TYPE_DOUBLE, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2405 0, 0, 0, NULL }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2406 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2407 // Audio |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2408 { "volume", mp_property_volume, CONF_TYPE_FLOAT, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2409 M_OPT_RANGE, 0, 100, NULL }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2410 { "mute", mp_property_mute, CONF_TYPE_FLAG, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2411 M_OPT_RANGE, 0, 1, NULL }, |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2412 { "audio_delay", mp_property_audio_delay, CONF_TYPE_FLOAT, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2413 M_OPT_RANGE, -100, 100, NULL }, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2414 { "audio_format", mp_property_audio_format, CONF_TYPE_INT, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2415 0, 0, 0, NULL }, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2416 { "audio_bitrate", mp_property_audio_bitrate, CONF_TYPE_INT, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2417 0, 0, 0, NULL }, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2418 { "samplerate", mp_property_samplerate, CONF_TYPE_INT, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2419 0, 0, 0, NULL }, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2420 { "channels", mp_property_channels, CONF_TYPE_INT, |
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2421 0, 0, 0, NULL }, |
20156 | 2422 { "switch_audio", mp_property_audio, CONF_TYPE_INT, |
2423 -1, -1, 0, NULL }, | |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2424 |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2425 // Video |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2426 { "fullscreen", mp_property_fullscreen, CONF_TYPE_FLAG, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2427 M_OPT_RANGE, 0, 1, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2428 { "ontop", mp_property_ontop, CONF_TYPE_FLAG, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2429 M_OPT_RANGE, 0, 1, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2430 { "rootwin", mp_property_rootwin, CONF_TYPE_FLAG, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2431 M_OPT_RANGE, 0, 1, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2432 { "border", mp_property_border, CONF_TYPE_FLAG, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2433 M_OPT_RANGE, 0, 1, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2434 { "framedropping", mp_property_framedropping, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2435 M_OPT_RANGE, 0, 2, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2436 { "gamma", mp_property_gamma, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2437 M_OPT_RANGE, -100, 100, &vo_gamma_gamma }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2438 { "brightness", mp_property_gamma, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2439 M_OPT_RANGE, -100, 100, &vo_gamma_brightness }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2440 { "contrast", mp_property_gamma, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2441 M_OPT_RANGE, -100, 100, &vo_gamma_contrast }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2442 { "saturation", mp_property_gamma, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2443 M_OPT_RANGE, -100, 100, &vo_gamma_saturation }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2444 { "hue", mp_property_gamma, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2445 M_OPT_RANGE, -100, 100, &vo_gamma_hue }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2446 { "panscan", mp_property_panscan, CONF_TYPE_FLOAT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2447 M_OPT_RANGE, 0, 1, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2448 { "vsync", mp_property_vsync, CONF_TYPE_FLAG, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2449 M_OPT_RANGE, 0, 1, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2450 { "video_format", mp_property_video_format, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2451 0, 0, 0, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2452 { "video_bitrate", mp_property_video_bitrate, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2453 0, 0, 0, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2454 { "width", mp_property_width, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2455 0, 0, 0, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2456 { "height", mp_property_height, CONF_TYPE_INT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2457 0, 0, 0, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2458 { "fps", mp_property_fps, CONF_TYPE_FLOAT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2459 0, 0, 0, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2460 { "aspect", mp_property_aspect, CONF_TYPE_FLOAT, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2461 0, 0, 0, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2462 |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2463 // Subs |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2464 { "sub", mp_property_sub, CONF_TYPE_INT, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2465 M_OPT_MIN, -1, 0, NULL }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2466 { "sub_delay", mp_property_sub_delay, CONF_TYPE_FLOAT, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2467 0, 0, 0, NULL }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2468 { "sub_pos", mp_property_sub_pos, CONF_TYPE_INT, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2469 M_OPT_RANGE, 0, 100, NULL }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2470 { "sub_alignment", mp_property_sub_alignment, CONF_TYPE_INT, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2471 M_OPT_RANGE, 0, 2, NULL }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2472 { "sub_visibility", mp_property_sub_visibility, CONF_TYPE_FLAG, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2473 M_OPT_RANGE, 0, 1, NULL }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2474 { "sub_forced_only", mp_property_sub_forced_only, CONF_TYPE_FLAG, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2475 M_OPT_RANGE, 0, 1, NULL }, |
18190 | 2476 |
2477 #ifdef USE_TV | |
2478 { "tv_brightness", mp_property_tv_color, CONF_TYPE_INT, | |
2479 M_OPT_RANGE, -100, 100, (void*)TV_COLOR_BRIGHTNESS }, | |
2480 { "tv_contrast", mp_property_tv_color, CONF_TYPE_INT, | |
2481 M_OPT_RANGE, -100, 100, (void*)TV_COLOR_CONTRAST }, | |
2482 { "tv_saturation", mp_property_tv_color, CONF_TYPE_INT, | |
2483 M_OPT_RANGE, -100, 100, (void*)TV_COLOR_SATURATION }, | |
2484 { "tv_hue", mp_property_tv_color, CONF_TYPE_INT, | |
2485 M_OPT_RANGE, -100, 100, (void*)TV_COLOR_HUE }, | |
2486 #endif | |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2487 |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2488 { NULL, NULL, NULL, 0, 0, 0, NULL } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2489 }; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2490 |
19053
75327b24e06f
marks several string parameters as const, as they are not modified inside the function, Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
19017
diff
changeset
|
2491 m_option_t* mp_property_find(const char* name) { |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2492 return m_option_list_find(mp_properties,name); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2493 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2494 |
19104
2ec2301183cd
marks several read-only string parameters which aren't modified inside the called function as const. Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
19053
diff
changeset
|
2495 int mp_property_do(const char* name,int action, void* val) { |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2496 m_option_t* p = mp_property_find(name); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2497 if(!p) return M_PROPERTY_UNAVAILABLE; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2498 return m_property_do(p,action,val); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2499 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2500 |
18261 | 2501 ///@} |
2502 // Properties group | |
2503 | |
2504 | |
2505 /** | |
2506 * \defgroup Command2Property Command to property bridge | |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2507 * |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2508 * It is used to handle most commands that just set a property |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2509 * and optionally display something on the OSD. |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2510 * Two kinds of commands are handled: adjust or toggle. |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2511 * |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2512 * Adjust commands take 1 or 2 parameters: <value> <abs> |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2513 * If <abs> is non-zero the property is set to the given value |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2514 * otherwise it is adjusted. |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2515 * |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2516 * Toggle commands take 0 or 1 parameters. With no parameter |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2517 * or a value less than the property minimum it just steps the |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2518 * property to its next value. Otherwise it sets it to the given |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2519 * value. |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2520 * |
18261 | 2521 *@{ |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2522 */ |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2523 |
18261 | 2524 /// List of the commands that can be handled by setting a property. |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2525 static struct { |
18261 | 2526 /// property name |
19110
08888397444e
marks several strings inside structs as const when they hold just
reynaldo
parents:
19104
diff
changeset
|
2527 const char* name; |
18261 | 2528 /// cmd id |
2529 int cmd; | |
2530 /// set/adjust or toggle command | |
2531 int toggle; | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2532 /// progressbar type |
18261 | 2533 int osd_progbar; |
2534 /// osd msg id if it must be shared | |
2535 int osd_id; | |
2536 /// osd msg template | |
19110
08888397444e
marks several strings inside structs as const when they hold just
reynaldo
parents:
19104
diff
changeset
|
2537 const char* osd_msg; |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2538 } set_prop_cmd[] = { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2539 // audio |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2540 { "volume", MP_CMD_VOLUME, 0, OSD_VOLUME, -1, MSGTR_Volume }, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2541 { "mute", MP_CMD_MUTE, 1, 0, -1, MSGTR_MuteStatus }, |
17925
caa86b1793fe
Move audio_delay to a property and add a few read only properties to
albeu
parents:
17914
diff
changeset
|
2542 { "audio_delay", MP_CMD_AUDIO_DELAY, 0, 0, -1, MSGTR_AVDelayStatus }, |
20156 | 2543 { "switch_audio", MP_CMD_SWITCH_AUDIO, 1, 0, -1, MSGTR_OSDAudio }, |
17928
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2544 // video |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2545 { "fullscreen", MP_CMD_VO_FULLSCREEN, 1, 0, -1, NULL }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2546 { "panscan", MP_CMD_PANSCAN, 0, OSD_PANSCAN, -1, MSGTR_Panscan }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2547 { "ontop", MP_CMD_VO_ONTOP, 1, 0, -1, MSGTR_OnTopStatus }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2548 { "rootwin", MP_CMD_VO_ROOTWIN, 1, 0, -1, MSGTR_RootwinStatus }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2549 { "border", MP_CMD_VO_BORDER, 1, 0, -1, MSGTR_BorderStatus }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2550 { "framedropping", MP_CMD_FRAMEDROPPING, 1, 0, -1, MSGTR_FramedroppingStatus }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2551 { "gamma", MP_CMD_GAMMA, 0, OSD_BRIGHTNESS, -1, MSGTR_Gamma }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2552 { "brightness", MP_CMD_BRIGHTNESS, 0, OSD_BRIGHTNESS, -1, MSGTR_Brightness }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2553 { "contrast", MP_CMD_CONTRAST, 0, OSD_CONTRAST, -1, MSGTR_Contrast }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2554 { "saturation", MP_CMD_SATURATION, 0, OSD_SATURATION, -1, MSGTR_Saturation }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2555 { "hue", MP_CMD_HUE, 0, OSD_HUE, -1, MSGTR_Hue }, |
e0f20946e398
Convert fullscreen, panscan, color controls, ontop, rootwin,
albeu
parents:
17925
diff
changeset
|
2556 { "vsync", MP_CMD_SWITCH_VSYNC, 1, 0, -1, MSGTR_VSyncStatus }, |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2557 // subs |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2558 { "sub", MP_CMD_SUB_SELECT, 1, 0, -1, MSGTR_SubSelectStatus }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2559 { "sub_pos", MP_CMD_SUB_POS, 0, 0, -1, MSGTR_SubPosStatus }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2560 { "sub_alignment", MP_CMD_SUB_ALIGNMENT, 1, 0, -1, MSGTR_SubAlignStatus }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2561 { "sub_delay", MP_CMD_SUB_DELAY, 0, 0, OSD_MSG_SUB_DELAY, MSGTR_SubDelayStatus }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2562 { "sub_visibility", MP_CMD_SUB_VISIBILITY, 1, 0, -1, MSGTR_SubVisibleStatus }, |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
2563 { "sub_forced_only", MP_CMD_SUB_FORCED_ONLY, 1, 0, -1, MSGTR_SubForcedOnlyStatus }, |
18206
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18190
diff
changeset
|
2564 #ifdef USE_TV |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18190
diff
changeset
|
2565 { "tv_brightness", MP_CMD_TV_SET_BRIGHTNESS, 0, OSD_BRIGHTNESS, -1, MSGTR_Brightness }, |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18190
diff
changeset
|
2566 { "tv_hue", MP_CMD_TV_SET_HUE, 0, OSD_HUE, -1, MSGTR_Hue }, |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18190
diff
changeset
|
2567 { "tv_saturation", MP_CMD_TV_SET_SATURATION, 0, OSD_SATURATION, -1, MSGTR_Saturation }, |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18190
diff
changeset
|
2568 { "tv_contrast", MP_CMD_TV_SET_CONTRAST, 0, OSD_CONTRAST, -1, MSGTR_Contrast }, |
4bc744cb60e7
Handle the tv color control commands with the properties.
albeu
parents:
18190
diff
changeset
|
2569 #endif |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2570 { NULL, 0, 0, 0, -1, NULL } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2571 }; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2572 |
18261 | 2573 /// Handle commands that set a property. |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2574 static int set_property_command(mp_cmd_t* cmd) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2575 int i,r; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2576 m_option_t* prop; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2577 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2578 // look for the command |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2579 for(i = 0 ; set_prop_cmd[i].name ; i++) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2580 if(set_prop_cmd[i].cmd == cmd->id) break; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2581 if(!set_prop_cmd[i].name) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2582 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2583 // get the property |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2584 prop = mp_property_find(set_prop_cmd[i].name); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2585 if(!prop) return 0; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2586 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2587 // toggle command |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2588 if(set_prop_cmd[i].toggle) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2589 // set to value |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2590 if(cmd->nargs > 0 && cmd->args[0].v.i >= prop->min) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2591 r = m_property_do(prop,M_PROPERTY_SET,&cmd->args[0].v.i); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2592 else |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2593 r = m_property_do(prop,M_PROPERTY_STEP_UP,NULL); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2594 } else if(cmd->args[1].v.i) //set |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2595 r = m_property_do(prop,M_PROPERTY_SET,&cmd->args[0].v); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2596 else // adjust |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2597 r = m_property_do(prop,M_PROPERTY_STEP_UP,&cmd->args[0].v); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2598 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2599 if(r <= 0) return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2600 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2601 if(set_prop_cmd[i].osd_progbar) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2602 if(prop->type == CONF_TYPE_INT) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2603 if(m_property_do(prop,M_PROPERTY_GET,&r) > 0) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2604 set_osd_bar(set_prop_cmd[i].osd_progbar, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2605 set_prop_cmd[i].osd_msg, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2606 prop->min,prop->max,r); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2607 } else if(prop->type == CONF_TYPE_FLOAT) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2608 float f; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2609 if(m_property_do(prop,M_PROPERTY_GET,&f) > 0) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2610 set_osd_bar(set_prop_cmd[i].osd_progbar,set_prop_cmd[i].osd_msg, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2611 prop->min,prop->max,f); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2612 } else |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2613 mp_msg(MSGT_CPLAYER,MSGL_ERR, "Property use an unsupported type.\n"); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2614 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2615 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2616 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2617 if(set_prop_cmd[i].osd_msg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2618 char* val = m_property_print(prop); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2619 if(val) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2620 set_osd_msg(set_prop_cmd[i].osd_id >= 0 ? set_prop_cmd[i].osd_id : |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2621 OSD_MSG_PROPERTY+i,1,osd_duration, |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2622 set_prop_cmd[i].osd_msg,val); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2623 free(val); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2624 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2625 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2626 return 1; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2627 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
2628 |
18733 | 2629 static void reinit_audio_chain(void) { |
18679
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2630 if(sh_audio){ |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2631 current_module="init_audio_codec"; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2632 mp_msg(MSGT_CPLAYER,MSGL_INFO,"==========================================================================\n"); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2633 if(!init_best_audio_codec(sh_audio,audio_codec_list,audio_fm_list)){ |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2634 sh_audio=d_audio->sh=NULL; // failed to init :( |
18897
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
2635 d_audio->id = -2; |
18679
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2636 return; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2637 } else |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2638 inited_flags|=INITED_ACODEC; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2639 mp_msg(MSGT_CPLAYER,MSGL_INFO,"==========================================================================\n"); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2640 |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2641 |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2642 //const ao_info_t *info=audio_out->info; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2643 current_module="af_preinit"; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2644 ao_data.samplerate=force_srate; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2645 ao_data.channels=0; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2646 ao_data.format=audio_output_format; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2647 #if 1 |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2648 // first init to detect best values |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2649 if(!preinit_audio_filters(sh_audio, |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2650 // input: |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2651 (int)(sh_audio->samplerate*playback_speed), |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2652 sh_audio->channels, sh_audio->sample_format, |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2653 // output: |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2654 &ao_data.samplerate, &ao_data.channels, &ao_data.format)){ |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2655 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_AudioFilterChainPreinitError); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2656 exit_player(MSGTR_Exit_error); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2657 } |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2658 #endif |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2659 current_module="ao2_init"; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2660 if(!(audio_out=init_best_audio_out(audio_driver_list, |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2661 0, // plugin flag |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2662 ao_data.samplerate, |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2663 ao_data.channels, |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2664 ao_data.format,0))){ |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2665 // FAILED: |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2666 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CannotInitAO); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2667 uninit_player(INITED_ACODEC); // close codec |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2668 sh_audio=d_audio->sh=NULL; // -> nosound |
18897
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
2669 d_audio->id = -2; |
18679
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2670 return; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2671 } else { |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2672 // SUCCESS: |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2673 inited_flags|=INITED_AO; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2674 mp_msg(MSGT_CPLAYER,MSGL_INFO,"AO: [%s] %dHz %dch %s (%d bytes per sample)\n", |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2675 audio_out->info->short_name, |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2676 ao_data.samplerate, ao_data.channels, |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2677 af_fmt2str_short(ao_data.format), |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2678 af_fmt2bits(ao_data.format)/8 ); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2679 mp_msg(MSGT_CPLAYER,MSGL_V,"AO: Description: %s\nAO: Author: %s\n", |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2680 audio_out->info->name, audio_out->info->author); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2681 if(strlen(audio_out->info->comment) > 0) |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2682 mp_msg(MSGT_CPLAYER,MSGL_V,"AO: Comment: %s\n", audio_out->info->comment); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2683 // init audio filters: |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2684 #if 1 |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2685 current_module="af_init"; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2686 if(!build_afilter_chain(sh_audio, &ao_data)) { |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2687 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_NoMatchingFilter); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2688 // mp_msg(MSGT_CPLAYER,MSGL_ERR,"Couldn't find matching filter / ao format! -> NOSOUND\n"); |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2689 // uninit_player(INITED_ACODEC|INITED_AO); // close codec & ao |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2690 // sh_audio=d_audio->sh=NULL; // -> nosound |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2691 } |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2692 #endif |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2693 } |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2694 mixer.audio_out = audio_out; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2695 mixer.volstep = volstep; |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2696 } |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2697 } |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2698 |
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
2699 |
18261 | 2700 ///@} |
2701 // Command2Property | |
2702 | |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2703 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2704 // Return pts value corresponding to the end point of audio written to the |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2705 // ao so far. |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2706 static double written_audio_pts(sh_audio_t *sh_audio, demux_stream_t *d_audio) |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2707 { |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2708 // first calculate the end pts of audio that has been output by decoder |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2709 double a_pts = sh_audio->pts; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2710 if (a_pts != MP_NOPTS_VALUE) |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2711 // Good, decoder supports new way of calculating audio pts. |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2712 // sh_audio->pts is the timestamp of the latest input packet with |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2713 // known pts that the decoder has decoded. sh_audio->pts_bytes is |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2714 // the amount of bytes the decoder has written after that timestamp. |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2715 a_pts += sh_audio->pts_bytes / (double) sh_audio->o_bps; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2716 else { |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2717 // Decoder doesn't support new way of calculating pts (or we're |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2718 // being called before it has decoded anything with known timestamp). |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2719 // Use the old method of audio pts calculation: take the timestamp |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2720 // of last packet with known pts the decoder has read data from, |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2721 // and add amount of bytes read after the beginning of that packet |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2722 // divided by input bps. This will be inaccurate if the input/output |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2723 // ratio is not constant for every audio packet or if it is constant |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2724 // but not accurately known in sh_audio->i_bps. |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2725 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2726 a_pts = d_audio->pts; |
19216
5fd000355777
cosmetics: fix incorrect indentation left by reimar and extra word in
uau
parents:
19209
diff
changeset
|
2727 // ds_tell_pts returns bytes read after last timestamp from |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2728 // demuxing layer, decoder might use sh_audio->a_in_buffer for bytes |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2729 // it has read but not decoded |
19183
942000d171f4
demuxer might not set i_bps, so do not divide by it in that case
reimar
parents:
19110
diff
changeset
|
2730 if (sh_audio->i_bps) |
19216
5fd000355777
cosmetics: fix incorrect indentation left by reimar and extra word in
uau
parents:
19209
diff
changeset
|
2731 a_pts += (ds_tell_pts(d_audio) - sh_audio->a_in_buffer_len) / |
5fd000355777
cosmetics: fix incorrect indentation left by reimar and extra word in
uau
parents:
19209
diff
changeset
|
2732 (double)sh_audio->i_bps; |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2733 } |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2734 // Now a_pts hopefully holds the pts for end of audio from decoder. |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2735 // Substract data in buffers between decoder and audio out. |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2736 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2737 // Decoded but not filtered |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2738 a_pts -= sh_audio->a_buffer_len / (double)sh_audio->o_bps; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2739 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2740 // Data that was ready for ao but was buffered because ao didn't fully |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2741 // accept everything to internal buffers yet |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2742 a_pts -= sh_audio->a_out_buffer_len * playback_speed / (double)ao_data.bps; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2743 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2744 return a_pts; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2745 } |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2746 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2747 // Return pts value corresponding to currently playing audio. |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2748 static double playing_audio_pts(sh_audio_t *sh_audio, demux_stream_t *d_audio, |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2749 ao_functions_t *audio_out) |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2750 { |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2751 return written_audio_pts(sh_audio, d_audio) - playback_speed * |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2752 audio_out->get_delay(); |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2753 } |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2754 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
2755 |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2756 static int generate_video_frame(sh_video_t *sh_video, demux_stream_t *d_video) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2757 { |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2758 unsigned char *start; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2759 int in_size; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2760 int hit_eof=0; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2761 double pts; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2762 |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2763 while (1) { |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2764 current_module = "decode video"; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2765 // XXX Time used in this call is not counted in any performance |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2766 // timer now |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2767 if (vf_output_queued_frame(sh_video->vfilter)) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2768 break; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2769 current_module = "video_read_frame"; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2770 in_size = ds_get_packet_pts(d_video, &start, &pts); |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2771 if (in_size < 0) { |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2772 // try to extract last frames in case of decoder lag |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2773 in_size = 0; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2774 pts = 1e300; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2775 hit_eof = 1; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2776 } |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2777 if (in_size > max_framesize) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2778 max_framesize = in_size; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2779 if (pts == MP_NOPTS_VALUE) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2780 mp_msg(MSGT_CPLAYER, MSGL_ERR, "pts value from demuxer MISSING\n"); |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2781 if (decode_video(sh_video, start, in_size, 0, pts)) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2782 break; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2783 if (hit_eof) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2784 return 0; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2785 } |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2786 return 1; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2787 } |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2788 |
19850
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2789 static void rescale_input_coordinates(int ix, int iy, double *dx, double *dy) { |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2790 //remove the borders, if any, and rescale to the range [0,1],[0,1] |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2791 if(vo_fs) { //we are in full-screen mode |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2792 if(vo_screenwidth > vo_dwidth) //there are borders along the x axis |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2793 ix -= (vo_screenwidth - vo_dwidth) / 2; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2794 if(vo_screenheight > vo_dheight) //there are borders along the y axis (usual way) |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2795 iy -= (vo_screenheight - vo_dheight) / 2; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2796 |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2797 if(ix < 0 || ix > vo_dwidth) {*dx = *dy = -1.0; return; } //we are on one of the borders |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2798 if(iy < 0 || iy > vo_dheight) {*dx = *dy = -1.0; return; } //we are on one of the borders |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2799 } |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2800 |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2801 *dx = (double) ix / (double) vo_dwidth; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2802 *dy = (double) iy / (double) vo_dheight; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2803 |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2804 mp_msg(MSGT_CPLAYER,MSGL_V, "\r\nrescaled coordinates: %.3lf, %.3lf, screen (%d x %d), vodisplay: (%d, %d), fullscreen: %d\r\n", |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2805 *dx, *dy, vo_screenwidth, vo_screenheight, vo_dwidth, vo_dheight, vo_fs); |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
2806 } |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
2807 |
7201
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
2808 int main(int argc,char* argv[]){ |
22beff6edf75
Improved MacOS X SDL support, enable SDL main() wrapper for Darwin, remove unused envp.
atmos4
parents:
7191
diff
changeset
|
2809 |
723 | 2810 |
12890 | 2811 char * mem_ptr; |
1289 | 2812 |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
2813 int file_format=DEMUXER_TYPE_UNKNOWN; |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
2814 |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
2815 // movie info: |
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
2816 |
18231 | 2817 #ifdef HAVE_RTC |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
2818 int rtc_fd=-1; |
18231 | 2819 #endif |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
2820 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2821 /* Flag indicating whether MPlayer should exit without playing anything. */ |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2822 int opt_exit = 0; |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
2823 |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
2824 //float a_frame=0; // Audio |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
2825 |
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
2826 int i; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
2827 char *tmp; |
1014
e01dc1a88edf
fixed punkso's mess... local variables moved back to main()
arpi_esp
parents:
1009
diff
changeset
|
2828 |
1787
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
2829 int gui_no_filename=0; |
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
2830 |
18983
6ffd0c1f708e
1000000000l to whoever added c++ decl crap, probably uau..
rfelker
parents:
18945
diff
changeset
|
2831 struct {double pts; vo_functions_t *vo;} vf_vo_data; |
9610 | 2832 |
8932
967a1d1f70c6
The following patch adds a call to srand() with the current time at the
arpi
parents:
8925
diff
changeset
|
2833 srand((int) time(NULL)); |
967a1d1f70c6
The following patch adds a call to srand() with the current time at the
arpi
parents:
8925
diff
changeset
|
2834 |
15288 | 2835 InitTimer(); |
2836 | |
5221 | 2837 mp_msg_init(); |
1567 | 2838 |
17312 | 2839 mp_msg(MSGT_CPLAYER,MSGL_INFO, "MPlayer " VERSION " (C) 2000-2006 MPlayer Team\n"); |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2840 /* Test for CPU capabilities (and corresponding OS support) for optimizing */ |
9003 | 2841 GetCpuCaps(&gCpuCaps); |
14610
9e81b41838e6
Print CPUflags and extension support on x86_64, too
reimar
parents:
14561
diff
changeset
|
2842 #if defined(ARCH_X86) || defined(ARCH_X86_64) |
6135 | 2843 mp_msg(MSGT_CPLAYER,MSGL_INFO,"CPUflags: MMX: %d MMX2: %d 3DNow: %d 3DNow2: %d SSE: %d SSE2: %d\n", |
2844 gCpuCaps.hasMMX,gCpuCaps.hasMMX2, | |
2272 | 2845 gCpuCaps.has3DNow, gCpuCaps.has3DNowExt, |
2846 gCpuCaps.hasSSE, gCpuCaps.hasSSE2); | |
3742 | 2847 #ifdef RUNTIME_CPUDETECT |
6930 | 2848 mp_msg(MSGT_CPLAYER,MSGL_INFO, MSGTR_CompiledWithRuntimeDetection); |
3742 | 2849 #else |
6930 | 2850 mp_msg(MSGT_CPLAYER,MSGL_INFO, MSGTR_CompiledWithCPUExtensions); |
3742 | 2851 #ifdef HAVE_MMX |
2852 mp_msg(MSGT_CPLAYER,MSGL_INFO," MMX"); | |
2853 #endif | |
2854 #ifdef HAVE_MMX2 | |
2855 mp_msg(MSGT_CPLAYER,MSGL_INFO," MMX2"); | |
2856 #endif | |
2857 #ifdef HAVE_3DNOW | |
2858 mp_msg(MSGT_CPLAYER,MSGL_INFO," 3DNow"); | |
2859 #endif | |
2860 #ifdef HAVE_3DNOWEX | |
2861 mp_msg(MSGT_CPLAYER,MSGL_INFO," 3DNowEx"); | |
2862 #endif | |
2863 #ifdef HAVE_SSE | |
2864 mp_msg(MSGT_CPLAYER,MSGL_INFO," SSE"); | |
2865 #endif | |
6135 | 2866 #ifdef HAVE_SSE2 |
2867 mp_msg(MSGT_CPLAYER,MSGL_INFO," SSE2"); | |
2868 #endif | |
18151 | 2869 mp_msg(MSGT_CPLAYER,MSGL_INFO,"\n"); |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
2870 #endif /* RUNTIME_CPUDETECT */ |
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
2871 #endif /* defined(ARCH_X86) || defined(ARCH_X86_64) */ |
2272 | 2872 |
10646 | 2873 #if defined(WIN32) && defined(USE_WIN32DLL) |
16781
6809ca5dd307
allow mencoder to load win32 codecs properly patch by Zuxy <zuxy.meng at gmail.com>
faust3
parents:
16758
diff
changeset
|
2874 set_path_env(); |
10646 | 2875 #endif /*WIN32 && USE_WIN32DLL*/ |
2876 | |
7068
6c2d746b17bf
10l, fix compiling without tv. patch by Andreas Hess <jaska@gmx.net>
arpi
parents:
7058
diff
changeset
|
2877 #ifdef USE_TV |
5572
8cd761968f35
BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents:
5520
diff
changeset
|
2878 tv_param_immediate = 1; |
7068
6c2d746b17bf
10l, fix compiling without tv. patch by Andreas Hess <jaska@gmx.net>
arpi
parents:
7058
diff
changeset
|
2879 #endif |
5572
8cd761968f35
BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents:
5520
diff
changeset
|
2880 |
19355
ba95c4fa0684
Reintroduce an ugly variant of the -gui/-nogui options.
reimar
parents:
19342
diff
changeset
|
2881 if (argc > 1 && argv[1] && |
ba95c4fa0684
Reintroduce an ugly variant of the -gui/-nogui options.
reimar
parents:
19342
diff
changeset
|
2882 (!strcmp(argv[1], "-gui") || !strcmp(argv[1], "-nogui"))) { |
ba95c4fa0684
Reintroduce an ugly variant of the -gui/-nogui options.
reimar
parents:
19342
diff
changeset
|
2883 use_gui = !strcmp(argv[1], "-gui"); |
ba95c4fa0684
Reintroduce an ugly variant of the -gui/-nogui options.
reimar
parents:
19342
diff
changeset
|
2884 } else |
1709 | 2885 if ( argv[0] ) |
18939
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2886 { |
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2887 char *base = strrchr(argv[0], '/'); |
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2888 if (!base) |
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2889 base = strrchr(argv[0], '\\'); |
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2890 if (!base) |
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2891 base = argv[0]; |
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2892 if(strstr(base, "gmplayer")) |
1709 | 2893 use_gui=1; |
18939
cde5b56f1610
Change use_gui detection to accept also filenames only containing
reimar
parents:
18938
diff
changeset
|
2894 } |
1639 | 2895 |
8164
487cfc28525d
New config system + cleanup of header inter dependency
albeu
parents:
8123
diff
changeset
|
2896 mconfig = m_config_new(); |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
2897 m_config_register_options(mconfig,mplayer_opts); |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
2898 // TODO : add something to let modules register their options |
7867 | 2899 mp_input_register_options(mconfig); |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
2900 parse_cfgfiles(mconfig); |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
2901 |
7019 | 2902 #ifdef HAVE_NEW_GUI |
2903 if ( use_gui ) cfg_read(); | |
2904 #endif | |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
2905 |
8164
487cfc28525d
New config system + cleanup of header inter dependency
albeu
parents:
8123
diff
changeset
|
2906 playtree = m_config_parse_mp_command_line(mconfig, argc, argv); |
487cfc28525d
New config system + cleanup of header inter dependency
albeu
parents:
8123
diff
changeset
|
2907 if(playtree == NULL) |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
2908 opt_exit = 1; |
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
2909 else { |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2910 playtree = play_tree_cleanup(playtree); |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2911 if(playtree) { |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
2912 playtree_iter = play_tree_iter_new(playtree,mconfig); |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2913 if(playtree_iter) { |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2914 if(play_tree_iter_step(playtree_iter,0,0) != PLAY_TREE_ITER_ENTRY) { |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2915 play_tree_iter_free(playtree_iter); |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2916 playtree_iter = NULL; |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2917 } |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2918 filename = play_tree_iter_get_file(playtree_iter,1); |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2919 } |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2920 } |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
2921 } |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
2922 |
18913 | 2923 #if defined(WIN32) && defined(HAVE_NEW_GUI) |
2924 void *runningmplayer = FindWindow("MPlayer GUI for Windows", "MPlayer for Windows"); | |
2925 if(runningmplayer && filename && use_gui){ | |
2926 COPYDATASTRUCT csData; | |
2927 char file[MAX_PATH]; | |
2928 char *filepart = filename; | |
2929 if(GetFullPathName(filename, MAX_PATH, file, &filepart)){ | |
2930 csData.dwData = 0; | |
2931 csData.cbData = strlen(file)*2; | |
2932 csData.lpData = file; | |
2933 SendMessage(runningmplayer, WM_COPYDATA, (WPARAM)runningmplayer, (LPARAM)&csData); | |
2934 } | |
2935 } | |
2936 #endif | |
2937 | |
15042
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2938 #ifdef WIN32 |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2939 if(proc_priority){ |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2940 int i; |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2941 for(i=0; priority_presets_defs[i].name; i++){ |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2942 if(strcasecmp(priority_presets_defs[i].name, proc_priority) == 0) |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2943 break; |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2944 } |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2945 mp_msg(MSGT_CPLAYER,MSGL_STATUS,"Setting process priority: %s\n", |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2946 priority_presets_defs[i].name); |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2947 SetPriorityClass(GetCurrentProcess(), priority_presets_defs[i].prio); |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2948 } |
265d8b8adbbe
windows priority support patch by Rune Petersen <runner at mail.tele.dk> with the freedom to shoot yourself in the foot
faust3
parents:
14818
diff
changeset
|
2949 #endif |
1709 | 2950 #ifndef HAVE_NEW_GUI |
2951 if(use_gui){ | |
1973
5216f108cb4f
all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents:
1962
diff
changeset
|
2952 mp_msg(MSGT_CPLAYER,MSGL_WARN,MSGTR_NoGui); |
1709 | 2953 use_gui=0; |
2954 } | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
2955 #else |
18945
337d4324c766
No point in checking for X for windows gui, in addition the hackish
reimar
parents:
18939
diff
changeset
|
2956 #ifndef WIN32 |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
2957 if(use_gui && !vo_init()){ |
1973
5216f108cb4f
all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents:
1962
diff
changeset
|
2958 mp_msg(MSGT_CPLAYER,MSGL_WARN,MSGTR_GuiNeedsX); |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
2959 use_gui=0; |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
2960 } |
18945
337d4324c766
No point in checking for X for windows gui, in addition the hackish
reimar
parents:
18939
diff
changeset
|
2961 #endif |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
2962 if (use_gui && playtree_iter){ |
9319 | 2963 char cwd[PATH_MAX+2]; |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2964 // Free Playtree and Playtree-Iter as it's not used by the GUI. |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
2965 play_tree_iter_free(playtree_iter); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
2966 playtree_iter=NULL; |
9301
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
2967 |
9318
51a9af80d874
PATH_MAX should be more portable, and we even include limits.h to be sure
arpi
parents:
9317
diff
changeset
|
2968 if (getcwd(cwd, PATH_MAX) != (char *)NULL) |
9301
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
2969 { |
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
2970 strcat(cwd, "/"); |
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
2971 // Prefix relative paths with current working directory |
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
2972 play_tree_add_bpf(playtree, cwd); |
7841308ad250
this patch fixes latest bug, discovered by .so ... (relative filenames &
arpi
parents:
9291
diff
changeset
|
2973 } |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2974 // Import initital playtree into GUI. |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
2975 import_initial_playtree_into_gui(playtree, mconfig, enqueue); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
2976 } |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
2977 #endif /* HAVE_NEW_GUI */ |
1709 | 2978 |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7559
diff
changeset
|
2979 if(video_driver_list && strcmp(video_driver_list[0],"help")==0){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7559
diff
changeset
|
2980 list_video_out(); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
2981 opt_exit = 1; |
956
a6cecd9a1bad
'-ao' switch (including '-ao help'), fixing Arpi's bug (short name 'null' for both of oss and null driver ;)
lgb
parents:
955
diff
changeset
|
2982 } |
5072 | 2983 |
7563
e9e4398029de
audio out driver list support (example: -ao alsa9,sdl:esd,oss,sdl:oss,)
arpi
parents:
7562
diff
changeset
|
2984 if(audio_driver_list && strcmp(audio_driver_list[0],"help")==0){ |
e9e4398029de
audio out driver list support (example: -ao alsa9,sdl:esd,oss,sdl:oss,)
arpi
parents:
7562
diff
changeset
|
2985 list_audio_out(); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
2986 opt_exit = 1; |
956
a6cecd9a1bad
'-ao' switch (including '-ao help'), fixing Arpi's bug (short name 'null' for both of oss and null driver ;)
lgb
parents:
955
diff
changeset
|
2987 } |
1639 | 2988 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
2989 /* Check codecs.conf. */ |
11759
29eea271490e
add -codecs-file for selecting a specific codecs.conf on the comand line
attila
parents:
11592
diff
changeset
|
2990 if(!codecs_file || !parse_codec_cfg(codecs_file)){ |
12890 | 2991 if(!parse_codec_cfg(mem_ptr=get_path("codecs.conf"))){ |
11759
29eea271490e
add -codecs-file for selecting a specific codecs.conf on the comand line
attila
parents:
11592
diff
changeset
|
2992 if(!parse_codec_cfg(MPLAYER_CONFDIR "/codecs.conf")){ |
29eea271490e
add -codecs-file for selecting a specific codecs.conf on the comand line
attila
parents:
11592
diff
changeset
|
2993 if(!parse_codec_cfg(NULL)){ |
29eea271490e
add -codecs-file for selecting a specific codecs.conf on the comand line
attila
parents:
11592
diff
changeset
|
2994 mp_msg(MSGT_CPLAYER,MSGL_HINT,MSGTR_CopyCodecsConf); |
13500 | 2995 exit_player_with_rc(NULL, 0); |
11759
29eea271490e
add -codecs-file for selecting a specific codecs.conf on the comand line
attila
parents:
11592
diff
changeset
|
2996 } |
13946 | 2997 mp_msg(MSGT_CPLAYER,MSGL_V,MSGTR_BuiltinCodecsConf); |
8467
3ca9cc46df5c
Fallback to builtin (generated from etc/codecs.conf at compile time)
arpi
parents:
8450
diff
changeset
|
2998 } |
1983 | 2999 } |
12890 | 3000 free( mem_ptr ); // release the buffer created by get_path() |
1983 | 3001 } |
3002 | |
7506
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3003 #if 0 |
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3004 if(video_codec_list){ |
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3005 int i; |
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3006 video_codec=video_codec_list[0]; |
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3007 for(i=0;video_codec_list[i];i++) |
13577 | 3008 mp_msg(MSGT_FIXME,MSGL_FIXME,"vc#%d: '%s'\n",i,video_codec_list[i]); |
7506
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3009 } |
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3010 #endif |
7522 | 3011 if(audio_codec_list && strcmp(audio_codec_list[0],"help")==0){ |
6930 | 3012 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_AvailableAudioCodecs); |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3013 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_CODECS\n"); |
1983 | 3014 list_codecs(1); |
13577 | 3015 mp_msg(MSGT_FIXME, MSGL_FIXME, "\n"); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3016 opt_exit = 1; |
1983 | 3017 } |
7506
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3018 if(video_codec_list && strcmp(video_codec_list[0],"help")==0){ |
6930 | 3019 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_AvailableVideoCodecs); |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3020 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_CODECS\n"); |
1983 | 3021 list_codecs(0); |
13577 | 3022 mp_msg(MSGT_FIXME, MSGL_FIXME, "\n"); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3023 opt_exit = 1; |
1983 | 3024 } |
7506
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3025 if(video_fm_list && strcmp(video_fm_list[0],"help")==0){ |
7191
1eadce15446c
-afm/-vfm help implemenetd, some cosmetics of ad/vd codec names/comments
arpi
parents:
7180
diff
changeset
|
3026 vfm_help(); |
13577 | 3027 mp_msg(MSGT_FIXME, MSGL_FIXME, "\n"); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3028 opt_exit = 1; |
7191
1eadce15446c
-afm/-vfm help implemenetd, some cosmetics of ad/vd codec names/comments
arpi
parents:
7180
diff
changeset
|
3029 } |
7522 | 3030 if(audio_fm_list && strcmp(audio_fm_list[0],"help")==0){ |
7191
1eadce15446c
-afm/-vfm help implemenetd, some cosmetics of ad/vd codec names/comments
arpi
parents:
7180
diff
changeset
|
3031 afm_help(); |
13577 | 3032 mp_msg(MSGT_FIXME, MSGL_FIXME, "\n"); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3033 opt_exit = 1; |
7191
1eadce15446c
-afm/-vfm help implemenetd, some cosmetics of ad/vd codec names/comments
arpi
parents:
7180
diff
changeset
|
3034 } |
13269
aa13937da8a0
mplayer -af help now lists all available audio filters.
ivo
parents:
13228
diff
changeset
|
3035 if(af_cfg.list && strcmp(af_cfg.list[0],"help")==0){ |
aa13937da8a0
mplayer -af help now lists all available audio filters.
ivo
parents:
13228
diff
changeset
|
3036 af_help(); |
aa13937da8a0
mplayer -af help now lists all available audio filters.
ivo
parents:
13228
diff
changeset
|
3037 printf("\n"); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3038 opt_exit = 1; |
13269
aa13937da8a0
mplayer -af help now lists all available audio filters.
ivo
parents:
13228
diff
changeset
|
3039 } |
9336 | 3040 #ifdef HAVE_X11 |
9317
c7f5df43b937
- support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents:
9315
diff
changeset
|
3041 if(vo_fstype_list && strcmp(vo_fstype_list[0],"help")==0){ |
c7f5df43b937
- support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents:
9315
diff
changeset
|
3042 fstype_help(); |
13577 | 3043 mp_msg(MSGT_FIXME, MSGL_FIXME, "\n"); |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3044 opt_exit = 1; |
9317
c7f5df43b937
- support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents:
9315
diff
changeset
|
3045 } |
9336 | 3046 #endif |
16175 | 3047 if((demuxer_name && strcmp(demuxer_name,"help")==0) || |
3048 (audio_demuxer_name && strcmp(audio_demuxer_name,"help")==0) || | |
3049 (sub_demuxer_name && strcmp(sub_demuxer_name,"help")==0)){ | |
3050 demuxer_help(); | |
3051 mp_msg(MSGT_CPLAYER, MSGL_INFO, "\n"); | |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3052 opt_exit = 1; |
16175 | 3053 } |
17914
f9cb6fc1608a
Add an option to list the properties: -list-properties
albeu
parents:
17911
diff
changeset
|
3054 if(list_properties) { |
f9cb6fc1608a
Add an option to list the properties: -list-properties
albeu
parents:
17911
diff
changeset
|
3055 m_properties_print_help_list(mp_properties); |
f9cb6fc1608a
Add an option to list the properties: -list-properties
albeu
parents:
17911
diff
changeset
|
3056 opt_exit = 1; |
f9cb6fc1608a
Add an option to list the properties: -list-properties
albeu
parents:
17911
diff
changeset
|
3057 } |
1983 | 3058 |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3059 if(opt_exit) |
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3060 exit_player(NULL); |
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
16323
diff
changeset
|
3061 |
16347
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3062 if (player_idle_mode && use_gui) { |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3063 mp_msg(MSGT_CPLAYER, MSGL_FATAL, MSGTR_NoIdleAndGui); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3064 exit_player_with_rc(NULL, 1); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3065 } |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3066 |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3067 if(!filename && !player_idle_mode){ |
1787
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
3068 if(!use_gui){ |
1690 | 3069 // no file/vcd/dvd -> show HELP: |
5112 | 3070 mp_msg(MSGT_CPLAYER, MSGL_INFO, help_text); |
13500 | 3071 exit_player_with_rc(NULL, 0); |
1787
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
3072 } else gui_no_filename=1; |
1690 | 3073 } |
3074 | |
3075 // Many users forget to include command line in bugreports... | |
17932 | 3076 if( mp_msg_test(MSGT_CPLAYER,MSGL_V) ){ |
13577 | 3077 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_CommandLine); |
14530 | 3078 for(i=1;i<argc;i++)mp_msg(MSGT_CPLAYER, MSGL_INFO," '%s'",argv[i]); |
3079 mp_msg(MSGT_CPLAYER, MSGL_INFO, "\n"); | |
1690 | 3080 } |
3081 | |
1639 | 3082 //------ load global data first ------ |
955 | 3083 |
11580
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3084 // check font |
7122
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
3085 #ifdef USE_OSD |
11580
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3086 #ifdef HAVE_FREETYPE |
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3087 init_freetype(); |
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3088 #endif |
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3089 #ifdef HAVE_FONTCONFIG |
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3090 if(!font_fontconfig) |
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3091 { |
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3092 #endif |
19485
d04ee0eb6a11
support for disabling/enabling bitmap font support from configure
diego
parents:
19478
diff
changeset
|
3093 #ifdef HAVE_BITMAP_FONT |
212 | 3094 if(font_name){ |
337 | 3095 vo_font=read_font_desc(font_name,font_factor,verbose>1); |
1582 | 3096 if(!vo_font) mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadFont,font_name); |
220 | 3097 } else { |
3098 // try default: | |
12890 | 3099 vo_font=read_font_desc( mem_ptr=get_path("font/font.desc"),font_factor,verbose>1); |
3100 free(mem_ptr); // release the buffer created by get_path() | |
1353 | 3101 if(!vo_font) |
10272
7b0bc557987b
renames: DATADIR->MPLAYER_DATADIR, CONFDIR->MPLAYER_CONFDIR, LIBDIR->MPLAYER_LIBDIR
arpi
parents:
10240
diff
changeset
|
3102 vo_font=read_font_desc(MPLAYER_DATADIR "/font/font.desc",font_factor,verbose>1); |
212 | 3103 } |
19485
d04ee0eb6a11
support for disabling/enabling bitmap font support from configure
diego
parents:
19478
diff
changeset
|
3104 #endif |
11580
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3105 #ifdef HAVE_FONTCONFIG |
90953d955165
Fontconfig support based on patch by Arwed von Merkatz <v.merkatz@gmx.net>, but slightly reworked
alex
parents:
11542
diff
changeset
|
3106 } |
1422 | 3107 #endif |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
3108 #endif /* USE_OSD */ |
5638
86663f1b9b00
new osd code, use osd objs to follow changes and do minimal updates
arpi
parents:
5627
diff
changeset
|
3109 vo_init_osd(); |
86663f1b9b00
new osd code, use osd objs to follow changes and do minimal updates
arpi
parents:
5627
diff
changeset
|
3110 |
3015 | 3111 #ifdef HAVE_RTC |
5055 | 3112 if(!nortc) |
3113 { | |
7494 | 3114 // seteuid(0); /* Can't hurt to try to get root here */ |
12681 | 3115 if ((rtc_fd = open(rtc_device ? rtc_device : "/dev/rtc", O_RDONLY)) < 0) |
13577 | 3116 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_RTCDeviceNotOpenable, |
12681 | 3117 rtc_device ? rtc_device : "/dev/rtc", strerror(errno)); |
7494 | 3118 else { |
3119 unsigned long irqp = 1024; /* 512 seemed OK. 128 is jerky. */ | |
3120 | |
3121 if (ioctl(rtc_fd, RTC_IRQP_SET, irqp) < 0) { | |
13577 | 3122 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_LinuxRTCInitErrorIrqpSet, irqp, strerror(errno)); |
3123 mp_msg(MSGT_CPLAYER, MSGL_HINT, MSGTR_IncreaseRTCMaxUserFreq, irqp); | |
7494 | 3124 close (rtc_fd); |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3125 rtc_fd = -1; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3126 } else if (ioctl(rtc_fd, RTC_PIE_ON, 0) < 0) { |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3127 /* variable only by the root */ |
13577 | 3128 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_LinuxRTCInitErrorPieOn, strerror(errno)); |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3129 close (rtc_fd); |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3130 rtc_fd = -1; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3131 } else |
13946 | 3132 mp_msg(MSGT_CPLAYER, MSGL_V, MSGTR_UsingRTCTiming, irqp); |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3133 } |
5055 | 3134 } |
4176
116abdd0aed1
small gtk bug fix (-display bug, baze gabu, miattad fogok elkarhozni:), and remove gui dependencie in mencoder
pontscho
parents:
4160
diff
changeset
|
3135 #ifdef HAVE_NEW_GUI |
3825 | 3136 // breaks DGA and SVGAlib and VESA drivers: --A'rpi |
4176
116abdd0aed1
small gtk bug fix (-display bug, baze gabu, miattad fogok elkarhozni:), and remove gui dependencie in mencoder
pontscho
parents:
4160
diff
changeset
|
3137 // and now ? -- Pontscho |
116abdd0aed1
small gtk bug fix (-display bug, baze gabu, miattad fogok elkarhozni:), and remove gui dependencie in mencoder
pontscho
parents:
4160
diff
changeset
|
3138 if(use_gui) setuid( getuid() ); // strongly test, please check this. |
116abdd0aed1
small gtk bug fix (-display bug, baze gabu, miattad fogok elkarhozni:), and remove gui dependencie in mencoder
pontscho
parents:
4160
diff
changeset
|
3139 #endif |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3140 if(rtc_fd<0) |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
3141 #endif /* HAVE_RTC */ |
13946 | 3142 mp_msg(MSGT_CPLAYER, MSGL_V, "Using %s timing\n", |
12954 | 3143 softsleep?"software":timer_name); |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3144 |
1639 | 3145 #ifdef USE_TERMCAP |
3618 | 3146 if ( !use_gui ) load_termcap(NULL); // load key-codes |
1639 | 3147 #endif |
3148 | |
1816 | 3149 // ========== Init keyboard FIFO (connection to libvo) ============ |
1694 | 3150 |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3151 // Init input system |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3152 current_module = "init_input"; |
17890
633f3d0a621b
Enable gui key bindings only when running the gui. Fix enter and esc
albeu
parents:
17732
diff
changeset
|
3153 mp_input_init(use_gui); |
14077
3d3f3cc8494a
use a configurable-size ringbuffer instead of a pipe for buffering key events.
reimar
parents:
14053
diff
changeset
|
3154 #if 0 |
9831 | 3155 make_pipe(&keyb_fifo_get,&keyb_fifo_put); |
3156 | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3157 if(keyb_fifo_get > 0) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3158 mp_input_add_key_fd(keyb_fifo_get,1,NULL,NULL); |
9831 | 3159 #else |
3160 mp_input_add_key_fd(-1,0,mplayer_get_key,NULL); | |
3161 #endif | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3162 if(slave_mode) |
10928 | 3163 #ifndef __MINGW32__ |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3164 mp_input_add_cmd_fd(0,1,NULL,NULL); |
10928 | 3165 #else |
3166 mp_input_add_cmd_fd(0,0,mp_input_win32_slave_cmd_func,NULL); | |
3167 #endif | |
12816 | 3168 else if(!noconsolecontrols) |
9831 | 3169 #ifndef HAVE_NO_POSIX_SELECT |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3170 mp_input_add_key_fd(0,1,NULL,NULL); |
9831 | 3171 #else |
3172 mp_input_add_key_fd(0,0,NULL,NULL); | |
3173 #endif | |
3174 | |
4431 | 3175 inited_flags|=INITED_INPUT; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3176 current_module = NULL; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3177 |
8198 | 3178 #ifdef HAVE_MENU |
3179 if(use_menu) { | |
8723
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3180 if(menu_cfg && menu_init(menu_cfg)) |
13577 | 3181 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitialized, menu_cfg); |
8198 | 3182 else { |
8723
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3183 menu_cfg = get_path("menu.conf"); |
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3184 if(menu_init(menu_cfg)) |
13577 | 3185 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitialized, menu_cfg); |
8723
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3186 else { |
10272
7b0bc557987b
renames: DATADIR->MPLAYER_DATADIR, CONFDIR->MPLAYER_CONFDIR, LIBDIR->MPLAYER_LIBDIR
arpi
parents:
10240
diff
changeset
|
3187 if(menu_init(MPLAYER_CONFDIR "/menu.conf")) |
13577 | 3188 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitialized, MPLAYER_CONFDIR"/menu.conf"); |
8723
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3189 else { |
13577 | 3190 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitFailed); |
8723
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3191 use_menu = 0; |
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3192 } |
48a2c2545d5c
Use system-wide menu.conf file if nothing else is availible,
filon
parents:
8672
diff
changeset
|
3193 } |
8198 | 3194 } |
3195 } | |
3196 #endif | |
3197 | |
13391 | 3198 /// Catch signals |
3199 #ifndef __MINGW32__ | |
3200 signal(SIGCHLD,child_sighandler); | |
3201 #endif | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
3202 |
13794 | 3203 #ifdef CRASH_DEBUG |
3204 prog_path = argv[0]; | |
3205 #endif | |
1639 | 3206 //========= Catch terminate signals: ================ |
3207 // terminate requests: | |
3208 signal(SIGTERM,exit_sighandler); // kill | |
3209 signal(SIGHUP,exit_sighandler); // kill -HUP / xterm closed | |
3210 | |
1729 | 3211 signal(SIGINT,exit_sighandler); // Interrupt from keyboard |
1639 | 3212 |
3213 signal(SIGQUIT,exit_sighandler); // Quit from keyboard | |
16049
0ccf19820216
define SIGHUP and SIGPIPE for MinGW and catch SIGPIPE also in mplayer
reimar
parents:
16036
diff
changeset
|
3214 signal(SIGPIPE,exit_sighandler); // Some window managers cause this |
5367
658ea5d7316a
Allow to disable crasj sighandler to enable creation of coredump files.
atmos4
parents:
5326
diff
changeset
|
3215 #ifdef ENABLE_SIGHANDLER |
1639 | 3216 // fatal errors: |
3217 signal(SIGBUS,exit_sighandler); // bus error | |
3218 signal(SIGSEGV,exit_sighandler); // segfault | |
3219 signal(SIGILL,exit_sighandler); // illegal instruction | |
3220 signal(SIGFPE,exit_sighandler); // floating point exc. | |
3221 signal(SIGABRT,exit_sighandler); // abort() | |
13794 | 3222 #ifdef CRASH_DEBUG |
3223 if (crash_debug) | |
3224 signal(SIGTRAP,exit_sighandler); | |
3225 #endif | |
5367
658ea5d7316a
Allow to disable crasj sighandler to enable creation of coredump files.
atmos4
parents:
5326
diff
changeset
|
3226 #endif |
1639 | 3227 |
4963 | 3228 #ifdef HAVE_NEW_GUI |
3229 if(use_gui){ | |
6218 | 3230 guiInit(); |
4963 | 3231 inited_flags|=INITED_GUI; |
4974 | 3232 guiGetEvent( guiCEvent,(char *)((gui_no_filename) ? 0 : 1) ); |
4963 | 3233 } |
3234 #endif | |
3235 | |
5983 | 3236 // ******************* Now, let's see the per-file stuff ******************** |
3237 | |
1639 | 3238 play_next_file: |
1787
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
3239 |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3240 // init global sub numbers |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3241 global_sub_size = 0; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3242 { int i; for (i = 0; i < SUB_SOURCES; i++) global_sub_indices[i] = -1; } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3243 |
8614
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
3244 if (filename) load_per_file_config (mconfig, filename); |
49e36bf2f342
The patch adds support for a per-file config, which is loaded before
arpi
parents:
8612
diff
changeset
|
3245 |
4835
1f59d4d73558
Fix my mistake (forgot to remove a getch2_enable) but in the rigth
albeu
parents:
4834
diff
changeset
|
3246 // We must enable getch2 here to be able to interrupt network connection |
1f59d4d73558
Fix my mistake (forgot to remove a getch2_enable) but in the rigth
albeu
parents:
4834
diff
changeset
|
3247 // or cache filling |
12816 | 3248 if(!noconsolecontrols && !slave_mode){ |
5983 | 3249 if(inited_flags&INITED_GETCH2) |
13577 | 3250 mp_msg(MSGT_CPLAYER,MSGL_WARN,MSGTR_Getch2InitializedTwice); |
5983 | 3251 else |
3252 getch2_enable(); // prepare stdin for hotkeys... | |
4835
1f59d4d73558
Fix my mistake (forgot to remove a getch2_enable) but in the rigth
albeu
parents:
4834
diff
changeset
|
3253 inited_flags|=INITED_GETCH2; |
5154 | 3254 mp_msg(MSGT_CPLAYER,MSGL_DBG2,"\n[[[init getch2]]]\n"); |
4835
1f59d4d73558
Fix my mistake (forgot to remove a getch2_enable) but in the rigth
albeu
parents:
4834
diff
changeset
|
3255 } |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
3256 |
5983 | 3257 // =================== GUI idle loop (STOP state) =========================== |
1745 | 3258 #ifdef HAVE_NEW_GUI |
1787
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
3259 if ( use_gui ) { |
8423 | 3260 file_format=DEMUXER_TYPE_UNKNOWN; |
3261 guiGetEvent( guiSetDefaults,0 ); | |
5665 | 3262 while ( guiIntfStruct.Playing != 1 ) |
3263 { | |
4858 | 3264 mp_cmd_t* cmd; |
9464 | 3265 usec_sleep(20000); |
4798 | 3266 guiEventHandling(); |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6590
diff
changeset
|
3267 guiGetEvent( guiReDraw,NULL ); |
13603 | 3268 if ( (cmd = mp_input_get_cmd(0,0,0)) != NULL) guiGetEvent( guiIEvent,(char *)cmd->id ); |
5665 | 3269 } |
8423 | 3270 guiGetEvent( guiSetParameters,NULL ); |
3271 if ( guiIntfStruct.StreamType == STREAMTYPE_STREAM ) | |
3543 | 3272 { |
4950 | 3273 play_tree_t * entry = play_tree_new(); |
3274 play_tree_add_file( entry,guiIntfStruct.Filename ); | |
4974 | 3275 if ( playtree ) play_tree_free_list( playtree->child,1 ); |
3276 else playtree=play_tree_new(); | |
3277 play_tree_set_child( playtree,entry ); | |
3278 if(playtree) | |
4950 | 3279 { |
4974 | 3280 playtree_iter = play_tree_iter_new(playtree,mconfig); |
4950 | 3281 if(playtree_iter) |
3282 { | |
3283 if(play_tree_iter_step(playtree_iter,0,0) != PLAY_TREE_ITER_ENTRY) | |
3284 { | |
3285 play_tree_iter_free(playtree_iter); | |
3286 playtree_iter = NULL; | |
3287 } | |
3288 filename = play_tree_iter_get_file(playtree_iter,1); | |
3289 } | |
3290 } | |
4974 | 3291 } |
1787
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
3292 } |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
3293 #endif /* HAVE_NEW_GUI */ |
16347
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3294 |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3295 while (player_idle_mode && !filename) { |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3296 play_tree_t * entry = NULL; |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3297 mp_cmd_t * cmd; |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3298 while (!(cmd = mp_input_get_cmd(0,1,0))) { // wait for command |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3299 if (video_out && vo_config_count) video_out->check_events(); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3300 usec_sleep(20000); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3301 } |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3302 switch (cmd->id) { |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3303 case MP_CMD_LOADFILE: |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3304 // prepare a tree entry with the new filename |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3305 entry = play_tree_new(); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3306 play_tree_add_file(entry, cmd->args[0].v.s); |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
3307 // The entry is added to the main playtree after the switch(). |
16347
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3308 break; |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3309 case MP_CMD_LOADLIST: |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3310 entry = parse_playlist_file(cmd->args[0].v.s); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3311 break; |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3312 case MP_CMD_QUIT: |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3313 exit_player_with_rc(MSGTR_Exit_quit, (cmd->nargs > 0)? cmd->args[0].v.i : 0); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3314 break; |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3315 } |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3316 |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3317 mp_cmd_free(cmd); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3318 |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3319 if (entry) { // user entered a command that gave a valid entry |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3320 if (playtree) // the playtree is always a node with one child. let's clear it |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3321 play_tree_free_list(playtree->child, 1); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3322 else playtree=play_tree_new(); // .. or make a brand new playtree |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3323 |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3324 if (!playtree) continue; // couldn't make playtree! wait for next command |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3325 |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3326 play_tree_set_child(playtree, entry); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3327 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
3328 /* Make iterator start at the top the of tree. */ |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
3329 playtree_iter = play_tree_iter_new(playtree, mconfig); |
16347
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3330 if (!playtree_iter) continue; |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3331 |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3332 // find the first real item in the tree |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3333 if (play_tree_iter_step(playtree_iter,0,0) != PLAY_TREE_ITER_ENTRY) { |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3334 // no items! |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3335 play_tree_iter_free(playtree_iter); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3336 playtree_iter = NULL; |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3337 continue; // wait for next command |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3338 } |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3339 filename = play_tree_iter_get_file(playtree_iter, 1); |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3340 } |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
3341 } |
5983 | 3342 //--------------------------------------------------------------------------- |
1787
de6a0987a08d
stop fixed, fileselector supp. maybe not work, couldn't test
arpi
parents:
1772
diff
changeset
|
3343 |
1973
5216f108cb4f
all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents:
1962
diff
changeset
|
3344 if(filename) mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_Playing, filename); |
1650
7502b16bce63
make automatic subfile detection working with many files
atlka
parents:
1641
diff
changeset
|
3345 |
17109
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3346 if (edl_filename) { |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3347 if (edl_records) free_edl(edl_records); |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3348 next_edl_record = edl_records = edl_parse_file(); |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3349 } |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3350 if (edl_output_filename) { |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3351 if (edl_fd) fclose(edl_fd); |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3352 if ((edl_fd = fopen(edl_output_filename, "w")) == NULL) |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3353 { |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3354 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_EdlCantOpenForWrite, |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3355 edl_output_filename); |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3356 } |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3357 } |
327be31a101d
Fix EDL to be per file, allow -edlout and -edl together as there is really
ods15
parents:
17106
diff
changeset
|
3358 |
5983 | 3359 //==================== Open VOB-Sub ============================ |
3360 | |
4770
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3361 current_module="vobsub"; |
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3362 if (vobsub_name){ |
6110 | 3363 vo_vobsub=vobsub_open(vobsub_name,spudec_ifo,1,&vo_spudec); |
4770
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3364 if(vo_vobsub==NULL) |
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3365 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadSub,vobsub_name); |
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3366 }else if(sub_auto && filename && (strlen(filename)>=5)){ |
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3367 /* try to autodetect vobsub from movie filename ::atmos */ |
18857 | 3368 char *buf = malloc((strlen(filename)-3)),*psub; |
4770
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3369 memset(buf,0,strlen(filename)-3); // make sure string is terminated |
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3370 strncpy(buf, filename, strlen(filename)-4); |
6110 | 3371 vo_vobsub=vobsub_open(buf,spudec_ifo,0,&vo_spudec); |
16897 | 3372 /* try from ~/.mplayer/sub */ |
3373 if(!vo_vobsub && (psub = get_path( "sub/" ))) { | |
3374 char *bname; | |
3375 int l; | |
3376 bname = strrchr(buf,'/'); | |
3377 #ifdef WIN32 | |
3378 if(!bname) bname = strrchr(buf,'\\'); | |
3379 #endif | |
3380 if(bname) bname++; | |
3381 else bname = buf; | |
3382 l = strlen(psub) + strlen(bname) + 1; | |
3383 psub = realloc(psub,l); | |
3384 strcat(psub,bname); | |
3385 vo_vobsub=vobsub_open(psub,spudec_ifo,0,&vo_spudec); | |
3386 free(psub); | |
3387 } | |
4770
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3388 free(buf); |
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3389 } |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
3390 if(vo_vobsub){ |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
3391 inited_flags|=INITED_VOBSUB; |
8535
bc7bd163fff9
Here is the patch to make vobsub subtitle use -slang option, I have not made a
arpi
parents:
8534
diff
changeset
|
3392 vobsub_set_from_lang(vo_vobsub, dvdsub_lang); |
10917
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
3393 // check if vobsub requested only to display forced subtitles |
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
3394 forced_subs_only=vobsub_get_forced_subs_flag(vo_vobsub); |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3395 |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3396 // setup global sub numbering |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3397 global_sub_indices[SUB_SOURCE_VOBSUB] = global_sub_size; // the global # of the first vobsub. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3398 global_sub_size += vobsub_get_indexes_count(vo_vobsub); |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
3399 } |
4770
59f8fd64538b
autodetect vobsub filename, disable autosub if vobsub found.
atmos4
parents:
4754
diff
changeset
|
3400 |
5151 | 3401 //============ Open & Sync STREAM --- fork cache2 ==================== |
3402 | |
5983 | 3403 stream=NULL; |
3404 demuxer=NULL; | |
10959
905acfd20c59
fix a memory leak when playing several files in a row (playlist for instance)
pl
parents:
10953
diff
changeset
|
3405 if (d_audio) { |
10997
2f7c74ce8c9a
1000l to pl, this made mplayer crash when playing playlists longer
rfelker
parents:
10959
diff
changeset
|
3406 //free_demuxer_stream(d_audio); |
10959
905acfd20c59
fix a memory leak when playing several files in a row (playlist for instance)
pl
parents:
10953
diff
changeset
|
3407 d_audio=NULL; |
905acfd20c59
fix a memory leak when playing several files in a row (playlist for instance)
pl
parents:
10953
diff
changeset
|
3408 } |
905acfd20c59
fix a memory leak when playing several files in a row (playlist for instance)
pl
parents:
10953
diff
changeset
|
3409 if (d_video) { |
10997
2f7c74ce8c9a
1000l to pl, this made mplayer crash when playing playlists longer
rfelker
parents:
10959
diff
changeset
|
3410 //free_demuxer_stream(d_video); |
10959
905acfd20c59
fix a memory leak when playing several files in a row (playlist for instance)
pl
parents:
10953
diff
changeset
|
3411 d_video=NULL; |
905acfd20c59
fix a memory leak when playing several files in a row (playlist for instance)
pl
parents:
10953
diff
changeset
|
3412 } |
5983 | 3413 sh_audio=NULL; |
3414 sh_video=NULL; | |
3415 | |
1639 | 3416 current_module="open_stream"; |
9752 | 3417 stream=open_stream(filename,0,&file_format); |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
3418 if(!stream) { // error... |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
3419 eof = libmpdemux_was_interrupted(PT_NEXT_ENTRY); |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
3420 goto goto_next_file; |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
3421 } |
2321 | 3422 inited_flags|=INITED_STREAM; |
5151 | 3423 |
8423 | 3424 #ifdef HAVE_NEW_GUI |
3425 if ( use_gui ) guiGetEvent( guiSetStream,(char *)stream ); | |
3426 #endif | |
3427 | |
9752 | 3428 if(file_format == DEMUXER_TYPE_PLAYLIST) { |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
3429 play_tree_t* entry; |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
3430 // Handle playlist |
5151 | 3431 current_module="handle_playlist"; |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
3432 mp_msg(MSGT_CPLAYER,MSGL_V,"Parsing playlist %s...\n",filename); |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3433 entry = parse_playtree(stream,0); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3434 eof=playtree_add_playlist(entry); |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
3435 goto goto_next_file; |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
3436 } |
1497
ad4d402b3d29
seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents:
1496
diff
changeset
|
3437 stream->start_pos+=seek_to_byte; |
598 | 3438 |
3257 | 3439 if(stream_dump_type==5){ |
3440 unsigned char buf[4096]; | |
3441 int len; | |
3442 FILE *f; | |
5151 | 3443 current_module="dumpstream"; |
7204 | 3444 if(stream->type==STREAMTYPE_STREAM && stream->fd<0){ |
13577 | 3445 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_DumpstreamFdUnavailable); |
7204 | 3446 exit_player(MSGTR_Exit_error); |
3447 } | |
3257 | 3448 stream_reset(stream); |
3449 stream_seek(stream,stream->start_pos); | |
3450 f=fopen(stream_dump_name,"wb"); | |
3451 if(!f){ | |
3452 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_CantOpenDumpfile); | |
3453 exit_player(MSGTR_Exit_error); | |
3454 } | |
3455 while(!stream->eof){ | |
3456 len=stream_read(stream,buf,4096); | |
10225
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3457 if(len>0) { |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3458 if(fwrite(buf,len,1,f) != 1) { |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3459 mp_msg(MSGT_MENCODER,MSGL_FATAL,MSGTR_ErrorWritingFile,stream_dump_name); |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3460 exit_player(MSGTR_Exit_error); |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3461 } |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3462 } |
3257 | 3463 } |
10225
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3464 if(fclose(f)) { |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3465 mp_msg(MSGT_MENCODER,MSGL_FATAL,MSGTR_ErrorWritingFile,stream_dump_name); |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3466 exit_player(MSGTR_Exit_error); |
785c945f6796
check for -dumpstream file writes, patch by Eric Lammerts <eric@lammerts.org>
alex
parents:
10223
diff
changeset
|
3467 } |
3257 | 3468 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_CoreDumped); |
8644
0bfd73828e33
This patch fixes so that the exit code (or return code if you like) is set
arpi
parents:
8635
diff
changeset
|
3469 exit_player_with_rc(MSGTR_Exit_eof, 0); |
3257 | 3470 } |
3471 | |
4274 | 3472 #ifdef USE_DVDREAD |
5425 | 3473 if(stream->type==STREAMTYPE_DVD){ |
3474 current_module="dvd lang->id"; | |
10550
7860a71ba82c
For a request by Gabu, i've cut & fix a part of Joey's dvd aid switching
gabucino
parents:
10521
diff
changeset
|
3475 if(audio_id==-1) audio_id=dvd_aid_from_lang(stream,audio_lang); |
17379
9d99333ce6ab
dvd subtitles should be disabled by default, and enabled specifying -sid or -slang; this fix also restores the display of other subtitles types when dvd subs are present
nicodvb
parents:
17366
diff
changeset
|
3476 if(dvdsub_lang && dvdsub_id==-2) dvdsub_id=-1; |
5425 | 3477 if(dvdsub_lang && dvdsub_id==-1) dvdsub_id=dvd_sid_from_lang(stream,dvdsub_lang); |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3478 // setup global sub numbering |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3479 global_sub_indices[SUB_SOURCE_DEMUX] = global_sub_size; // the global # of the first demux-specific sub. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3480 global_sub_size += dvd_number_of_subs(stream); |
5425 | 3481 current_module=NULL; |
3482 } | |
4274 | 3483 #endif |
3484 | |
5151 | 3485 // CACHE2: initial prefill: 20% later: 5% (should be set by -cacheopts) |
11352 | 3486 goto_enable_cache: |
7881
aba9301ed3c4
allow cache to be disabled (-nocache should override cachesize autodetection
arpi
parents:
7867
diff
changeset
|
3487 if(stream_cache_size>0){ |
5151 | 3488 current_module="enable_cache"; |
16152
10a69a812eff
remove unused cache-prefill and create cache-seek-min that controls when seek_long is prefered over waiting for cache to fill
iive
parents:
16079
diff
changeset
|
3489 if(!stream_enable_cache(stream,stream_cache_size*1024, |
10a69a812eff
remove unused cache-prefill and create cache-seek-min that controls when seek_long is prefered over waiting for cache to fill
iive
parents:
16079
diff
changeset
|
3490 stream_cache_size*1024*(stream_cache_min_percent / 100.0), |
10a69a812eff
remove unused cache-prefill and create cache-seek-min that controls when seek_long is prefered over waiting for cache to fill
iive
parents:
16079
diff
changeset
|
3491 stream_cache_size*1024*(stream_cache_seek_min_percent / 100.0))) |
5151 | 3492 if((eof = libmpdemux_was_interrupted(PT_NEXT_ENTRY))) goto goto_next_file; |
3493 } | |
1639 | 3494 |
5151 | 3495 //============ Open DEMUXERS --- DETECT file type ======================= |
1639 | 3496 current_module="demux_open"; |
3497 | |
9006
d00997f12257
extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents:
9003
diff
changeset
|
3498 demuxer=demux_open(stream,file_format,audio_id,video_id,dvdsub_id,filename); |
8937 | 3499 |
3500 // HACK to get MOV Reference Files working | |
3501 | |
3502 if (demuxer && demuxer->type==DEMUXER_TYPE_PLAYLIST) | |
3503 { | |
3504 unsigned char* playlist_entry; | |
3505 play_tree_t *list = NULL, *entry = NULL; | |
3506 | |
3507 current_module="handle_demux_playlist"; | |
3508 while (ds_get_packet(demuxer->video,&playlist_entry)>0) | |
3509 { | |
3510 char *temp, *bname; | |
3511 | |
13577 | 3512 mp_msg(MSGT_CPLAYER,MSGL_V,"Adding file %s to element entry.\n",playlist_entry); |
8937 | 3513 |
3514 bname=mp_basename(playlist_entry); | |
3515 if ((strlen(bname)>10) && !strncmp(bname,"qt",2) && !strncmp(bname+3,"gateQT",6)) | |
3516 continue; | |
3517 | |
9124
ff773800b598
I also added that a self-reference is not endlessly played ... (Happened
arpi
parents:
9105
diff
changeset
|
3518 if (!strncmp(bname,mp_basename(filename),strlen(bname))) // ignoring self-reference |
ff773800b598
I also added that a self-reference is not endlessly played ... (Happened
arpi
parents:
9105
diff
changeset
|
3519 continue; |
ff773800b598
I also added that a self-reference is not endlessly played ... (Happened
arpi
parents:
9105
diff
changeset
|
3520 |
8937 | 3521 entry = play_tree_new(); |
3522 | |
3523 if (filename && !strcmp(mp_basename(playlist_entry),playlist_entry)) // add reference path of current file | |
3524 { | |
18857 | 3525 temp=malloc((strlen(filename)-strlen(mp_basename(filename))+strlen(playlist_entry)+1)); |
8937 | 3526 if (temp) |
3527 { | |
3528 strncpy(temp, filename, strlen(filename)-strlen(mp_basename(filename))); | |
3529 temp[strlen(filename)-strlen(mp_basename(filename))]='\0'; | |
3530 strcat(temp, playlist_entry); | |
3531 play_tree_add_file(entry,temp); | |
13577 | 3532 mp_msg(MSGT_CPLAYER,MSGL_V,"Resolving reference to %s.\n",temp); |
8937 | 3533 free(temp); |
3534 } | |
3535 } | |
3536 else | |
3537 play_tree_add_file(entry,playlist_entry); | |
3538 | |
3539 if(!list) | |
3540 list = entry; | |
3541 else | |
3542 play_tree_append_entry(list,entry); | |
3543 } | |
3544 free_demuxer(demuxer); | |
3545 demuxer = NULL; | |
3546 | |
3547 if (list) | |
3548 { | |
3549 entry = play_tree_new(); | |
3550 play_tree_set_child(entry,list); | |
3551 eof=playtree_add_playlist(entry); | |
3552 goto goto_next_file; | |
3553 } | |
3554 } | |
3555 | |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3556 if(!demuxer) |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3557 { |
10953
70a974306f9b
disable code that DOES NOT WORK (it won't load real playlists and
rfelker
parents:
10928
diff
changeset
|
3558 #if 0 |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3559 play_tree_t* entry; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3560 // Handle playlist |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3561 current_module="handle_playlist"; |
9090 | 3562 switch(stream->type){ |
3563 case STREAMTYPE_VCD: | |
3564 case STREAMTYPE_DVD: | |
3565 case STREAMTYPE_CDDA: | |
3566 case STREAMTYPE_VCDBINCUE: | |
3567 // don't try to parse raw media as playlist, it's unlikely | |
3568 goto goto_next_file; | |
3569 } | |
13577 | 3570 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_FallingBackOnPlaylist,filename); |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3571 stream_reset(stream); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3572 stream_seek(stream,stream->start_pos); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3573 entry = parse_playtree(stream,0); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3574 if(!entry) |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3575 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_FormatNotRecognized); |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3576 else |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3577 eof=playtree_add_playlist(entry); |
10953
70a974306f9b
disable code that DOES NOT WORK (it won't load real playlists and
rfelker
parents:
10928
diff
changeset
|
3578 #endif |
8925
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3579 goto goto_next_file; |
5c15777f1c07
this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents:
8913
diff
changeset
|
3580 } |
7058
2e5c07262861
new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents:
7055
diff
changeset
|
3581 inited_flags|=INITED_DEMUXER; |
2e5c07262861
new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents:
7055
diff
changeset
|
3582 |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3583 if (demuxer->type==DEMUXER_TYPE_MATROSKA) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3584 // setup global sub numbering |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3585 global_sub_indices[SUB_SOURCE_DEMUX] = global_sub_size; // the global # of the first demux-specific sub. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3586 global_sub_size += demux_mkv_num_subs(demuxer); |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3587 } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3588 #ifdef HAVE_OGGVORBIS |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3589 if (demuxer->type==DEMUXER_TYPE_OGG) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3590 // setup global sub numbering |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3591 global_sub_indices[SUB_SOURCE_DEMUX] = global_sub_size; // the global # of the first demux-specific sub. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3592 global_sub_size += demux_ogg_num_subs(demuxer); |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3593 } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3594 #endif |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3595 |
5175
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3596 current_module="demux_open2"; |
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3597 |
1660 | 3598 //file_format=demuxer->file_format; |
1375
dbcb5b5e1fae
file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents:
1369
diff
changeset
|
3599 |
1 | 3600 d_audio=demuxer->audio; |
3601 d_video=demuxer->video; | |
554 | 3602 d_dvdsub=demuxer->sub; |
1 | 3603 |
792 | 3604 // DUMP STREAMS: |
6209 | 3605 if((stream_dump_type)&&(stream_dump_type<4)){ |
792 | 3606 FILE *f; |
3607 demux_stream_t *ds=NULL; | |
1639 | 3608 current_module="dump"; |
792 | 3609 // select stream to dump |
3610 switch(stream_dump_type){ | |
3611 case 1: ds=d_audio;break; | |
3612 case 2: ds=d_video;break; | |
4335 | 3613 case 3: ds=d_dvdsub;break; |
792 | 3614 } |
3615 if(!ds){ | |
7805 | 3616 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_DumpSelectedStreamMissing); |
1639 | 3617 exit_player(MSGTR_Exit_error); |
792 | 3618 } |
3619 // disable other streams: | |
3620 if(d_audio && d_audio!=ds) {ds_free_packs(d_audio); d_audio->id=-2; } | |
3621 if(d_video && d_video!=ds) {ds_free_packs(d_video); d_video->id=-2; } | |
3622 if(d_dvdsub && d_dvdsub!=ds) {ds_free_packs(d_dvdsub); d_dvdsub->id=-2; } | |
3623 // let's dump it! | |
3257 | 3624 f=fopen(stream_dump_name,"wb"); |
1639 | 3625 if(!f){ |
3626 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_CantOpenDumpfile); | |
3627 exit_player(MSGTR_Exit_error); | |
3628 } | |
792 | 3629 while(!ds->eof){ |
3630 unsigned char* start; | |
3631 int in_size=ds_get_packet(ds,&start); | |
2102 | 3632 if( (demuxer->file_format==DEMUXER_TYPE_AVI || demuxer->file_format==DEMUXER_TYPE_ASF || demuxer->file_format==DEMUXER_TYPE_MOV) |
1246
7f69c1dd1e91
-dumpvideo stores frame size for avi/asf video frames (for ffmpeg testing)
arpi
parents:
1237
diff
changeset
|
3633 && stream_dump_type==2) fwrite(&in_size,1,4,f); |
792 | 3634 if(in_size>0) fwrite(start,in_size,1,f); |
3635 } | |
3636 fclose(f); | |
1582 | 3637 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_CoreDumped); |
8644
0bfd73828e33
This patch fixes so that the exit code (or return code if you like) is set
arpi
parents:
8635
diff
changeset
|
3638 exit_player_with_rc(MSGTR_Exit_eof, 0); |
792 | 3639 } |
3640 | |
1375
dbcb5b5e1fae
file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents:
1369
diff
changeset
|
3641 sh_audio=d_audio->sh; |
dbcb5b5e1fae
file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents:
1369
diff
changeset
|
3642 sh_video=d_video->sh; |
792 | 3643 |
1375
dbcb5b5e1fae
file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents:
1369
diff
changeset
|
3644 if(sh_video){ |
1 | 3645 |
5151 | 3646 current_module="video_read_properties"; |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3647 if(!video_read_properties(sh_video)) { |
7805 | 3648 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CannotReadVideoProperties); |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3649 sh_video=d_video->sh=NULL; |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3650 } else { |
6138
523014df7d32
big cosmetics patch, cleanup of messages printed by mplayer and libs.
arpi
parents:
6135
diff
changeset
|
3651 mp_msg(MSGT_CPLAYER,MSGL_V,"[V] filefmt:%d fourcc:0x%X size:%dx%d fps:%5.2f ftime:=%6.4f\n", |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3652 demuxer->file_format,sh_video->format, sh_video->disp_w,sh_video->disp_h, |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3653 sh_video->fps,sh_video->frametime |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3654 ); |
1 | 3655 |
4598 | 3656 /* need to set fps here for output encoders to pick it up in their init */ |
3657 if(force_fps){ | |
3658 sh_video->fps=force_fps; | |
3659 sh_video->frametime=1.0f/sh_video->fps; | |
3660 } | |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7559
diff
changeset
|
3661 vo_fps = sh_video->fps; |
4598 | 3662 |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3663 if(!sh_video->fps && !force_fps){ |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3664 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_FPSnotspecified); |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3665 sh_video=d_video->sh=NULL; |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3666 } |
1375
dbcb5b5e1fae
file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents:
1369
diff
changeset
|
3667 } |
dbcb5b5e1fae
file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents:
1369
diff
changeset
|
3668 |
dbcb5b5e1fae
file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents:
1369
diff
changeset
|
3669 } |
398 | 3670 |
1 | 3671 fflush(stdout); |
3672 | |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3673 if(!sh_video && !sh_audio){ |
6930 | 3674 mp_msg(MSGT_CPLAYER,MSGL_FATAL, MSGTR_NoStreamFound); |
10708 | 3675 #ifdef HAS_DVBIN_SUPPORT |
3676 if((stream->type == STREAMTYPE_DVB) && stream->priv) | |
3677 { | |
3678 dvb_priv_t *priv = (dvb_priv_t*) stream->priv; | |
3679 if(priv->is_on) | |
3680 { | |
3681 int dir; | |
3682 int v = last_dvb_step; | |
3683 if(v > 0) | |
3684 dir = DVB_CHANNEL_HIGHER; | |
3685 else | |
3686 dir = DVB_CHANNEL_LOWER; | |
3687 | |
3688 if(dvb_step_channel(priv, dir)) | |
18286 | 3689 eof = dvbin_reopen = 1; |
10708 | 3690 } |
3691 } | |
3692 #endif | |
1641
b7dae998505c
free stream/demuxer. continue playback with next file if error found
arpi
parents:
1639
diff
changeset
|
3693 goto goto_next_file; // exit_player(MSGTR_Exit_error); |
778
13c0dfde813b
removed dummy audio track for -nosound, vo: flip detection
arpi_esp
parents:
766
diff
changeset
|
3694 } |
13c0dfde813b
removed dummy audio track for -nosound, vo: flip detection
arpi_esp
parents:
766
diff
changeset
|
3695 |
5151 | 3696 /* display clip info */ |
3697 demux_info_print(demuxer); | |
3698 | |
3699 //================== Read SUBTITLES (DVD & TEXT) ========================== | |
14188
0180a7f96197
Hopefully fixes problems with non-working vobsubs.
reimar
parents:
14172
diff
changeset
|
3700 if(vo_spudec==NULL && sh_video && |
0180a7f96197
Hopefully fixes problems with non-working vobsubs.
reimar
parents:
14172
diff
changeset
|
3701 (stream->type==STREAMTYPE_DVD || demuxer->type==DEMUXER_TYPE_MATROSKA || |
0180a7f96197
Hopefully fixes problems with non-working vobsubs.
reimar
parents:
14172
diff
changeset
|
3702 d_dvdsub->id >= 0)){ |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
3703 |
5388
3af2729c5c87
* New command line switch for mplayer & mencoder:
kmkaplan
parents:
5380
diff
changeset
|
3704 if (spudec_ifo) { |
3af2729c5c87
* New command line switch for mplayer & mencoder:
kmkaplan
parents:
5380
diff
changeset
|
3705 unsigned int palette[16], width, height; |
5489
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3706 current_module="spudec_init_vobsub"; |
6674
f8551f89dd48
MEncoder vobsub ripping support, currently not compatible with windows vobsub, some bugs to be fixed. However it already works with mplayer, so it's a start.
atmos4
parents:
6627
diff
changeset
|
3707 if (vobsub_parse_ifo(NULL,spudec_ifo, palette, &width, &height, 1, -1, NULL) >= 0) |
7790 | 3708 vo_spudec=spudec_new_scaled(palette, width, height); |
5388
3af2729c5c87
* New command line switch for mplayer & mencoder:
kmkaplan
parents:
5380
diff
changeset
|
3709 } |
3af2729c5c87
* New command line switch for mplayer & mencoder:
kmkaplan
parents:
5380
diff
changeset
|
3710 |
5489
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3711 #ifdef USE_DVDREAD |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3712 if (vo_spudec==NULL && stream->type==STREAMTYPE_DVD) { |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3713 current_module="spudec_init_dvdread"; |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3714 vo_spudec=spudec_new_scaled(((dvd_priv_t *)(stream->priv))->cur_pgc->palette, |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3715 sh_video->disp_w, sh_video->disp_h); |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3716 } |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3717 #endif |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3718 |
11153
cb82b062188f
Support for VobSub-in-Matroska; parts outside of demux_mkv.cpp.
mosu
parents:
10997
diff
changeset
|
3719 if ((vo_spudec == NULL) && (demuxer->type == DEMUXER_TYPE_MATROSKA) && |
18934
a3788ff5d0b6
Rename mkv_sh_sub_t to sh_sub_t, move it to demuxer.h.
eugeni
parents:
18929
diff
changeset
|
3720 (d_dvdsub->sh != NULL) && (((sh_sub_t *)d_dvdsub->sh)->type == 'v')) { |
a3788ff5d0b6
Rename mkv_sh_sub_t to sh_sub_t, move it to demuxer.h.
eugeni
parents:
18929
diff
changeset
|
3721 sh_sub_t *mkv_sh_sub = (sh_sub_t *)d_dvdsub->sh; |
11153
cb82b062188f
Support for VobSub-in-Matroska; parts outside of demux_mkv.cpp.
mosu
parents:
10997
diff
changeset
|
3722 current_module = "spudec_init_matroska"; |
12550
733c9d9882d1
Support for the "custom colors" and "forced subtitles" entries in the VobSub idx. Made the parser handle whitespaces better.
mosu
parents:
12360
diff
changeset
|
3723 vo_spudec = |
733c9d9882d1
Support for the "custom colors" and "forced subtitles" entries in the VobSub idx. Made the parser handle whitespaces better.
mosu
parents:
12360
diff
changeset
|
3724 spudec_new_scaled_vobsub(mkv_sh_sub->palette, mkv_sh_sub->colors, |
733c9d9882d1
Support for the "custom colors" and "forced subtitles" entries in the VobSub idx. Made the parser handle whitespaces better.
mosu
parents:
12360
diff
changeset
|
3725 mkv_sh_sub->custom_colors, mkv_sh_sub->width, |
733c9d9882d1
Support for the "custom colors" and "forced subtitles" entries in the VobSub idx. Made the parser handle whitespaces better.
mosu
parents:
12360
diff
changeset
|
3726 mkv_sh_sub->height); |
733c9d9882d1
Support for the "custom colors" and "forced subtitles" entries in the VobSub idx. Made the parser handle whitespaces better.
mosu
parents:
12360
diff
changeset
|
3727 forced_subs_only = mkv_sh_sub->forced_subs_only; |
11153
cb82b062188f
Support for VobSub-in-Matroska; parts outside of demux_mkv.cpp.
mosu
parents:
10997
diff
changeset
|
3728 } |
cb82b062188f
Support for VobSub-in-Matroska; parts outside of demux_mkv.cpp.
mosu
parents:
10997
diff
changeset
|
3729 |
5489
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3730 if (vo_spudec==NULL) { |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3731 current_module="spudec_init_normal"; |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3732 vo_spudec=spudec_new_scaled(NULL, sh_video->disp_w, sh_video->disp_h); |
6110 | 3733 spudec_set_font_factor(vo_spudec,font_factor); |
5489
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3734 } |
5e6e08ff47d5
dvdnav support improved - patch by Kees Cook <mplayer@outflux.net>
arpi
parents:
5488
diff
changeset
|
3735 |
4087 | 3736 if (vo_spudec!=NULL) |
3737 inited_flags|=INITED_SPUDEC; | |
4274 | 3738 |
6110 | 3739 } |
3740 | |
10917
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
3741 // Apply current settings for forced subs |
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
3742 if (vo_spudec!=NULL) |
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
3743 spudec_set_forced_subs_only(vo_spudec,forced_subs_only); |
d45870f67728
Forced subtitles patch by Arne Driescher <driescher@mpi-magdeburg.mpg.de>
attila
parents:
10884
diff
changeset
|
3744 |
4052
505f206d80d1
corrections to adjust_subs_time function which now uses fps if needed
atlka
parents:
4045
diff
changeset
|
3745 #ifdef USE_SUB |
6110 | 3746 if(sh_video) { |
4064
3c747168eb6e
1. subs know are readed after reading AVI header so we already know fps
atlka
parents:
4052
diff
changeset
|
3747 // after reading video params we should load subtitles because |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
3748 // we know fps so now we can adjust subtitle time to ~6 seconds AST |
4064
3c747168eb6e
1. subs know are readed after reading AVI header so we already know fps
atlka
parents:
4052
diff
changeset
|
3749 // check .sub |
5151 | 3750 current_module="read_subtitles_file"; |
3751 if(sub_name){ | |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
3752 for (i = 0; sub_name[i] != NULL; ++i) |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
3753 add_subtitles (sub_name[i], sh_video->fps, 0); |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
3754 } |
5151 | 3755 if(sub_auto) { // auto load sub file ... |
11767 | 3756 char *psub = get_path( "sub/" ); |
3757 char **tmp = sub_filenames((psub ? psub : ""), filename); | |
15603
2d1ad16b6021
strdup subtitle filename at a more appropriate place, fixing memleaks and
reimar
parents:
15584
diff
changeset
|
3758 int i = 0; |
12890 | 3759 free(psub); // release the buffer created by get_path() above |
15603
2d1ad16b6021
strdup subtitle filename at a more appropriate place, fixing memleaks and
reimar
parents:
15584
diff
changeset
|
3760 while (tmp[i]) { |
2d1ad16b6021
strdup subtitle filename at a more appropriate place, fixing memleaks and
reimar
parents:
15584
diff
changeset
|
3761 add_subtitles (tmp[i], sh_video->fps, 0); |
2d1ad16b6021
strdup subtitle filename at a more appropriate place, fixing memleaks and
reimar
parents:
15584
diff
changeset
|
3762 free(tmp[i++]); |
2d1ad16b6021
strdup subtitle filename at a more appropriate place, fixing memleaks and
reimar
parents:
15584
diff
changeset
|
3763 } |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
3764 free(tmp); |
4064
3c747168eb6e
1. subs know are readed after reading AVI header so we already know fps
atlka
parents:
4052
diff
changeset
|
3765 } |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
3766 if (set_of_sub_size > 0) { |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3767 // setup global sub numbering |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3768 global_sub_indices[SUB_SOURCE_SUBS] = global_sub_size; // the global # of the first sub. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3769 global_sub_size += set_of_sub_size; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
3770 } |
5151 | 3771 } |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
3772 #endif /* USE_SUB */ |
6110 | 3773 |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3774 if (global_sub_size) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3775 // find the best sub to use |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3776 if (vobsub_id >= 0) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3777 // if user asks for a vobsub id, use that first. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3778 global_sub_pos = global_sub_indices[SUB_SOURCE_VOBSUB] + vobsub_id; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3779 } else if (dvdsub_id >= 0 && global_sub_indices[SUB_SOURCE_DEMUX] >= 0) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3780 // if user asks for a dvd sub id, use that next. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3781 global_sub_pos = global_sub_indices[SUB_SOURCE_DEMUX] + dvdsub_id; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3782 } else if (global_sub_indices[SUB_SOURCE_SUBS] >= 0) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3783 // if there are text subs to use, use those. (autosubs come last here) |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3784 global_sub_pos = global_sub_indices[SUB_SOURCE_SUBS]; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3785 /* |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3786 } else if (global_sub_indices[SUB_SOURCE_DEMUX] >= 0) { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3787 // if nothing else works, get subs from the demuxer. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3788 global_sub_pos = global_sub_indices[SUB_SOURCE_DEMUX]; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3789 */ |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3790 } else { |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3791 // nothing worth doing automatically. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3792 global_sub_pos = -1; |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3793 } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3794 // rather than duplicate code, use the SUB_SELECT handler to init the right one. |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3795 global_sub_pos--; |
17935
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3796 mp_property_do("sub",M_PROPERTY_STEP_UP,NULL); |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3797 if(subdata) |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3798 switch (stream_dump_type) { |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3799 case 3: list_sub_file(subdata); break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3800 case 4: dump_mpsub(subdata, sh_video->fps); break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3801 case 6: dump_srt(subdata, sh_video->fps); break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3802 case 7: dump_microdvd(subdata, sh_video->fps); break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3803 case 8: dump_jacosub(subdata, sh_video->fps); break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3804 case 9: dump_sami(subdata, sh_video->fps); break; |
d72e7330c548
Subtitles properties: move sub_select, sub_pos, sub_visibilty,
albeu
parents:
17932
diff
changeset
|
3805 } |
13501
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3806 } |
a5004eb92a79
fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list.
joey
parents:
13500
diff
changeset
|
3807 |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3808 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_FILENAME=%s\n", filename); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3809 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_DEMUXER=%s\n", demuxer->desc->name); |
7864 | 3810 if (sh_video) { |
3811 /* Assume FOURCC if all bytes >= 0x20 (' ') */ | |
3812 if (sh_video->format >= 0x20202020) | |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3813 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_VIDEO_FORMAT=%.4s\n", (char *)&sh_video->format); |
7864 | 3814 else |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3815 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_VIDEO_FORMAT=0x%08X\n", sh_video->format); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3816 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_VIDEO_BITRATE=%d\n", sh_video->i_bps*8); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3817 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_VIDEO_WIDTH=%d\n", sh_video->disp_w); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3818 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_VIDEO_HEIGHT=%d\n", sh_video->disp_h); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3819 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_VIDEO_FPS=%5.3f\n", sh_video->fps); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3820 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_VIDEO_ASPECT=%1.4f\n", sh_video->aspect); |
7864 | 3821 } |
3822 if (sh_audio) { | |
3823 /* Assume FOURCC if all bytes >= 0x20 (' ') */ | |
3824 if (sh_audio->format >= 0x20202020) | |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3825 mp_msg(MSGT_IDENTIFY,MSGL_INFO, "ID_AUDIO_FORMAT=%.4s\n", (char *)&sh_audio->format); |
7864 | 3826 else |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3827 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_AUDIO_FORMAT=%d\n", sh_audio->format); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3828 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_AUDIO_BITRATE=%d\n", sh_audio->i_bps*8); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3829 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_AUDIO_RATE=%d\n", sh_audio->samplerate); |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3830 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_AUDIO_NCH=%d\n", sh_audio->channels); |
7864 | 3831 } |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3832 mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_LENGTH=%.2lf\n", demuxer_get_time_length(demuxer)); |
7864 | 3833 |
7502
6a2b6f3d619c
best audio/video codec selection & init moved to libmpcodecs
arpi
parents:
7495
diff
changeset
|
3834 if(!sh_video) goto main; // audio-only |
175 | 3835 |
303 | 3836 //================== Init VIDEO (codec & libvo) ========================== |
7677
33562a65e9e8
_EXPERIMENTAL_ option: -fixed-vo for libvo spec compliance testing
arpi
parents:
7628
diff
changeset
|
3837 if(!fixed_vo || !(inited_flags&INITED_VO)){ |
5154 | 3838 current_module="preinit_libvo"; |
3839 | |
5511 | 3840 vo_config_count=0; |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7559
diff
changeset
|
3841 //if((video_out->preinit(vo_subdevice))!=0){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7559
diff
changeset
|
3842 if(!(video_out=init_best_video_out(video_driver_list))){ |
6930 | 3843 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_ErrorInitializingVODevice); |
5154 | 3844 goto goto_next_file; // exit_player(MSGTR_Exit_error); |
3845 } | |
5075 | 3846 sh_video->video_out=video_out; |
5154 | 3847 inited_flags|=INITED_VO; |
7677
33562a65e9e8
_EXPERIMENTAL_ option: -fixed-vo for libvo spec compliance testing
arpi
parents:
7628
diff
changeset
|
3848 } |
5154 | 3849 |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
3850 vf_vo_data.vo = video_out; |
5507
d0d029fda134
video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
5489
diff
changeset
|
3851 current_module="init_video_filters"; |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
9563
diff
changeset
|
3852 { |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
3853 char* vf_arg[] = { "_oldargs_", (char*)&vf_vo_data , NULL }; |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
9563
diff
changeset
|
3854 sh_video->vfilter=(void*)vf_open_filter(NULL,"vo",vf_arg); |
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
9563
diff
changeset
|
3855 } |
8198 | 3856 #ifdef HAVE_MENU |
3857 if(use_menu) { | |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
9563
diff
changeset
|
3858 char* vf_arg[] = { "_oldargs_", menu_root, NULL }; |
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
9563
diff
changeset
|
3859 vf_menu = vf_open_plugin(libmenu_vfs,sh_video->vfilter,"menu",vf_arg); |
8198 | 3860 if(!vf_menu) { |
13577 | 3861 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CantOpenLibmenuFilterWithThisRootMenu,menu_root); |
8198 | 3862 use_menu = 0; |
3863 } | |
3864 } | |
3865 if(vf_menu) | |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3866 sh_video->vfilter=(void*)vf_menu; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3867 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3868 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3869 if(ass_enabled) { |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3870 int i; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3871 int insert = 1; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3872 if (vf_settings) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3873 for (i = 0; vf_settings[i].name; ++i) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3874 if (strcmp(vf_settings[i].name, "ass") == 0) { |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3875 insert = 0; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3876 break; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3877 } |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3878 if (insert) { |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3879 extern vf_info_t vf_info_ass; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3880 vf_info_t* libass_vfs[] = {&vf_info_ass, NULL}; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3881 char* vf_arg[] = {"auto", "1", NULL}; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3882 vf_instance_t* vf_ass = vf_open_plugin(libass_vfs,sh_video->vfilter,"ass",vf_arg); |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3883 if (vf_ass) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3884 sh_video->vfilter=(void*)vf_ass; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3885 else |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3886 mp_msg(MSGT_CPLAYER,MSGL_ERR, "ASS: cannot add video filter\n"); |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3887 } |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3888 } |
8198 | 3889 #endif |
7559
b645204ea527
some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents:
7529
diff
changeset
|
3890 sh_video->vfilter=(void*)append_filters(sh_video->vfilter); |
5507
d0d029fda134
video filter layer - written from scratch, but inspired a lot by Fredrik Kuivinen's patch
arpi
parents:
5489
diff
changeset
|
3891 |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3892 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3893 if (ass_enabled) |
19521 | 3894 ((vf_instance_t *)sh_video->vfilter)->control(sh_video->vfilter, VFCTRL_INIT_EOSD, 0); |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3895 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
3896 |
5154 | 3897 current_module="init_video_codec"; |
303 | 3898 |
5175
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3899 mp_msg(MSGT_CPLAYER,MSGL_INFO,"==========================================================================\n"); |
7506
c1cb94198e05
-vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means
arpi
parents:
7502
diff
changeset
|
3900 init_best_video_codec(sh_video,video_codec_list,video_fm_list); |
7502
6a2b6f3d619c
best audio/video codec selection & init moved to libmpcodecs
arpi
parents:
7495
diff
changeset
|
3901 mp_msg(MSGT_CPLAYER,MSGL_INFO,"==========================================================================\n"); |
5175
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3902 |
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3903 if(!sh_video->inited){ |
7677
33562a65e9e8
_EXPERIMENTAL_ option: -fixed-vo for libvo spec compliance testing
arpi
parents:
7628
diff
changeset
|
3904 if(!fixed_vo) uninit_player(INITED_VO); |
5175
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3905 if(!sh_audio) goto goto_next_file; |
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3906 sh_video = d_video->sh = NULL; |
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3907 goto main; // exit_player(MSGTR_Exit_error); |
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3908 } |
8354d89498d4
video codec selection redesigned and moved to libmpcodecs - now it's 'intelligent'
arpi
parents:
5154
diff
changeset
|
3909 |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
3910 inited_flags|=INITED_VCODEC; |
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
3911 |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3912 if (sh_video->codec) |
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
3913 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_CODEC=%s\n", sh_video->codec->name); |
16522 | 3914 |
1439 | 3915 if(auto_quality>0){ |
3916 // Auto quality option enabled | |
3917 output_quality=get_video_quality_max(sh_video); | |
3918 if(auto_quality>output_quality) auto_quality=output_quality; | |
3919 else output_quality=auto_quality; | |
13577 | 3920 mp_msg(MSGT_CPLAYER,MSGL_V,"AutoQ: setting quality to %d.\n",output_quality); |
1439 | 3921 set_video_quality(sh_video,output_quality); |
3922 } | |
3923 | |
398 | 3924 // ========== Init display (sh_video->disp_w*sh_video->disp_h/out_fmt) ============ |
1 | 3925 |
6781 | 3926 current_module="init_vo"; |
6755 | 3927 |
6110 | 3928 if(vo_flags & 0x08 && vo_spudec) |
3929 spudec_set_hw_spu(vo_spudec,video_out); | |
3930 | |
7122
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
3931 #ifdef HAVE_FREETYPE |
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
3932 force_load_font = 1; |
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
3933 #endif |
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
3934 |
1 | 3935 //================== MAIN: ========================== |
7502
6a2b6f3d619c
best audio/video codec selection & init moved to libmpcodecs
arpi
parents:
7495
diff
changeset
|
3936 main: |
6a2b6f3d619c
best audio/video codec selection & init moved to libmpcodecs
arpi
parents:
7495
diff
changeset
|
3937 current_module="main"; |
6a2b6f3d619c
best audio/video codec selection & init moved to libmpcodecs
arpi
parents:
7495
diff
changeset
|
3938 |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
3939 if(playing_msg) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
3940 char* msg = m_properties_expand_string(mp_properties,playing_msg); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
3941 mp_msg(MSGT_CPLAYER,MSGL_INFO,"%s",msg); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
3942 free(msg); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
3943 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
3944 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
3945 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
3946 // Disable the term OSD in verbose mode |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
3947 if(verbose) term_osd = 0; |
5154 | 3948 fflush(stdout); |
5151 | 3949 |
1 | 3950 { |
1420 | 3951 //int frame_corr_num=0; // |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
3952 //float v_frame=0; // Video |
1 | 3953 float time_frame=0; // Timer |
1400 | 3954 //float num_frames=0; // number of frames played |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
3955 double last_pts = MP_NOPTS_VALUE; |
1382 | 3956 int grab_frames=0; |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
3957 int drop_frame=0; // current dropping status |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
3958 int dropped_frames=0; // how many frames dropped since last non-dropped frame |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3959 int too_slow_frame_cnt=0; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
3960 int too_fast_frame_cnt=0; |
1439 | 3961 // for auto-quality: |
3962 double vdecode_time; | |
6028
bd016664dc18
UMRs fixed - noticed by Nilmoni Deb <ndeb@ece.cmu.edu>
arpi
parents:
6016
diff
changeset
|
3963 unsigned int lastframeout_ts=0; |
8254
772d6d27fd66
warning patch by (Dominik Mierzejewski <dominik at rangers dot eu dot org>)
michael
parents:
8208
diff
changeset
|
3964 /*float time_frame_corr_avg=0;*/ /* unused */ |
1 | 3965 |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
3966 float next_frame_time=0; |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
3967 int frame_time_remaining=0; // flag |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
3968 int blit_frame=0; |
17241
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
3969 int was_paused=0; |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
3970 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
3971 // Make sure old OSD does not stay around, |
16402 | 3972 // e.g. with -fixed-vo and same-resolution files |
17938 | 3973 clear_osd_msgs(); |
3974 update_osd_msg(); | |
6028
bd016664dc18
UMRs fixed - noticed by Nilmoni Deb <ndeb@ece.cmu.edu>
arpi
parents:
6016
diff
changeset
|
3975 |
1 | 3976 //================ SETUP AUDIO ========================== |
3977 | |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
3978 if(sh_audio){ |
18679
e52e101e9e59
moved audio codec/filters/out to a separate function that is called both at init() and to switch audio stream
nicodvb
parents:
18406
diff
changeset
|
3979 reinit_audio_chain(); |
19337 | 3980 if (sh_audio && sh_audio->codec) |
19314
6f940283e339
Move ID_AUDIO_CODEC printing after codec init again (it didn't get printed otherwise).
reimar
parents:
19271
diff
changeset
|
3981 mp_msg(MSGT_IDENTIFY,MSGL_INFO, "ID_AUDIO_CODEC=%s\n", sh_audio->codec->name); |
1 | 3982 } |
3983 | |
5151 | 3984 current_module="av_init"; |
3985 | |
17643 | 3986 if(sh_video){ |
3987 sh_video->timer=0; | |
17654 | 3988 if (! ignore_start) |
17643 | 3989 audio_delay += sh_video->stream_delay; |
3990 } | |
3991 if(sh_audio){ | |
17654 | 3992 if (! ignore_start) |
17643 | 3993 audio_delay -= sh_audio->stream_delay; |
3994 sh_audio->delay=-audio_delay; | |
3995 } | |
1 | 3996 |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
3997 if(!sh_audio){ |
1973
5216f108cb4f
all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents:
1962
diff
changeset
|
3998 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_NoSound); |
13684 | 3999 mp_msg(MSGT_CPLAYER,MSGL_V,"Freeing %d unused audio chunks.\n",d_audio->packs); |
1 | 4000 ds_free_packs(d_audio); // free buffered chunks |
18897
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
4001 //d_audio->id=-2; // do not read audio chunks |
7621
7caeb275ad26
uninit cleanup again... thx to Nilmoni Deb for bugreport
arpi
parents:
7614
diff
changeset
|
4002 //uninit_player(INITED_AO); // close device |
1 | 4003 } |
5151 | 4004 if(!sh_video){ |
6930 | 4005 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_Video_NoVideo); |
13684 | 4006 mp_msg(MSGT_CPLAYER,MSGL_V,"Freeing %d unused video chunks.\n",d_video->packs); |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4007 ds_free_packs(d_video); |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4008 d_video->id=-2; |
7677
33562a65e9e8
_EXPERIMENTAL_ option: -fixed-vo for libvo spec compliance testing
arpi
parents:
7628
diff
changeset
|
4009 //if(!fixed_vo) uninit_player(INITED_VO); |
5151 | 4010 } |
1 | 4011 |
6185
7e769ea2acc7
jump to next file (or exit) if can't decode audio && video
alex
parents:
6183
diff
changeset
|
4012 if (!sh_video && !sh_audio) |
7e769ea2acc7
jump to next file (or exit) if can't decode audio && video
alex
parents:
6183
diff
changeset
|
4013 goto goto_next_file; |
7e769ea2acc7
jump to next file (or exit) if can't decode audio && video
alex
parents:
6183
diff
changeset
|
4014 |
8030
2b39ff3860b7
cleanup of .AVI timestamp calculation (ugly hack from mplayer.c removed,
arpi
parents:
8027
diff
changeset
|
4015 //if(demuxer->file_format!=DEMUXER_TYPE_AVI) pts_from_bps=0; // it must be 0 for mpeg/asf! |
7923 | 4016 if(force_fps && sh_video){ |
4598 | 4017 vo_fps = sh_video->fps=force_fps; |
398 | 4018 sh_video->frametime=1.0f/sh_video->fps; |
1973
5216f108cb4f
all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents:
1962
diff
changeset
|
4019 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_FPSforced,sh_video->fps,sh_video->frametime); |
398 | 4020 } |
1 | 4021 |
19946
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4022 #ifdef HAVE_NEW_GUI |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4023 if ( use_gui ) { |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4024 if ( sh_audio ) guiIntfStruct.AudioType=sh_audio->channels; else guiIntfStruct.AudioType=0; |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4025 if ( !sh_video && sh_audio ) guiGetEvent( guiSetAudioOnly,(char *)1 ); else guiGetEvent( guiSetAudioOnly,(char *)0 ); |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4026 guiGetEvent( guiSetFileFormat,(char *)demuxer->file_format ); |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4027 if ( guiGetEvent( guiSetValues,(char *)sh_video ) ) goto goto_next_file; |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4028 guiGetEvent( guiSetDemuxer,(char *)demuxer ); |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4029 } |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4030 #endif |
ef94dfe93fe8
Fix the sound mute switch in the GUI menu by moving the corresponding
diego
parents:
19945
diff
changeset
|
4031 |
1639 | 4032 //==================== START PLAYING ======================= |
4033 | |
9105
9b387eae87e6
Secondly, fixed bug where -loop after file would play one too many times.
arpi
parents:
9090
diff
changeset
|
4034 if(loop_times>1) loop_times--; else |
9b387eae87e6
Secondly, fixed bug where -loop after file would play one too many times.
arpi
parents:
9090
diff
changeset
|
4035 if(loop_times==1) loop_times = -1; |
9b387eae87e6
Secondly, fixed bug where -loop after file would play one too many times.
arpi
parents:
9090
diff
changeset
|
4036 |
1582 | 4037 mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_StartPlaying);fflush(stdout); |
1 | 4038 |
1124
0e95f30ffd4c
-frames and -benchmark options to make chl & gabucino happy
arpi_esp
parents:
1059
diff
changeset
|
4039 total_time_usage_start=GetTimer(); |
3934
e8e7ca8995a1
codecs.conf parser hangup fixed by iive, cpu usage reset at start
arpi
parents:
3843
diff
changeset
|
4040 audio_time_usage=0; video_time_usage=0; vout_time_usage=0; |
6585
eb10ce6b3f18
multifile (informal output) fix by Balazs Tibor (tibcu)
alex
parents:
6545
diff
changeset
|
4041 total_frame_cnt=0; drop_frame_cnt=0; // fix for multifile fps benchmark |
6590 | 4042 play_n_frames=play_n_frames_mf; |
4043 | |
4044 if(play_n_frames==0){ | |
4045 eof=PT_NEXT_ENTRY; goto goto_next_file; | |
4046 } | |
4047 | |
1 | 4048 while(!eof){ |
1439 | 4049 float aq_sleep_time=0; |
18897
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
4050 if(!sh_audio && d_audio->sh) { |
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
4051 sh_audio = d_audio->sh; |
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
4052 sh_audio->ds = d_audio; |
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
4053 reinit_audio_chain(); |
78547a882a09
support for audio streams that appear after unsuccessful probing
nicodvb
parents:
18888
diff
changeset
|
4054 } |
1 | 4055 |
4056 /*========================== PLAY AUDIO ============================*/ | |
5610 | 4057 |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
4058 while(sh_audio){ |
746 | 4059 unsigned int t; |
4834 | 4060 double tt; |
2705 | 4061 int playsize; |
18735
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4062 int playflags=0; |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4063 int audio_eof=0; |
5610 | 4064 |
4065 current_module="play_audio"; | |
2705 | 4066 |
8056
324b6e5387be
A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents:
8030
diff
changeset
|
4067 ao_data.pts=((sh_video?sh_video->timer:0)+sh_audio->delay)*90000.0; |
2705 | 4068 playsize=audio_out->get_space(); |
746 | 4069 |
5610 | 4070 // handle audio-only case: |
13893 | 4071 if(playsize < ao_data.outburst && |
4072 !sh_video) { // buffer is full, do not block here!!! | |
4825
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
4073 usec_sleep(10000); // Wait a tick before retry |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
4074 continue; |
41d2da3bd082
Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents:
4818
diff
changeset
|
4075 } |
746 | 4076 |
4077 if(playsize>MAX_OUTBURST) playsize=MAX_OUTBURST; // we shouldn't exceed it! | |
5610 | 4078 |
4079 // Fill buffer if needed: | |
1639 | 4080 current_module="decode_audio"; // Enter AUDIO decoder module |
746 | 4081 t=GetTimer(); |
18735
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4082 while (sh_audio->a_out_buffer_len < playsize) { |
7604
32efb806436e
aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents:
7582
diff
changeset
|
4083 int ret=decode_audio(sh_audio,&sh_audio->a_out_buffer[sh_audio->a_out_buffer_len], |
32efb806436e
aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents:
7582
diff
changeset
|
4084 playsize-sh_audio->a_out_buffer_len,sh_audio->a_out_buffer_size-sh_audio->a_out_buffer_len); |
16290
8a2585bc494f
ensure that audio-only files are decoded till the end by not only
reimar
parents:
16227
diff
changeset
|
4085 if(ret<=0) { // EOF? |
18735
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4086 if (d_audio->eof) { |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4087 audio_eof = 1; |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4088 if (!sh_video && sh_audio->a_out_buffer_len == 0) |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4089 eof = PT_NEXT_ENTRY; |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4090 } |
16290
8a2585bc494f
ensure that audio-only files are decoded till the end by not only
reimar
parents:
16227
diff
changeset
|
4091 break; |
8a2585bc494f
ensure that audio-only files are decoded till the end by not only
reimar
parents:
16227
diff
changeset
|
4092 } |
7604
32efb806436e
aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents:
7582
diff
changeset
|
4093 sh_audio->a_out_buffer_len+=ret; |
1 | 4094 } |
4834 | 4095 t=GetTimer()-t; |
5610 | 4096 tt = t*0.000001f; audio_time_usage+=tt; |
18735
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4097 if (playsize > sh_audio->a_out_buffer_len) { |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4098 playsize = sh_audio->a_out_buffer_len; |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4099 if (audio_eof) |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4100 playflags |= AOPLAY_FINAL_CHUNK; |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4101 } |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4102 if (!playsize) |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4103 break; |
5610 | 4104 |
4105 // play audio: | |
4106 current_module="play_audio"; | |
18735
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4107 playsize = audio_out->play(sh_audio->a_out_buffer, playsize, playflags); |
1 | 4108 |
955 | 4109 if(playsize>0){ |
7604
32efb806436e
aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents:
7582
diff
changeset
|
4110 sh_audio->a_out_buffer_len-=playsize; |
32efb806436e
aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
arpi
parents:
7582
diff
changeset
|
4111 memmove(sh_audio->a_out_buffer,&sh_audio->a_out_buffer[playsize],sh_audio->a_out_buffer_len); |
18309
87161f96fa66
Change common pts variables from floats to doubles. Individual demuxers
uau
parents:
18288
diff
changeset
|
4112 sh_audio->delay+=playback_speed*playsize/(double)ao_data.bps; |
1 | 4113 } |
18735
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4114 else if (audio_eof && audio_out->get_delay() < .04) { |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4115 // Sanity check to avoid hanging in case current ao doesn't output |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4116 // partial chunks and doesn't check for AOPLAY_FINAL_CHUNK |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4117 mp_msg(MSGT_CPLAYER, MSGL_WARN, "Audio output truncated at end.\n"); |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4118 sh_audio->a_out_buffer_len = 0; |
93dd2847bcdc
Rewrite audio EOF handling logic fixing some problems that could cause
uau
parents:
18733
diff
changeset
|
4119 } |
1 | 4120 break; |
5610 | 4121 } // while(sh_audio) |
1 | 4122 |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4123 if(!sh_video) { |
5610 | 4124 // handle audio-only case: |
19973
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4125 double a_pos=0; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4126 if(!quiet || end_at.type == END_AT_TIME ) |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4127 a_pos = playing_audio_pts(sh_audio, d_audio, audio_out); |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4128 |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4129 if(!quiet) |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
4130 print_status(a_pos, 0, 0); |
19973
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4131 |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4132 if(end_at.type == END_AT_TIME && end_at.pos < a_pos) |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4133 eof = PT_NEXT_ENTRY; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4134 |
5610 | 4135 } else { |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4136 |
1 | 4137 /*========================== PLAY VIDEO ============================*/ |
4138 | |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4139 float frame_time=next_frame_time; |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4140 |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4141 vo_pts=sh_video->timer*90000.0; |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4142 vo_fps=sh_video->fps; |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4143 |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4144 if(!frame_time_remaining){ |
2567 | 4145 //-------------------- Decode a frame: ----------------------- |
18389
fdface43ee10
Don't blit frame if we hit EOF and no new frame is read. Fixes picture
uau
parents:
18323
diff
changeset
|
4146 blit_frame = 0; // Don't blit if we hit EOF |
2567 | 4147 vdecode_time=video_time_usage; |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4148 if (!correct_pts) while(1) |
2567 | 4149 { unsigned char* start=NULL; |
4150 int in_size; | |
4151 // get it! | |
4152 current_module="video_read_frame"; | |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4153 in_size=video_read_frame(sh_video,&next_frame_time,&start,force_fps); |
2567 | 4154 if(in_size<0){ eof=1; break; } |
4155 if(in_size>max_framesize) max_framesize=in_size; // stats | |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4156 sh_video->timer+=frame_time; |
8056
324b6e5387be
A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents:
8030
diff
changeset
|
4157 if(sh_audio) sh_audio->delay-=frame_time; |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4158 time_frame+=frame_time; // for nosound |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4159 // video_read_frame can change fps (e.g. for ASF video) |
15584
b5f111039c16
keep vo_fps and vo_mouse_timer_const in sync with sh_video->fps, otherwise
reimar
parents:
15504
diff
changeset
|
4160 vo_fps = sh_video->fps; |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4161 // check for frame-drop: |
5643 | 4162 current_module="check_framedrop"; |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4163 if(sh_audio && !d_audio->eof){ |
7605
c3bbe602aff3
new option -speed, to set playback speed rate (examples: -speed 1:3 or -speed 5)
arpi
parents:
7604
diff
changeset
|
4164 float delay=playback_speed*audio_out->get_delay(); |
8056
324b6e5387be
A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents:
8030
diff
changeset
|
4165 float d=delay-sh_audio->delay; |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4166 // we should avoid dropping too many frames in sequence unless we |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4167 // are too late. and we allow 100ms A-V delay here: |
12981
a0654c0e4202
Don't drop frames when paused, fixes not displaying the pause OSD icon
diego
parents:
12954
diff
changeset
|
4168 if(d<-dropped_frames*frame_time-0.100 && osd_function != OSD_PAUSE){ |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4169 drop_frame=frame_dropping; |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4170 ++drop_frame_cnt; |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4171 ++dropped_frames; |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4172 } else { |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4173 drop_frame=dropped_frames=0; |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4174 } |
5621 | 4175 ++total_frame_cnt; |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4176 } |
2567 | 4177 // decode: |
4178 current_module="decode_video"; | |
4179 // printf("Decode! %p %d \n",start,in_size); | |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
4180 blit_frame=decode_video(sh_video,start,in_size,drop_frame, sh_video->pts); |
5698
cb47abf3b511
Fix loop playback. Main loop was quited on end of video.
albeu
parents:
5681
diff
changeset
|
4181 break; |
1291 | 4182 } |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4183 else while (1) { |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4184 if (!generate_video_frame(sh_video, d_video)) { |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4185 eof = 1; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4186 break; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4187 } |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4188 sh_video->pts = vf_vo_data.pts; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4189 if (sh_video->pts == MP_NOPTS_VALUE) { |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4190 mp_msg(MSGT_CPLAYER, MSGL_ERR, "pts after filters MISSING\n"); |
19017 | 4191 sh_video->pts = last_pts; |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4192 } |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4193 if (last_pts == MP_NOPTS_VALUE) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4194 last_pts = sh_video->pts; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4195 else if (last_pts >= sh_video->pts) { |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4196 last_pts = sh_video->pts; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4197 mp_msg(MSGT_CPLAYER, MSGL_WARN, "pts value <= previous"); |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4198 } |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4199 frame_time = sh_video->pts - last_pts; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4200 last_pts = sh_video->pts; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4201 sh_video->timer += frame_time; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4202 time_frame += frame_time; // for nosound |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4203 if(sh_audio) |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4204 sh_audio->delay -= frame_time; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4205 blit_frame = 1; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4206 break; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4207 } |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
4208 |
2567 | 4209 vdecode_time=video_time_usage-vdecode_time; |
4210 //------------------------ frame decoded. -------------------- | |
5610 | 4211 |
4212 mp_dbg(MSGT_AVSYNC,MSGL_DBG2,"*** ftime=%5.3f ***\n",frame_time); | |
4213 | |
5927 | 4214 if(sh_video->vf_inited<0){ |
6930 | 4215 mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_NotInitializeVOPorVO); |
5927 | 4216 eof=1; goto goto_next_file; |
4217 } | |
4218 | |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4219 } |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4220 |
5610 | 4221 // ========================================================================== |
2567 | 4222 |
5643 | 4223 // current_module="draw_osd"; |
4224 // if(vo_config_count) video_out->draw_osd(); | |
1 | 4225 |
5610 | 4226 #ifdef HAVE_NEW_GUI |
4227 if(use_gui) guiEventHandling(); | |
4228 #endif | |
4229 | |
4230 current_module="calc_sleep_time"; | |
780 | 4231 |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4232 #if 0 |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4233 { // debug frame dropping code |
3097 | 4234 float delay=audio_out->get_delay(); |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4235 mp_msg(MSGT_AVSYNC,MSGL_V,"\r[V] %5.3f [A] %5.3f => {%5.3f} (%5.3f) [%d] \n", |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4236 sh_video->timer,sh_audio->timer-delay, |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4237 sh_video->timer-(sh_audio->timer-delay), |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4238 delay,drop_frame); |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4239 } |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4240 #endif |
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4241 |
7576
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4242 if(drop_frame && !frame_time_remaining && !autosync){ |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4243 /* |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4244 * Note: time_frame should not be forced to 0 in autosync mode. |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4245 * It is used as a cumulative counter to predict and correct the |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4246 * delay measurements from the audio driver. time_frame is already |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4247 * < 0, so the "time to sleep" code does not actually sleep. Also, |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4248 * blit_frame is already 0 because drop_frame was true when |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4249 * decode_video was called (which causes it to set blit_frame to 0.) |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4250 * When autosync==0, the default behavior is still completely unchanged. |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4251 */ |
5610 | 4252 |
4253 time_frame=0; // don't sleep! | |
4254 blit_frame=0; // don't display! | |
4255 | |
798 | 4256 } else { |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4257 |
780 | 4258 // It's time to sleep... |
5612
027568c0f982
new -framedrop code - works much better than the old one
arpi
parents:
5610
diff
changeset
|
4259 |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4260 frame_time_remaining=0; |
780 | 4261 time_frame-=GetRelativeTime(); // reset timer |
4262 | |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
4263 if(sh_audio && !d_audio->eof){ |
7605
c3bbe602aff3
new option -speed, to set playback speed rate (examples: -speed 1:3 or -speed 5)
arpi
parents:
7604
diff
changeset
|
4264 float delay=playback_speed*audio_out->get_delay(); |
3097 | 4265 mp_dbg(MSGT_AVSYNC,MSGL_DBG2,"delay=%f\n",delay); |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4266 |
7576
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4267 if (autosync){ |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4268 /* |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4269 * Adjust this raw delay value by calculating the expected |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4270 * delay for this frame and generating a new value which is |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4271 * weighted between the two. The higher autosync is, the |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4272 * closer to the delay value gets to that which "-nosound" |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4273 * would have used, and the longer it will take for A/V |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4274 * sync to settle at the right value (but it eventually will.) |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4275 * This settling time is very short for values below 100. |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4276 */ |
8056
324b6e5387be
A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents:
8030
diff
changeset
|
4277 float predicted = sh_audio->delay+time_frame; |
7576
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4278 float difference = delay - predicted; |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4279 delay = predicted + difference / (float)autosync; |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4280 } |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4281 |
8056
324b6e5387be
A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents:
8030
diff
changeset
|
4282 time_frame=delay-sh_audio->delay; |
3097 | 4283 |
7495 | 4284 // delay = amount of audio buffered in soundcard/driver |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4285 if(delay>0.25) delay=0.25; else |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4286 if(delay<0.10) delay=0.10; |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4287 if(time_frame>delay*0.6){ |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4288 // sleep time too big - may cause audio drops (buffer underrun) |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4289 frame_time_remaining=1; |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4290 time_frame=delay*0.5; |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4291 } |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4292 |
780 | 4293 } else { |
5610 | 4294 |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4295 // NOSOUND: |
1124
0e95f30ffd4c
-frames and -benchmark options to make chl & gabucino happy
arpi_esp
parents:
1059
diff
changeset
|
4296 if( (time_frame<-3*frame_time || time_frame>3*frame_time) || benchmark) |
0e95f30ffd4c
-frames and -benchmark options to make chl & gabucino happy
arpi_esp
parents:
1059
diff
changeset
|
4297 time_frame=0; |
0e95f30ffd4c
-frames and -benchmark options to make chl & gabucino happy
arpi_esp
parents:
1059
diff
changeset
|
4298 |
780 | 4299 } |
798 | 4300 |
17932 | 4301 // if(mp_msg_test(MSGT_CPLAYER,MSGL_DBG2)printf("sleep: %5.3f a:%6.3f v:%6.3f \n",time_frame,sh_audio->timer,sh_video->timer); |
1439 | 4302 |
4303 aq_sleep_time+=time_frame; | |
1709 | 4304 |
5610 | 4305 } // !drop_frame |
4306 | |
4307 //============================== SLEEP: =================================== | |
4308 | |
8068 | 4309 time_frame/=playback_speed; |
4310 | |
5610 | 4311 // flag 256 means: libvo driver does its timing (dvb card) |
4312 if(time_frame>0.001 && !(vo_flags&256)){ | |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4313 |
3015 | 4314 #ifdef HAVE_RTC |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4315 if(rtc_fd>=0){ |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4316 // -------- RTC ----------- |
5610 | 4317 current_module="sleep_rtc"; |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4318 while (time_frame > 0.000) { |
7494 | 4319 unsigned long rtc_ts; |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4320 if (read (rtc_fd, &rtc_ts, sizeof(rtc_ts)) <= 0) |
13577 | 4321 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_LinuxRTCReadError, strerror(errno)); |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4322 time_frame-=GetRelativeTime(); |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4323 } |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4324 } else |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4325 #endif |
15288 | 4326 #ifdef SYS_DARWIN |
4327 { | |
4328 current_module="sleep_darwin"; | |
4329 while(time_frame>0.005) { | |
4330 usec_sleep(1000000*time_frame); | |
4331 time_frame-=GetRelativeTime(); | |
4332 } | |
4333 } | |
4334 #else | |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4335 { |
12954 | 4336 // -------- TIMER + SOFTSLEEP ----------- |
18240
da3115996a81
1 - Remove kernel HZ=100 assumptions that are no longer true from
rtognimp
parents:
18237
diff
changeset
|
4337 // assume kernel HZ=100 for softsleep, works with larger HZ but with |
da3115996a81
1 - Remove kernel HZ=100 assumptions that are no longer true from
rtognimp
parents:
18237
diff
changeset
|
4338 // unnecessarily high CPU usage |
da3115996a81
1 - Remove kernel HZ=100 assumptions that are no longer true from
rtognimp
parents:
18237
diff
changeset
|
4339 float margin = softsleep ? 0.011 : 0; |
12954 | 4340 current_module="sleep_timer"; |
18240
da3115996a81
1 - Remove kernel HZ=100 assumptions that are no longer true from
rtognimp
parents:
18237
diff
changeset
|
4341 while (time_frame > margin) { |
da3115996a81
1 - Remove kernel HZ=100 assumptions that are no longer true from
rtognimp
parents:
18237
diff
changeset
|
4342 usec_sleep(1000000 * (time_frame - margin)); |
da3115996a81
1 - Remove kernel HZ=100 assumptions that are no longer true from
rtognimp
parents:
18237
diff
changeset
|
4343 time_frame -= GetRelativeTime(); |
da3115996a81
1 - Remove kernel HZ=100 assumptions that are no longer true from
rtognimp
parents:
18237
diff
changeset
|
4344 } |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4345 if(softsleep){ |
5610 | 4346 current_module="sleep_soft"; |
13577 | 4347 if(time_frame<0) mp_msg(MSGT_AVSYNC, MSGL_WARN, MSGTR_SoftsleepUnderflow); |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4348 while(time_frame>0) time_frame-=GetRelativeTime(); // burn the CPU |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4349 } |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4350 } |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
4351 #endif /* SYS_DARWIN */ |
2705 | 4352 } |
117 | 4353 |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4354 //if(!frame_time_remaining){ // should we display the frame now? |
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
4355 |
5610 | 4356 //====================== FLIP PAGE (VIDEO BLT): ========================= |
4357 | |
6123 | 4358 current_module="vo_check_events"; |
4359 if(vo_config_count) video_out->check_events(); | |
4360 | |
715 | 4361 current_module="flip_page"; |
8450 | 4362 if (!frame_time_remaining) { |
4363 if(blit_frame){ | |
1962 | 4364 unsigned int t2=GetTimer(); |
4838 | 4365 double tt; |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4366 float j; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4367 #define FRAME_LAG_WARN 0.2 |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4368 j = ((float)t2 - lastframeout_ts) / 1000000; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4369 lastframeout_ts = GetTimer(); |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4370 if (j < frame_time + frame_time * -FRAME_LAG_WARN) |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4371 too_fast_frame_cnt++; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4372 /* printf ("PANIC: too fast frame (%.3f)!\n", j); */ |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4373 else if (j > frame_time + frame_time * FRAME_LAG_WARN) |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4374 too_slow_frame_cnt++; |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4375 /* printf ("PANIC: too slow frame (%.3f)!\n", j); */ |
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4376 |
19973
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4377 // FIXME: add size based support for -endpos |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4378 if ( end_at.type == END_AT_TIME && end_at.pos < sh_video->pts ) |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4379 eof = PT_NEXT_ENTRY; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
4380 |
18779
d3b0e55b0c90
Revert Michael's VFCTRL_FLIP_PAGE changes ("svn merge -r 18781:18779 .")
uau
parents:
18777
diff
changeset
|
4381 if(vo_config_count) video_out->flip_page(); |
15895
7742302e793d
Do not count skipped/broken frames when using -frames
reimar
parents:
15865
diff
changeset
|
4382 if (play_n_frames >= 0) { |
7742302e793d
Do not count skipped/broken frames when using -frames
reimar
parents:
15865
diff
changeset
|
4383 --play_n_frames; |
16730 | 4384 if (play_n_frames <= 0) eof = PT_NEXT_ENTRY; |
15895
7742302e793d
Do not count skipped/broken frames when using -frames
reimar
parents:
15865
diff
changeset
|
4385 } |
7742302e793d
Do not count skipped/broken frames when using -frames
reimar
parents:
15865
diff
changeset
|
4386 |
5610 | 4387 // usec_sleep(50000); // test only! |
4838 | 4388 t2=GetTimer()-t2; |
4389 tt = t2*0.000001f; | |
4390 vout_time_usage+=tt; | |
8450 | 4391 } else { |
4392 /* | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4393 Well, no blitting is needed, but some devices (such as yuv4mpeg) |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4394 must output frames otherwise A/V desync will occur. -- Alvieboy |
8450 | 4395 */ |
4396 if (vo_config_count) | |
4397 video_out->control(VOCTRL_DUPLICATE_FRAME, NULL); | |
4398 } | |
4399 } | |
5610 | 4400 //====================== A-V TIMESTAMP CORRECTION: ========================= |
4401 | |
4402 current_module="av_sync"; | |
4403 | |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
4404 if(sh_audio){ |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4405 double a_pts, v_pts; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4406 |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4407 if (autosync) |
7576
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4408 /* |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4409 * If autosync is enabled, the value for delay must be calculated |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4410 * a bit differently. It is set only to the difference between |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4411 * the audio and video timers. Any attempt to include the real |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4412 * or corrected delay causes the pts_correction code below to |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4413 * try to correct for the changes in delay which autosync is |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4414 * trying to measure. This keeps the two from competing, but still |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4415 * allows the code to correct for PTS drift *only*. (Using a delay |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4416 * value here, even a "corrected" one, would be incompatible with |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4417 * autosync mode.) |
c135f7646036
new opt: -autosync, controls ao->get_delay() smoothing (default: disabled)
arpi
parents:
7563
diff
changeset
|
4418 */ |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4419 a_pts = written_audio_pts(sh_audio, d_audio) - sh_audio->delay; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4420 else |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4421 a_pts = playing_audio_pts(sh_audio, d_audio, audio_out); |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4422 |
8965 | 4423 v_pts=sh_video ? sh_video->pts : d_video->pts; |
746 | 4424 |
18323 | 4425 { |
6173 | 4426 static int drop_message=0; |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4427 double AV_delay = a_pts - audio_delay - v_pts; |
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4428 double x; |
11254 | 4429 if(AV_delay>0.5 && drop_frame_cnt>50 && drop_message==0){ |
6173 | 4430 ++drop_message; |
10341
eee7cab79089
moved the system too slow message to MSGL_WARN, so gui users will not be annoyed.. (and imho it fits better into that category, warning vs error)
alex
parents:
10272
diff
changeset
|
4431 mp_msg(MSGT_AVSYNC,MSGL_WARN,MSGTR_SystemTooSlow); |
6173 | 4432 } |
18088
18d57fb6d320
fix A-V sync overcorrection for desync due to too slow hardware.
reimar
parents:
18047
diff
changeset
|
4433 if (autosync) |
18d57fb6d320
fix A-V sync overcorrection for desync due to too slow hardware.
reimar
parents:
18047
diff
changeset
|
4434 x = AV_delay*0.1f; |
18d57fb6d320
fix A-V sync overcorrection for desync due to too slow hardware.
reimar
parents:
18047
diff
changeset
|
4435 else |
18d57fb6d320
fix A-V sync overcorrection for desync due to too slow hardware.
reimar
parents:
18047
diff
changeset
|
4436 /* Do not correct target time for the next frame if this frame |
18d57fb6d320
fix A-V sync overcorrection for desync due to too slow hardware.
reimar
parents:
18047
diff
changeset
|
4437 * was late not because of wrong target time but because the |
18d57fb6d320
fix A-V sync overcorrection for desync due to too slow hardware.
reimar
parents:
18047
diff
changeset
|
4438 * target time could not be met */ |
18d57fb6d320
fix A-V sync overcorrection for desync due to too slow hardware.
reimar
parents:
18047
diff
changeset
|
4439 x = (AV_delay + time_frame * playback_speed) * 0.1f; |
1 | 4440 if(x<-max_pts_correction) x=-max_pts_correction; else |
4441 if(x> max_pts_correction) x= max_pts_correction; | |
780 | 4442 if(default_max_pts_correction>=0) |
4443 max_pts_correction=default_max_pts_correction; | |
4444 else | |
4445 max_pts_correction=sh_video->frametime*0.10; // +-10% of time | |
8056
324b6e5387be
A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents:
8030
diff
changeset
|
4446 if(!frame_time_remaining){ sh_audio->delay+=x; c_total+=x;} // correction |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
4447 if(!quiet) |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
4448 print_status(a_pts - audio_delay, AV_delay, c_total); |
1 | 4449 } |
780 | 4450 |
1 | 4451 } else { |
4452 // No audio: | |
1420 | 4453 |
1448 | 4454 if(!quiet) |
13857
38424a8eb0ea
reworked the status line to avoid scrolling and remove duplicate code.
reimar
parents:
13794
diff
changeset
|
4455 print_status(0, 0, 0); |
1420 | 4456 |
1 | 4457 } |
5610 | 4458 |
4459 //============================ Auto QUALITY ============================ | |
1 | 4460 |
1439 | 4461 /*Output quality adjustments:*/ |
4462 if(auto_quality>0){ | |
5610 | 4463 current_module="autoq"; |
1496 | 4464 // float total=0.000001f * (GetTimer()-aq_total_time); |
1439 | 4465 // if(output_quality<auto_quality && aq_sleep_time>0.05f*total) |
4466 if(output_quality<auto_quality && aq_sleep_time>0) | |
4467 ++output_quality; | |
4468 else | |
4469 // if(output_quality>0 && aq_sleep_time<-0.05f*total) | |
4470 if(output_quality>1 && aq_sleep_time<0) | |
4471 --output_quality; | |
4472 else | |
4473 if(output_quality>0 && aq_sleep_time<-0.050f) // 50ms | |
4474 output_quality=0; | |
4475 // printf("total: %8.6f sleep: %8.6f q: %d\n",(0.000001f*aq_total_time),aq_sleep_time,output_quality); | |
4476 set_video_quality(sh_video,output_quality); | |
4477 } | |
4478 | |
5610 | 4479 } // end if(sh_video) |
4480 | |
4481 //============================ Handle PAUSE =============================== | |
4482 | |
4483 current_module="pause"; | |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4484 |
1422 | 4485 #ifdef USE_OSD |
220 | 4486 if(osd_visible){ |
18287
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
4487 // 36000000 means max timed visibility is 1 hour into the future, if |
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
4488 // the difference is greater assume it's wrapped around from below 0 |
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
4489 if (osd_visible - GetTimerMS() > 36000000) { |
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
4490 osd_visible = 0; |
5638
86663f1b9b00
new osd code, use osd objs to follow changes and do minimal updates
arpi
parents:
5627
diff
changeset
|
4491 vo_osd_progbar_type=-1; // disable |
86663f1b9b00
new osd code, use osd objs to follow changes and do minimal updates
arpi
parents:
5627
diff
changeset
|
4492 vo_osd_changed(OSDTYPE_PROGBAR); |
1504
f4f686aed404
modified mplayer.c to rewert to PLAY after rewinding after 1 sec
atlka
parents:
1501
diff
changeset
|
4493 if (osd_function != OSD_PAUSE) |
f4f686aed404
modified mplayer.c to rewert to PLAY after rewinding after 1 sec
atlka
parents:
1501
diff
changeset
|
4494 osd_function = OSD_PLAY; |
f4f686aed404
modified mplayer.c to rewert to PLAY after rewinding after 1 sec
atlka
parents:
1501
diff
changeset
|
4495 } |
220 | 4496 } |
1422 | 4497 #endif |
371 | 4498 |
4499 if(osd_function==OSD_PAUSE){ | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4500 mp_cmd_t* cmd; |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4501 if(!quiet) { |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4502 // Small hack to display the pause message on the OSD line. |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4503 // The pause string is: "\n == PAUSE == \r" so we need to |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4504 // take the first and the last char out |
17021
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
4505 if(use_term_osd) { |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4506 char msg[128] = MSGTR_Paused; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4507 int mlen = strlen(msg); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4508 msg[mlen-1] = '\0'; |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4509 set_osd_msg(OSD_MSG_PAUSE,1,0,"%s",msg+1); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4510 update_osd_msg(); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4511 } else |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4512 mp_msg(MSGT_CPLAYER,MSGL_STATUS,MSGTR_Paused); |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18232
diff
changeset
|
4513 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_PAUSED\n"); |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4514 fflush(stdout); |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4515 } |
1793
ba11d77c587a
gui status maintaining - now pause from console works, and gui display is in sync with osd
arpi
parents:
1792
diff
changeset
|
4516 #ifdef HAVE_NEW_GUI |
4974 | 4517 if(use_gui) guiGetEvent( guiCEvent,(char *)guiSetPause ); |
1793
ba11d77c587a
gui status maintaining - now pause from console works, and gui display is in sync with osd
arpi
parents:
1792
diff
changeset
|
4518 #endif |
5511 | 4519 if (video_out && sh_video && vo_config_count) |
4754 | 4520 video_out->control(VOCTRL_PAUSE, NULL); |
4521 | |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
4522 if (audio_out && sh_audio) |
1156 | 4523 audio_out->pause(); // pause audio, keep data if possible |
3322
cdd3f5ac06b2
-slave patch by Kilian A. Foth <foth@informatik.uni-hamburg.de>
arpi
parents:
3302
diff
changeset
|
4524 |
13603 | 4525 while( (cmd = mp_input_get_cmd(20,1,1)) == NULL) { |
5511 | 4526 if(sh_video && video_out && vo_config_count) video_out->check_events(); |
1709 | 4527 #ifdef HAVE_NEW_GUI |
4528 if(use_gui){ | |
4798 | 4529 guiEventHandling(); |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6590
diff
changeset
|
4530 guiGetEvent( guiReDraw,NULL ); |
4963 | 4531 if(guiIntfStruct.Playing!=2 || (rel_seek_secs || abs_seek_pos)) break; |
1709 | 4532 } |
4533 #endif | |
8198 | 4534 #ifdef HAVE_MENU |
4535 if(vf_menu) | |
4536 vf_menu_pause_update(vf_menu); | |
4537 #endif | |
9464 | 4538 usec_sleep(20000); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4539 } |
13768
955ad54a9aab
cmd can be NULL when leaving the paused mode and using the GUI
reimar
parents:
13743
diff
changeset
|
4540 if (cmd && cmd->id == MP_CMD_PAUSE) { |
13603 | 4541 cmd = mp_input_get_cmd(0,1,0); |
5046 | 4542 mp_cmd_free(cmd); |
13603 | 4543 } |
723 | 4544 osd_function=OSD_PLAY; |
1369
7a2f1881b776
a_frame, v_frame killed, using sh_audio/video->timer. has_audio not more used after initialization.
arpi
parents:
1353
diff
changeset
|
4545 if (audio_out && sh_audio) |
1156 | 4546 audio_out->resume(); // resume audio |
5511 | 4547 if (video_out && sh_video && vo_config_count) |
4754 | 4548 video_out->control(VOCTRL_RESUME, NULL); // resume video |
2889
0d8553a47d1a
RTC support, softsleep and optional new timing code by Dap
arpi
parents:
2880
diff
changeset
|
4549 (void)GetRelativeTime(); // keep TF around FT in next cycle |
1793
ba11d77c587a
gui status maintaining - now pause from console works, and gui display is in sync with osd
arpi
parents:
1792
diff
changeset
|
4550 #ifdef HAVE_NEW_GUI |
6183
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6173
diff
changeset
|
4551 if (use_gui) |
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6173
diff
changeset
|
4552 { |
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6173
diff
changeset
|
4553 if ( guiIntfStruct.Playing == guiSetStop ) goto goto_next_file; |
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6173
diff
changeset
|
4554 guiGetEvent( guiCEvent,(char *)guiSetPlay ); |
a4bbda72ce86
fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents:
6173
diff
changeset
|
4555 } |
1793
ba11d77c587a
gui status maintaining - now pause from console works, and gui display is in sync with osd
arpi
parents:
1792
diff
changeset
|
4556 #endif |
17241
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
4557 was_paused = 1; |
371 | 4558 } |
4559 | |
5610 | 4560 // handle -sstep |
2436 | 4561 if(step_sec>0) { |
4562 osd_function=OSD_FFW; | |
4563 rel_seek_secs+=step_sec; | |
4564 } | |
1 | 4565 |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4566 //================= EDL ========================================= |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4567 |
13168 | 4568 if( next_edl_record ) { // Are we (still?) doing EDL? |
12207 | 4569 if ( !sh_video ) { |
13358
567875b88aab
Hardcoded EDL messages moved to help_mp-en.h, Doxygen comments added, patch
diego
parents:
13353
diff
changeset
|
4570 mp_msg( MSGT_CPLAYER, MSGL_ERR, MSGTR_EdlNOsh_video ); |
14807
664b06b907cb
Some to-be-redundant EDL code moved to edl.c with mencoder's edl in mind. Stack handling improvements, Patch by Oded Shimon
reynaldo
parents:
14718
diff
changeset
|
4571 free_edl(edl_records); |
13868
707a29256fd3
Fix broken seek while on edl and audio only, spoted by Oded Shimon
reynaldo
parents:
13867
diff
changeset
|
4572 next_edl_record = NULL; |
707a29256fd3
Fix broken seek while on edl and audio only, spoted by Oded Shimon
reynaldo
parents:
13867
diff
changeset
|
4573 edl_records = NULL; |
12207 | 4574 } else { |
8966 | 4575 if( sh_video->pts >= next_edl_record->start_sec ) { |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4576 if( next_edl_record->action == EDL_SKIP ) { |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4577 osd_function = OSD_FFW; |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4578 abs_seek_pos = 0; |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4579 rel_seek_secs = next_edl_record->length_sec; |
13773 | 4580 mp_msg(MSGT_CPLAYER, MSGL_DBG4, "EDL_SKIP: start [%f], stop [%f], length [%f]\n", next_edl_record->start_sec, next_edl_record->stop_sec, next_edl_record->length_sec ); |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4581 edl_decision = 1; |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4582 } else if( next_edl_record->action == EDL_MUTE ) { |
13882
8a928d5b42b8
Replaces edl_mute_count with togle making code more understandable, other trivial list suggested changes too, Patch by Oded Shimon
reynaldo
parents:
13868
diff
changeset
|
4583 edl_muted = !edl_muted; |
8a928d5b42b8
Replaces edl_mute_count with togle making code more understandable, other trivial list suggested changes too, Patch by Oded Shimon
reynaldo
parents:
13868
diff
changeset
|
4584 if ((user_muted | edl_muted) != mixer.muted) mixer_mute(&mixer); |
13773 | 4585 mp_msg(MSGT_CPLAYER, MSGL_DBG4, "EDL_MUTE: [%f]\n", next_edl_record->start_sec ); |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4586 } |
13168 | 4587 next_edl_record=next_edl_record->next; |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4588 } |
12207 | 4589 } |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4590 } |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4591 |
1 | 4592 //================= Keyboard events, SEEKing ==================== |
4593 | |
5610 | 4594 current_module="key_events"; |
4595 | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4596 { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4597 mp_cmd_t* cmd; |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4598 int brk_cmd = 0; |
13603 | 4599 while( !brk_cmd && (cmd = mp_input_get_cmd(0,0,0)) != NULL) { |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4600 if(!set_property_command(cmd)) |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4601 switch(cmd->id) { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4602 case MP_CMD_SEEK : { |
14718 | 4603 float v; |
4604 int abs; | |
16938 | 4605 if(sh_video) |
4606 osd_show_percentage = sh_video->fps; | |
14718 | 4607 v = cmd->args[0].v.f; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4608 abs = (cmd->nargs > 1) ? cmd->args[1].v.i : 0; |
7450
9720e88cd0bc
This tiny patch adds "type=2" absolute seconds seek capability.
arpi
parents:
7419
diff
changeset
|
4609 if(abs==2) { /* Absolute seek to a specific timestamp in seconds */ |
9720e88cd0bc
This tiny patch adds "type=2" absolute seconds seek capability.
arpi
parents:
7419
diff
changeset
|
4610 abs_seek_pos = 1; |
9720e88cd0bc
This tiny patch adds "type=2" absolute seconds seek capability.
arpi
parents:
7419
diff
changeset
|
4611 if(sh_video) |
18288
008309f674bd
The code setting the OSD seek direction indicator for absolute seeks was
uau
parents:
18287
diff
changeset
|
4612 osd_function= (v > sh_video->pts) ? OSD_FFW : OSD_REW; |
7450
9720e88cd0bc
This tiny patch adds "type=2" absolute seconds seek capability.
arpi
parents:
7419
diff
changeset
|
4613 rel_seek_secs = v; |
9720e88cd0bc
This tiny patch adds "type=2" absolute seconds seek capability.
arpi
parents:
7419
diff
changeset
|
4614 } |
9720e88cd0bc
This tiny patch adds "type=2" absolute seconds seek capability.
arpi
parents:
7419
diff
changeset
|
4615 else if(abs) { /* Absolute seek by percentage */ |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4616 abs_seek_pos = 3; |
5798 | 4617 if(sh_video) |
18288
008309f674bd
The code setting the OSD seek direction indicator for absolute seeks was
uau
parents:
18287
diff
changeset
|
4618 osd_function= OSD_FFW; // Direction isn't set correctly |
5798 | 4619 rel_seek_secs = v/100.0; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4620 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4621 else { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4622 rel_seek_secs+= v; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4623 osd_function= (v > 0) ? OSD_FFW : OSD_REW; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4624 } |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4625 brk_cmd = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4626 } break; |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4627 case MP_CMD_SET_PROPERTY: { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4628 m_option_t* prop = mp_property_find(cmd->args[0].v.s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4629 if(!prop) mp_msg(MSGT_CPLAYER,MSGL_WARN,"Unkown property: '%s'\n",cmd->args[0].v.s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4630 else if(m_property_parse(prop,cmd->args[1].v.s) <= 0) |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4631 mp_msg(MSGT_CPLAYER,MSGL_WARN,"Failed to set property '%s' to '%s'.\n", |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4632 cmd->args[0].v.s,cmd->args[1].v.s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4633 |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4634 } break; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4635 case MP_CMD_GET_PROPERTY: { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4636 m_option_t* prop; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4637 void* val; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4638 prop = mp_property_find(cmd->args[0].v.s); |
19380 | 4639 if(!prop) { |
4640 mp_msg(MSGT_CPLAYER,MSGL_WARN,"Unkown property: '%s'\n",cmd->args[0].v.s); | |
4641 break; | |
4642 } | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4643 /* Use m_option_print directly to get easily parseable values. */ |
17911
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4644 val = calloc(1,prop->type->size); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4645 if(m_property_do(prop,M_PROPERTY_GET,val) <= 0) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4646 mp_msg(MSGT_CPLAYER,MSGL_WARN,"Failed to get value of property '%s'.\n", |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4647 cmd->args[0].v.s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4648 break; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4649 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4650 tmp = m_option_print(prop,val); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4651 if(!tmp || tmp == (char*)-1) { |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4652 mp_msg(MSGT_CPLAYER,MSGL_WARN,"Failed to print value of property '%s'.\n", |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4653 cmd->args[0].v.s); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4654 break; |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4655 } |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4656 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_%s=%s\n",cmd->args[0].v.s,tmp); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4657 free(tmp); |
52f95509cd05
Add the new property API and implement a couple properties.
albeu
parents:
17910
diff
changeset
|
4658 } break; |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4659 case MP_CMD_EDL_MARK: |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4660 if( edl_fd ) { |
18711
4d87a5c4611c
When playing an audio only file use audio time instead of video time to
uau
parents:
18710
diff
changeset
|
4661 float v = sh_video ? sh_video->pts : |
4d87a5c4611c
When playing an audio only file use audio time instead of video time to
uau
parents:
18710
diff
changeset
|
4662 playing_audio_pts(sh_audio, d_audio, audio_out); |
18911 | 4663 |
4664 if(begin_skip == MP_NOPTS_VALUE) | |
4665 { | |
4666 begin_skip = v; | |
4667 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_EdloutStartSkip); | |
4668 }else{ | |
4669 if(begin_skip > v) | |
4670 { | |
4671 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_EdloutBadStop); | |
4672 }else{ | |
4673 fprintf(edl_fd, "%f %f %d\n", begin_skip, v, 0); | |
4674 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_EdloutEndSkip); | |
4675 } | |
4676 begin_skip = MP_NOPTS_VALUE; | |
4677 } | |
8531
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4678 } |
1aa2c9b460af
Merged EDL 0.5 patch - it's something like Quicktime's edit lists.
arpi
parents:
8494
diff
changeset
|
4679 break; |
13339
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
4680 case MP_CMD_SWITCH_RATIO : { |
18818
ab94d003023d
switch_ratio -1 slave command restores aspect ratio to default value (geexbox patch)
ben
parents:
18779
diff
changeset
|
4681 if (cmd->nargs == 0 || cmd->args[0].v.f == -1) |
13339
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
4682 movie_aspect = (float) sh_video->disp_w / sh_video->disp_h; |
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
4683 else |
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
4684 movie_aspect = cmd->args[0].v.f; |
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
4685 mpcodecs_config_vo (sh_video, sh_video->disp_w, sh_video->disp_h, 0); |
1c787349d286
slave mode command to switch aspect ratio, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13338
diff
changeset
|
4686 } break; |
13710 | 4687 case MP_CMD_SPEED_INCR : { |
4688 float v = cmd->args[0].v.f; | |
4689 playback_speed += v; | |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4690 set_osd_msg(OSD_MSG_SPEED,1,osd_duration,MSGTR_OSDSpeed, playback_speed); |
13710 | 4691 build_afilter_chain(sh_audio, &ao_data); |
4692 } break; | |
4693 case MP_CMD_SPEED_MULT : { | |
4694 float v = cmd->args[0].v.f; | |
4695 playback_speed *= v; | |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4696 set_osd_msg(OSD_MSG_SPEED,1,osd_duration,MSGTR_OSDSpeed, playback_speed); |
13710 | 4697 build_afilter_chain(sh_audio, &ao_data); |
4698 } break; | |
4699 case MP_CMD_SPEED_SET : { | |
4700 float v = cmd->args[0].v.f; | |
4701 playback_speed = v; | |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4702 set_osd_msg(OSD_MSG_SPEED,1,osd_duration,MSGTR_OSDSpeed, playback_speed); |
13710 | 4703 build_afilter_chain(sh_audio, &ao_data); |
4704 } break; | |
13626
741649fe31cb
allow to step only one frame forward by pressing s.
reimar
parents:
13603
diff
changeset
|
4705 case MP_CMD_FRAME_STEP : |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4706 case MP_CMD_PAUSE : { |
13991 | 4707 cmd->pausing = 1; |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4708 brk_cmd = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4709 } break; |
19491
10d8f2cae948
added new filter option to menu file browser to only display some files according to extension
ben
parents:
19485
diff
changeset
|
4710 case MP_CMD_FILE_FILTER : { |
10d8f2cae948
added new filter option to menu file browser to only display some files according to extension
ben
parents:
19485
diff
changeset
|
4711 file_filter = cmd->args[0].v.i; |
10d8f2cae948
added new filter option to menu file browser to only display some files according to extension
ben
parents:
19485
diff
changeset
|
4712 break; |
10d8f2cae948
added new filter option to menu file browser to only display some files according to extension
ben
parents:
19485
diff
changeset
|
4713 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4714 case MP_CMD_QUIT : { |
13338
1820ef597cdb
quit slave mode command now accepts an exit value, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents:
13298
diff
changeset
|
4715 exit_player_with_rc(MSGTR_Exit_quit, (cmd->nargs > 0)? cmd->args[0].v.i : 0); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4716 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4717 case MP_CMD_GRAB_FRAMES : { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4718 grab_frames=2; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4719 } break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4720 case MP_CMD_PLAY_TREE_STEP : { |
8198 | 4721 int n = cmd->args[0].v.i == 0 ? 1 : cmd->args[0].v.i; |
5135 | 4722 int force = cmd->args[1].v.i; |
4723 | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4724 #ifdef HAVE_NEW_GUI |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4725 if (use_gui) { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4726 int i=0; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4727 if (n>0) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4728 for (i=0;i<n;i++) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4729 mplNext(); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4730 else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4731 for (i=0;i<-1*n;i++) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4732 mplPrev(); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4733 } else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4734 #endif |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4735 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4736 if(!force && playtree_iter) { |
5135 | 4737 play_tree_iter_t* i = play_tree_iter_new_copy(playtree_iter); |
4738 | |
4739 if(play_tree_iter_step(i,n,0) == PLAY_TREE_ITER_ENTRY) | |
4740 eof = (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY; | |
4741 play_tree_iter_free(i); | |
4742 } else | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4743 eof = (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY; |
8198 | 4744 if(eof) |
4745 play_tree_step = n; | |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4746 brk_cmd = 1; |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4747 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4748 } break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4749 case MP_CMD_PLAY_TREE_UP_STEP : { |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4750 int n = cmd->args[0].v.i > 0 ? 1 : -1; |
5135 | 4751 int force = cmd->args[1].v.i; |
4752 | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9217
diff
changeset
|
4753 if(!force && playtree_iter) { |
5135 | 4754 play_tree_iter_t* i = play_tree_iter_new_copy(playtree_iter); |
4755 if(play_tree_iter_up_step(i,n,0) == PLAY_TREE_ITER_ENTRY) | |
4756 eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV; | |
4757 play_tree_iter_free(i); | |
4758 } else | |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4759 eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV; |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4760 brk_cmd = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4761 } break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4762 case MP_CMD_PLAY_ALT_SRC_STEP : { |
9352 | 4763 if(playtree_iter && playtree_iter->num_files > 1) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4764 int v = cmd->args[0].v.i; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4765 if(v > 0 && playtree_iter->file < playtree_iter->num_files) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4766 eof = PT_NEXT_SRC; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4767 else if(v < 0 && playtree_iter->file > 1) |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4768 eof = PT_PREV_SRC; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4769 } |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4770 brk_cmd = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4771 } break; |
8365
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
4772 case MP_CMD_SUB_STEP : { |
10609
e6b63c53402e
there were no checks in MP_CMD_SUB for sh_video, so mplayer immediately segfaulted when such keys were pressed on non-video files
alex
parents:
10602
diff
changeset
|
4773 #ifdef USE_SUB |
e6b63c53402e
there were no checks in MP_CMD_SUB for sh_video, so mplayer immediately segfaulted when such keys were pressed on non-video files
alex
parents:
10602
diff
changeset
|
4774 if (sh_video) { |
8365
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
4775 int movement = cmd->args[0].v.i; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
4776 step_sub(subdata, sh_video->pts, movement); |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
4777 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
4778 if (ass_track) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
4779 sub_delay += ass_step_sub(ass_track, (sh_video->pts + sub_delay) * 1000 + .5, movement) / 1000.; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
4780 #endif |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4781 set_osd_msg(OSD_MSG_SUB_DELAY,1,osd_duration, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4782 MSGTR_OSDSubDelay, ROUND(sub_delay*1000)); |
10609
e6b63c53402e
there were no checks in MP_CMD_SUB for sh_video, so mplayer immediately segfaulted when such keys were pressed on non-video files
alex
parents:
10602
diff
changeset
|
4783 } |
e6b63c53402e
there were no checks in MP_CMD_SUB for sh_video, so mplayer immediately segfaulted when such keys were pressed on non-video files
alex
parents:
10602
diff
changeset
|
4784 #endif |
8365
423a19edc0a4
This patch makes it possible to navigate among the subtitles while
arpi
parents:
8364
diff
changeset
|
4785 } break; |
14684 | 4786 case MP_CMD_SUB_LOG : { |
4787 #ifdef USE_SUB | |
4788 log_sub(); | |
4789 #endif | |
4790 } break; | |
10609
e6b63c53402e
there were no checks in MP_CMD_SUB for sh_video, so mplayer immediately segfaulted when such keys were pressed on non-video files
alex
parents:
10602
diff
changeset
|
4791 case MP_CMD_OSD : { |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4792 int v = cmd->args[0].v.i; |
17021
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
4793 int max = use_term_osd ? MAX_TERM_OSD_LEVEL : MAX_OSD_LEVEL; |
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
4794 if(osd_level > max) osd_level = max; |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4795 if(v < 0) |
17021
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
4796 osd_level=(osd_level+1)%(max+1); |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
4797 else |
17021
ded1cc937221
Make the osd command only switch between enabled/disabled when
albeu
parents:
16992
diff
changeset
|
4798 osd_level= v > max ? max : v; |
15862
30cd1a5f4274
Make the OSD display state information when cycling OSD states with 'o'.
diego
parents:
15811
diff
changeset
|
4799 /* Show OSD state when disabled, but not when an explicit |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4800 argument is given to the OSD command, i.e. in slave mode. */ |
15863
7689a7c41225
simplify osd-status display, and allow e.g. osd -2 to get the old behaviour
reimar
parents:
15862
diff
changeset
|
4801 if (v == -1 && osd_level <= 1) |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4802 set_osd_msg(OSD_MSG_OSD_STATUS,0,osd_duration, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4803 MSGTR_OSDosd, osd_level ? MSGTR_OSDenabled : MSGTR_OSDdisabled); |
17057
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
4804 else |
d301c1833d12
Add a function to remove osd msg and use it to remove the "OSD: enabled"
albeu
parents:
17021
diff
changeset
|
4805 rm_osd_msg(OSD_MSG_OSD_STATUS); |
10609
e6b63c53402e
there were no checks in MP_CMD_SUB for sh_video, so mplayer immediately segfaulted when such keys were pressed on non-video files
alex
parents:
10602
diff
changeset
|
4806 } break; |
10116
add63fea61ac
new slave mode command to show text via osd, patch by Lars Gemeinhardt <lars.gemeinhardt at searchbroker.de> (reviewed by albeu)
faust3
parents:
10053
diff
changeset
|
4807 case MP_CMD_OSD_SHOW_TEXT : { |
18223 | 4808 set_osd_msg(OSD_MSG_TEXT,cmd->args[2].v.i, |
4809 (cmd->args[1].v.i < 0 ? osd_duration : cmd->args[1].v.i), | |
4810 "%-.63s",cmd->args[0].v.s); | |
10116
add63fea61ac
new slave mode command to show text via osd, patch by Lars Gemeinhardt <lars.gemeinhardt at searchbroker.de> (reviewed by albeu)
faust3
parents:
10053
diff
changeset
|
4811 } break; |
18222
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4812 case MP_CMD_OSD_SHOW_PROPERTY_TEXT : { |
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4813 char* txt = m_properties_expand_string(mp_properties,cmd->args[0].v.s); |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4814 /* if no argument supplied take default osd_duration, else <arg> ms. */ |
18222
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4815 if(txt) { |
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4816 set_osd_msg(OSD_MSG_TEXT,cmd->args[2].v.i, |
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4817 (cmd->args[1].v.i < 0 ? osd_duration : cmd->args[1].v.i), |
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4818 "%-.63s",txt); |
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4819 free(txt); |
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4820 } |
8c35bd43135f
Add a new command: osd_show_property_text that show an expanded property
albeu
parents:
18206
diff
changeset
|
4821 } break; |
6818
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4822 case MP_CMD_LOADFILE : { |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4823 play_tree_t* e = play_tree_new(); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4824 play_tree_add_file(e,cmd->args[0].v.s); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4825 |
16227
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4826 if (cmd->args[1].v.i) // append |
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4827 play_tree_append_entry(playtree, e); |
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4828 else { |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4829 // Go back to the starting point. |
6818
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4830 while(play_tree_iter_up_step(playtree_iter,0,1) != PLAY_TREE_ITER_END) |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4831 /* NOP */; |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4832 play_tree_free_list(playtree->child,1); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4833 play_tree_set_child(playtree,e); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4834 play_tree_iter_step(playtree_iter,0,0); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4835 eof = PT_NEXT_SRC; |
16227
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4836 } |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4837 brk_cmd = 1; |
6818
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4838 } break; |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4839 case MP_CMD_LOADLIST : { |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4840 play_tree_t* e = parse_playlist_file(cmd->args[0].v.s); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4841 if(!e) |
6930 | 4842 mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_PlaylistLoadUnable,cmd->args[0].v.s); |
6818
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4843 else { |
16227
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4844 if (cmd->args[1].v.i) // append |
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4845 play_tree_append_entry(playtree, e); |
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4846 else { |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
4847 // Go back to the starting point. |
6818
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4848 while(play_tree_iter_up_step(playtree_iter,0,1) != PLAY_TREE_ITER_END) |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4849 /* NOP */; |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4850 play_tree_free_list(playtree->child,1); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4851 play_tree_set_child(playtree,e); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4852 play_tree_iter_step(playtree_iter,0,0); |
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4853 eof = PT_NEXT_SRC; |
16227
4b2b8c90d370
loadfile/loadlist can now also add files to the playlist
reimar
parents:
16175
diff
changeset
|
4854 } |
6818
b9a6817d9ff3
Add loadfile and loadlist commands. May be buggy if the filename contain some
albeu
parents:
6796
diff
changeset
|
4855 } |
10409
4c9ca4819bed
Commands are read in a loop, but for some commands we need to break
albeu
parents:
10397
diff
changeset
|
4856 brk_cmd = 1; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4857 } break; |
19568
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4858 #ifdef USE_RADIO |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4859 case MP_CMD_RADIO_STEP_CHANNEL : { |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4860 if (demuxer->stream->type==STREAMTYPE_RADIO) { |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4861 int v = cmd->args[0].v.i; |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4862 if(v > 0) |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4863 radio_step_channel(demuxer->stream, RADIO_CHANNEL_HIGHER); |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4864 else |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4865 radio_step_channel(demuxer->stream, RADIO_CHANNEL_LOWER); |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4866 if (radio_get_channel_name(demuxer->stream)) { |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4867 set_osd_msg(OSD_MSG_RADIO_CHANNEL,1,osd_duration, |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4868 MSGTR_OSDChannel, radio_get_channel_name(demuxer->stream)); |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4869 } |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4870 } |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4871 } break; |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4872 case MP_CMD_RADIO_SET_CHANNEL : { |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4873 if (demuxer->stream->type== STREAMTYPE_RADIO) { |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4874 radio_set_channel(demuxer->stream, cmd->args[0].v.s); |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4875 if (radio_get_channel_name(demuxer->stream)) { |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4876 set_osd_msg(OSD_MSG_RADIO_CHANNEL,1,osd_duration, |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4877 MSGTR_OSDChannel, radio_get_channel_name(demuxer->stream)); |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4878 } |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4879 } |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4880 } break; |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4881 case MP_CMD_RADIO_SET_FREQ : { |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4882 if (demuxer->stream->type== STREAMTYPE_RADIO) |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4883 radio_set_freq(demuxer->stream, cmd->args[0].v.f); |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4884 } break; |
bd821fd3e244
Radio support, patch by Vladimir Voroshilov (voroshil gmail com)
reimar
parents:
19533
diff
changeset
|
4885 #endif |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4886 #ifdef USE_TV |
10521
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4887 case MP_CMD_TV_SET_FREQ : { |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4888 if (file_format == DEMUXER_TYPE_TV) |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4889 tv_set_freq((tvi_handle_t*)(demuxer->priv), cmd->args[0].v.f * 16.0); |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4890 } break; |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4891 case MP_CMD_TV_SET_NORM : { |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4892 if (file_format == DEMUXER_TYPE_TV) |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4893 tv_set_norm((tvi_handle_t*)(demuxer->priv), cmd->args[0].v.s); |
141141fdd250
I'd like to change tv tuner frequency in the slave mode. So this patch
gabucino
parents:
10453
diff
changeset
|
4894 } break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4895 case MP_CMD_TV_STEP_CHANNEL : { |
9752 | 4896 if (file_format == DEMUXER_TYPE_TV) { |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4897 int v = cmd->args[0].v.i; |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4898 if(v > 0){ |
7419 | 4899 tv_step_channel((tvi_handle_t*)(demuxer->priv), TV_CHANNEL_HIGHER); |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4900 } else { |
7419 | 4901 tv_step_channel((tvi_handle_t*)(demuxer->priv), TV_CHANNEL_LOWER); |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4902 } |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4903 if (tv_channel_list) { |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4904 set_osd_msg(OSD_MSG_TV_CHANNEL,1,osd_duration, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4905 MSGTR_OSDChannel, tv_channel_current->name); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4906 //vo_osd_changed(OSDTYPE_SUBTITLE); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4907 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4908 } |
9610 | 4909 } |
4910 #ifdef HAS_DVBIN_SUPPORT | |
10560 | 4911 if((stream->type == STREAMTYPE_DVB) && stream->priv) |
9610 | 4912 { |
10560 | 4913 dvb_priv_t *priv = (dvb_priv_t*) stream->priv; |
4914 if(priv->is_on) | |
4915 { | |
4916 int dir; | |
9610 | 4917 int v = cmd->args[0].v.i; |
10708 | 4918 |
4919 last_dvb_step = v; | |
9610 | 4920 if(v > 0) |
10560 | 4921 dir = DVB_CHANNEL_HIGHER; |
9610 | 4922 else |
10560 | 4923 dir = DVB_CHANNEL_LOWER; |
4924 | |
4925 | |
4926 if(dvb_step_channel(priv, dir)) | |
18286 | 4927 eof = dvbin_reopen = 1; |
10560 | 4928 } |
9610 | 4929 } |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
4930 #endif /* HAS_DVBIN_SUPPORT */ |
9610 | 4931 break; |
8494 | 4932 case MP_CMD_TV_SET_CHANNEL : { |
9752 | 4933 if (file_format == DEMUXER_TYPE_TV) { |
8494 | 4934 tv_set_channel((tvi_handle_t*)(demuxer->priv), cmd->args[0].v.s); |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4935 if (tv_channel_list) { |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4936 set_osd_msg(OSD_MSG_TV_CHANNEL,1,osd_duration, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4937 MSGTR_OSDChannel, tv_channel_current->name); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4938 //vo_osd_changed(OSDTYPE_SUBTITLE); |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4939 } |
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4940 } |
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4941 } break; |
10560 | 4942 #ifdef HAS_DVBIN_SUPPORT |
4943 case MP_CMD_DVB_SET_CHANNEL: | |
4944 { | |
4945 if((stream->type == STREAMTYPE_DVB) && stream->priv) | |
4946 { | |
4947 dvb_priv_t *priv = (dvb_priv_t*) stream->priv; | |
4948 if(priv->is_on) | |
4949 { | |
10708 | 4950 if(priv->list->current <= cmd->args[0].v.i) |
4951 last_dvb_step = 1; | |
4952 else | |
4953 last_dvb_step = -1; | |
4954 | |
12306
661a6e80030f
slave command dvb_set_channel now takes 2 arguments: channel card
nicodvb
parents:
12207
diff
changeset
|
4955 if(dvb_set_channel(priv, cmd->args[1].v.i, cmd->args[0].v.i)) |
18286 | 4956 eof = dvbin_reopen = 1; |
10560 | 4957 } |
4958 } | |
4959 } | |
17715
9e1fb2aeeed9
don't fall back to MP_CMD_TV_LAST_CHANNEL after MP_CMD_DVB_SETCHANNEL; patch by calking a ieee d org
nicodvb
parents:
17654
diff
changeset
|
4960 break; |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
4961 #endif /* HAS_DVBIN_SUPPORT */ |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4962 case MP_CMD_TV_LAST_CHANNEL : { |
9752 | 4963 if (file_format == DEMUXER_TYPE_TV) { |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4964 tv_last_channel((tvi_handle_t*)(demuxer->priv)); |
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4965 if (tv_channel_list) { |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4966 set_osd_msg(OSD_MSG_TV_CHANNEL,1,osd_duration, |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4967 MSGTR_OSDChannel, tv_channel_current->name); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
4968 //vo_osd_changed(OSDTYPE_SUBTITLE); |
8627
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4969 } |
14ab71b47a58
user friendly channel tuning + 10L fix in tvi_v4l (by Stephane Jourdois)
henry
parents:
8619
diff
changeset
|
4970 } |
8494 | 4971 } break; |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4972 case MP_CMD_TV_STEP_NORM : { |
9752 | 4973 if (file_format == DEMUXER_TYPE_TV) |
7419 | 4974 tv_step_norm((tvi_handle_t*)(demuxer->priv)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4975 } break; |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4976 case MP_CMD_TV_STEP_CHANNEL_LIST : { |
9752 | 4977 if (file_format == DEMUXER_TYPE_TV) |
7419 | 4978 tv_step_chanlist((tvi_handle_t*)(demuxer->priv)); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
4979 } break; |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
4980 #endif /* USE_TV */ |
15706 | 4981 case MP_CMD_SUB_LOAD: |
4982 { | |
4983 #ifdef USE_SUB | |
4984 if (sh_video) { | |
4985 int n = set_of_sub_size; | |
4986 add_subtitles(cmd->args[0].v.s, sh_video->fps, 0); | |
4987 if (n != set_of_sub_size) { | |
4988 if (global_sub_indices[SUB_SOURCE_SUBS] < 0) | |
4989 global_sub_indices[SUB_SOURCE_SUBS] = global_sub_size; | |
4990 ++global_sub_size; | |
4991 } | |
4992 } | |
4993 #endif | |
4994 } break; | |
4995 case MP_CMD_SUB_REMOVE: | |
4996 { | |
4997 #ifdef USE_SUB | |
4998 if (sh_video) { | |
4999 int v = cmd->args[0].v.i; | |
5000 sub_data *subd; | |
5001 if (v < 0) { | |
5002 for (v = 0; v < set_of_sub_size; ++v) { | |
5003 subd = set_of_subtitles[v]; | |
5004 mp_msg(MSGT_CPLAYER, MSGL_STATUS, MSGTR_RemovedSubtitleFile, v + 1, subd->filename); | |
5005 sub_free(subd); | |
5006 set_of_subtitles[v] = NULL; | |
5007 } | |
5008 global_sub_indices[SUB_SOURCE_SUBS] = -1; | |
5009 global_sub_size -= set_of_sub_size; | |
5010 set_of_sub_size = 0; | |
5011 if (set_of_sub_pos >= 0) { | |
5012 global_sub_pos = -2; | |
5013 vo_sub_last = vo_sub = NULL; | |
5014 vo_osd_changed(OSDTYPE_SUBTITLE); | |
5015 vo_update_osd(sh_video->disp_w, sh_video->disp_h); | |
5016 mp_input_queue_cmd(mp_input_parse_cmd("sub_select")); | |
5017 } | |
5018 } | |
5019 else if (v < set_of_sub_size) { | |
5020 subd = set_of_subtitles[v]; | |
5021 mp_msg(MSGT_CPLAYER, MSGL_STATUS, MSGTR_RemovedSubtitleFile, v + 1, subd->filename); | |
5022 sub_free(subd); | |
5023 if (set_of_sub_pos == v) { | |
5024 global_sub_pos = -2; | |
5025 vo_sub_last = vo_sub = NULL; | |
5026 vo_osd_changed(OSDTYPE_SUBTITLE); | |
5027 vo_update_osd(sh_video->disp_w, sh_video->disp_h); | |
5028 mp_input_queue_cmd(mp_input_parse_cmd("sub_select")); | |
5029 } | |
5030 else if (set_of_sub_pos > v) { | |
5031 --set_of_sub_pos; | |
5032 --global_sub_pos; | |
5033 } | |
5034 while (++v < set_of_sub_size) | |
5035 set_of_subtitles[v - 1] = set_of_subtitles[v]; | |
5036 --set_of_sub_size; | |
5037 --global_sub_size; | |
5038 if (set_of_sub_size <= 0) | |
5039 global_sub_indices[SUB_SOURCE_SUBS] = -1; | |
5040 set_of_subtitles[set_of_sub_size] = NULL; | |
5041 } | |
5042 } | |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
5043 #endif /* USE_SUB */ |
15706 | 5044 } break; |
10884
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5045 case MP_CMD_GET_SUB_VISIBILITY: |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5046 { |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5047 #ifdef USE_SUB |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5048 if (sh_video) { |
17366 | 5049 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_SUB_VISIBILITY=%d\n", sub_visibility); |
10884
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5050 } |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5051 #endif |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5052 } break; |
6112 | 5053 case MP_CMD_SCREENSHOT : |
16446 | 5054 if(vo_config_count){ |
5055 mp_msg(MSGT_CPLAYER,MSGL_INFO,"sending VFCTRL_SCREENSHOT!\n"); | |
19833 | 5056 if(CONTROL_OK!=((vf_instance_t *)sh_video->vfilter)->control(sh_video->vfilter, VFCTRL_SCREENSHOT, &cmd->args[0].v.i)) |
16446 | 5057 video_out->control(VOCTRL_SCREENSHOT, NULL); |
5058 } | |
6112 | 5059 break; |
6888
2dde1a1bc03a
Add the input command "change_rectangle" to control the rectangle
kmkaplan
parents:
6871
diff
changeset
|
5060 case MP_CMD_VF_CHANGE_RECTANGLE: |
2dde1a1bc03a
Add the input command "change_rectangle" to control the rectangle
kmkaplan
parents:
6871
diff
changeset
|
5061 set_rectangle(sh_video, cmd->args[0].v.i, cmd->args[1].v.i); |
2dde1a1bc03a
Add the input command "change_rectangle" to control the rectangle
kmkaplan
parents:
6871
diff
changeset
|
5062 break; |
8364 | 5063 |
5064 case MP_CMD_GET_TIME_LENGTH : { | |
16346
6ff303d2876b
Make -identify's 'ID_LENGTH=' print a float and not an integer.. The
ods15
parents:
16345
diff
changeset
|
5065 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_LENGTH=%.2lf\n", demuxer_get_time_length(demuxer)); |
8364 | 5066 } break; |
5067 | |
19533 | 5068 case MP_CMD_GET_FILENAME : { |
5069 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_FILENAME='%s'\n", get_metadata (META_NAME)); | |
5070 } break; | |
5071 | |
5072 case MP_CMD_GET_VIDEO_CODEC : { | |
5073 char *inf = get_metadata (META_VIDEO_CODEC); | |
5074 if (!inf) inf = strdup (""); | |
5075 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_VIDEO_CODEC='%s'\n", inf); | |
5076 free (inf); | |
5077 } break; | |
5078 | |
5079 case MP_CMD_GET_VIDEO_BITRATE : { | |
5080 char *inf = get_metadata (META_VIDEO_BITRATE); | |
5081 if (!inf) inf = strdup (""); | |
5082 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_VIDEO_BITRATE='%s'\n", inf); | |
5083 free (inf); | |
5084 } break; | |
5085 | |
5086 case MP_CMD_GET_VIDEO_RESOLUTION : { | |
5087 char *inf = get_metadata (META_VIDEO_RESOLUTION); | |
5088 if (!inf) inf = strdup (""); | |
5089 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_VIDEO_RESOLUTION='%s'\n", inf); | |
5090 free (inf); | |
5091 } break; | |
5092 | |
5093 case MP_CMD_GET_AUDIO_CODEC : { | |
5094 char *inf = get_metadata (META_AUDIO_CODEC); | |
5095 if (!inf) inf = strdup (""); | |
5096 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_AUDIO_CODEC='%s'\n", inf); | |
5097 free (inf); | |
5098 } break; | |
5099 | |
5100 case MP_CMD_GET_AUDIO_BITRATE : { | |
5101 char *inf = get_metadata (META_AUDIO_BITRATE); | |
5102 if (!inf) inf = strdup (""); | |
5103 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_AUDIO_BITRATE='%s'\n", inf); | |
5104 free (inf); | |
5105 } break; | |
5106 | |
5107 case MP_CMD_GET_AUDIO_SAMPLES : { | |
5108 char *inf = get_metadata (META_AUDIO_SAMPLES); | |
5109 if (!inf) inf = strdup (""); | |
5110 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_AUDIO_SAMPLES='%s'\n", inf); | |
5111 free (inf); | |
5112 } break; | |
5113 | |
5114 case MP_CMD_GET_META_TITLE : { | |
5115 char *inf = get_metadata (META_INFO_TITLE); | |
5116 if (!inf) inf = strdup (""); | |
5117 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_META_TITLE='%s'\n", inf); | |
5118 free (inf); | |
5119 } break; | |
5120 | |
5121 case MP_CMD_GET_META_ARTIST : { | |
5122 char *inf = get_metadata (META_INFO_ARTIST); | |
5123 if (!inf) inf = strdup (""); | |
5124 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_META_ARTIST='%s'\n", inf); | |
5125 free (inf); | |
5126 } break; | |
5127 | |
5128 case MP_CMD_GET_META_ALBUM : { | |
5129 char *inf = get_metadata (META_INFO_ALBUM); | |
5130 if (!inf) inf = strdup (""); | |
5131 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_META_ALBUM='%s'\n", inf); | |
5132 free (inf); | |
5133 } break; | |
5134 | |
5135 case MP_CMD_GET_META_YEAR : { | |
5136 char *inf = get_metadata (META_INFO_YEAR); | |
5137 if (!inf) inf = strdup (""); | |
5138 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_META_YEAR='%s'\n", inf); | |
5139 free (inf); | |
5140 } break; | |
5141 | |
5142 case MP_CMD_GET_META_COMMENT : { | |
5143 char *inf = get_metadata (META_INFO_COMMENT); | |
5144 if (!inf) inf = strdup (""); | |
5145 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_META_COMMENT='%s'\n", inf); | |
5146 free (inf); | |
5147 } break; | |
5148 | |
5149 case MP_CMD_GET_META_TRACK : { | |
5150 char *inf = get_metadata (META_INFO_TRACK); | |
5151 if (!inf) inf = strdup (""); | |
5152 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_META_TRACK='%s'\n", inf); | |
5153 free (inf); | |
5154 } break; | |
5155 | |
5156 case MP_CMD_GET_META_GENRE : { | |
5157 char *inf = get_metadata (META_INFO_GENRE); | |
5158 if (!inf) inf = strdup (""); | |
5159 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_META_GENRE='%s'\n", inf); | |
5160 free (inf); | |
5161 } break; | |
5162 | |
10884
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5163 case MP_CMD_GET_VO_FULLSCREEN : { |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5164 if(video_out && vo_config_count) |
17366 | 5165 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_VO_FULLSCREEN=%d\n", vo_fs); |
10884
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5166 } break; |
bbdaa93c469e
slave mode commands to print out vo_fs and sub_visibility globals, patch by Mike Swieton <swietonm at student.gvsu.edu>
faust3
parents:
10718
diff
changeset
|
5167 |
8364 | 5168 case MP_CMD_GET_PERCENT_POS : { |
17366 | 5169 mp_msg(MSGT_GLOBAL,MSGL_INFO, "ANS_PERCENT_POSITION=%d\n", demuxer_get_percent_pos(demuxer)); |
8364 | 5170 } break; |
15504 | 5171 case MP_CMD_GET_TIME_POS : { |
5172 float pos = 0; | |
5173 if (sh_video) | |
5174 pos = sh_video->pts; | |
5175 else | |
5176 if (sh_audio && audio_out) | |
18710
c528c6c518f1
Clean up audio pts handling, make audio pts tracking in the audio-only
uau
parents:
18682
diff
changeset
|
5177 pos = playing_audio_pts(sh_audio, d_audio, audio_out); |
16079 | 5178 mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_TIME_POSITION=%.1f\n", pos); |
15504 | 5179 } break; |
14087 | 5180 case MP_CMD_RUN : { |
13353
65207324b932
make it possible to use the run command from a menu config file, based on a patch by Aurelien Jacobs <aurel@gnuage.org>
faust3
parents:
13341
diff
changeset
|
5181 #ifndef __MINGW32__ |
65207324b932
make it possible to use the run command from a menu config file, based on a patch by Aurelien Jacobs <aurel@gnuage.org>
faust3
parents:
13341
diff
changeset
|
5182 if(!fork()) { |
65207324b932
make it possible to use the run command from a menu config file, based on a patch by Aurelien Jacobs <aurel@gnuage.org>
faust3
parents:
13341
diff
changeset
|
5183 execl("/bin/sh","sh","-c",cmd->args[0].v.s,NULL); |
65207324b932
make it possible to use the run command from a menu config file, based on a patch by Aurelien Jacobs <aurel@gnuage.org>
faust3
parents:
13341
diff
changeset
|
5184 exit(0); |
65207324b932
make it possible to use the run command from a menu config file, based on a patch by Aurelien Jacobs <aurel@gnuage.org>
faust3
parents:
13341
diff
changeset
|
5185 } |
65207324b932
make it possible to use the run command from a menu config file, based on a patch by Aurelien Jacobs <aurel@gnuage.org>
faust3
parents:
13341
diff
changeset
|
5186 #endif |
65207324b932
make it possible to use the run command from a menu config file, based on a patch by Aurelien Jacobs <aurel@gnuage.org>
faust3
parents:
13341
diff
changeset
|
5187 } break; |
16323
60c6693b2b2b
add key_down_eventto slave mode, used to inject key down event with mplayer_put_key
nplourde
parents:
16315
diff
changeset
|
5188 case MP_CMD_KEYDOWN_EVENTS : { |
60c6693b2b2b
add key_down_eventto slave mode, used to inject key down event with mplayer_put_key
nplourde
parents:
16315
diff
changeset
|
5189 mplayer_put_key(cmd->args[0].v.i); |
60c6693b2b2b
add key_down_eventto slave mode, used to inject key down event with mplayer_put_key
nplourde
parents:
16315
diff
changeset
|
5190 } break; |
19342 | 5191 case MP_CMD_SEEK_CHAPTER : { |
5192 int seek = cmd->args[0].v.i; | |
5193 int abs = (cmd->nargs > 1) ? cmd->args[1].v.i : 0; | |
19436
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5194 int chap; |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5195 float next_pts = 0; |
19478
bab82c53e433
demuxer_seek_chapter() returns informations about chapters count and name
nicodvb
parents:
19468
diff
changeset
|
5196 int num_chapters; |
bab82c53e433
demuxer_seek_chapter() returns informations about chapters count and name
nicodvb
parents:
19468
diff
changeset
|
5197 char *chapter_name; |
19436
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5198 |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5199 rel_seek_secs = 0; |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5200 abs_seek_pos = 0; |
19478
bab82c53e433
demuxer_seek_chapter() returns informations about chapters count and name
nicodvb
parents:
19468
diff
changeset
|
5201 chap = demuxer_seek_chapter(demuxer, seek, abs, &next_pts, &num_chapters, &chapter_name); |
19436
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5202 if(chap != -1) { |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5203 if(next_pts > -1.0) { |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5204 abs_seek_pos = 1; |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5205 rel_seek_secs = next_pts; |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5206 } |
19478
bab82c53e433
demuxer_seek_chapter() returns informations about chapters count and name
nicodvb
parents:
19468
diff
changeset
|
5207 if(chapter_name) { |
19436
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5208 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, MSGTR_OSDChapter, |
19943
ef30bef09385
when changing chapter, in the osd print the channel number in a more natural form:
nicodvb
parents:
19910
diff
changeset
|
5209 chap+1, chapter_name); |
19478
bab82c53e433
demuxer_seek_chapter() returns informations about chapters count and name
nicodvb
parents:
19468
diff
changeset
|
5210 free(chapter_name); |
bab82c53e433
demuxer_seek_chapter() returns informations about chapters count and name
nicodvb
parents:
19468
diff
changeset
|
5211 } |
19342 | 5212 } else { |
19436
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5213 if (seek > 0) |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5214 rel_seek_secs = 1000000000.; |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5215 else |
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5216 set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, MSGTR_OSDChapter, 0, MSGTR_Unknown); |
19342 | 5217 } |
19436
e451718727d9
seek to chapter using newly introduced demux_seek_chapter()
nicodvb
parents:
19401
diff
changeset
|
5218 break; |
19342 | 5219 } break; |
19850
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
5220 case MP_CMD_SET_MOUSE_POS: { |
19908
b6aa47caeb72
§Ænitial button value is -1. Only (button>0) is a correct button selection.
jonas
parents:
19851
diff
changeset
|
5221 int button = -1, pointer_x, pointer_y; |
19850
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
5222 double dx, dy; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
5223 pointer_x = cmd->args[0].v.i; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
5224 pointer_y = cmd->args[1].v.i; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
5225 rescale_input_coordinates(pointer_x, pointer_y, &dx, &dy); |
19851
adfd08588514
report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
nicodvb
parents:
19850
diff
changeset
|
5226 #ifdef USE_DVDNAV |
adfd08588514
report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
nicodvb
parents:
19850
diff
changeset
|
5227 if(stream->type == STREAMTYPE_DVDNAV && dx > 0.0 && dy > 0.0) { |
adfd08588514
report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
nicodvb
parents:
19850
diff
changeset
|
5228 pointer_x = (int) (dx * (double) sh_video->disp_w); |
adfd08588514
report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
nicodvb
parents:
19850
diff
changeset
|
5229 pointer_y = (int) (dy * (double) sh_video->disp_h); |
adfd08588514
report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
nicodvb
parents:
19850
diff
changeset
|
5230 mp_dvdnav_update_mouse_pos(stream, pointer_x, pointer_y, &button); |
19910
8e3785c20752
show in the osd the number of the button selected by the mouse
nicodvb
parents:
19908
diff
changeset
|
5231 if(button>0) set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, "Selected button number %d", button); |
19851
adfd08588514
report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
nicodvb
parents:
19850
diff
changeset
|
5232 } |
adfd08588514
report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
nicodvb
parents:
19850
diff
changeset
|
5233 #endif |
19850
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
5234 break; |
4919b3ce8d5e
report to mplayer with a slave command the coordinates of the pointer reported by x11; rescale coordinates to [0,1]x[0,1] range - patch by Jonas Jermann and me
nicodvb
parents:
19837
diff
changeset
|
5235 } |
19769
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5236 #ifdef USE_DVDNAV |
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5237 case MP_CMD_DVDNAV: { |
19908
b6aa47caeb72
§Ænitial button value is -1. Only (button>0) is a correct button selection.
jonas
parents:
19851
diff
changeset
|
5238 int button = -1; |
19769
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5239 if(stream->type != STREAMTYPE_DVDNAV) break; |
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5240 |
19774
109e241c0cca
in mp_dvdnav_handle_input() assign the currently selected button, shown in the OSD by main()
nicodvb
parents:
19769
diff
changeset
|
5241 if(mp_dvdnav_handle_input(stream, cmd->args[0].v.i, &button)) { |
19837
e507a91a37ed
don't uninit the video_out when using -fixed-vo; patch by Jonas Jermann
nicodvb
parents:
19833
diff
changeset
|
5242 uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT|(fixed_vo ? INITED_VO : 0))); |
19769
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5243 goto goto_enable_cache; |
19908
b6aa47caeb72
§Ænitial button value is -1. Only (button>0) is a correct button selection.
jonas
parents:
19851
diff
changeset
|
5244 } else if(button>0) set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, "Selected button number %d", button); |
19769
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5245 break; |
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5246 } |
cc67a85cb722
first touch of support for dvdnav menus; the selection is based on the keyboard selection and is completely blind: there's not the slightest visual feedback
nicodvb
parents:
19767
diff
changeset
|
5247 #endif |
4858 | 5248 default : { |
5249 #ifdef HAVE_NEW_GUI | |
5250 if ( ( use_gui )&&( cmd->id > MP_CMD_GUI_EVENTS ) ) guiGetEvent( guiIEvent,(char *)cmd->id ); | |
5251 else | |
5252 #endif | |
10397 | 5253 mp_msg(MSGT_CPLAYER, MSGL_V, "Received unknown cmd %s\n",cmd->name); |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
5254 } |
4858 | 5255 } |
17241
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5256 switch (cmd->pausing) { |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5257 case 1: // "pausing" |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5258 osd_function = OSD_PAUSE; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5259 break; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5260 case 3: // "pausing_toggle" |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5261 was_paused = !was_paused; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5262 // fall through |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5263 case 2: // "pausing_keep" |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5264 if (was_paused) osd_function = OSD_PAUSE; |
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5265 } |
4418
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
5266 mp_cmd_free(cmd); |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
5267 } |
8141d2c399e4
A new configurable input system and joystick support for this system
albeu
parents:
4395
diff
changeset
|
5268 } |
17241
3ab613cdf96a
add "pausing_keep" and "pausing_toggle" input cmd prefixes
ods15
parents:
17240
diff
changeset
|
5269 was_paused = 0; |
7111 | 5270 |
651 | 5271 if (seek_to_sec) { |
937 | 5272 int a,b; float d; |
5273 | |
5274 if (sscanf(seek_to_sec, "%d:%d:%f", &a,&b,&d)==3) | |
5275 rel_seek_secs += 3600*a +60*b +d ; | |
5276 else if (sscanf(seek_to_sec, "%d:%f", &a, &d)==2) | |
5277 rel_seek_secs += 60*a +d; | |
5278 else if (sscanf(seek_to_sec, "%f", &d)==1) | |
5279 rel_seek_secs += d; | |
5280 | |
5281 seek_to_sec = NULL; | |
651 | 5282 } |
937 | 5283 |
19973
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5284 if (end_at.type != END_AT_NONE) { |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5285 if(end_at.type == END_AT_SIZE) { |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5286 mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_MPEndposNoSizeBased); |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5287 end_at.type = END_AT_NONE; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5288 } else { |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5289 end_at.pos += rel_seek_secs; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5290 } |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5291 } |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19946
diff
changeset
|
5292 |
2365 | 5293 /* Looping. */ |
3540 | 5294 if(eof==1 && loop_times>=0) { |
5655
117f34bb7097
Add correct loop option parsing in command line parser.
albeu
parents:
5651
diff
changeset
|
5295 int l = loop_times; |
117f34bb7097
Add correct loop option parsing in command line parser.
albeu
parents:
5651
diff
changeset
|
5296 play_tree_iter_step(playtree_iter,0,0); |
117f34bb7097
Add correct loop option parsing in command line parser.
albeu
parents:
5651
diff
changeset
|
5297 loop_times = l; |
3540 | 5298 mp_msg(MSGT_CPLAYER,MSGL_V,"loop_times = %d, eof = %d\n", loop_times,eof); |
2365 | 5299 |
3540 | 5300 if(loop_times>1) loop_times--; else |
5301 if(loop_times==1) loop_times=-1; | |
8198 | 5302 play_n_frames=play_n_frames_mf; |
2365 | 5303 eof=0; |
3540 | 5304 abs_seek_pos=3; rel_seek_secs=0; // seek to start of movie (0%) |
8784 | 5305 loop_seek = 1; |
2365 | 5306 } |
5307 | |
1627
eeaee1632340
absolute seek debugging with 1-8 keys (disabled by default)
arpi
parents:
1626
diff
changeset
|
5308 if(rel_seek_secs || abs_seek_pos){ |
1466 | 5309 current_module="seek"; |
17636 | 5310 if(demux_seek(demuxer,rel_seek_secs,audio_delay,abs_seek_pos)){ |
1405 | 5311 // success: |
4079 | 5312 /* FIXME there should be real seeking for vobsub */ |
8966 | 5313 if(sh_video) sh_video->pts=d_video->pts; |
4079 | 5314 if (vo_vobsub) |
11589 | 5315 //vobsub_reset(vo_vobsub); |
5316 vobsub_seek(vo_vobsub,sh_video->pts); | |
1459
622c504f36ef
printf stuff moved seek.c->mplayer.c, resetting drop_frame_cnt after seek
arpi
parents:
1457
diff
changeset
|
5317 fflush(stdout); |
622c504f36ef
printf stuff moved seek.c->mplayer.c, resetting drop_frame_cnt after seek
arpi
parents:
1457
diff
changeset
|
5318 |
4593
3769ccb8da8b
libvo's query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4587
diff
changeset
|
5319 if(sh_video){ |
3769ccb8da8b
libvo's query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4587
diff
changeset
|
5320 current_module="seek_video_reset"; |
11977
efb37725d616
flushing stuff after seeking (finally we can view MPEG without thouse blocks after seeking with -vc ffmpeg12)
michael
parents:
11936
diff
changeset
|
5321 resync_video_stream(sh_video); |
5511 | 5322 if(vo_config_count) video_out->control(VOCTRL_RESET,NULL); |
18917
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
5323 sh_video->num_buffered_pts = 0; |
d9a75b26da6c
Add a new video pts tracking mode, enabled by option -correct-pts.
uau
parents:
18913
diff
changeset
|
5324 last_pts = MP_NOPTS_VALUE; |
4593
3769ccb8da8b
libvo's query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4587
diff
changeset
|
5325 } |
3769ccb8da8b
libvo's query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4587
diff
changeset
|
5326 |
1459
622c504f36ef
printf stuff moved seek.c->mplayer.c, resetting drop_frame_cnt after seek
arpi
parents:
1457
diff
changeset
|
5327 if(sh_audio){ |
1466 | 5328 current_module="seek_audio_reset"; |
1334 | 5329 audio_out->reset(); // stop audio, throwing away buffered data |
18243
8cb434bc37e4
5 - Drop more buffered audio data left from old position when seeking.
rtognimp
parents:
18242
diff
changeset
|
5330 sh_audio->a_buffer_len = 0; |
8cb434bc37e4
5 - Drop more buffered audio data left from old position when seeking.
rtognimp
parents:
18242
diff
changeset
|
5331 sh_audio->a_out_buffer_len = 0; |
1 | 5332 } |
1334 | 5333 // Set OSD: |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
5334 if(!loop_seek){ |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
5335 if( !edl_decision ) |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
5336 set_osd_bar(0,"Position",0,100,demuxer_get_percent_pos(demuxer)); |
1334 | 5337 } |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
5338 |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5339 if(sh_video) { |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5340 c_total=0; |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5341 max_pts_correction=0.1; |
18287
292337d09af2
Remove updating of vo_mouse_timer_const from the main loop and also
uau
parents:
18286
diff
changeset
|
5342 osd_visible=(GetTimerMS() + 1000) | 1; // to revert to PLAY pointer after 1 sec |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5343 audio_time_usage=0; video_time_usage=0; vout_time_usage=0; |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5344 drop_frame_cnt=0; |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5345 too_slow_frame_cnt=0; |
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5346 too_fast_frame_cnt=0; |
3744 | 5347 |
5488
3f183ca22747
fixed SPU pts, it's 1024/90000 based instead of 1/100
arpi
parents:
5463
diff
changeset
|
5348 if(vo_spudec) spudec_reset(vo_spudec); |
4587
886bf5274992
Audio only support. Include a fix in the asf demuxer opening.
albeu
parents:
4552
diff
changeset
|
5349 } |
1 | 5350 } |
13168 | 5351 /* |
13358
567875b88aab
Hardcoded EDL messages moved to help_mp-en.h, Doxygen comments added, patch
diego
parents:
13353
diff
changeset
|
5352 * We saw a seek, have to rewind the EDL operations stack |
567875b88aab
Hardcoded EDL messages moved to help_mp-en.h, Doxygen comments added, patch
diego
parents:
13353
diff
changeset
|
5353 * and find the next EDL action to take care of. |
13168 | 5354 */ |
5355 | |
13882
8a928d5b42b8
Replaces edl_mute_count with togle making code more understandable, other trivial list suggested changes too, Patch by Oded Shimon
reynaldo
parents:
13868
diff
changeset
|
5356 edl_muted = 0; |
13168 | 5357 next_edl_record = edl_records; |
5358 | |
5359 while (next_edl_record) | |
5360 { | |
13358
567875b88aab
Hardcoded EDL messages moved to help_mp-en.h, Doxygen comments added, patch
diego
parents:
13353
diff
changeset
|
5361 /* Trying to remember if we need to mute/unmute first; |
567875b88aab
Hardcoded EDL messages moved to help_mp-en.h, Doxygen comments added, patch
diego
parents:
13353
diff
changeset
|
5362 * prior EDL implementation lacks this. |
13168 | 5363 */ |
5364 | |
5365 if (next_edl_record->start_sec >= sh_video->pts) | |
5366 break; | |
13867 | 5367 |
13882
8a928d5b42b8
Replaces edl_mute_count with togle making code more understandable, other trivial list suggested changes too, Patch by Oded Shimon
reynaldo
parents:
13868
diff
changeset
|
5368 if (next_edl_record->action == EDL_MUTE) edl_muted = !edl_muted; |
13168 | 5369 next_edl_record = next_edl_record->next; |
5370 | |
5371 } | |
13882
8a928d5b42b8
Replaces edl_mute_count with togle making code more understandable, other trivial list suggested changes too, Patch by Oded Shimon
reynaldo
parents:
13868
diff
changeset
|
5372 if ((user_muted | edl_muted) != mixer.muted) mixer_mute(&mixer); |
18312 | 5373 |
1405 | 5374 rel_seek_secs=0; |
1627
eeaee1632340
absolute seek debugging with 1-8 keys (disabled by default)
arpi
parents:
1626
diff
changeset
|
5375 abs_seek_pos=0; |
5929
9e7d54e7be58
- frame_time delayed one frame, as it's really duration of current frame,
arpi
parents:
5927
diff
changeset
|
5376 frame_time_remaining=0; |
1466 | 5377 current_module=NULL; |
8784 | 5378 loop_seek=0; |
1466 | 5379 } |
5380 | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
5381 #ifdef HAVE_NEW_GUI |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
5382 if(use_gui){ |
5789 | 5383 guiEventHandling(); |
7751 | 5384 if(demuxer->file_format==DEMUXER_TYPE_AVI && sh_video && sh_video->video.dwLength>2){ |
1735 | 5385 // get pos from frame number / total frames |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4807
diff
changeset
|
5386 guiIntfStruct.Position=(float)d_video->pack_no*100.0f/sh_video->video.dwLength; |
1735 | 5387 } else { |
6914 | 5388 off_t len = ( demuxer->movi_end - demuxer->movi_start ); |
5389 off_t pos = ( demuxer->file_format == DEMUXER_TYPE_AUDIO?stream->pos:demuxer->filepos ); | |
5390 guiIntfStruct.Position=(len <= 0? 0.0f : ( pos - demuxer->movi_start ) * 100.0f / len ); | |
1735 | 5391 } |
8966 | 5392 if ( sh_video ) guiIntfStruct.TimeSec=sh_video->pts; |
8056
324b6e5387be
A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents:
8030
diff
changeset
|
5393 else if ( sh_audio ) guiIntfStruct.TimeSec=sh_audio->delay; |
8305
4c23944315d6
- add R«ädiger Kuhlmann's <mplayer-list-UGa6JdjLujS2@ruediger-kuhlmann.de> patch
pontscho
parents:
8254
diff
changeset
|
5394 guiIntfStruct.LengthInSec=demuxer_get_time_length(demuxer); |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6590
diff
changeset
|
5395 guiGetEvent( guiReDraw,NULL ); |
6903 | 5396 guiGetEvent( guiSetVolume,NULL ); |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4807
diff
changeset
|
5397 if(guiIntfStruct.Playing==0) break; // STOP |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4807
diff
changeset
|
5398 if(guiIntfStruct.Playing==2) osd_function=OSD_PAUSE; |
8423 | 5399 if ( guiIntfStruct.DiskChanged || guiIntfStruct.NewPlay ) goto goto_next_file; |
3054 | 5400 #ifdef USE_DVDREAD |
5401 if ( stream->type == STREAMTYPE_DVD ) | |
5402 { | |
5403 dvd_priv_t * dvdp = stream->priv; | |
7854 | 5404 guiIntfStruct.DVD.current_chapter=dvd_chapter_from_cell(dvdp,guiIntfStruct.DVD.current_title-1, dvdp->cur_cell)+1; |
3054 | 5405 } |
5406 #endif | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
5407 } |
16490
f17b3c152fd6
Add comments to a few #endif statements in order to make clear which
diego
parents:
16489
diff
changeset
|
5408 #endif /* HAVE_NEW_GUI */ |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
5409 |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1709
diff
changeset
|
5410 |
220 | 5411 //================= Update OSD ==================== |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
452
diff
changeset
|
5412 |
16992
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
5413 update_osd_msg(); |
58e526a6a8dc
Big OSD cleanup. Replace the mess with 100's of counter vars
albeu
parents:
16968
diff
changeset
|
5414 |
1422 | 5415 #ifdef USE_SUB |
258 | 5416 // find sub |
14644
36d53262f626
avoid null pointer dereference with .ssa subtitles when the video codec is missing patch by Philip Chong <pchong at ic.eecs.berkeley.edu>
faust3
parents:
14610
diff
changeset
|
5417 if(subdata && sh_video && sh_video->pts>0){ |
8966 | 5418 float pts=sh_video->pts; |
398 | 5419 if(sub_fps==0) sub_fps=sh_video->fps; |
482 | 5420 current_module="find_sub"; |
3274
ac7ded58b6df
mpeg subtitle flickering patch by Evgeny Chukreev <codedj@echo.ru>
arpi
parents:
3257
diff
changeset
|
5421 if (pts > sub_last_pts || pts < sub_last_pts-1.0 ) { |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
5422 find_sub(subdata, (pts+sub_delay) * |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
5423 (subdata->sub_uses_time ? 100. : sub_fps)); |
14684 | 5424 if (vo_sub) vo_sub_last = vo_sub; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
5425 // FIXME! frame counter... |
3274
ac7ded58b6df
mpeg subtitle flickering patch by Evgeny Chukreev <codedj@echo.ru>
arpi
parents:
3257
diff
changeset
|
5426 sub_last_pts = pts; |
ac7ded58b6df
mpeg subtitle flickering patch by Evgeny Chukreev <codedj@echo.ru>
arpi
parents:
3257
diff
changeset
|
5427 } |
482 | 5428 current_module=NULL; |
258 | 5429 } |
1422 | 5430 #endif |
9695 | 5431 |
9831 | 5432 #ifdef HAVE_X11 |
9695 | 5433 if (stop_xscreensaver && sh_video) { |
5434 current_module="stop_xscreensaver"; | |
11999 | 5435 xscreensaver_heartbeat(); |
9695 | 5436 current_module=NULL; |
5437 } | |
9831 | 5438 #endif |
554 | 5439 |
6110 | 5440 // DVD sub: |
5441 if(vo_config_count && vo_spudec) { | |
5442 unsigned char* packet=NULL; | |
10240 | 5443 int len,timestamp; |
10216 | 5444 current_module="spudec"; |
5445 spudec_heartbeat(vo_spudec,90000*sh_video->timer); | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
5446 /* Get a sub packet from the DVD or a vobsub and make a timestamp |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18315
diff
changeset
|
5447 relative to sh_video->timer */ |
10240 | 5448 while(1) { |
6110 | 5449 // Vobsub |
5450 len = 0; | |
5451 if(vo_vobsub) { | |
8966 | 5452 if(sh_video->pts+sub_delay>=0) { |
6110 | 5453 // The + next_frame_time is there because we'll display the sub at the next frame |
8966 | 5454 len = vobsub_get_packet(vo_vobsub,sh_video->pts+sub_delay+next_frame_time,(void**)&packet,×tamp); |
6110 | 5455 if(len > 0) { |
8966 | 5456 timestamp -= (sh_video->pts + sub_delay - sh_video->timer)*90000; |
10718 | 5457 mp_dbg(MSGT_CPLAYER,MSGL_V,"\rVOB sub: len=%d v_pts=%5.3f v_timer=%5.3f sub=%5.3f ts=%d \n",len,sh_video->pts,sh_video->timer,timestamp / 90000.0,timestamp); |
6110 | 5458 } |
5459 } | |
5460 } else { | |
5461 // DVD sub | |
5462 len = ds_get_packet_sub(d_dvdsub,(unsigned char**)&packet); | |
5463 if(len > 0) { | |
10691 | 5464 float x = d_dvdsub->pts - sh_video->pts; |
5465 if (x < -10 || x > 10) // prevent missing subs on pts reset | |
10557 | 5466 timestamp = 90000*(sh_video->timer + d_dvdsub->pts + sub_delay - sh_video->pts); |
5467 else timestamp = 90000*(sh_video->timer + sub_delay); | |
8966 | 5468 mp_dbg(MSGT_CPLAYER,MSGL_V,"\rDVD sub: len=%d v_pts=%5.3f s_pts=%5.3f ts=%d \n",len,sh_video->pts,d_dvdsub->pts,timestamp); |
6110 | 5469 } |
5470 } | |
10240 | 5471 if(len<=0 || !packet) break; |
6204 | 5472 if(timestamp < 0) timestamp = 0; |
11331
7edd5436337d
Do not display VobSubs whose timecodes are < 0 which would make all VobSubs appear from the start on upon seeking. Patch by "Reder, Uwe" <Uwe.Reder@3SOFT.de>.
mosu
parents:
11254
diff
changeset
|
5473 else spudec_assemble(vo_spudec,packet,len,timestamp); |
554 | 5474 } |
5475 | |
6190
bd6748605681
Bounding box and partial update patch for vob/dvdsub by Hephooey.
atmos4
parents:
6185
diff
changeset
|
5476 /* detect wether the sub has changed or not */ |
bd6748605681
Bounding box and partial update patch for vob/dvdsub by Hephooey.
atmos4
parents:
6185
diff
changeset
|
5477 if(spudec_changed(vo_spudec)) |
bd6748605681
Bounding box and partial update patch for vob/dvdsub by Hephooey.
atmos4
parents:
6185
diff
changeset
|
5478 vo_osd_changed(OSDTYPE_SPU); |
6110 | 5479 current_module=NULL; |
5480 } | |
5481 | |
1421 | 5482 } // while(!eof) |
1 | 5483 |
1567 | 5484 mp_msg(MSGT_GLOBAL,MSGL_V,"EOF code: %d \n",eof); |
1 | 5485 |
18286 | 5486 #ifdef HAS_DVBIN_SUPPORT |
5487 if(dvbin_reopen) | |
5488 { | |
5489 eof = 0; | |
5490 uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); | |
5491 cache_uninit(stream); | |
5492 dvbin_reopen = 0; | |
5493 goto goto_enable_cache; | |
5494 } | |
5495 #endif | |
1639 | 5496 } |
5497 | |
3618 | 5498 goto_next_file: // don't jump here after ao/vo/getch initialization! |
1641
b7dae998505c
free stream/demuxer. continue playback with next file if error found
arpi
parents:
1639
diff
changeset
|
5499 |
6138
523014df7d32
big cosmetics patch, cleanup of messages printed by mplayer and libs.
arpi
parents:
6135
diff
changeset
|
5500 mp_msg(MSGT_CPLAYER,MSGL_INFO,"\n"); |
523014df7d32
big cosmetics patch, cleanup of messages printed by mplayer and libs.
arpi
parents:
6135
diff
changeset
|
5501 |
4221 | 5502 if(benchmark){ |
5503 double tot=video_time_usage+vout_time_usage+audio_time_usage; | |
5504 double total_time_usage; | |
5505 total_time_usage_start=GetTimer()-total_time_usage_start; | |
5506 total_time_usage = (float)total_time_usage_start*0.000001; | |
5151 | 5507 mp_msg(MSGT_CPLAYER,MSGL_INFO,"\nBENCHMARKs: VC:%8.3fs VO:%8.3fs A:%8.3fs Sys:%8.3fs = %8.3fs\n", |
4221 | 5508 video_time_usage,vout_time_usage,audio_time_usage, |
5509 total_time_usage-tot,total_time_usage); | |
5510 if(total_time_usage>0.0) | |
5151 | 5511 mp_msg(MSGT_CPLAYER,MSGL_INFO,"BENCHMARK%%: VC:%8.4f%% VO:%8.4f%% A:%8.4f%% Sys:%8.4f%% = %8.4f%%\n", |
4221 | 5512 100.0*video_time_usage/total_time_usage, |
5513 100.0*vout_time_usage/total_time_usage, | |
5514 100.0*audio_time_usage/total_time_usage, | |
5515 100.0*(total_time_usage-tot)/total_time_usage, | |
5516 100.0); | |
5983 | 5517 if(total_frame_cnt && frame_dropping) |
5621 | 5518 mp_msg(MSGT_CPLAYER,MSGL_INFO,"BENCHMARKn: disp: %d (%3.2f fps) drop: %d (%d%%) total: %d (%3.2f fps)\n", |
5519 total_frame_cnt-drop_frame_cnt, | |
5520 (total_time_usage>0.5)?((total_frame_cnt-drop_frame_cnt)/total_time_usage):0, | |
5521 drop_frame_cnt, | |
5522 100*drop_frame_cnt/total_frame_cnt, | |
5523 total_frame_cnt, | |
5524 (total_time_usage>0.5)?(total_frame_cnt/total_time_usage):0); | |
5525 | |
4221 | 5526 } |
5527 | |
5983 | 5528 // time to uninit all, except global stuff: |
7677
33562a65e9e8
_EXPERIMENTAL_ option: -fixed-vo for libvo spec compliance testing
arpi
parents:
7628
diff
changeset
|
5529 uninit_player(INITED_ALL-(INITED_GUI+INITED_INPUT+(fixed_vo?INITED_VO:0))); |
5154 | 5530 |
9048 | 5531 #ifdef USE_SUB |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
5532 if ( set_of_sub_size > 0 ) |
9048 | 5533 { |
5534 current_module="sub_free"; | |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5535 for (i = 0; i < set_of_sub_size; ++i) { |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
5536 sub_free( set_of_subtitles[i] ); |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5537 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5538 if ( set_of_ass_tracks[i] ) |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5539 ass_free_track( set_of_ass_tracks[i] ); |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5540 #endif |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5541 } |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
5542 set_of_sub_size = 0; |
14684 | 5543 vo_sub_last = vo_sub=NULL; |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9831
diff
changeset
|
5544 subdata=NULL; |
18937
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5545 #ifdef USE_ASS |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5546 ass_track = NULL; |
9e95ac641e77
Initial libass release (without mencoder support).
eugeni
parents:
18934
diff
changeset
|
5547 #endif |
9048 | 5548 } |
5549 #endif | |
5550 | |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
5551 if(eof == PT_NEXT_ENTRY || eof == PT_PREV_ENTRY) { |
4221 | 5552 eof = eof == PT_NEXT_ENTRY ? 1 : -1; |
8198 | 5553 if(play_tree_iter_step(playtree_iter,play_tree_step,0) == PLAY_TREE_ITER_ENTRY) { |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5554 eof = 1; |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5555 } else { |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5556 play_tree_iter_free(playtree_iter); |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5557 playtree_iter = NULL; |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5558 } |
8198 | 5559 play_tree_step = 1; |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
5560 } else if (eof == PT_UP_NEXT || eof == PT_UP_PREV) { |
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
5561 eof = eof == PT_UP_NEXT ? 1 : -1; |
9368 | 5562 if ( playtree_iter ) { |
5563 if(play_tree_iter_up_step(playtree_iter,eof,0) == PLAY_TREE_ITER_ENTRY) { | |
5564 eof = 1; | |
5565 } else { | |
5566 play_tree_iter_free(playtree_iter); | |
5567 playtree_iter = NULL; | |
5568 } | |
5569 } | |
5154 | 5570 } else { // NEXT PREV SRC |
4156
22fadd4022b5
playtree-based config patch by Alban Bedel <albeu@free.fr>
arpi
parents:
4152
diff
changeset
|
5571 eof = eof == PT_PREV_SRC ? -1 : 1; |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5572 } |
1639 | 5573 |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5574 if(eof == 0) eof = 1; |
1641
b7dae998505c
free stream/demuxer. continue playback with next file if error found
arpi
parents:
1639
diff
changeset
|
5575 |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5576 while(playtree_iter != NULL) { |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5577 filename = play_tree_iter_get_file(playtree_iter,eof); |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5578 if(filename == NULL) { |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5579 if( play_tree_iter_step(playtree_iter,eof,0) != PLAY_TREE_ITER_ENTRY) { |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5580 play_tree_iter_free(playtree_iter); |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5581 playtree_iter = NULL; |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5582 }; |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5583 } else |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5584 break; |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5585 } |
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5586 |
5910
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5587 #ifdef HAVE_NEW_GUI |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5588 if( use_gui && !playtree_iter ) |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5589 { |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5590 #ifdef USE_DVDREAD |
6280 | 5591 if ( !guiIntfStruct.DiskChanged ) |
5910
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5592 #endif |
6713 | 5593 mplEnd(); |
5910
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5594 } |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5595 #endif |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5908
diff
changeset
|
5596 |
16347
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
5597 if(use_gui || playtree_iter != NULL || player_idle_mode){ |
da2926d990ce
Adds -idle, an option to make MPlayer wait for input ('loadfile' or
ods15
parents:
16346
diff
changeset
|
5598 if (!playtree_iter) filename = NULL; |
4045
898caa690c0b
playtree support. replaces old playlist and multifile mess. patch by Alban Bedel <albeu@free.fr>
arpi
parents:
3934
diff
changeset
|
5599 eof = 0; |
1641
b7dae998505c
free stream/demuxer. continue playback with next file if error found
arpi
parents:
1639
diff
changeset
|
5600 goto play_next_file; |
1639 | 5601 } |
5602 | |
7122
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
5603 |
8644
0bfd73828e33
This patch fixes so that the exit code (or return code if you like) is set
arpi
parents:
8635
diff
changeset
|
5604 exit_player_with_rc(MSGTR_Exit_eof, 0); |
1639 | 5605 |
109 | 5606 return 1; |
5607 } |