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);