annotate mpcommon.c @ 23980:27bac14b4ce4

More simple and correct font reselection. Since ass_font_t contains a list of font faces, there is no need to select the face with maximum charset coverage each time. It is enough to select any face with the required glyph.
author eugeni
date Fri, 03 Aug 2007 13:43:11 +0000
parents 037737866f6a
children 8873c972c6aa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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"
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
8 #include "spudec.h"
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
9 #include "vobsub.h"
23903
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
10 #ifdef HAVE_TV_TELETEXT
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
11 #include "stream/tv.h"
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
12 #endif
22233
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
13
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
14 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
15
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
16 #ifdef USE_ASS
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
17 #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
18 #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
19 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
20 #endif
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
21
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
22 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
23 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
24
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
25 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
26 {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
27 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
28 int len;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
29 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
30 static subtitle subs;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
31 if (type == 'a')
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
32 #ifdef USE_ASS
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
33 if (!ass_enabled)
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
34 #endif
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
35 type = 't';
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
36 if (reset) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
37 sub_clear_text(&subs, MP_NOPTS_VALUE);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
38 if (vo_sub) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
39 vo_sub = NULL;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
40 vo_osd_changed(OSDTYPE_SUBTITLE);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
41 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
42 if (vo_spudec) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
43 spudec_reset(vo_spudec);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
44 vo_osd_changed(OSDTYPE_SPU);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
45 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
46 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
47 // find sub
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
48 if (subdata) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
49 double pts = sh_video->pts;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
50 if (sub_fps==0) sub_fps = sh_video->fps;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
51 current_module = "find_sub";
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
52 if (pts > sub_last_pts || pts < sub_last_pts-1.0) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
53 find_sub(subdata, (pts+sub_delay) *
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
54 (subdata->sub_uses_time ? 100. : sub_fps));
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
55 if (vo_sub) vo_sub_last = vo_sub;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
56 // FIXME! frame counter...
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
57 sub_last_pts = pts;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
58 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
59 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
60
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
61 // DVD sub:
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
62 if (vo_config_count && vo_spudec && type == 'v') {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
63 int timestamp;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
64 current_module = "spudec";
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
65 spudec_heartbeat(vo_spudec, 90000*sh_video->timer);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
66 /* Get a sub packet from the DVD or a vobsub and make a timestamp
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
67 * relative to sh_video->timer */
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
68 while(1) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
69 // Vobsub
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
70 len = 0;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
71 if (vo_vobsub) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
72 if (sh_video->pts+sub_delay >= 0) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
73 len = vobsub_get_packet(vo_vobsub, sh_video->pts+sub_delay,
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
74 (void**)&packet, &timestamp);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
75 if (len > 0) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
76 timestamp -= (sh_video->pts + sub_delay - sh_video->timer)*90000;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
77 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);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
78 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
79 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
80 } else {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
81 // DVD sub
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
82 len = ds_get_packet_sub(d_dvdsub, (unsigned char**)&packet);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
83 if (len > 0) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
84 // XXX This is wrong, sh_video->pts can be arbitrarily
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
85 // much behind demuxing position. Unfortunately using
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
86 // d_video->pts which would have been the simplest
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
87 // improvement doesn't work because mpeg specific hacks
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
88 // in video.c set d_video->pts to 0.
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
89 float x = d_dvdsub->pts - sh_video->pts;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
90 if (x > -20 && x < 20) // prevent missing subs on pts reset
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
91 timestamp = 90000*(sh_video->timer + d_dvdsub->pts
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
92 + sub_delay - sh_video->pts);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
93 else timestamp = 90000*(sh_video->timer + sub_delay);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
94 mp_dbg(MSGT_CPLAYER, MSGL_V, "\rDVD sub: len=%d "
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
95 "v_pts=%5.3f s_pts=%5.3f ts=%d \n", len,
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
96 sh_video->pts, d_dvdsub->pts, timestamp);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
97 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
98 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
99 if (len<=0 || !packet) break;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
100 if (timestamp >= 0)
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
101 spudec_assemble(vo_spudec, packet, len, timestamp);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
102 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
103
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
104 if (spudec_changed(vo_spudec))
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
105 vo_osd_changed(OSDTYPE_SPU);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
106 } else if (dvdsub_id >= 0 && type == 't') {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
107 double curpts = sh_video->pts + sub_delay;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
108 double endpts;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
109 vo_sub = &subs;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
110 while (d_dvdsub->first) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
111 double pts = ds_get_next_pts(d_dvdsub);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
112 if (pts > curpts)
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
113 break;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
114 endpts = d_dvdsub->first->endpts;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
115 len = ds_get_packet_sub(d_dvdsub, &packet);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
116 #ifdef USE_ASS
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
117 if (ass_enabled) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
118 static ass_track_t *global_ass_track = NULL;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
119 if (!global_ass_track) global_ass_track = ass_default_track(ass_library);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
120 ass_track = global_ass_track;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
121 vo_sub = NULL;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
122 if (pts != MP_NOPTS_VALUE) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
123 if (endpts == MP_NOPTS_VALUE) endpts = pts + 3;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
124 sub_clear_text(&subs, MP_NOPTS_VALUE);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
125 sub_add_text(&subs, packet, len, endpts);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
126 subs.start = pts * 100;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
127 subs.end = endpts * 100;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
128 ass_process_subtitle(ass_track, &subs);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
129 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
130 } else
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
131 #endif
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
132 if (pts != MP_NOPTS_VALUE) {
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
133 if (endpts == MP_NOPTS_VALUE)
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
134 sub_clear_text(&subs, MP_NOPTS_VALUE);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
135 sub_add_text(&subs, packet, len, endpts);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
136 vo_osd_changed(OSDTYPE_SUBTITLE);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
137 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
138 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
139 if (sub_clear_text(&subs, curpts))
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
140 vo_osd_changed(OSDTYPE_SUBTITLE);
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
141 }
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
142 current_module=NULL;
5bf6c178f09a Move some subtitle handling from mplayer.c to mpcommon.c and share it with mencoder.c
reimar
parents:
diff changeset
143 }
23903
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
144
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
145 void update_teletext(sh_video_t *sh_video, demuxer_t *demuxer, int reset)
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
146 {
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
147 #ifdef HAVE_TV_TELETEXT
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
148 tvi_handle_t* tvh=demuxer->priv;
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
149 if (demuxer->type != DEMUXER_TYPE_TV || !tvh) return;
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
150
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
151 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_VBIPAGE,&vo_osd_teletext_page)!=TVI_CONTROL_TRUE)
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
152 vo_osd_teletext_page=NULL;
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
153 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_HALF_PAGE,&vo_osd_teletext_half)!=TVI_CONTROL_TRUE)
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
154 vo_osd_teletext_half=0;
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
155 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_MODE,&vo_osd_teletext_mode)!=TVI_CONTROL_TRUE)
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
156 vo_osd_teletext_mode=0;
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
157 if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_FORMAT,&vo_osd_teletext_format)!=TVI_CONTROL_TRUE)
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
158 vo_osd_teletext_format=0;
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
159 vo_osd_changed(OSDTYPE_TELETEXT);
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
160 #endif
037737866f6a Teletext support
voroshil
parents: 23573
diff changeset
161 }