Mercurial > mplayer.hg
comparison libmpdemux/demux_mkv.cpp @ 11276:ec45f2106ec6
* fix my 100l from before
* SSA is also ASS
* avoid multiple segfaults when there are more then SUB_MAX_TEXT-1 lines at the same time
author | attila |
---|---|
date | Sun, 26 Oct 2003 21:09:37 +0000 |
parents | c367751bd7cb |
children | ef36cd5b757e |
comparison
equal
deleted
inserted
replaced
11275:3ef7b4402c6c | 11276:ec45f2106ec6 |
---|---|
489 ((unsigned int)(s1 - buffer) <= data.Size())) | 489 ((unsigned int)(s1 - buffer) <= data.Size())) |
490 s1++; | 490 s1++; |
491 | 491 |
492 line = 0; | 492 line = 0; |
493 mkv_d->subs.lines++; | 493 mkv_d->subs.lines++; |
494 if (mkv_d->subs.lines> SUB_MAX_TEXT - 1 ) | |
495 { | |
496 mp_msg(MSGT_DEMUX, MSGL_WARN,"[mkv] Warning: too many sublines to render, skipping\n"); | |
497 mkv_d->subs.lines--; | |
498 return; | |
499 } | |
494 s2 = mkv_d->subs.text[mkv_d->subs.lines - 1]; | 500 s2 = mkv_d->subs.text[mkv_d->subs.lines - 1]; |
495 state = 0; | 501 state = 0; |
496 | 502 |
497 if (mkv_d->subtitle_type == MKV_SUBTYPE_SSA) { | 503 if (mkv_d->subtitle_type == MKV_SUBTYPE_SSA) { |
498 /* Matroska's SSA format does not have timecodes embedded into | 504 /* Matroska's SSA format does not have timecodes embedded into |
2355 mkv_d->subtitle_type = MKV_SUBTYPE_VOBSUB; | 2361 mkv_d->subtitle_type = MKV_SUBTYPE_VOBSUB; |
2356 demuxer->sub->sh = (mkv_sh_sub_t *)safememdup(&track->sh_sub, | 2362 demuxer->sub->sh = (mkv_sh_sub_t *)safememdup(&track->sh_sub, |
2357 sizeof(mkv_sh_sub_t)); | 2363 sizeof(mkv_sh_sub_t)); |
2358 demuxer->sub->id = track->xid; | 2364 demuxer->sub->id = track->xid; |
2359 | 2365 |
2360 } else if (!(strcmp(track->codec_id, MKV_S_TEXTASCII) && | 2366 } else if (strcmp(track->codec_id, MKV_S_TEXTASCII) && |
2361 strcmp(track->codec_id, MKV_S_TEXTUTF8) && | 2367 strcmp(track->codec_id, MKV_S_TEXTUTF8) && |
2362 strcmp(track->codec_id, MKV_S_TEXTSSA) && | 2368 strcmp(track->codec_id, MKV_S_TEXTSSA) && |
2363 strcmp(track->codec_id, "S_SSA"))) | 2369 strcmp(track->codec_id, "S_SSA") && |
2370 strcmp(track->codec_id, "S_TEXT/ASS")) | |
2364 mp_msg(MSGT_DEMUX, MSGL_ERR, "[mkv] Subtitle type '%s' is not " | 2371 mp_msg(MSGT_DEMUX, MSGL_ERR, "[mkv] Subtitle type '%s' is not " |
2365 "supported. Track will not be displayed.\n", track->codec_id); | 2372 "supported. Track will not be displayed.\n", track->codec_id); |
2366 else { | 2373 else { |
2367 mp_msg(MSGT_DEMUX, MSGL_INFO, "[mkv] Will display subtitle track %u\n", | 2374 mp_msg(MSGT_DEMUX, MSGL_INFO, "[mkv] Will display subtitle track %u\n", |
2368 track->tnum); | 2375 track->tnum); |
2372 mkv_d->subs.text[i] = (char *)safemalloc(256); | 2379 mkv_d->subs.text[i] = (char *)safemalloc(256); |
2373 | 2380 |
2374 if (!strcmp(track->codec_id, MKV_S_TEXTUTF8)) | 2381 if (!strcmp(track->codec_id, MKV_S_TEXTUTF8)) |
2375 sub_utf8 = 1; // Force UTF-8 conversion. | 2382 sub_utf8 = 1; // Force UTF-8 conversion. |
2376 if (!strcmp(track->codec_id, MKV_S_TEXTSSA) || | 2383 if (!strcmp(track->codec_id, MKV_S_TEXTSSA) || |
2377 !strcmp(track->codec_id, "S_SSA")) { | 2384 !strcmp(track->codec_id, "S_SSA") || |
2385 !strcmp(track->codec_id, "S_TEXT/ASS")) { | |
2378 mkv_d->subtitle_type = MKV_SUBTYPE_SSA; | 2386 mkv_d->subtitle_type = MKV_SUBTYPE_SSA; |
2379 sub_utf8 = 1; | 2387 sub_utf8 = 1; |
2380 } else | 2388 } else |
2381 mkv_d->subtitle_type = MKV_SUBTYPE_TEXT; | 2389 mkv_d->subtitle_type = MKV_SUBTYPE_TEXT; |
2382 } else | 2390 } else |