Mercurial > mplayer.hg
comparison libmpdemux/demux_mov.c @ 21827:b0bc0d81f91b
Subtitle handling cleanup: factor out code for parsing embedded subtitles
and adding and removing of lines in subtitle struct into subreader.c.
author | reimar |
---|---|
date | Sat, 06 Jan 2007 19:07:58 +0000 |
parents | d7b2fa4c39da |
children | 71cb05a537e1 |
comparison
equal
deleted
inserted
replaced
21826:d4dbadf11019 | 21827:b0bc0d81f91b |
---|---|
2170 sh_sub_t *sh = demuxer->sub->sh; | 2170 sh_sub_t *sh = demuxer->sub->sh; |
2171 off_t pos = trak->samples[samplenr].pos; | 2171 off_t pos = trak->samples[samplenr].pos; |
2172 int len = trak->samples[samplenr].size; | 2172 int len = trak->samples[samplenr].size; |
2173 double subpts = (double)trak->samples[samplenr].pts / (double)trak->timescale; | 2173 double subpts = (double)trak->samples[samplenr].pts / (double)trak->timescale; |
2174 stream_seek(demuxer->stream, pos); | 2174 stream_seek(demuxer->stream, pos); |
2175 if (sh->type == 'v') | 2175 if (sh->type != 'v') { |
2176 ds_read_packet(demuxer->sub, demuxer->stream, len, subpts, pos, 0); | |
2177 else { | |
2178 int i; | |
2179 char *line = priv->subtext; | |
2180 stream_skip(demuxer->stream, 2); // size | 2176 stream_skip(demuxer->stream, 2); // size |
2181 len -= 2; | 2177 len -= 2; |
2182 if (len < 0) len = 0; | 2178 if (len < 0) len = 0; |
2183 if (len > MOV_MAX_SUBLEN) len = MOV_MAX_SUBLEN; | 2179 if (len > MOV_MAX_SUBLEN) len = MOV_MAX_SUBLEN; |
2184 stream_read(demuxer->stream, priv->subtext, len); | |
2185 priv->subtext[len] = 0; | |
2186 priv->subs.lines = 1; | |
2187 priv->subs.text[0] = &priv->subtext; | |
2188 while ((line = strchr(line, '\n'))) { | |
2189 *line++ = 0; | |
2190 priv->subs.text[priv->subs.lines] = line; | |
2191 priv->subs.lines++; | |
2192 } | |
2193 vo_sub = &priv->subs; | |
2194 } | 2180 } |
2181 ds_read_packet(demuxer->sub, demuxer->stream, len, subpts, pos, 0); | |
2195 priv->current_sub = samplenr; | 2182 priv->current_sub = samplenr; |
2196 } | 2183 } |
2197 vo_osd_changed (OSDTYPE_SUBTITLE); | |
2198 } | 2184 } |
2199 | 2185 |
2200 return 1; | 2186 return 1; |
2201 | 2187 |
2202 } | 2188 } |