summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authormosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-01-04 12:05:15 +0000
committermosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-01-04 12:05:15 +0000
commit2e40bfa136522e112e4b9f7beac60478c4143d12 (patch)
tree6fc98fa22137574b57cfde440df0c776e55273f1 /libmpdemux/demux_mkv.c
parentde86b6190a94faeea635d2953fb8c12d656922a0 (diff)
downloadmpv-2e40bfa136522e112e4b9f7beac60478c4143d12.tar.bz2
mpv-2e40bfa136522e112e4b9f7beac60478c4143d12.tar.xz
Improved handling of text subs in Matroska files with adjacent newlines (\N) resulting in more than SUB_MAX_TEXT lines to display. Patch by Robert Henney (robh () rut ! org).
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17309 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 6491354dff..b026370cbf 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -2546,16 +2546,19 @@ handle_subtitles(demuxer_t *demuxer, mkv_track_t *track, char *block,
ptr1++;
/* Newline */
- if (*ptr1 == '\\' && ptr1+1-block < size && (*(ptr1+1)|0x20) == 'n')
+ while (*ptr1 == '\\' && ptr1+1-block < size && (*(ptr1+1)|0x20) == 'n')
{
mkv_d->clear_subs_at[mkv_d->subs.lines++]
= timecode + block_duration;
*ptr2 = '\0';
if (mkv_d->subs.lines >= SUB_MAX_TEXT)
{
- mp_msg (MSGT_DEMUX, MSGL_WARN, "[mkv] Warning: too many "
- "sublines to render, skipping\n");
- return;
+ mp_msg (MSGT_DEMUX, MSGL_WARN, "\n[mkv] Warning: too many "
+ "sublines to render, skipping after first %i\n",
+ SUB_MAX_TEXT);
+ mkv_d->subs.lines--;
+ ptr1=block+size;
+ break;
}
ptr2 = mkv_d->subs.text[mkv_d->subs.lines];
ptr1 += 2;
@@ -2568,7 +2571,7 @@ handle_subtitles(demuxer_t *demuxer, mkv_track_t *track, char *block,
}
else
{
- while (ptr1 - block != size)
+ while (ptr1 - block < size)
{
if (*ptr1 == '\n' || *ptr1 == '\r')
{
@@ -2579,9 +2582,12 @@ handle_subtitles(demuxer_t *demuxer, mkv_track_t *track, char *block,
= timecode + block_duration;
if (mkv_d->subs.lines >= SUB_MAX_TEXT)
{
- mp_msg (MSGT_DEMUX, MSGL_WARN, "[mkv] Warning: too many "
- "sublines to render, skipping\n");
- return;
+ mp_msg (MSGT_DEMUX, MSGL_WARN, "\n[mkv] Warning: too many "
+ "sublines to render, skipping after first %i\n",
+ SUB_MAX_TEXT);
+ mkv_d->subs.lines--;
+ ptr1=block+size;
+ break;
}
ptr2 = mkv_d->subs.text[mkv_d->subs.lines];
state = 1;