Mercurial > mplayer.hg
comparison libmpdemux/demux_mov.c @ 21032:ddc587b1fd8b
Support multiple subs in mov
author | reimar |
---|---|
date | Sun, 19 Nov 2006 11:55:03 +0000 |
parents | 7909e90e01c1 |
children | a965ca17debc |
comparison
equal
deleted
inserted
replaced
21031:e45bb0ee5558 | 21032:ddc587b1fd8b |
---|---|
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); | 2176 ds_read_packet(demuxer->sub, demuxer->stream, len, subpts, pos, 0); |
2177 else { | 2177 else { |
2178 int i; | |
2179 char *line = priv->subtext; | |
2178 stream_skip(demuxer->stream, 2); // size | 2180 stream_skip(demuxer->stream, 2); // size |
2179 len -= 2; | 2181 len -= 2; |
2180 if (len < 0) len = 0; | 2182 if (len < 0) len = 0; |
2181 if (len > MOV_MAX_SUBLEN) len = MOV_MAX_SUBLEN; | 2183 if (len > MOV_MAX_SUBLEN) len = MOV_MAX_SUBLEN; |
2182 stream_read(demuxer->stream, priv->subtext, len); | 2184 stream_read(demuxer->stream, priv->subtext, len); |
2183 priv->subtext[len] = 0; | 2185 priv->subtext[len] = 0; |
2184 priv->subs.lines = 1; | 2186 priv->subs.lines = 1; |
2185 priv->subs.text[0] = &priv->subtext; | 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 } | |
2186 vo_sub = &priv->subs; | 2193 vo_sub = &priv->subs; |
2187 } | 2194 } |
2188 priv->current_sub = samplenr; | 2195 priv->current_sub = samplenr; |
2189 } | 2196 } |
2190 vo_osd_changed (OSDTYPE_SUBTITLE); | 2197 vo_osd_changed (OSDTYPE_SUBTITLE); |