Mercurial > mplayer.hg
annotate mpcommon.c @ 29214:a1abd8d51b81
Change VOFW for x86 to 5120, it allows larger images to be scaled and was
not slower. Other archs are not changed as the larger VOFW was slower on PPC.
author | michael |
---|---|
date | Tue, 05 May 2009 01:34:16 +0000 |
parents | 06540eb5ef6a |
children | 0f1b5b68af32 |
rev | line source |
---|---|
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
1 #include <stdlib.h> |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
2 #include "stream/stream.h" |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
3 #include "libmpdemux/demuxer.h" |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
4 #include "libmpdemux/stheader.h" |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
5 #include "mplayer.h" |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
6 #include "libvo/sub.h" |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
7 #include "libvo/video_out.h" |
28325 | 8 #include "cpudetect.h" |
9 #include "help_mp.h" | |
10 #include "mp_msg.h" | |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
11 #include "spudec.h" |
28325 | 12 #include "version.h" |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
13 #include "vobsub.h" |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27343
diff
changeset
|
14 #ifdef CONFIG_TV_TELETEXT |
23903 | 15 #include "stream/tv.h" |
16 #endif | |
25855
57a1511f4e76
Support mov subtitle format directly instead of converting to text in the demuxer
reimar
parents:
25656
diff
changeset
|
17 #include "libavutil/intreadwrite.h" |
26416 | 18 #include "m_option.h" |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
19 |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
20 double sub_last_pts = -303; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
21 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26422
diff
changeset
|
22 #ifdef CONFIG_ASS |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
23 #include "libass/ass.h" |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
24 #include "libass/ass_mp.h" |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
25 ass_track_t* ass_track = 0; // current track to render |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
26 #endif |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
27 |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
28 sub_data* subdata = NULL; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
29 subtitle* vo_sub_last = NULL; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
30 |
28325 | 31 |
32 void print_version(const char* name) | |
33 { | |
34 mp_msg(MSGT_CPLAYER, MSGL_INFO, MP_TITLE, name); | |
35 | |
36 /* Test for CPU capabilities (and corresponding OS support) for optimizing */ | |
37 GetCpuCaps(&gCpuCaps); | |
38 #if ARCH_X86 | |
39 mp_msg(MSGT_CPLAYER, MSGL_V, | |
28331
8461282f0eed
Add SSSE3 and CMOV to CPU information printed on startup.
diego
parents:
28330
diff
changeset
|
40 "CPUflags: MMX: %d MMX2: %d 3DNow: %d 3DNowExt: %d SSE: %d SSE2: %d SSSE3: %d\n", |
28325 | 41 gCpuCaps.hasMMX, gCpuCaps.hasMMX2, |
42 gCpuCaps.has3DNow, gCpuCaps.has3DNowExt, | |
28331
8461282f0eed
Add SSSE3 and CMOV to CPU information printed on startup.
diego
parents:
28330
diff
changeset
|
43 gCpuCaps.hasSSE, gCpuCaps.hasSSE2, gCpuCaps.hasSSSE3); |
29114
06540eb5ef6a
Rename RUNTIME_CPUDETECT to CONFIG_RUNTIME_CPUDETECT and always define it.
ramiro
parents:
28340
diff
changeset
|
44 #if CONFIG_RUNTIME_CPUDETECT |
28325 | 45 mp_msg(MSGT_CPLAYER,MSGL_V, MSGTR_CompiledWithRuntimeDetection); |
46 #else | |
47 mp_msg(MSGT_CPLAYER,MSGL_V, MSGTR_CompiledWithCPUExtensions); | |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
48 if (HAVE_MMX) |
28325 | 49 mp_msg(MSGT_CPLAYER,MSGL_V," MMX"); |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
50 if (HAVE_MMX2) |
28325 | 51 mp_msg(MSGT_CPLAYER,MSGL_V," MMX2"); |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
52 if (HAVE_AMD3DNOW) |
28325 | 53 mp_msg(MSGT_CPLAYER,MSGL_V," 3DNow"); |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
54 if (HAVE_AMD3DNOWEXT) |
28330 | 55 mp_msg(MSGT_CPLAYER,MSGL_V," 3DNowExt"); |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
56 if (HAVE_SSE) |
28325 | 57 mp_msg(MSGT_CPLAYER,MSGL_V," SSE"); |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
58 if (HAVE_SSE2) |
28325 | 59 mp_msg(MSGT_CPLAYER,MSGL_V," SSE2"); |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
60 if (HAVE_SSSE3) |
28331
8461282f0eed
Add SSSE3 and CMOV to CPU information printed on startup.
diego
parents:
28330
diff
changeset
|
61 mp_msg(MSGT_CPLAYER,MSGL_V," SSSE3"); |
28340
b0af9b4b5015
Replace a bunch of '#if HAVE_FOO' preprocessor checks by 'if (HAVE_FOO)'.
diego
parents:
28335
diff
changeset
|
62 if (HAVE_CMOV) |
28331
8461282f0eed
Add SSSE3 and CMOV to CPU information printed on startup.
diego
parents:
28330
diff
changeset
|
63 mp_msg(MSGT_CPLAYER,MSGL_V," CMOV"); |
28325 | 64 mp_msg(MSGT_CPLAYER,MSGL_V,"\n"); |
29114
06540eb5ef6a
Rename RUNTIME_CPUDETECT to CONFIG_RUNTIME_CPUDETECT and always define it.
ramiro
parents:
28340
diff
changeset
|
65 #endif /* CONFIG_RUNTIME_CPUDETECT */ |
28325 | 66 #endif /* ARCH_X86 */ |
67 } | |
68 | |
69 | |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
70 void update_subtitles(sh_video_t *sh_video, demux_stream_t *d_dvdsub, int reset) |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
71 { |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
72 unsigned char *packet=NULL; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
73 int len; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
74 char type = d_dvdsub->sh ? ((sh_sub_t *)d_dvdsub->sh)->type : 'v'; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
75 static subtitle subs; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
76 if (reset) { |
25604 | 77 sub_clear_text(&subs, MP_NOPTS_VALUE); |
78 if (vo_sub) { | |
79 vo_sub = NULL; | |
80 vo_osd_changed(OSDTYPE_SUBTITLE); | |
81 } | |
82 if (vo_spudec) { | |
83 spudec_reset(vo_spudec); | |
84 vo_osd_changed(OSDTYPE_SPU); | |
85 } | |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
86 } |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
87 // find sub |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
88 if (subdata) { |
25604 | 89 double pts = sh_video->pts; |
90 if (sub_fps==0) sub_fps = sh_video->fps; | |
91 current_module = "find_sub"; | |
92 if (pts > sub_last_pts || pts < sub_last_pts-1.0) { | |
93 find_sub(subdata, (pts+sub_delay) * | |
94 (subdata->sub_uses_time ? 100. : sub_fps)); | |
95 if (vo_sub) vo_sub_last = vo_sub; | |
96 // FIXME! frame counter... | |
97 sub_last_pts = pts; | |
98 } | |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
99 } |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
100 |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
101 // DVD sub: |
25509
1cfa39a320cc
Fix update_subtitles() checking subtitle type for the wrong track.
eugeni
parents:
25322
diff
changeset
|
102 if (vo_config_count && vo_spudec && |
25604 | 103 (vobsub_id >= 0 || (dvdsub_id >= 0 && type == 'v'))) { |
104 int timestamp; | |
105 current_module = "spudec"; | |
106 spudec_heartbeat(vo_spudec, 90000*sh_video->timer); | |
107 /* Get a sub packet from the DVD or a vobsub and make a timestamp | |
108 * relative to sh_video->timer */ | |
109 while(1) { | |
110 // Vobsub | |
111 len = 0; | |
112 if (vo_vobsub) { | |
113 if (sh_video->pts+sub_delay >= 0) { | |
114 len = vobsub_get_packet(vo_vobsub, sh_video->pts+sub_delay, | |
115 (void**)&packet, ×tamp); | |
116 if (len > 0) { | |
117 timestamp -= (sh_video->pts + sub_delay - sh_video->timer)*90000; | |
118 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); | |
119 } | |
120 } | |
121 } else { | |
122 // DVD sub | |
123 len = ds_get_packet_sub(d_dvdsub, (unsigned char**)&packet); | |
124 if (len > 0) { | |
125 // XXX This is wrong, sh_video->pts can be arbitrarily | |
126 // much behind demuxing position. Unfortunately using | |
127 // d_video->pts which would have been the simplest | |
128 // improvement doesn't work because mpeg specific hacks | |
129 // in video.c set d_video->pts to 0. | |
130 float x = d_dvdsub->pts - sh_video->pts; | |
131 if (x > -20 && x < 20) // prevent missing subs on pts reset | |
132 timestamp = 90000*(sh_video->timer + d_dvdsub->pts | |
133 + sub_delay - sh_video->pts); | |
134 else timestamp = 90000*(sh_video->timer + sub_delay); | |
135 mp_dbg(MSGT_CPLAYER, MSGL_V, "\rDVD sub: len=%d " | |
136 "v_pts=%5.3f s_pts=%5.3f ts=%d \n", len, | |
137 sh_video->pts, d_dvdsub->pts, timestamp); | |
138 } | |
139 } | |
140 if (len<=0 || !packet) break; | |
141 if (vo_vobsub || timestamp >= 0) | |
142 spudec_assemble(vo_spudec, packet, len, timestamp); | |
143 } | |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
144 |
25604 | 145 if (spudec_changed(vo_spudec)) |
146 vo_osd_changed(OSDTYPE_SPU); | |
25855
57a1511f4e76
Support mov subtitle format directly instead of converting to text in the demuxer
reimar
parents:
25656
diff
changeset
|
147 } else if (dvdsub_id >= 0 && (type == 't' || type == 'm' || type == 'a')) { |
25604 | 148 double curpts = sh_video->pts + sub_delay; |
149 double endpts; | |
150 vo_sub = &subs; | |
151 while (d_dvdsub->first) { | |
152 double pts = ds_get_next_pts(d_dvdsub); | |
153 if (pts > curpts) | |
154 break; | |
155 endpts = d_dvdsub->first->endpts; | |
156 len = ds_get_packet_sub(d_dvdsub, &packet); | |
25855
57a1511f4e76
Support mov subtitle format directly instead of converting to text in the demuxer
reimar
parents:
25656
diff
changeset
|
157 if (type == 'm') { |
57a1511f4e76
Support mov subtitle format directly instead of converting to text in the demuxer
reimar
parents:
25656
diff
changeset
|
158 if (len < 2) continue; |
57a1511f4e76
Support mov subtitle format directly instead of converting to text in the demuxer
reimar
parents:
25656
diff
changeset
|
159 len = FFMIN(len - 2, AV_RB16(packet)); |
57a1511f4e76
Support mov subtitle format directly instead of converting to text in the demuxer
reimar
parents:
25656
diff
changeset
|
160 packet += 2; |
57a1511f4e76
Support mov subtitle format directly instead of converting to text in the demuxer
reimar
parents:
25656
diff
changeset
|
161 } |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26422
diff
changeset
|
162 #ifdef CONFIG_ASS |
25856 | 163 if (ass_enabled) { |
25655
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
164 sh_sub_t* sh = d_dvdsub->sh; |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
165 ass_track = sh ? sh->ass_track : NULL; |
25856 | 166 if (!ass_track) continue; |
167 if (type == 'a') { // ssa/ass subs with libass | |
27518 | 168 ass_process_chunk(ass_track, packet, len, |
169 (long long)(pts*1000 + 0.5), | |
170 (long long)((endpts-pts)*1000 + 0.5)); | |
25857 | 171 } else { // plaintext subs with libass |
172 vo_sub = NULL; | |
173 if (pts != MP_NOPTS_VALUE) { | |
174 if (endpts == MP_NOPTS_VALUE) endpts = pts + 3; | |
175 sub_clear_text(&subs, MP_NOPTS_VALUE); | |
176 sub_add_text(&subs, packet, len, endpts); | |
177 subs.start = pts * 100; | |
178 subs.end = endpts * 100; | |
179 ass_process_subtitle(ass_track, &subs); | |
180 } | |
25604 | 181 } |
25655
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
182 continue; |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
183 } |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
184 #endif |
25604 | 185 if (pts != MP_NOPTS_VALUE) { |
186 if (endpts == MP_NOPTS_VALUE) | |
187 sub_clear_text(&subs, MP_NOPTS_VALUE); | |
25655
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
188 if (type == 'a') { // ssa/ass subs without libass => convert to plaintext |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
189 int i; |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
190 unsigned char* p = packet; |
27518 | 191 for (i=0; i < 8 && *p != '\0'; p++) |
25655
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
192 if (*p == ',') |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
193 i++; |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
194 if (*p == '\0') /* Broken line? */ |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
195 continue; |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
196 len -= p - packet; |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
197 packet = p; |
e98ceb0190c1
Move all subtitle parsing from mkv demuxer to update_subtitles().
eugeni
parents:
25604
diff
changeset
|
198 } |
25604 | 199 sub_add_text(&subs, packet, len, endpts); |
200 vo_osd_changed(OSDTYPE_SUBTITLE); | |
201 } | |
202 } | |
203 if (sub_clear_text(&subs, curpts)) | |
204 vo_osd_changed(OSDTYPE_SUBTITLE); | |
22233
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
205 } |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
206 current_module=NULL; |
5bf6c178f09a
Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff
changeset
|
207 } |
23903 | 208 |
209 void update_teletext(sh_video_t *sh_video, demuxer_t *demuxer, int reset) | |
210 { | |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27343
diff
changeset
|
211 #ifdef CONFIG_TV_TELETEXT |
23903 | 212 tvi_handle_t* tvh=demuxer->priv; |
24342
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
213 int page_changed; |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
214 |
23903 | 215 if (demuxer->type != DEMUXER_TYPE_TV || !tvh) return; |
216 | |
24342
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
217 //Also forcing page update when such ioctl is not supported or call error occured |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
218 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_IS_CHANGED,&page_changed)!=TVI_CONTROL_TRUE) |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
219 page_changed=1; |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
220 |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
221 if(!page_changed) |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
222 return; |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
223 |
23903 | 224 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_VBIPAGE,&vo_osd_teletext_page)!=TVI_CONTROL_TRUE) |
225 vo_osd_teletext_page=NULL; | |
226 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_HALF_PAGE,&vo_osd_teletext_half)!=TVI_CONTROL_TRUE) | |
227 vo_osd_teletext_half=0; | |
228 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_MODE,&vo_osd_teletext_mode)!=TVI_CONTROL_TRUE) | |
229 vo_osd_teletext_mode=0; | |
230 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_FORMAT,&vo_osd_teletext_format)!=TVI_CONTROL_TRUE) | |
231 vo_osd_teletext_format=0; | |
232 vo_osd_changed(OSDTYPE_TELETEXT); | |
24342
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
233 |
8873c972c6aa
Decrease teletext page rendering frequency from 1/frame to about 4/sec.
voroshil
parents:
23903
diff
changeset
|
234 tvh->functions->control(tvh->priv,TV_VBI_CONTROL_MARK_UNCHANGED,NULL); |
23903 | 235 #endif |
236 } | |
26090
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
237 |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
238 int select_audio(demuxer_t* demuxer, int audio_id, char* audio_lang) |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
239 { |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
240 if (audio_id == -1 && audio_lang) |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
241 audio_id = demuxer_audio_track_by_lang(demuxer, audio_lang); |
26269
65ad20416dd7
Support 'default' attribute for audio and subtitle tracks.
eugeni
parents:
26090
diff
changeset
|
242 if (audio_id == -1) |
65ad20416dd7
Support 'default' attribute for audio and subtitle tracks.
eugeni
parents:
26090
diff
changeset
|
243 audio_id = demuxer_default_audio_track(demuxer); |
26090
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
244 if (audio_id != -1) // -1 (automatic) is the default behaviour of demuxers |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
245 demuxer_switch_audio(demuxer, audio_id); |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
246 if (audio_id == -2) { // some demuxers don't yet know how to switch to no sound |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
247 demuxer->audio->id = -2; |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
248 demuxer->audio->sh = NULL; |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
249 } |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
250 return demuxer->audio->id; |
c585e2ad8ebf
Select audio stream in mplayer and mencoder, overriding demuxer decision.
eugeni
parents:
25857
diff
changeset
|
251 } |
26416 | 252 |
253 /* Parse -noconfig common to both programs */ | |
254 int disable_system_conf=0; | |
255 int disable_user_conf=0; | |
27343 | 256 #ifdef CONFIG_GUI |
26422
f74bff77f088
noconfig fix, disable_gui_conf was not defined when compiling mencoder.
albeu
parents:
26416
diff
changeset
|
257 int disable_gui_conf=0; |
27343 | 258 #endif /* CONFIG_GUI */ |
26416 | 259 |
260 /* Disable all configuration files */ | |
261 static void noconfig_all(void) | |
262 { | |
263 disable_system_conf = 1; | |
264 disable_user_conf = 1; | |
27343 | 265 #ifdef CONFIG_GUI |
26416 | 266 disable_gui_conf = 1; |
27343 | 267 #endif /* CONFIG_GUI */ |
26416 | 268 } |
269 | |
270 const m_option_t noconfig_opts[] = { | |
271 {"all", noconfig_all, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOCFG|CONF_PRE_PARSE, 0, 0, NULL}, | |
272 {"system", &disable_system_conf, CONF_TYPE_FLAG, CONF_GLOBAL|CONF_NOCFG|CONF_PRE_PARSE, 0, 1, NULL}, | |
273 {"user", &disable_user_conf, CONF_TYPE_FLAG, CONF_GLOBAL|CONF_NOCFG|CONF_PRE_PARSE, 0, 1, NULL}, | |
27343 | 274 #ifdef CONFIG_GUI |
26416 | 275 {"gui", &disable_gui_conf, CONF_TYPE_FLAG, CONF_GLOBAL|CONF_NOCFG|CONF_PRE_PARSE, 0, 1, NULL}, |
27343 | 276 #endif /* CONFIG_GUI */ |
26416 | 277 {NULL, NULL, 0, 0, 0, 0, NULL} |
278 }; |